{"version":3,"file":"client-2978cded5d2a77a86a1c.js","mappings":"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ACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,O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","sources":["webpack:///../../node_modules/@sentry/utils/esm/env.js","webpack:///../../node_modules/@sentry/utils/esm/node.js","webpack:///../../node_modules/@sentry/utils/esm/time.js","webpack:///../../node_modules/@sentry/utils/esm/worldwide.js","webpack:///./sefaria/VersionPreferences.js","webpack:///./sefaria/FilterNode.js","webpack:///../../node_modules/@hebcal/core/dist/index.mjs","webpack:///./sefaria/util.js","webpack:///./sefaria/searchState.js","webpack:///./sefaria/searchTotal.js","webpack:///./sefaria/search.js","webpack:///./sefaria/strings.js","webpack:///./sefaria/palette.js","webpack:///./sefaria/track.js","webpack:///./sefaria/hebrew.js","webpack:///./sefaria/sefaria.js","webpack:///./CollectionsWidget.jsx","webpack:///./context.js","webpack:///./Hooks.jsx","webpack:///./ContentText.jsx","webpack:///./AdminEditor.jsx","webpack:///./CategoryEditor.jsx","webpack:///./Promotions.jsx","webpack:///./NewsletterSignUpForm.jsx","webpack:///./NavSidebar.jsx","webpack:///./Footer.jsx","webpack:///./TopicEditor.jsx","webpack:///./Story.jsx","webpack:///./TopicPage.jsx","webpack:///./sefaria/signupModalContent.js","webpack:///./SourceEditor.jsx","webpack:///./DictionarySearch.jsx","webpack:///./VersionBlock/VersionBlockHeader.jsx","webpack:///./VersionBlock/VersionBlockSelectButton.jsx","webpack:///./VersionBlock/VersionInformation.jsx","webpack:///./VersionBlock/VersionImage.jsx","webpack:///./VersionBlock/VersionTitleAndSelector.jsx","webpack:///./VersionBlock/VersionMetadata.jsx","webpack:///./ConnectionFilters.jsx","webpack:///./TextRange.jsx","webpack:///./TextList.jsx","webpack:///./VersionBlock/VersionBlockWithPreview.jsx","webpack:///./VersionBlock/VersionBlock.jsx","webpack:///./ExtendedNotes.jsx","webpack:///./BookPage.jsx","webpack:///./sefaria/trackG4.js","webpack:///./Misc.jsx","webpack:///./Header.jsx","webpack:///./TextColumn.jsx","webpack:///./ComparePanelHeader.jsx","webpack:///./TextCategoryPage.jsx","webpack:///./TextsPage.jsx","webpack:///./Media.jsx","webpack:///./AboutSheet.jsx","webpack:///./SearchTextResult.jsx","webpack:///./SearchSheetResult.jsx","webpack:///./SearchFilters.jsx","webpack:///./SearchResultList.jsx","webpack:///./SidebarSearch.jsx","webpack:///./ConnectionsPanelHeader.jsx","webpack:///./AddToSourceSheet.jsx","webpack:///./LexiconBox.jsx","webpack:///./AboutBox.jsx","webpack:///./TranslationsBox.jsx","webpack:///./TopicSearch.jsx","webpack:///./WebPage.jsx","webpack:///./ConnectionsPanel.jsx","webpack:///./SearchPage.jsx","webpack:///../../node_modules/slate-hyperscript/node_modules/is-plain-object/dist/is-plain-object.mjs","webpack:///../../node_modules/slate/node_modules/is-plain-object/dist/is-plain-object.mjs","webpack:///../../node_modules/immer/dist/immer.esm.mjs","webpack:///../../node_modules/slate/dist/index.es.js","webpack:///../../node_modules/slate-hyperscript/dist/index.es.js","webpack:///../../node_modules/slate-history/node_modules/is-plain-object/dist/is-plain-object.mjs","webpack:///../../node_modules/slate-history/dist/index.es.js","webpack:///../../node_modules/compute-scroll-into-view/dist/index.mjs","webpack:///../../node_modules/scroll-into-view-if-needed/es/index.js","webpack:///../../node_modules/slate-react/dist/index.es.js","webpack:///./Editor.jsx","webpack:///./Sheet.jsx","webpack:///./SheetMetadata.jsx","webpack:///./TopicPageAll.jsx","webpack:///./TopicsPage.jsx","webpack:///./CollectionPage.jsx","webpack:///./NotificationsPanel.jsx","webpack:///./UserHistoryPanel.jsx","webpack:///./NoteListing.jsx","webpack:///./UserProfile.jsx","webpack:///./UpdatesPanel.jsx","webpack:///./CommunityPage.jsx","webpack:///./CalendarsPage.jsx","webpack:///./UserStats.jsx","webpack:///./ModeratorToolsPanel.jsx","webpack:///./PublicCollectionsPage.jsx","webpack:///./TranslationsPage.jsx","webpack:///./TextColumnBanner.jsx","webpack:///./ReaderPanel.jsx","webpack:///./EditCollectionPage.jsx","webpack:///./StaticPages.jsx","webpack:///../../node_modules/engine.io-parser/build/esm/commons.js","webpack:///../../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","webpack:///../../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","webpack:///../../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","webpack:///../../node_modules/engine.io-parser/build/esm/index.js","webpack:///../../node_modules/@socket.io/component-emitter/index.mjs","webpack:///../../node_modules/engine.io-client/build/esm/globalThis.browser.js","webpack:///../../node_modules/engine.io-client/build/esm/util.js","webpack:///../../node_modules/engine.io-client/build/esm/transport.js","webpack:///../../node_modules/engine.io-client/build/esm/contrib/yeast.js","webpack:///../../node_modules/engine.io-client/build/esm/contrib/parseqs.js","webpack:///../../node_modules/engine.io-client/build/esm/contrib/has-cors.js","webpack:///../../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","webpack:///../../node_modules/engine.io-client/build/esm/transports/polling.js","webpack:///../../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","webpack:///../../node_modules/engine.io-client/build/esm/transports/websocket.js","webpack:///../../node_modules/engine.io-client/build/esm/transports/index.js","webpack:///../../node_modules/engine.io-client/build/esm/contrib/parseuri.js","webpack:///../../node_modules/engine.io-client/build/esm/socket.js","webpack:///../../node_modules/engine.io-client/build/esm/index.js","webpack:///../../node_modules/socket.io-parser/build/esm/is-binary.js","webpack:///../../node_modules/socket.io-parser/build/esm/binary.js","webpack:///../../node_modules/socket.io-parser/build/esm/index.js","webpack:///../../node_modules/socket.io-client/build/esm/on.js","webpack:///../../node_modules/socket.io-client/build/esm/socket.js","webpack:///../../node_modules/socket.io-client/build/esm/contrib/backo2.js","webpack:///../../node_modules/socket.io-client/build/esm/manager.js","webpack:///../../node_modules/socket.io-client/build/esm/index.js","webpack:///../../node_modules/socket.io-client/build/esm/url.js","webpack:///./ReaderApp.jsx","webpack:///./lib/d3.v5.min.js","webpack:///./lib/django-csrf.js","webpack:///./sefaria/sefariaJquery.js","webpack:///../../node_modules/bail/index.js","webpack:///../../node_modules/base64-js/index.js","webpack:///../../node_modules/boolbase/index.js","webpack:///../../node_modules/buffer/index.js","webpack:///../../node_modules/call-bind/callBound.js","webpack:///../../node_modules/call-bind/index.js","webpack:///../../node_modules/cheerio/index.js","webpack:///../../node_modules/cheerio/lib/api/attributes.js","webpack:///../../node_modules/cheerio/lib/api/css.js","webpack:///../../node_modules/cheerio/lib/api/forms.js","webpack:///../../node_modules/cheerio/lib/api/manipulation.js","webpack:///../../node_modules/cheerio/lib/api/traversing.js","webpack:///../../node_modules/cheerio/lib/cheerio.js","webpack:///../../node_modules/cheerio/lib/parse.js","webpack:///../../node_modules/cheerio/lib/static.js","webpack:///../../node_modules/cheerio/lib/utils.js","webpack:///../../node_modules/classnames/index.js","webpack:///../../node_modules/comma-separated-tokens/index.js","webpack:///../../node_modules/core-js/internals/a-callable.js","webpack:///../../node_modules/core-js/internals/a-constructor.js","webpack:///../../node_modules/core-js/internals/a-possible-prototype.js","webpack:///../../node_modules/core-js/internals/add-to-unscopables.js","webpack:///../../node_modules/core-js/internals/advance-string-index.js","webpack:///../../node_modules/core-js/internals/an-instance.js","webpack:///../../node_modules/core-js/internals/an-object.js","webpack:///../../node_modules/core-js/internals/array-buffer-basic-detection.js","webpack:///../../node_modules/core-js/internals/array-buffer-non-extensible.js","webpack:///../../node_modules/core-js/internals/array-buffer-view-core.js","webpack:///../../node_modules/core-js/internals/array-buffer.js","webpack:///../../node_modules/core-js/internals/array-copy-within.js","webpack:///../../node_modules/core-js/internals/array-fill.js","webpack:///../../node_modules/core-js/internals/array-for-each.js","webpack:///../../node_modules/core-js/internals/array-from-constructor-and-list.js","webpack:///../../node_modules/core-js/internals/array-from.js","webpack:///../../node_modules/core-js/internals/array-includes.js","webpack:///../../node_modules/core-js/internals/array-iteration-from-last.js","webpack:///../../node_modules/core-js/internals/array-iteration.js","webpack:///../../node_modules/core-js/internals/array-last-index-of.js","webpack:///../../node_modules/core-js/internals/array-method-has-species-support.js","webpack:///../../node_modules/core-js/internals/array-method-is-strict.js","webpack:///../../node_modules/core-js/internals/array-reduce.js","webpack:///../../node_modules/core-js/internals/array-set-length.js","webpack:///../../node_modules/core-js/internals/array-slice-simple.js","webpack:///../../node_modules/core-js/internals/array-slice.js","webpack:///../../node_modules/core-js/internals/array-sort.js","webpack:///../../node_modules/core-js/internals/array-species-constructor.js","webpack:///../../node_modules/core-js/internals/array-species-create.js","webpack:///../../node_modules/core-js/internals/array-to-reversed.js","webpack:///../../node_modules/core-js/internals/array-with.js","webpack:///../../node_modules/core-js/internals/base64-map.js","webpack:///../../node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///../../node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///../../node_modules/core-js/internals/classof-raw.js","webpack:///../../node_modules/core-js/internals/classof.js","webpack:///../../node_modules/core-js/internals/collection-strong.js","webpack:///../../node_modules/core-js/internals/collection-weak.js","webpack:///../../node_modules/core-js/internals/collection.js","webpack:///../../node_modules/core-js/internals/copy-constructor-properties.js","webpack:///../../node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///../../node_modules/core-js/internals/correct-prototype-getter.js","webpack:///../../node_modules/core-js/internals/create-html.js","webpack:///../../node_modules/core-js/internals/create-iter-result-object.js","webpack:///../../node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///../../node_modules/core-js/internals/create-property-descriptor.js","webpack:///../../node_modules/core-js/internals/create-property.js","webpack:///../../node_modules/core-js/internals/date-to-iso-string.js","webpack:///../../node_modules/core-js/internals/date-to-primitive.js","webpack:///../../node_modules/core-js/internals/define-built-in-accessor.js","webpack:///../../node_modules/core-js/internals/define-built-in.js","webpack:///../../node_modules/core-js/internals/define-built-ins.js","webpack:///../../node_modules/core-js/internals/define-global-property.js","webpack:///../../node_modules/core-js/internals/delete-property-or-throw.js","webpack:///../../node_modules/core-js/internals/descriptors.js","webpack:///../../node_modules/core-js/internals/document-all.js","webpack:///../../node_modules/core-js/internals/document-create-element.js","webpack:///../../node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack:///../../node_modules/core-js/internals/dom-exception-constants.js","webpack:///../../node_modules/core-js/internals/dom-iterables.js","webpack:///../../node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///../../node_modules/core-js/internals/engine-ff-version.js","webpack:///../../node_modules/core-js/internals/engine-is-browser.js","webpack:///../../node_modules/core-js/internals/engine-is-bun.js","webpack:///../../node_modules/core-js/internals/engine-is-deno.js","webpack:///../../node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack:///../../node_modules/core-js/internals/engine-is-ios-pebble.js","webpack:///../../node_modules/core-js/internals/engine-is-ios.js","webpack:///../../node_modules/core-js/internals/engine-is-node.js","webpack:///../../node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:///../../node_modules/core-js/internals/engine-user-agent.js","webpack:///../../node_modules/core-js/internals/engine-v8-version.js","webpack:///../../node_modules/core-js/internals/engine-webkit-version.js","webpack:///../../node_modules/core-js/internals/entry-virtual.js","webpack:///../../node_modules/core-js/internals/enum-bug-keys.js","webpack:///../../node_modules/core-js/internals/error-stack-clear.js","webpack:///../../node_modules/core-js/internals/error-stack-install.js","webpack:///../../node_modules/core-js/internals/error-stack-installable.js","webpack:///../../node_modules/core-js/internals/error-to-string.js","webpack:///../../node_modules/core-js/internals/export.js","webpack:///../../node_modules/core-js/internals/fails.js","webpack:///../../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///../../node_modules/core-js/internals/flatten-into-array.js","webpack:///../../node_modules/core-js/internals/freezing.js","webpack:///../../node_modules/core-js/internals/function-apply.js","webpack:///../../node_modules/core-js/internals/function-bind-context.js","webpack:///../../node_modules/core-js/internals/function-bind-native.js","webpack:///../../node_modules/core-js/internals/function-bind.js","webpack:///../../node_modules/core-js/internals/function-call.js","webpack:///../../node_modules/core-js/internals/function-name.js","webpack:///../../node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack:///../../node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///../../node_modules/core-js/internals/function-uncurry-this.js","webpack:///../../node_modules/core-js/internals/get-built-in.js","webpack:///../../node_modules/core-js/internals/get-iterator-method.js","webpack:///../../node_modules/core-js/internals/get-iterator.js","webpack:///../../node_modules/core-js/internals/get-json-replacer-function.js","webpack:///../../node_modules/core-js/internals/get-method.js","webpack:///../../node_modules/core-js/internals/get-substitution.js","webpack:///../../node_modules/core-js/internals/global.js","webpack:///../../node_modules/core-js/internals/has-own-property.js","webpack:///../../node_modules/core-js/internals/hidden-keys.js","webpack:///../../node_modules/core-js/internals/host-report-errors.js","webpack:///../../node_modules/core-js/internals/html.js","webpack:///../../node_modules/core-js/internals/ie8-dom-define.js","webpack:///../../node_modules/core-js/internals/ieee754.js","webpack:///../../node_modules/core-js/internals/indexed-object.js","webpack:///../../node_modules/core-js/internals/inherit-if-required.js","webpack:///../../node_modules/core-js/internals/inspect-source.js","webpack:///../../node_modules/core-js/internals/install-error-cause.js","webpack:///../../node_modules/core-js/internals/internal-metadata.js","webpack:///../../node_modules/core-js/internals/internal-state.js","webpack:///../../node_modules/core-js/internals/is-array-iterator-method.js","webpack:///../../node_modules/core-js/internals/is-array.js","webpack:///../../node_modules/core-js/internals/is-big-int-array.js","webpack:///../../node_modules/core-js/internals/is-callable.js","webpack:///../../node_modules/core-js/internals/is-constructor.js","webpack:///../../node_modules/core-js/internals/is-data-descriptor.js","webpack:///../../node_modules/core-js/internals/is-forced.js","webpack:///../../node_modules/core-js/internals/is-integral-number.js","webpack:///../../node_modules/core-js/internals/is-null-or-undefined.js","webpack:///../../node_modules/core-js/internals/is-object.js","webpack:///../../node_modules/core-js/internals/is-pure.js","webpack:///../../node_modules/core-js/internals/is-regexp.js","webpack:///../../node_modules/core-js/internals/is-symbol.js","webpack:///../../node_modules/core-js/internals/iterate.js","webpack:///../../node_modules/core-js/internals/iterator-close.js","webpack:///../../node_modules/core-js/internals/iterator-create-constructor.js","webpack:///../../node_modules/core-js/internals/iterator-define.js","webpack:///../../node_modules/core-js/internals/iterators-core.js","webpack:///../../node_modules/core-js/internals/iterators.js","webpack:///../../node_modules/core-js/internals/length-of-array-like.js","webpack:///../../node_modules/core-js/internals/make-built-in.js","webpack:///../../node_modules/core-js/internals/map-helpers.js","webpack:///../../node_modules/core-js/internals/math-expm1.js","webpack:///../../node_modules/core-js/internals/math-fround.js","webpack:///../../node_modules/core-js/internals/math-log10.js","webpack:///../../node_modules/core-js/internals/math-log1p.js","webpack:///../../node_modules/core-js/internals/math-sign.js","webpack:///../../node_modules/core-js/internals/math-trunc.js","webpack:///../../node_modules/core-js/internals/microtask.js","webpack:///../../node_modules/core-js/internals/new-promise-capability.js","webpack:///../../node_modules/core-js/internals/normalize-string-argument.js","webpack:///../../node_modules/core-js/internals/not-a-regexp.js","webpack:///../../node_modules/core-js/internals/number-is-finite.js","webpack:///../../node_modules/core-js/internals/number-parse-float.js","webpack:///../../node_modules/core-js/internals/number-parse-int.js","webpack:///../../node_modules/core-js/internals/object-assign.js","webpack:///../../node_modules/core-js/internals/object-create.js","webpack:///../../node_modules/core-js/internals/object-define-properties.js","webpack:///../../node_modules/core-js/internals/object-define-property.js","webpack:///../../node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///../../node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///../../node_modules/core-js/internals/object-get-own-property-names.js","webpack:///../../node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///../../node_modules/core-js/internals/object-get-prototype-of.js","webpack:///../../node_modules/core-js/internals/object-is-extensible.js","webpack:///../../node_modules/core-js/internals/object-is-prototype-of.js","webpack:///../../node_modules/core-js/internals/object-keys-internal.js","webpack:///../../node_modules/core-js/internals/object-keys.js","webpack:///../../node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///../../node_modules/core-js/internals/object-prototype-accessors-forced.js","webpack:///../../node_modules/core-js/internals/object-set-prototype-of.js","webpack:///../../node_modules/core-js/internals/object-to-array.js","webpack:///../../node_modules/core-js/internals/object-to-string.js","webpack:///../../node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///../../node_modules/core-js/internals/own-keys.js","webpack:///../../node_modules/core-js/internals/path.js","webpack:///../../node_modules/core-js/internals/perform.js","webpack:///../../node_modules/core-js/internals/promise-constructor-detection.js","webpack:///../../node_modules/core-js/internals/promise-native-constructor.js","webpack:///../../node_modules/core-js/internals/promise-resolve.js","webpack:///../../node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack:///../../node_modules/core-js/internals/proxy-accessor.js","webpack:///../../node_modules/core-js/internals/queue.js","webpack:///../../node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///../../node_modules/core-js/internals/regexp-exec.js","webpack:///../../node_modules/core-js/internals/regexp-flags.js","webpack:///../../node_modules/core-js/internals/regexp-get-flags.js","webpack:///../../node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///../../node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack:///../../node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///../../node_modules/core-js/internals/require-object-coercible.js","webpack:///../../node_modules/core-js/internals/same-value.js","webpack:///../../node_modules/core-js/internals/schedulers-fix.js","webpack:///../../node_modules/core-js/internals/set-helpers.js","webpack:///../../node_modules/core-js/internals/set-species.js","webpack:///../../node_modules/core-js/internals/set-to-string-tag.js","webpack:///../../node_modules/core-js/internals/shared-key.js","webpack:///../../node_modules/core-js/internals/shared-store.js","webpack:///../../node_modules/core-js/internals/shared.js","webpack:///../../node_modules/core-js/internals/species-constructor.js","webpack:///../../node_modules/core-js/internals/string-html-forced.js","webpack:///../../node_modules/core-js/internals/string-multibyte.js","webpack:///../../node_modules/core-js/internals/string-pad-webkit-bug.js","webpack:///../../node_modules/core-js/internals/string-pad.js","webpack:///../../node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///../../node_modules/core-js/internals/string-repeat.js","webpack:///../../node_modules/core-js/internals/string-trim-end.js","webpack:///../../node_modules/core-js/internals/string-trim-forced.js","webpack:///../../node_modules/core-js/internals/string-trim-start.js","webpack:///../../node_modules/core-js/internals/string-trim.js","webpack:///../../node_modules/core-js/internals/structured-clone-proper-transfer.js","webpack:///../../node_modules/core-js/internals/symbol-constructor-detection.js","webpack:///../../node_modules/core-js/internals/symbol-define-to-primitive.js","webpack:///../../node_modules/core-js/internals/symbol-registry-detection.js","webpack:///../../node_modules/core-js/internals/task.js","webpack:///../../node_modules/core-js/internals/this-number-value.js","webpack:///../../node_modules/core-js/internals/to-absolute-index.js","webpack:///../../node_modules/core-js/internals/to-big-int.js","webpack:///../../node_modules/core-js/internals/to-index.js","webpack:///../../node_modules/core-js/internals/to-indexed-object.js","webpack:///../../node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///../../node_modules/core-js/internals/to-length.js","webpack:///../../node_modules/core-js/internals/to-object.js","webpack:///../../node_modules/core-js/internals/to-offset.js","webpack:///../../node_modules/core-js/internals/to-positive-integer.js","webpack:///../../node_modules/core-js/internals/to-primitive.js","webpack:///../../node_modules/core-js/internals/to-property-key.js","webpack:///../../node_modules/core-js/internals/to-string-tag-support.js","webpack:///../../node_modules/core-js/internals/to-string.js","webpack:///../../node_modules/core-js/internals/to-uint8-clamped.js","webpack:///../../node_modules/core-js/internals/try-node-require.js","webpack:///../../node_modules/core-js/internals/try-to-string.js","webpack:///../../node_modules/core-js/internals/typed-array-constructor.js","webpack:///../../node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack:///../../node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack:///../../node_modules/core-js/internals/typed-array-from.js","webpack:///../../node_modules/core-js/internals/typed-array-species-constructor.js","webpack:///../../node_modules/core-js/internals/uid.js","webpack:///../../node_modules/core-js/internals/url-constructor-detection.js","webpack:///../../node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///../../node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///../../node_modules/core-js/internals/validate-arguments-length.js","webpack:///../../node_modules/core-js/internals/weak-map-basic-detection.js","webpack:///../../node_modules/core-js/internals/well-known-symbol-define.js","webpack:///../../node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///../../node_modules/core-js/internals/well-known-symbol.js","webpack:///../../node_modules/core-js/internals/whitespaces.js","webpack:///../../node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack:///../../node_modules/core-js/modules/es.aggregate-error.cause.js","webpack:///../../node_modules/core-js/modules/es.aggregate-error.constructor.js","webpack:///../../node_modules/core-js/modules/es.aggregate-error.js","webpack:///../../node_modules/core-js/modules/es.array-buffer.constructor.js","webpack:///../../node_modules/core-js/modules/es.array-buffer.is-view.js","webpack:///../../node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///../../node_modules/core-js/modules/es.array.at.js","webpack:///../../node_modules/core-js/modules/es.array.concat.js","webpack:///../../node_modules/core-js/modules/es.array.copy-within.js","webpack:///../../node_modules/core-js/modules/es.array.every.js","webpack:///../../node_modules/core-js/modules/es.array.fill.js","webpack:///../../node_modules/core-js/modules/es.array.filter.js","webpack:///../../node_modules/core-js/modules/es.array.find-index.js","webpack:///../../node_modules/core-js/modules/es.array.find-last-index.js","webpack:///../../node_modules/core-js/modules/es.array.find-last.js","webpack:///../../node_modules/core-js/modules/es.array.find.js","webpack:///../../node_modules/core-js/modules/es.array.flat-map.js","webpack:///../../node_modules/core-js/modules/es.array.flat.js","webpack:///../../node_modules/core-js/modules/es.array.for-each.js","webpack:///../../node_modules/core-js/modules/es.array.from.js","webpack:///../../node_modules/core-js/modules/es.array.includes.js","webpack:///../../node_modules/core-js/modules/es.array.index-of.js","webpack:///../../node_modules/core-js/modules/es.array.is-array.js","webpack:///../../node_modules/core-js/modules/es.array.iterator.js","webpack:///../../node_modules/core-js/modules/es.array.join.js","webpack:///../../node_modules/core-js/modules/es.array.last-index-of.js","webpack:///../../node_modules/core-js/modules/es.array.map.js","webpack:///../../node_modules/core-js/modules/es.array.of.js","webpack:///../../node_modules/core-js/modules/es.array.push.js","webpack:///../../node_modules/core-js/modules/es.array.reduce-right.js","webpack:///../../node_modules/core-js/modules/es.array.reduce.js","webpack:///../../node_modules/core-js/modules/es.array.reverse.js","webpack:///../../node_modules/core-js/modules/es.array.slice.js","webpack:///../../node_modules/core-js/modules/es.array.some.js","webpack:///../../node_modules/core-js/modules/es.array.sort.js","webpack:///../../node_modules/core-js/modules/es.array.species.js","webpack:///../../node_modules/core-js/modules/es.array.splice.js","webpack:///../../node_modules/core-js/modules/es.array.to-reversed.js","webpack:///../../node_modules/core-js/modules/es.array.to-sorted.js","webpack:///../../node_modules/core-js/modules/es.array.to-spliced.js","webpack:///../../node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:///../../node_modules/core-js/modules/es.array.unscopables.flat.js","webpack:///../../node_modules/core-js/modules/es.array.unshift.js","webpack:///../../node_modules/core-js/modules/es.array.with.js","webpack:///../../node_modules/core-js/modules/es.data-view.constructor.js","webpack:///../../node_modules/core-js/modules/es.data-view.js","webpack:///../../node_modules/core-js/modules/es.date.get-year.js","webpack:///../../node_modules/core-js/modules/es.date.now.js","webpack:///../../node_modules/core-js/modules/es.date.set-year.js","webpack:///../../node_modules/core-js/modules/es.date.to-gmt-string.js","webpack:///../../node_modules/core-js/modules/es.date.to-iso-string.js","webpack:///../../node_modules/core-js/modules/es.date.to-json.js","webpack:///../../node_modules/core-js/modules/es.date.to-primitive.js","webpack:///../../node_modules/core-js/modules/es.date.to-string.js","webpack:///../../node_modules/core-js/modules/es.error.cause.js","webpack:///../../node_modules/core-js/modules/es.error.to-string.js","webpack:///../../node_modules/core-js/modules/es.escape.js","webpack:///../../node_modules/core-js/modules/es.function.bind.js","webpack:///../../node_modules/core-js/modules/es.function.has-instance.js","webpack:///../../node_modules/core-js/modules/es.function.name.js","webpack:///../../node_modules/core-js/modules/es.global-this.js","webpack:///../../node_modules/core-js/modules/es.json.stringify.js","webpack:///../../node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///../../node_modules/core-js/modules/es.map.constructor.js","webpack:///../../node_modules/core-js/modules/es.map.js","webpack:///../../node_modules/core-js/modules/es.math.acosh.js","webpack:///../../node_modules/core-js/modules/es.math.asinh.js","webpack:///../../node_modules/core-js/modules/es.math.atanh.js","webpack:///../../node_modules/core-js/modules/es.math.cbrt.js","webpack:///../../node_modules/core-js/modules/es.math.clz32.js","webpack:///../../node_modules/core-js/modules/es.math.cosh.js","webpack:///../../node_modules/core-js/modules/es.math.expm1.js","webpack:///../../node_modules/core-js/modules/es.math.fround.js","webpack:///../../node_modules/core-js/modules/es.math.hypot.js","webpack:///../../node_modules/core-js/modules/es.math.imul.js","webpack:///../../node_modules/core-js/modules/es.math.log10.js","webpack:///../../node_modules/core-js/modules/es.math.log1p.js","webpack:///../../node_modules/core-js/modules/es.math.log2.js","webpack:///../../node_modules/core-js/modules/es.math.sign.js","webpack:///../../node_modules/core-js/modules/es.math.sinh.js","webpack:///../../node_modules/core-js/modules/es.math.tanh.js","webpack:///../../node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///../../node_modules/core-js/modules/es.math.trunc.js","webpack:///../../node_modules/core-js/modules/es.number.constructor.js","webpack:///../../node_modules/core-js/modules/es.number.epsilon.js","webpack:///../../node_modules/core-js/modules/es.number.is-finite.js","webpack:///../../node_modules/core-js/modules/es.number.is-integer.js","webpack:///../../node_modules/core-js/modules/es.number.is-nan.js","webpack:///../../node_modules/core-js/modules/es.number.is-safe-integer.js","webpack:///../../node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///../../node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///../../node_modules/core-js/modules/es.number.parse-float.js","webpack:///../../node_modules/core-js/modules/es.number.parse-int.js","webpack:///../../node_modules/core-js/modules/es.number.to-exponential.js","webpack:///../../node_modules/core-js/modules/es.number.to-fixed.js","webpack:///../../node_modules/core-js/modules/es.number.to-precision.js","webpack:///../../node_modules/core-js/modules/es.object.assign.js","webpack:///../../node_modules/core-js/modules/es.object.create.js","webpack:///../../node_modules/core-js/modules/es.object.define-getter.js","webpack:///../../node_modules/core-js/modules/es.object.define-properties.js","webpack:///../../node_modules/core-js/modules/es.object.define-property.js","webpack:///../../node_modules/core-js/modules/es.object.define-setter.js","webpack:///../../node_modules/core-js/modules/es.object.entries.js","webpack:///../../node_modules/core-js/modules/es.object.freeze.js","webpack:///../../node_modules/core-js/modules/es.object.from-entries.js","webpack:///../../node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///../../node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///../../node_modules/core-js/modules/es.object.get-own-property-names.js","webpack:///../../node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack:///../../node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:///../../node_modules/core-js/modules/es.object.has-own.js","webpack:///../../node_modules/core-js/modules/es.object.is-extensible.js","webpack:///../../node_modules/core-js/modules/es.object.is-frozen.js","webpack:///../../node_modules/core-js/modules/es.object.is-sealed.js","webpack:///../../node_modules/core-js/modules/es.object.is.js","webpack:///../../node_modules/core-js/modules/es.object.keys.js","webpack:///../../node_modules/core-js/modules/es.object.lookup-getter.js","webpack:///../../node_modules/core-js/modules/es.object.lookup-setter.js","webpack:///../../node_modules/core-js/modules/es.object.prevent-extensions.js","webpack:///../../node_modules/core-js/modules/es.object.proto.js","webpack:///../../node_modules/core-js/modules/es.object.seal.js","webpack:///../../node_modules/core-js/modules/es.object.set-prototype-of.js","webpack:///../../node_modules/core-js/modules/es.object.to-string.js","webpack:///../../node_modules/core-js/modules/es.object.values.js","webpack:///../../node_modules/core-js/modules/es.parse-float.js","webpack:///../../node_modules/core-js/modules/es.parse-int.js","webpack:///../../node_modules/core-js/modules/es.promise.all-settled.js","webpack:///../../node_modules/core-js/modules/es.promise.all.js","webpack:///../../node_modules/core-js/modules/es.promise.any.js","webpack:///../../node_modules/core-js/modules/es.promise.catch.js","webpack:///../../node_modules/core-js/modules/es.promise.constructor.js","webpack:///../../node_modules/core-js/modules/es.promise.finally.js","webpack:///../../node_modules/core-js/modules/es.promise.js","webpack:///../../node_modules/core-js/modules/es.promise.race.js","webpack:///../../node_modules/core-js/modules/es.promise.reject.js","webpack:///../../node_modules/core-js/modules/es.promise.resolve.js","webpack:///../../node_modules/core-js/modules/es.reflect.apply.js","webpack:///../../node_modules/core-js/modules/es.reflect.construct.js","webpack:///../../node_modules/core-js/modules/es.reflect.define-property.js","webpack:///../../node_modules/core-js/modules/es.reflect.delete-property.js","webpack:///../../node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js","webpack:///../../node_modules/core-js/modules/es.reflect.get-prototype-of.js","webpack:///../../node_modules/core-js/modules/es.reflect.get.js","webpack:///../../node_modules/core-js/modules/es.reflect.has.js","webpack:///../../node_modules/core-js/modules/es.reflect.is-extensible.js","webpack:///../../node_modules/core-js/modules/es.reflect.own-keys.js","webpack:///../../node_modules/core-js/modules/es.reflect.prevent-extensions.js","webpack:///../../node_modules/core-js/modules/es.reflect.set-prototype-of.js","webpack:///../../node_modules/core-js/modules/es.reflect.set.js","webpack:///../../node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack:///../../node_modules/core-js/modules/es.regexp.constructor.js","webpack:///../../node_modules/core-js/modules/es.regexp.dot-all.js","webpack:///../../node_modules/core-js/modules/es.regexp.exec.js","webpack:///../../node_modules/core-js/modules/es.regexp.flags.js","webpack:///../../node_modules/core-js/modules/es.regexp.sticky.js","webpack:///../../node_modules/core-js/modules/es.regexp.test.js","webpack:///../../node_modules/core-js/modules/es.regexp.to-string.js","webpack:///../../node_modules/core-js/modules/es.set.constructor.js","webpack:///../../node_modules/core-js/modules/es.set.js","webpack:///../../node_modules/core-js/modules/es.string.anchor.js","webpack:///../../node_modules/core-js/modules/es.string.at-alternative.js","webpack:///../../node_modules/core-js/modules/es.string.big.js","webpack:///../../node_modules/core-js/modules/es.string.blink.js","webpack:///../../node_modules/core-js/modules/es.string.bold.js","webpack:///../../node_modules/core-js/modules/es.string.code-point-at.js","webpack:///../../node_modules/core-js/modules/es.string.ends-with.js","webpack:///../../node_modules/core-js/modules/es.string.fixed.js","webpack:///../../node_modules/core-js/modules/es.string.fontcolor.js","webpack:///../../node_modules/core-js/modules/es.string.fontsize.js","webpack:///../../node_modules/core-js/modules/es.string.from-code-point.js","webpack:///../../node_modules/core-js/modules/es.string.includes.js","webpack:///../../node_modules/core-js/modules/es.string.is-well-formed.js","webpack:///../../node_modules/core-js/modules/es.string.italics.js","webpack:///../../node_modules/core-js/modules/es.string.iterator.js","webpack:///../../node_modules/core-js/modules/es.string.link.js","webpack:///../../node_modules/core-js/modules/es.string.match-all.js","webpack:///../../node_modules/core-js/modules/es.string.match.js","webpack:///../../node_modules/core-js/modules/es.string.pad-end.js","webpack:///../../node_modules/core-js/modules/es.string.pad-start.js","webpack:///../../node_modules/core-js/modules/es.string.raw.js","webpack:///../../node_modules/core-js/modules/es.string.repeat.js","webpack:///../../node_modules/core-js/modules/es.string.replace-all.js","webpack:///../../node_modules/core-js/modules/es.string.replace.js","webpack:///../../node_modules/core-js/modules/es.string.search.js","webpack:///../../node_modules/core-js/modules/es.string.small.js","webpack:///../../node_modules/core-js/modules/es.string.split.js","webpack:///../../node_modules/core-js/modules/es.string.starts-with.js","webpack:///../../node_modules/core-js/modules/es.string.strike.js","webpack:///../../node_modules/core-js/modules/es.string.sub.js","webpack:///../../node_modules/core-js/modules/es.string.substr.js","webpack:///../../node_modules/core-js/modules/es.string.sup.js","webpack:///../../node_modules/core-js/modules/es.string.to-well-formed.js","webpack:///../../node_modules/core-js/modules/es.string.trim-end.js","webpack:///../../node_modules/core-js/modules/es.string.trim-left.js","webpack:///../../node_modules/core-js/modules/es.string.trim-right.js","webpack:///../../node_modules/core-js/modules/es.string.trim-start.js","webpack:///../../node_modules/core-js/modules/es.string.trim.js","webpack:///../../node_modules/core-js/modules/es.symbol.async-iterator.js","webpack:///../../node_modules/core-js/modules/es.symbol.constructor.js","webpack:///../../node_modules/core-js/modules/es.symbol.description.js","webpack:///../../node_modules/core-js/modules/es.symbol.for.js","webpack:///../../node_modules/core-js/modules/es.symbol.has-instance.js","webpack:///../../node_modules/core-js/modules/es.symbol.is-concat-spreadable.js","webpack:///../../node_modules/core-js/modules/es.symbol.iterator.js","webpack:///../../node_modules/core-js/modules/es.symbol.js","webpack:///../../node_modules/core-js/modules/es.symbol.key-for.js","webpack:///../../node_modules/core-js/modules/es.symbol.match-all.js","webpack:///../../node_modules/core-js/modules/es.symbol.match.js","webpack:///../../node_modules/core-js/modules/es.symbol.replace.js","webpack:///../../node_modules/core-js/modules/es.symbol.search.js","webpack:///../../node_modules/core-js/modules/es.symbol.species.js","webpack:///../../node_modules/core-js/modules/es.symbol.split.js","webpack:///../../node_modules/core-js/modules/es.symbol.to-primitive.js","webpack:///../../node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack:///../../node_modules/core-js/modules/es.symbol.unscopables.js","webpack:///../../node_modules/core-js/modules/es.typed-array.at.js","webpack:///../../node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///../../node_modules/core-js/modules/es.typed-array.every.js","webpack:///../../node_modules/core-js/modules/es.typed-array.fill.js","webpack:///../../node_modules/core-js/modules/es.typed-array.filter.js","webpack:///../../node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///../../node_modules/core-js/modules/es.typed-array.find-last-index.js","webpack:///../../node_modules/core-js/modules/es.typed-array.find-last.js","webpack:///../../node_modules/core-js/modules/es.typed-array.find.js","webpack:///../../node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:///../../node_modules/core-js/modules/es.typed-array.float64-array.js","webpack:///../../node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///../../node_modules/core-js/modules/es.typed-array.from.js","webpack:///../../node_modules/core-js/modules/es.typed-array.includes.js","webpack:///../../node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///../../node_modules/core-js/modules/es.typed-array.int16-array.js","webpack:///../../node_modules/core-js/modules/es.typed-array.int32-array.js","webpack:///../../node_modules/core-js/modules/es.typed-array.int8-array.js","webpack:///../../node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///../../node_modules/core-js/modules/es.typed-array.join.js","webpack:///../../node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///../../node_modules/core-js/modules/es.typed-array.map.js","webpack:///../../node_modules/core-js/modules/es.typed-array.of.js","webpack:///../../node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///../../node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///../../node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///../../node_modules/core-js/modules/es.typed-array.set.js","webpack:///../../node_modules/core-js/modules/es.typed-array.slice.js","webpack:///../../node_modules/core-js/modules/es.typed-array.some.js","webpack:///../../node_modules/core-js/modules/es.typed-array.sort.js","webpack:///../../node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///../../node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///../../node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack:///../../node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack:///../../node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///../../node_modules/core-js/modules/es.typed-array.uint16-array.js","webpack:///../../node_modules/core-js/modules/es.typed-array.uint32-array.js","webpack:///../../node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack:///../../node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js","webpack:///../../node_modules/core-js/modules/es.typed-array.with.js","webpack:///../../node_modules/core-js/modules/es.unescape.js","webpack:///../../node_modules/core-js/modules/es.weak-map.constructor.js","webpack:///../../node_modules/core-js/modules/es.weak-map.js","webpack:///../../node_modules/core-js/modules/es.weak-set.constructor.js","webpack:///../../node_modules/core-js/modules/es.weak-set.js","webpack:///../../node_modules/core-js/modules/web.atob.js","webpack:///../../node_modules/core-js/modules/web.btoa.js","webpack:///../../node_modules/core-js/modules/web.clear-immediate.js","webpack:///../../node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///../../node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///../../node_modules/core-js/modules/web.dom-exception.constructor.js","webpack:///../../node_modules/core-js/modules/web.dom-exception.stack.js","webpack:///../../node_modules/core-js/modules/web.dom-exception.to-string-tag.js","webpack:///../../node_modules/core-js/modules/web.immediate.js","webpack:///../../node_modules/core-js/modules/web.queue-microtask.js","webpack:///../../node_modules/core-js/modules/web.self.js","webpack:///../../node_modules/core-js/modules/web.set-immediate.js","webpack:///../../node_modules/core-js/modules/web.set-interval.js","webpack:///../../node_modules/core-js/modules/web.set-timeout.js","webpack:///../../node_modules/core-js/modules/web.structured-clone.js","webpack:///../../node_modules/core-js/modules/web.timers.js","webpack:///../../node_modules/core-js/modules/web.url-search-params.constructor.js","webpack:///../../node_modules/core-js/modules/web.url-search-params.delete.js","webpack:///../../node_modules/core-js/modules/web.url-search-params.has.js","webpack:///../../node_modules/core-js/modules/web.url-search-params.js","webpack:///../../node_modules/core-js/modules/web.url-search-params.size.js","webpack:///../../node_modules/core-js/modules/web.url.can-parse.js","webpack:///../../node_modules/core-js/modules/web.url.constructor.js","webpack:///../../node_modules/core-js/modules/web.url.js","webpack:///../../node_modules/core-js/modules/web.url.to-json.js","webpack:///../../node_modules/core-js/stable/index.js","webpack:///../../node_modules/react-image-crop/dist/ReactCrop.css","webpack:///../../node_modules/css-loader/dist/runtime/api.js","webpack:///../../node_modules/css-select/index.js","webpack:///../../node_modules/css-select/lib/attributes.js","webpack:///../../node_modules/css-select/lib/compile.js","webpack:///../../node_modules/css-select/lib/general.js","webpack:///../../node_modules/css-select/lib/pseudos.js","webpack:///../../node_modules/css-select/lib/sort.js","webpack:///../../node_modules/css-what/index.js","webpack:///../../node_modules/direction/index.js","webpack:///../../node_modules/dom-serializer/index.js","webpack:///../../node_modules/domelementtype/index.js","webpack:///../../node_modules/domhandler/index.js","webpack:///../../node_modules/domhandler/lib/element.js","webpack:///../../node_modules/domhandler/lib/node.js","webpack:///../../node_modules/domutils/index.js","webpack:///../../node_modules/domutils/lib/helpers.js","webpack:///../../node_modules/domutils/lib/legacy.js","webpack:///../../node_modules/domutils/lib/manipulation.js","webpack:///../../node_modules/domutils/lib/querying.js","webpack:///../../node_modules/domutils/lib/stringify.js","webpack:///../../node_modules/domutils/lib/traversal.js","webpack:///../../node_modules/entities/index.js","webpack:///../../node_modules/entities/lib/decode.js","webpack:///../../node_modules/entities/lib/decode_codepoint.js","webpack:///../../node_modules/entities/lib/encode.js","webpack:///../../node_modules/events/events.js","webpack:///../../node_modules/extend/index.js","webpack:///../../node_modules/file-saver/dist/FileSaver.min.js","webpack:///../../node_modules/function-bind/implementation.js","webpack:///../../node_modules/function-bind/index.js","webpack:///../../node_modules/get-intrinsic/index.js","webpack:///../../node_modules/has-symbols/index.js","webpack:///../../node_modules/has-symbols/shams.js","webpack:///../../node_modules/has/src/index.js","webpack:///../../node_modules/htmlparser2/lib/CollectingHandler.js","webpack:///../../node_modules/htmlparser2/lib/FeedHandler.js","webpack:///../../node_modules/htmlparser2/lib/Parser.js","webpack:///../../node_modules/htmlparser2/lib/ProxyHandler.js","webpack:///../../node_modules/htmlparser2/lib/Stream.js","webpack:///../../node_modules/htmlparser2/lib/Tokenizer.js","webpack:///../../node_modules/htmlparser2/lib/WritableStream.js","webpack:///../../node_modules/htmlparser2/lib/index.js","webpack:///../../node_modules/humanize-duration/humanize-duration.js","webpack:///../../node_modules/ieee754/index.js","webpack:///../../node_modules/inherits/inherits_browser.js","webpack:///../../node_modules/inline-style-parser/index.js","webpack:///../../node_modules/is-hotkey/lib/index.js","webpack:///../../node_modules/is-plain-obj/index.js","webpack:///../../node_modules/jquery.cookie/jquery.cookie.js","webpack:///../../node_modules/jquery.scrollto/jquery.scrollTo.js","webpack:///../../node_modules/js-cookie/src/js.cookie.js","webpack:///../../node_modules/lodash.assignin/index.js","webpack:///../../node_modules/lodash.bind/index.js","webpack:///../../node_modules/lodash.defaults/index.js","webpack:///../../node_modules/lodash.filter/index.js","webpack:///../../node_modules/lodash.flatten/index.js","webpack:///../../node_modules/lodash.foreach/index.js","webpack:///../../node_modules/lodash.map/index.js","webpack:///../../node_modules/lodash.merge/index.js","webpack:///../../node_modules/lodash.pick/index.js","webpack:///../../node_modules/lodash.reduce/index.js","webpack:///../../node_modules/lodash.reject/index.js","webpack:///../../node_modules/lodash.some/index.js","webpack:///../../node_modules/lodash/_Symbol.js","webpack:///../../node_modules/lodash/_baseGetTag.js","webpack:///../../node_modules/lodash/_baseTrim.js","webpack:///../../node_modules/lodash/_freeGlobal.js","webpack:///../../node_modules/lodash/_getRawTag.js","webpack:///../../node_modules/lodash/_objectToString.js","webpack:///../../node_modules/lodash/_root.js","webpack:///../../node_modules/lodash/_trimmedEndIndex.js","webpack:///../../node_modules/lodash/debounce.js","webpack:///../../node_modules/lodash/isObject.js","webpack:///../../node_modules/lodash/isObjectLike.js","webpack:///../../node_modules/lodash/isSymbol.js","webpack:///../../node_modules/lodash/now.js","webpack:///../../node_modules/lodash/throttle.js","webpack:///../../node_modules/lodash/toNumber.js","webpack:///../../node_modules/mdast-util-definitions/index.js","webpack:///../../node_modules/mdast-util-from-markdown/dist/index.js","webpack:///../../node_modules/mdast-util-from-markdown/index.js","webpack:///../../node_modules/mdast-util-to-hast/index.js","webpack:///../../node_modules/mdast-util-to-hast/lib/all.js","webpack:///../../node_modules/mdast-util-to-hast/lib/footer.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/break.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/code.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/delete.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/footnote.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/heading.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/html.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/image.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/index.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/link.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/list.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/root.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/strong.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/table.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/text.js","webpack:///../../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","webpack:///../../node_modules/mdast-util-to-hast/lib/index.js","webpack:///../../node_modules/mdast-util-to-hast/lib/one.js","webpack:///../../node_modules/mdast-util-to-hast/lib/revert.js","webpack:///../../node_modules/mdast-util-to-hast/lib/wrap.js","webpack:///../../node_modules/mdast-util-to-string/index.js","webpack:///../../node_modules/mdurl/encode.js","webpack:///../../node_modules/micromark/dist/character/ascii-alpha.js","webpack:///../../node_modules/micromark/dist/character/ascii-alphanumeric.js","webpack:///../../node_modules/micromark/dist/character/ascii-atext.js","webpack:///../../node_modules/micromark/dist/character/ascii-control.js","webpack:///../../node_modules/micromark/dist/character/ascii-digit.js","webpack:///../../node_modules/micromark/dist/character/ascii-hex-digit.js","webpack:///../../node_modules/micromark/dist/character/ascii-punctuation.js","webpack:///../../node_modules/micromark/dist/character/markdown-line-ending-or-space.js","webpack:///../../node_modules/micromark/dist/character/markdown-line-ending.js","webpack:///../../node_modules/micromark/dist/character/markdown-space.js","webpack:///../../node_modules/micromark/dist/character/unicode-punctuation.js","webpack:///../../node_modules/micromark/dist/character/unicode-whitespace.js","webpack:///../../node_modules/micromark/dist/constant/assign.js","webpack:///../../node_modules/micromark/dist/constant/from-char-code.js","webpack:///../../node_modules/micromark/dist/constant/has-own-property.js","webpack:///../../node_modules/micromark/dist/constant/html-block-names.js","webpack:///../../node_modules/micromark/dist/constant/html-raw-names.js","webpack:///../../node_modules/micromark/dist/constant/splice.js","webpack:///../../node_modules/micromark/dist/constant/unicode-punctuation-regex.js","webpack:///../../node_modules/micromark/dist/constructs.js","webpack:///../../node_modules/micromark/dist/initialize/content.js","webpack:///../../node_modules/micromark/dist/initialize/document.js","webpack:///../../node_modules/micromark/dist/initialize/flow.js","webpack:///../../node_modules/micromark/dist/initialize/text.js","webpack:///../../node_modules/micromark/dist/parse.js","webpack:///../../node_modules/micromark/dist/postprocess.js","webpack:///../../node_modules/micromark/dist/preprocess.js","webpack:///../../node_modules/micromark/dist/tokenize/attention.js","webpack:///../../node_modules/micromark/dist/tokenize/autolink.js","webpack:///../../node_modules/micromark/dist/tokenize/block-quote.js","webpack:///../../node_modules/micromark/dist/tokenize/character-escape.js","webpack:///../../node_modules/micromark/dist/tokenize/character-reference.js","webpack:///../../node_modules/micromark/dist/tokenize/code-fenced.js","webpack:///../../node_modules/micromark/dist/tokenize/code-indented.js","webpack:///../../node_modules/micromark/dist/tokenize/code-text.js","webpack:///../../node_modules/micromark/dist/tokenize/content.js","webpack:///../../node_modules/micromark/dist/tokenize/definition.js","webpack:///../../node_modules/micromark/dist/tokenize/factory-destination.js","webpack:///../../node_modules/micromark/dist/tokenize/factory-label.js","webpack:///../../node_modules/micromark/dist/tokenize/factory-space.js","webpack:///../../node_modules/micromark/dist/tokenize/factory-title.js","webpack:///../../node_modules/micromark/dist/tokenize/factory-whitespace.js","webpack:///../../node_modules/micromark/dist/tokenize/hard-break-escape.js","webpack:///../../node_modules/micromark/dist/tokenize/heading-atx.js","webpack:///../../node_modules/micromark/dist/tokenize/html-flow.js","webpack:///../../node_modules/micromark/dist/tokenize/html-text.js","webpack:///../../node_modules/micromark/dist/tokenize/label-end.js","webpack:///../../node_modules/micromark/dist/tokenize/label-start-image.js","webpack:///../../node_modules/micromark/dist/tokenize/label-start-link.js","webpack:///../../node_modules/micromark/dist/tokenize/line-ending.js","webpack:///../../node_modules/micromark/dist/tokenize/list.js","webpack:///../../node_modules/micromark/dist/tokenize/partial-blank-line.js","webpack:///../../node_modules/micromark/dist/tokenize/setext-underline.js","webpack:///../../node_modules/micromark/dist/tokenize/thematic-break.js","webpack:///../../node_modules/micromark/dist/util/chunked-push.js","webpack:///../../node_modules/micromark/dist/util/chunked-splice.js","webpack:///../../node_modules/micromark/dist/util/classify-character.js","webpack:///../../node_modules/micromark/dist/util/combine-extensions.js","webpack:///../../node_modules/micromark/dist/util/create-tokenizer.js","webpack:///../../node_modules/micromark/dist/util/miniflat.js","webpack:///../../node_modules/micromark/dist/util/move-point.js","webpack:///../../node_modules/micromark/dist/util/normalize-identifier.js","webpack:///../../node_modules/micromark/dist/util/prefix-size.js","webpack:///../../node_modules/micromark/dist/util/regex-check.js","webpack:///../../node_modules/micromark/dist/util/resolve-all.js","webpack:///../../node_modules/micromark/dist/util/safe-from-int.js","webpack:///../../node_modules/micromark/dist/util/serialize-chunks.js","webpack:///../../node_modules/micromark/dist/util/shallow.js","webpack:///../../node_modules/micromark/dist/util/size-chunks.js","webpack:///../../node_modules/micromark/dist/util/slice-chunks.js","webpack:///../../node_modules/micromark/dist/util/subtokenize.js","webpack:///../../node_modules/nth-check/compile.js","webpack:///../../node_modules/nth-check/index.js","webpack:///../../node_modules/nth-check/parse.js","webpack:///../../node_modules/object-inspect/index.js","webpack:///../../node_modules/parse-entities/decode-entity.browser.js","webpack:///../../node_modules/prop-types/factoryWithThrowingShims.js","webpack:///../../node_modules/prop-types/index.js","webpack:///../../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///../../node_modules/property-information/find.js","webpack:///../../node_modules/property-information/html.js","webpack:///../../node_modules/property-information/lib/aria.js","webpack:///../../node_modules/property-information/lib/html.js","webpack:///../../node_modules/property-information/lib/svg.js","webpack:///../../node_modules/property-information/lib/util/case-insensitive-transform.js","webpack:///../../node_modules/property-information/lib/util/case-sensitive-transform.js","webpack:///../../node_modules/property-information/lib/util/create.js","webpack:///../../node_modules/property-information/lib/util/defined-info.js","webpack:///../../node_modules/property-information/lib/util/info.js","webpack:///../../node_modules/property-information/lib/util/merge.js","webpack:///../../node_modules/property-information/lib/util/schema.js","webpack:///../../node_modules/property-information/lib/util/types.js","webpack:///../../node_modules/property-information/lib/xlink.js","webpack:///../../node_modules/property-information/lib/xml.js","webpack:///../../node_modules/property-information/lib/xmlns.js","webpack:///../../node_modules/property-information/node_modules/xtend/immutable.js","webpack:///../../node_modules/property-information/normalize.js","webpack:///../../node_modules/property-information/svg.js","webpack:///../../node_modules/qs/lib/formats.js","webpack:///../../node_modules/qs/lib/index.js","webpack:///../../node_modules/qs/lib/parse.js","webpack:///../../node_modules/qs/lib/stringify.js","webpack:///../../node_modules/qs/lib/utils.js","webpack:///../../node_modules/querystring/decode.js","webpack:///../../node_modules/querystring/encode.js","webpack:///../../node_modules/querystring/index.js","webpack:///../../node_modules/react-class/autoBind.js","webpack:///../../node_modules/react-class/lib/index.js","webpack:///../../node_modules/react-image-crop/dist/ReactCrop.min.js","webpack:///../../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","webpack:///../../node_modules/react-markdown/node_modules/react-is/index.js","webpack:///../../node_modules/react-markdown/src/ast-to-react.js","webpack:///../../node_modules/react-markdown/src/react-markdown.js","webpack:///../../node_modules/react-markdown/src/rehype-filter.js","webpack:///../../node_modules/react-markdown/src/uri-transformer.js","webpack:///../../node_modules/react-tag-autocomplete/dist/ReactTags.umd.js","webpack:///../../node_modules/regenerator-runtime/runtime.js","webpack:///../../node_modules/remark-parse/index.js","webpack:///../../node_modules/remark-rehype/index.js","webpack:///../../node_modules/safe-buffer/index.js","webpack:///../../node_modules/sanitize-html/dist/sanitize-html.js","webpack:///../../node_modules/side-channel/index.js","webpack:///../../node_modules/space-separated-tokens/index.js","webpack:///../../node_modules/string_decoder/lib/string_decoder.js","webpack:///../../node_modules/striptags/striptags.js","webpack:///../../node_modules/react-image-crop/dist/ReactCrop.css?5595","webpack:///../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///../../node_modules/style-to-object/index.js","webpack:///../../node_modules/trough/index.js","webpack:///../../node_modules/trough/wrap.js","webpack:///../../node_modules/unified/index.js","webpack:///../../node_modules/unified/node_modules/is-buffer/index.js","webpack:///../../node_modules/unist-builder/index.js","webpack:///../../node_modules/unist-util-generated/index.js","webpack:///../../node_modules/unist-util-is/convert.js","webpack:///../../node_modules/unist-util-position/index.js","webpack:///../../node_modules/unist-util-stringify-position/index.js","webpack:///../../node_modules/unist-util-visit-parents/color.browser.js","webpack:///../../node_modules/unist-util-visit-parents/index.js","webpack:///../../node_modules/unist-util-visit/index.js","webpack:///../../node_modules/vfile-message/index.js","webpack:///../../node_modules/vfile/index.js","webpack:///../../node_modules/vfile/lib/core.js","webpack:///../../node_modules/vfile/lib/index.js","webpack:///../../node_modules/vfile/lib/minpath.browser.js","webpack:///../../node_modules/vfile/lib/minproc.browser.js","webpack:///../../node_modules/vfile/node_modules/is-buffer/index.js","webpack:///external var \"React\"","webpack:///external var \"ReactDOM\"","webpack:///external var \"jQuery\"","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/harmony module decorator","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/nonce","webpack:///../../node_modules/@sentry/core/esm/version.js","webpack:///../../node_modules/@sentry/utils/esm/logger.js","webpack:///../../node_modules/@sentry/utils/esm/is.js","webpack:///../../node_modules/@sentry/utils/esm/browser.js","webpack:///../../node_modules/@sentry/utils/esm/string.js","webpack:///../../node_modules/@sentry/utils/esm/object.js","webpack:///../../node_modules/@sentry/utils/esm/misc.js","webpack:///../../node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack:///../../node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack:///../../node_modules/@sentry/core/esm/constants.js","webpack:///../../node_modules/@sentry/utils/esm/syncpromise.js","webpack:///../../node_modules/@sentry/core/esm/session.js","webpack:///../../node_modules/@sentry/core/esm/scope.js","webpack:///../../node_modules/@sentry/core/esm/hub.js","webpack:///../../node_modules/@sentry/core/esm/integration.js","webpack:///../../node_modules/@sentry/utils/esm/stacktrace.js","webpack:///../../node_modules/@sentry/utils/esm/supports.js","webpack:///../../node_modules/@sentry/utils/esm/vendor/supportsHistory.js","webpack:///../../node_modules/@sentry/utils/esm/instrument.js","webpack:///../../node_modules/@sentry/utils/esm/dsn.js","webpack:///../../node_modules/@sentry/utils/esm/normalize.js","webpack:///../../node_modules/@sentry/utils/esm/memo.js","webpack:///../../node_modules/@sentry/utils/esm/envelope.js","webpack:///../../node_modules/@sentry/utils/esm/error.js","webpack:///../../node_modules/@sentry/core/esm/api.js","webpack:///../../node_modules/@sentry/core/esm/utils/prepareEvent.js","webpack:///../../node_modules/@sentry/core/esm/baseclient.js","webpack:///../../node_modules/@sentry/core/esm/envelope.js","webpack:///../../node_modules/@sentry/browser/esm/eventbuilder.js","webpack:///../../node_modules/@sentry/core/esm/exports.js","webpack:///../../node_modules/@sentry/browser/esm/helpers.js","webpack:///../../node_modules/@sentry/utils/esm/severity.js","webpack:///../../node_modules/@sentry/utils/esm/url.js","webpack:///../../node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack:///../../node_modules/@sentry/browser/esm/client.js","webpack:///../../node_modules/@sentry/browser/esm/userfeedback.js","webpack:///../../node_modules/@sentry/utils/esm/clientreport.js","webpack:///../../node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack:///../../node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack:///../../node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack:///../../node_modules/@sentry/browser/esm/integrations/httpcontext.js","webpack:///../../node_modules/@sentry/browser/esm/integrations/dedupe.js","webpack:///../../node_modules/@sentry/browser/esm/stack-parsers.js","webpack:///../../node_modules/@sentry/utils/esm/ratelimit.js","webpack:///../../node_modules/@sentry/core/esm/transports/base.js","webpack:///../../node_modules/@sentry/utils/esm/promisebuffer.js","webpack:///../../node_modules/@sentry/browser/esm/transports/utils.js","webpack:///../../node_modules/@sentry/browser/esm/transports/fetch.js","webpack:///../../node_modules/@sentry/browser/esm/transports/xhr.js","webpack:///../../node_modules/@sentry/browser/esm/sdk.js","webpack:///../../node_modules/@sentry/core/esm/tracing/span.js","webpack:///../../node_modules/@sentry/core/esm/tracing/transaction.js","webpack:///../../node_modules/@sentry/core/esm/tracing/idletransaction.js","webpack:///../../node_modules/@sentry/core/esm/utils/hasTracingEnabled.js","webpack:///../../node_modules/@sentry/core/esm/tracing/utils.js","webpack:///../../node_modules/@sentry/core/esm/tracing/errors.js","webpack:///../../node_modules/@sentry/core/esm/tracing/hubextensions.js","webpack:///../../node_modules/@sentry/utils/esm/tracing.js","webpack:///../../node_modules/@sentry/utils/esm/baggage.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/types.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/metrics/utils.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/metrics/index.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getFID.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getCLS.js","webpack:///../../node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/request.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/browsertracing.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/router.js","webpack:///../../node_modules/@sentry-internal/tracing/esm/browser/backgroundtab.js","webpack:///../../node_modules/@sentry/replay/esm/index.js","webpack:///./client.jsx","webpack:///../../node_modules/@sentry/react/esm/sdk.js","webpack:///../../node_modules/@sentry/core/esm/sdk.js"],"sourcesContent":["/*\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\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n  return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nfunction getSDKSource() {\n  // @ts-ignore \"npm\" is injected by rollup during build process\n  return \"npm\";\n}\n\nexport { getSDKSource, isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { isBrowserBundle } from './env.js';\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\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n  // explicitly check for browser bundles as those can be optimized statically\n  // by terser/rollup.\n  return (\n    !isBrowserBundle() &&\n    Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n  );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod, request) {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n  let mod;\n\n  try {\n    mod = dynamicRequire(module, moduleName);\n  } catch (e) {\n    // no-empty\n  }\n\n  try {\n    const { cwd } = dynamicRequire(module, 'process');\n    mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n  } catch (e) {\n    // no-empty\n  }\n\n  return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","import { isNodeEnv, dynamicRequire } from './node.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\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 = {\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 */\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() {\n  const { performance } = 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() {\n  try {\n    const perfHooks = dynamicRequire(module, 'perf_hooks') ;\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 = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst 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 */\nconst 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 */\nconst timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nconst timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nconst usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\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 */\nconst browserPerformanceTimeOrigin = (() => {\n  // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n  // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n  // data as reliable if they are within a reasonable threshold of the current time.\n\n  const { performance } = WINDOW;\n  if (!performance || !performance.now) {\n    _browserPerformanceTimeOriginMode = 'none';\n    return undefined;\n  }\n\n  const threshold = 3600 * 1000;\n  const performanceNow = performance.now();\n  const dateNow = Date.now();\n\n  // if timeOrigin isn't available set delta to threshold so it isn't used\n  const timeOriginDelta = performance.timeOrigin\n    ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n    : threshold;\n  const timeOriginIsReliable = timeOriginDelta < threshold;\n\n  // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n  // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n  // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n  // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n  // Date API.\n  // eslint-disable-next-line deprecation/deprecation\n  const navigationStart = performance.timing && performance.timing.navigationStart;\n  const hasNavigationStart = typeof navigationStart === 'number';\n  // if navigationStart isn't available set delta to threshold so it isn't used\n  const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n  const navigationStartIsReliable = navigationStartDelta < threshold;\n\n  if (timeOriginIsReliable || navigationStartIsReliable) {\n    // Use the more reliable time origin\n    if (timeOriginDelta <= navigationStartDelta) {\n      _browserPerformanceTimeOriginMode = 'timeOrigin';\n      return performance.timeOrigin;\n    } else {\n      _browserPerformanceTimeOriginMode = 'navigationStart';\n      return navigationStart;\n    }\n  }\n\n  // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n  _browserPerformanceTimeOriginMode = 'dateNow';\n  return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs, usingPerformanceAPI };\n//# sourceMappingURL=time.js.map\n","/** Internal global with common properties and Sentry extensions  */\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) {\n  return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ =\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 () {\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 */\nfunction getGlobalObject() {\n  return GLOBAL_OBJ ;\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 */\nfunction getGlobalSingleton(name, creator, obj) {\n  const gbl = (obj || GLOBAL_OBJ) ;\n  const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n  const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n  return singleton;\n}\n\nexport { GLOBAL_OBJ, getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=worldwide.js.map\n","import $ from \"./sefariaJquery\";\nimport Sefaria from \"./sefaria\";\n\nclass VersionPreferences {\n    constructor(versionPrefsByCorpus) {\n        this._versionPrefsByCorpus = versionPrefsByCorpus || {};\n        this.update_cookie();\n    }\n    getVersionPref(sref) {\n        const title = Sefaria.parseRef(sref).index\n        try{\n            const corpus = Sefaria.index(title).corpus; //ref might have been a sheet sp no index at all, index may be null for other reasons or corpus field may not be present\n            return this._versionPrefsByCorpus[corpus];  \n        }catch (e){\n            return null;\n        }\n\n    }\n    update(corpus, vtitle, lang) {\n        if (!corpus) { return this; }\n        const prefsClone = Sefaria.util.clone(this._versionPrefsByCorpus);\n        if (!prefsClone[corpus]) { prefsClone[corpus] = {}; }\n        prefsClone[corpus][lang] = vtitle;\n\n        return new VersionPreferences(prefsClone);\n    }\n    update_cookie() {\n        $.cookie(\"version_preferences_by_corpus\", JSON.stringify(this._versionPrefsByCorpus), {path: \"/\"});\n    }\n}\n\nexport default VersionPreferences;","class FilterNode {\n  //FilterTree object - for category filters\n  constructor({ title, heTitle, docCount, aggKey, aggType, children, parent, selected } = {}) {\n      this.title = title;\n      this.heTitle = heTitle;\n      this.docCount = docCount;\n      this.aggKey = aggKey;\n      this.aggType = aggType;\n      this.children = typeof children === 'undefined' ? [] :\n        children.map(child => {\n            if (child instanceof FilterNode) { return child; }\n            return this.restoreFromSerialization(child);\n        }\n      );\n      this.parent = typeof parent === 'undefined' ? null : parent;\n      this.selected = (typeof selected === 'undefined') ? 0 : selected; //0 - not selected, 1 - selected, 2 - partially selected\n  }\n\n    /**\n     * FilterNodes get serialized when stored in browser history\n     * We need to recreate them and make sure they fit into the FilterNode tree\n     * @param serializedFilterNode - plain JS object with the fields of a FilterNode\n     * @returns {FilterNode}\n     */\n  restoreFromSerialization(serializedFilterNode) {\n      const fullFilterNode = new FilterNode(serializedFilterNode);\n      fullFilterNode.parent = this;\n      return fullFilterNode;\n  }\n  sumDocs() {\n      if (!this.hasChildren()) {\n          return this.docCount;\n      }\n      this.docCount = this.children.reduce((sum, child) => sum + child.sumDocs(), 0);\n      return this.docCount;\n  }\n  append(child) {\n      this.children.push(child);\n      child.parent = this;\n  }\n  hasChildren() {\n      return (this.children.length > 0);\n  }\n  getLeafNodes(searchFilterText) {\n      //Return ordered array of leaf (book) level filters\n      if (!this.hasChildren()) {\n          return [this];\n      }\n      var results = [];\n      for (var i = 0; i < this.children.length; i++) {\n          results = results.concat(this.children[i].getLeafNodes(searchFilterText));\n      }\n      if (searchFilterText && searchFilterText != \"\") {\n          results = results.filter(x => x.title.match(new RegExp(`(?:^|.+\\\\s)${searchFilterText}.*`, \"i\")) || x.heTitle.match(new RegExp(`(?:^|.+\\\\s)${searchFilterText}.*`, \"i\")));\n      }\n      return results;\n  }\n  getId() {\n      return this.aggKey.replace(new RegExp(\"[/',()]\", 'g'),\"-\").replace(new RegExp(\" \", 'g'),\"_\");\n  }\n  isSelected() {\n      return (this.selected === 1);\n  }\n  isPartial() {\n      return (this.selected === 2);\n  }\n  isUnselected() {\n      return (this.selected === 0);\n  }\n  setSelected(propogateParent, noPropogateChild) {\n      //default is to propogate children and not parents.\n      //Calls from front end should use (true, false), or just (true)\n      this.selected = 1;\n      if (!(noPropogateChild)) {\n          for (var i = 0; i < this.children.length; i++) {\n              this.children[i].setSelected(false);\n          }\n      }\n      if(propogateParent) {\n          if(this.parent) this.parent._deriveState();\n      }\n  }\n  setUnselected(propogateParent, noPropogateChild) {\n      //default is to propogate children and not parents.\n      //Calls from front end should use (true, false), or just (true)\n      this.selected = 0;\n      if (!(noPropogateChild)) {\n          for (var i = 0; i < this.children.length; i++) {\n              this.children[i].setUnselected(false);\n          }\n      }\n      if(propogateParent) {\n          if(this.parent) this.parent._deriveState();\n      }\n\n  }\n  setPartial() {\n      //Never propogate to children.  Always propogate to parents\n      this.selected = 2;\n      if(this.parent) this.parent._deriveState();\n  }\n  _deriveState() {\n      //Always called from children, so we can assume at least one\n      var potentialState = this.children[0].selected;\n      if (potentialState === 2) {\n          this.setPartial();\n          return\n      }\n      for (var i = 1; i < this.children.length; i++) {\n          if (this.children[i].selected !== potentialState) {\n              this.setPartial();\n              return\n          }\n      }\n      //Don't use setters, so as to avoid looping back through children.\n      if(potentialState === 1) {\n          this.setSelected(true, true);\n      } else {\n          this.setUnselected(true, true);\n      }\n  }\n  hasAppliedFilters() {\n      return (this.getAppliedFilters().length > 0)\n  }\n  getAppliedFilters() {\n      if (this.isUnselected()) {\n          return [];\n      }\n      if (this.isSelected()) {\n          return [this.aggKey];\n      }\n      var results = [];\n      for (var i = 0; i < this.children.length; i++) {\n          results = results.concat(this.children[i].getAppliedFilters());\n      }\n      return results;\n  }\n  getSelectedTitles(lang) {\n      if (this.isUnselected()) {\n          return [];\n      }\n      if (this.isSelected()) {\n          let enTitle = !!this.title ? this.title : this.heTitle;\n          let heTitle = !!this.heTitle ? this.heTitle : this.title;\n          if (!enTitle) {\n            if (this.aggType === 'collections') { enTitle = '(No Collection)'; }\n            if (this.aggType === 'tags') { enTitle = '(No Tag)'; }\n          }\n          if (!heTitle) {\n            if (this.aggType === 'collections') { heTitle = '(ללא אסופה)'; }\n            if (this.aggType === 'tags') { heTitle = '(ללא תוית)'; }\n          }\n          return[(lang === \"en\")?enTitle:heTitle];\n      }\n      let results = [];\n      for (let i = 0; i < this.children.length; i++) {\n          results = results.concat(this.children[i].getSelectedTitles(lang));\n      }\n      return results;\n  }\n\n    /**\n     * Returns a clone of this FilterNode\n     * @param prepareForSerialization: bool, if true, sets `parent` field to null. This field is an issue when serializing FilterNode because it recursively refers to existing FilterNodes.\n     * @returns {FilterNode}\n     */\n  clone(prepareForSerialization) {\n    const cloned = new FilterNode(this);\n    cloned.children = cloned.children.map( c => c.clone(prepareForSerialization));\n    if (prepareForSerialization) { cloned.parent = null; }\n    return cloned;\n  }\n}\n\nexport default FilterNode;\n","/*! @hebcal/core v3.50.4 */\n/*\n * More minimal greg routines\n */\n\n/** @private */\nconst lengths = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/** @private */\nconst monthLengths = [lengths, lengths.slice()];\nmonthLengths[1][2] = 29;\n\n/**\n * @private\n * @param {number} x\n * @param {number} y\n * @return {number}\n */\nfunction mod(x, y) {\n  return x - y * Math.floor(x / y);\n}\n\n/**\n * @private\n * @param {number} x\n * @param {number} y\n * @return {number}\n */\nfunction quotient(x, y) {\n  return Math.floor(x / y);\n}\n\n/**\n * Returns true if the Gregorian year is a leap year\n * @private\n * @param {number} year Gregorian year\n * @return {boolean}\n */\nfunction isLeapYear$1(year) {\n  return !(year % 4) && (!!(year % 100) || !(year % 400));\n}\n\n/**\n * Number of days in the Gregorian month for given year\n * @private\n * @param {number} month Gregorian month (1=January, 12=December)\n * @param {number} year Gregorian year\n * @return {number}\n */\nfunction daysInMonth$1(month, year) {\n  // 1 based months\n  return monthLengths[+isLeapYear$1(year)][month];\n}\n\n/**\n * Returns true if the object is a Javascript Date\n * @private\n * @param {Object} obj\n * @return {boolean}\n */\nfunction isDate(obj) {\n  return typeof obj === 'object' && Date.prototype === obj.__proto__;\n}\n\n/*\nconst ABS_14SEP1752 = 639797;\nconst ABS_2SEP1752 = 639785;\n*/\n\n/**\n * Converts Gregorian date to absolute R.D. (Rata Die) days\n * @private\n * @param {Date} date Gregorian date\n * @return {number}\n */\nfunction greg2abs(date) {\n  if (!isDate(date)) {\n    throw new TypeError(`Argument not a Date: ${date}`);\n  }\n  const abs = toFixed(date.getFullYear(), date.getMonth() + 1, date.getDate());\n  /*\n  if (abs < ABS_14SEP1752 && abs > ABS_2SEP1752) {\n    throw new RangeError(`Invalid Date: ${date}`);\n  }\n  */\n  return abs;\n}\n\n/**\n * @private\n * @param {number} abs - R.D. number of days\n * @return {number}\n */\nfunction yearFromFixed(abs) {\n  const l0 = abs - 1;\n  const n400 = quotient(l0, 146097);\n  const d1 = mod(l0, 146097);\n  const n100 = quotient(d1, 36524);\n  const d2 = mod(d1, 36524);\n  const n4 = quotient(d2, 1461);\n  const d3 = mod(d2, 1461);\n  const n1 = quotient(d3, 365);\n  const year = 400 * n400 + 100 * n100 + 4 * n4 + n1;\n  return n100 != 4 && n1 != 4 ? year + 1 : year;\n}\n\n/**\n * @private\n * @param {number} year\n * @param {number} month (1-12)\n * @param {number} day (1-31)\n * @return {number}\n */\nfunction toFixed(year, month, day) {\n  const py = year - 1;\n  return 365 * py + quotient(py, 4) - quotient(py, 100) + quotient(py, 400) + quotient(367 * month - 362, 12) + (month <= 2 ? 0 : isLeapYear$1(year) ? -1 : -2) + day;\n}\n\n/**\n * Converts from Rata Die (R.D. number) to Gregorian date.\n * See the footnote on page 384 of ``Calendrical Calculations, Part II:\n * Three Historical Calendars'' by E. M. Reingold,  N. Dershowitz, and S. M.\n * Clamen, Software--Practice and Experience, Volume 23, Number 4\n * (April, 1993), pages 383-404 for an explanation.\n * @private\n * @param {number} abs - R.D. number of days\n * @return {Date}\n */\nfunction abs2greg(abs) {\n  if (typeof abs !== 'number') {\n    throw new TypeError(`Argument not a Number: ${abs}`);\n  }\n  abs = Math.trunc(abs);\n  /*\n  if (abs < ABS_14SEP1752 && abs > ABS_2SEP1752) {\n    throw new RangeError(`Invalid Date: ${abs}`);\n  }\n  */\n  const year = yearFromFixed(abs);\n  const priorDays = abs - toFixed(year, 1, 1);\n  const correction = abs < toFixed(year, 3, 1) ? 0 : isLeapYear$1(year) ? 1 : 2;\n  const month = quotient(12 * (priorDays + correction) + 373, 367);\n  const day = abs - toFixed(year, month, 1) + 1;\n  const dt = new Date(year, month - 1, day);\n  if (year < 100 && year >= 0) {\n    dt.setFullYear(year);\n  }\n  return dt;\n}\n\n/*\n    Hebcal - A Jewish Calendar Generator\n    Copyright (c) 1994-2020 Danny Sadinoff\n    Portions copyright Eyal Schachter and Michael J. Radwin\n\n    https://github.com/hebcal/hebcal-es6\n\n    This program is free software; you can redistribute it and/or\n    modify it under the terms of the GNU General Public License\n    as published by the Free Software Foundation; either version 2\n    of the License, or (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/**\n * Gregorian date helper functions.\n */\nconst greg = {\n  /**\n   * Long names of the Gregorian months (1='January', 12='December')\n   * @readonly\n   * @type {string[]}\n   */\n  monthNames: ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n  /**\n   * Returns true if the Gregorian year is a leap year\n   * @function\n   * @param {number} year Gregorian year\n   * @return {boolean}\n   */\n  isLeapYear: isLeapYear$1,\n  /**\n   * Number of days in the Gregorian month for given year\n   * @function\n   * @param {number} month Gregorian month (1=January, 12=December)\n   * @param {number} year Gregorian year\n   * @return {number}\n   */\n  daysInMonth: daysInMonth$1,\n  /**\n   * Returns true if the object is a Javascript Date\n   * @function\n   * @param {Object} obj\n   * @return {boolean}\n   */\n  isDate: isDate,\n  /**\n   * Returns number of days since January 1 of that year\n   * @deprecated\n   * @param {Date} date Gregorian date\n   * @return {number}\n   */\n  dayOfYear: function (date) {\n    if (!isDate(date)) {\n      throw new TypeError(`Argument not a Date: ${date}`);\n    }\n    const month = date.getMonth();\n    let doy = date.getDate() + 31 * month;\n    if (month > 1) {\n      // FEB\n      doy -= Math.floor((4 * (month + 1) + 23) / 10);\n      if (isLeapYear$1(date.getFullYear())) {\n        doy++;\n      }\n    }\n    return doy;\n  },\n  /**\n   * Converts Gregorian date to absolute R.D. (Rata Die) days\n   * @function\n   * @param {Date} date Gregorian date\n   * @return {number}\n   */\n  greg2abs: greg2abs,\n  /**\n   * Converts from Rata Die (R.D. number) to Gregorian date.\n   * See the footnote on page 384 of ``Calendrical Calculations, Part II:\n   * Three Historical Calendars'' by E. M. Reingold,  N. Dershowitz, and S. M.\n   * Clamen, Software--Practice and Experience, Volume 23, Number 4\n   * (April, 1993), pages 383-404 for an explanation.\n   * @function\n   * @param {number} theDate - R.D. number of days\n   * @return {Date}\n   */\n  abs2greg: abs2greg\n};\n\nconst GERESH = '׳';\nconst GERSHAYIM = '״';\n\n/**\n * @private\n * @param {number} num\n * @return {string}\n */\nfunction num2heb(num) {\n  switch (num) {\n    case 1:\n      return 'א';\n    case 2:\n      return 'ב';\n    case 3:\n      return 'ג';\n    case 4:\n      return 'ד';\n    case 5:\n      return 'ה';\n    case 6:\n      return 'ו';\n    case 7:\n      return 'ז';\n    case 8:\n      return 'ח';\n    case 9:\n      return 'ט';\n    case 10:\n      return 'י';\n    case 20:\n      return 'כ';\n    case 30:\n      return 'ל';\n    case 40:\n      return 'מ';\n    case 50:\n      return 'נ';\n    case 60:\n      return 'ס';\n    case 70:\n      return 'ע';\n    case 80:\n      return 'פ';\n    case 90:\n      return 'צ';\n    case 100:\n      return 'ק';\n    case 200:\n      return 'ר';\n    case 300:\n      return 'ש';\n    case 400:\n      return 'ת';\n    default:\n      return '*INVALID*';\n  }\n}\n\n/**\n * @private\n * @param {number} num\n * @return {number[]}\n */\nfunction num2digits(num) {\n  const digits = [];\n  while (num > 0) {\n    if (num === 15 || num === 16) {\n      digits.push(9);\n      digits.push(num - 9);\n      break;\n    }\n    let incr = 100;\n    let i;\n    for (i = 400; i > num; i -= incr) {\n      if (i === incr) {\n        incr = incr / 10;\n      }\n    }\n    digits.push(i);\n    num -= i;\n  }\n  return digits;\n}\n\n/**\n * Converts a numerical value to a string of Hebrew letters.\n *\n * When specifying years of the Hebrew calendar in the present millennium,\n * we omit the thousands (which is presently 5 [ה]).\n * @example\n * gematriya(5774) // 'תשע״ד' - cropped to 774\n * gematriya(25) // 'כ״ה'\n * gematriya(60) // 'ס׳'\n * gematriya(3761) // 'ג׳תשס״א'\n * gematriya(1123) // 'א׳קכ״ג'\n * @param {number} number\n * @return {string}\n */\nfunction gematriya(number) {\n  const num = parseInt(number, 10);\n  if (!num) {\n    throw new TypeError(`invalid parameter to gematriya ${number}`);\n  }\n  let str = '';\n  const thousands = Math.floor(num / 1000);\n  if (thousands > 0 && thousands !== 5) {\n    const tdigits = num2digits(thousands);\n    for (let i = 0; i < tdigits.length; i++) {\n      str += num2heb(tdigits[i]);\n    }\n    str += GERESH;\n  }\n  const digits = num2digits(num % 1000);\n  if (digits.length == 1) {\n    return str + num2heb(digits[0]) + GERESH;\n  }\n  for (let i = 0; i < digits.length; i++) {\n    if (i + 1 === digits.length) {\n      str += GERSHAYIM;\n    }\n    str += num2heb(digits[i]);\n  }\n  return str;\n}\n\nconst noopLocale = {\n  headers: {\n    'plural-forms': 'nplurals=2; plural=(n!=1);'\n  },\n  contexts: {\n    '': {}\n  }\n};\nconst alias = {\n  'h': 'he',\n  'a': 'ashkenazi',\n  's': 'en',\n  '': 'en'\n};\n\n/** @private */\nconst locales = Object.create(null);\n/** @private */\nlet activeLocale = null;\n/** @private */\nlet activeName = null;\n\n/**\n * A locale in Hebcal is used for translations/transliterations of\n * holidays. `@hebcal/core` supports four locales by default\n * * `en` - default, Sephardic transliterations (e.g. \"Shabbat\")\n * * `ashkenazi` - Ashkenazi transliterations (e.g. \"Shabbos\")\n * * `he` - Hebrew (e.g. \"שַׁבָּת\")\n * * `he-x-NoNikud` - Hebrew without nikud (e.g. \"שבת\")\n */\nclass Locale {\n  /**\n   * Returns translation only if `locale` offers a non-empty translation for `id`.\n   * Otherwise, returns `undefined`.\n   * @param {string} id Message ID to translate\n   * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.\n   * @return {string}\n   */\n  static lookupTranslation(id, locale) {\n    const locale0 = locale && locale.toLowerCase();\n    const loc = typeof locale == 'string' && locales[locale0] || activeLocale;\n    const array = loc[id];\n    if (array && array.length && array[0].length) {\n      return array[0];\n    }\n    return undefined;\n  }\n\n  /**\n   * By default, if no translation was found, returns `id`.\n   * @param {string} id Message ID to translate\n   * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.\n   * @return {string}\n   */\n  static gettext(id, locale) {\n    const text = this.lookupTranslation(id, locale);\n    if (typeof text == 'undefined') {\n      return id;\n    }\n    return text;\n  }\n\n  /**\n   * Register locale translations.\n   * @param {string} locale Locale name (i.e.: `'he'`, `'fr'`)\n   * @param {LocaleDate} data parsed data from a `.po` file.\n   */\n  static addLocale(locale, data) {\n    if (typeof data.contexts !== 'object' || typeof data.contexts[''] !== 'object') {\n      throw new TypeError(`Locale '${locale}' invalid compact format`);\n    }\n    locales[locale.toLowerCase()] = data.contexts[''];\n  }\n\n  /**\n   * Activates a locale. Throws an error if the locale has not been previously added.\n   * After setting the locale to be used, all strings marked for translations\n   * will be represented by the corresponding translation in the specified locale.\n   * @param {string} locale Locale name (i.e: `'he'`, `'fr'`)\n   * @return {LocaleData}\n   */\n  static useLocale(locale) {\n    const locale0 = locale.toLowerCase();\n    const obj = locales[locale0];\n    if (!obj) {\n      throw new RangeError(`Locale '${locale}' not found`);\n    }\n    activeName = alias[locale0] || locale0;\n    activeLocale = obj;\n    return activeLocale;\n  }\n\n  /**\n   * Returns the name of the active locale (i.e. 'he', 'ashkenazi', 'fr')\n   * @return {string}\n   */\n  static getLocaleName() {\n    return activeName;\n  }\n\n  /**\n   * Returns the names of registered locales\n   * @return {string[]}\n   */\n  static getLocaleNames() {\n    return Object.keys(locales).sort();\n  }\n\n  /**\n   * @param {number} n\n   * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.\n   * @return {string}\n   */\n  static ordinal(n, locale) {\n    const locale1 = locale && locale.toLowerCase();\n    const locale0 = locale1 || activeName;\n    if (!locale0) {\n      return this.getEnOrdinal(n);\n    }\n    switch (locale0) {\n      case 'en':\n      case 's':\n      case 'a':\n      case 'ashkenazi':\n      case 'ashkenazi_litvish':\n      case 'ashkenazi_poylish':\n      case 'ashkenazi_standard':\n        return this.getEnOrdinal(n);\n      case 'es':\n        return n + 'º';\n      case 'h':\n      case 'he':\n      case 'he-x-nonikud':\n        return String(n);\n      default:\n        return n + '.';\n    }\n  }\n\n  /**\n   * @private\n   * @param {number} n\n   * @return {string}\n   */\n  static getEnOrdinal(n) {\n    const s = ['th', 'st', 'nd', 'rd'];\n    const v = n % 100;\n    return n + (s[(v - 20) % 10] || s[v] || s[0]);\n  }\n\n  /**\n   * Removes nekudot from Hebrew string\n   * @param {string} str\n   * @return {string}\n   */\n  static hebrewStripNikkud(str) {\n    return str.replace(/[\\u0590-\\u05bd]/g, '').replace(/[\\u05bf-\\u05c7]/g, '');\n  }\n}\nLocale.addLocale('en', noopLocale);\nLocale.addLocale('s', noopLocale);\nLocale.addLocale('', noopLocale);\nLocale.useLocale('en');\n\n/*\n * More minimal HDate\n */\n\nconst NISAN$4 = 1;\nconst IYYAR$1 = 2;\n// const SIVAN = 3;\nconst TAMUZ$1 = 4;\n// const AV = 5;\nconst ELUL$2 = 6;\nconst TISHREI$2 = 7;\nconst CHESHVAN$1 = 8;\nconst KISLEV$2 = 9;\nconst TEVET$2 = 10;\n// const SHVAT = 11;\nconst ADAR_I$2 = 12;\nconst ADAR_II$1 = 13;\n\n/**\n * Hebrew months of the year (NISAN=1, TISHREI=7)\n * @readonly\n * @enum {number}\n */\nconst months = {\n  /** Nissan / ניסן */\n  NISAN: 1,\n  /** Iyyar / אייר */\n  IYYAR: 2,\n  /** Sivan / סיון */\n  SIVAN: 3,\n  /** Tamuz (sometimes Tammuz) / תמוז */\n  TAMUZ: 4,\n  /** Av / אב */\n  AV: 5,\n  /** Elul / אלול */\n  ELUL: 6,\n  /** Tishrei / תִשְׁרֵי */\n  TISHREI: 7,\n  /** Cheshvan / חשון */\n  CHESHVAN: 8,\n  /** Kislev / כסלו */\n  KISLEV: 9,\n  /** Tevet / טבת */\n  TEVET: 10,\n  /** Sh'vat / שבט */\n  SHVAT: 11,\n  /** Adar or Adar Rishon / אדר */\n  ADAR_I: 12,\n  /** Adar Sheini (only on leap years) / אדר ב׳ */\n  ADAR_II: 13\n};\nconst monthNames0 = ['', 'Nisan', 'Iyyar', 'Sivan', 'Tamuz', 'Av', 'Elul', 'Tishrei', 'Cheshvan', 'Kislev', 'Tevet', 'Sh\\'vat'];\n\n/**\n * Transliterations of Hebrew month names.\n * Regular years are index 0 and leap years are index 1.\n * @private\n */\nconst monthNames = [monthNames0.concat(['Adar', 'Nisan']), monthNames0.concat(['Adar I', 'Adar II', 'Nisan'])];\nconst edCache = Object.create(null);\nconst EPOCH = -1373428;\n// Avg year length in the cycle (19 solar years with 235 lunar months)\nconst AVG_HEBYEAR_DAYS = 365.24682220597794;\n\n/**\n * Converts Hebrew date to R.D. (Rata Die) fixed days.\n * R.D. 1 is the imaginary date Monday, January 1, 1 on the Gregorian\n * Calendar.\n * @private\n * @param {number} year Hebrew year\n * @param {number} month Hebrew month\n * @param {number} day Hebrew date (1-30)\n * @return {number}\n */\nfunction hebrew2abs(year, month, day) {\n  if (year < 1) {\n    throw new RangeError(`hebrew2abs: invalid year ${year}`);\n  }\n  let tempabs = day;\n  if (month < TISHREI$2) {\n    for (let m = TISHREI$2; m <= monthsInYear(year); m++) {\n      tempabs += daysInMonth(m, year);\n    }\n    for (let m = NISAN$4; m < month; m++) {\n      tempabs += daysInMonth(m, year);\n    }\n  } else {\n    for (let m = TISHREI$2; m < month; m++) {\n      tempabs += daysInMonth(m, year);\n    }\n  }\n  return EPOCH + elapsedDays(year) + tempabs - 1;\n}\n\n/**\n * @private\n * @param {number} year\n * @return {number}\n */\nfunction newYear(year) {\n  return EPOCH + elapsedDays(year);\n}\n\n/**\n * Converts absolute R.D. days to Hebrew date\n * @private\n * @param {number} abs absolute R.D. days\n * @return {SimpleHebrewDate}\n */\nfunction abs2hebrew(abs) {\n  if (typeof abs !== 'number' || isNaN(abs)) {\n    throw new TypeError(`invalid parameter to abs2hebrew ${abs}`);\n  }\n  abs = Math.trunc(abs);\n  if (abs <= EPOCH) {\n    throw new RangeError(`abs2hebrew: ${abs} is before epoch`);\n  }\n  // first, quickly approximate year\n  let year = Math.floor((abs - EPOCH) / AVG_HEBYEAR_DAYS);\n  while (newYear(year) <= abs) {\n    ++year;\n  }\n  --year;\n  let month = abs < hebrew2abs(year, 1, 1) ? 7 : 1;\n  while (abs > hebrew2abs(year, month, daysInMonth(month, year))) {\n    ++month;\n  }\n  const day = 1 + abs - hebrew2abs(year, month, 1);\n  return {\n    yy: year,\n    mm: month,\n    dd: day\n  };\n}\n\n/**\n * Returns true if Hebrew year is a leap year\n * @private\n * @param {number} year Hebrew year\n * @return {boolean}\n */\nfunction isLeapYear(year) {\n  return (1 + year * 7) % 19 < 7;\n}\n\n/**\n * Number of months in this Hebrew year (either 12 or 13 depending on leap year)\n * @private\n * @param {number} year Hebrew year\n * @return {number}\n */\nfunction monthsInYear(year) {\n  return 12 + isLeapYear(year); // boolean is cast to 1 or 0\n}\n\n/**\n * Number of days in Hebrew month in a given year (29 or 30)\n * @private\n * @param {number} month Hebrew month (e.g. months.TISHREI)\n * @param {number} year Hebrew year\n * @return {number}\n */\nfunction daysInMonth(month, year) {\n  switch (month) {\n    case IYYAR$1:\n    case TAMUZ$1:\n    case ELUL$2:\n    case TEVET$2:\n    case ADAR_II$1:\n      return 29;\n  }\n  if (month === ADAR_I$2 && !isLeapYear(year) || month === CHESHVAN$1 && !longCheshvan(year) || month === KISLEV$2 && shortKislev(year)) {\n    return 29;\n  } else {\n    return 30;\n  }\n}\n\n/**\n * Returns a transliterated string name of Hebrew month in year,\n * for example 'Elul' or 'Cheshvan'.\n * @private\n * @param {number} month Hebrew month (e.g. months.TISHREI)\n * @param {number} year Hebrew year\n * @return {string}\n */\nfunction getMonthName(month, year) {\n  if (typeof month !== 'number' || isNaN(month) || month < 1 || month > 14) {\n    throw new TypeError(`bad month argument ${month}`);\n  }\n  return monthNames[+isLeapYear(year)][month];\n}\n\n/**\n * Days from sunday prior to start of Hebrew calendar to mean\n * conjunction of Tishrei in Hebrew YEAR\n * @private\n * @param {number} year Hebrew year\n * @return {number}\n */\nfunction elapsedDays(year) {\n  const elapsed = edCache[year] = edCache[year] || elapsedDays0(year);\n  return elapsed;\n}\n\n/**\n * Days from sunday prior to start of Hebrew calendar to mean\n * conjunction of Tishrei in Hebrew YEAR\n * @private\n * @param {number} year Hebrew year\n * @return {number}\n */\nfunction elapsedDays0(year) {\n  const prevYear = year - 1;\n  const mElapsed = 235 * Math.floor(prevYear / 19) +\n  // Months in complete 19 year lunar (Metonic) cycles so far\n  12 * (prevYear % 19) +\n  // Regular months in this cycle\n  Math.floor((prevYear % 19 * 7 + 1) / 19); // Leap months this cycle\n\n  const pElapsed = 204 + 793 * (mElapsed % 1080);\n  const hElapsed = 5 + 12 * mElapsed + 793 * Math.floor(mElapsed / 1080) + Math.floor(pElapsed / 1080);\n  const parts = pElapsed % 1080 + 1080 * (hElapsed % 24);\n  const day = 1 + 29 * mElapsed + Math.floor(hElapsed / 24);\n  const altDay = day + (parts >= 19440 || 2 === day % 7 && parts >= 9924 && !isLeapYear(year) || 1 === day % 7 && parts >= 16789 && isLeapYear(prevYear));\n  return altDay + (altDay % 7 === 0 || altDay % 7 === 3 || altDay % 7 === 5);\n}\n\n/**\n * Number of days in the hebrew YEAR.\n * A common Hebrew calendar year can have a length of 353, 354 or 355 days\n * A leap Hebrew calendar year can have a length of 383, 384 or 385 days\n * @private\n * @param {number} year Hebrew year\n * @return {number}\n */\nfunction daysInYear(year) {\n  return elapsedDays(year + 1) - elapsedDays(year);\n}\n\n/**\n * true if Cheshvan is long in Hebrew year\n * @private\n * @param {number} year Hebrew year\n * @return {boolean}\n */\nfunction longCheshvan(year) {\n  return daysInYear(year) % 10 === 5;\n}\n\n/**\n * true if Kislev is short in Hebrew year\n * @private\n * @param {number} year Hebrew year\n * @return {boolean}\n */\nfunction shortKislev(year) {\n  return daysInYear(year) % 10 === 3;\n}\n\n/**\n * @private\n * @param {string} msg\n */\nfunction throwTypeError(msg) {\n  throw new TypeError(msg);\n}\n\n/*\n    Hebcal - A Jewish Calendar Generator\n    Copyright (c) 1994-2020 Danny Sadinoff\n    Portions copyright Eyal Schachter and Michael J. Radwin\n\n    https://github.com/hebcal/hebcal-es6\n\n    This program is free software; you can redistribute it and/or\n    modify it under the terms of the GNU General Public License\n    as published by the Free Software Foundation; either version 2\n    of the License, or (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nconst UNITS_DAY = 'day';\nconst UNITS_WEEK = 'week';\nconst UNITS_MONTH = 'month';\nconst UNITS_YEAR = 'year';\nconst UNITS_SINGLE = {\n  d: UNITS_DAY,\n  w: UNITS_WEEK,\n  M: UNITS_MONTH,\n  y: UNITS_YEAR\n};\nconst UNITS_VALID = {\n  day: UNITS_DAY,\n  week: UNITS_WEEK,\n  month: UNITS_MONTH,\n  year: UNITS_YEAR\n};\n\n/**\n * A simple Hebrew date object with numeric fields `yy`, `mm`, and `dd`\n * @typedef {Object} SimpleHebrewDate\n * @property {number} yy Hebrew year\n * @property {number} mm Hebrew month of year (1=NISAN, 7=TISHREI)\n * @property {number} dd Day of month (1-30)\n * @private\n */\n\n/** Represents a Hebrew date */\nclass HDate {\n  /**\n   * Create a Hebrew date. There are 3 basic forms for the `HDate()` constructor.\n   *\n   * 1. No parameters - represents the current Hebrew date at time of instantiation\n   * 2. One parameter\n   *    * `Date` - represents the Hebrew date corresponding to the Gregorian date using\n   *       local time. Hours, minutes, seconds and milliseconds are ignored.\n   *    * `HDate` - clones a copy of the given Hebrew date\n   *    * `number` - Converts absolute R.D. days to Hebrew date.\n   *       R.D. 1 == the imaginary date January 1, 1 (Gregorian)\n   * 3. Three parameters: Hebrew day, Hebrew month, Hebrew year. Hebrew day should\n   *    be a number between 1-30, Hebrew month can be a number or string, and\n   *    Hebrew year is always a number.\n   * @example\n   * import {HDate, months} from '@hebcal/core';\n   *\n   * const hd1 = new HDate();\n   * const hd2 = new HDate(new Date(2008, 10, 13));\n   * const hd3 = new HDate(15, 'Cheshvan', 5769);\n   * const hd4 = new HDate(15, months.CHESHVAN, 5769);\n   * const hd5 = new HDate(733359); // ==> 15 Cheshvan 5769\n   * const monthName = 'אייר';\n   * const hd6 = new HDate(5, monthName, 5773);\n   * @param {number|Date|HDate} [day] - Day of month (1-30) if a `number`.\n   *   If a `Date` is specified, represents the Hebrew date corresponding to the\n   *   Gregorian date using local time.\n   *   If an `HDate` is specified, clones a copy of the given Hebrew date.\n   * @param {number|string} [month] - Hebrew month of year (1=NISAN, 7=TISHREI)\n   * @param {number} [year] - Hebrew year\n   */\n  constructor(day, month, year) {\n    if (arguments.length == 2 || arguments.length > 3) {\n      throw new TypeError('HDate constructor requires 0, 1 or 3 arguments');\n    }\n    if (arguments.length == 3) {\n      // Hebrew day, Hebrew month, Hebrew year\n      /**\n       * @private\n       * @type {number}\n       */\n      this.day = this.month = 1;\n      /**\n       * @private\n       * @type {number}\n       */\n      year = parseInt(year, 10);\n      if (isNaN(year)) {\n        throw new TypeError(`HDate called with bad year argument: ${year}`);\n      }\n      this.year = year;\n      this.setMonth(month); // will throw if we can't parse\n      day = parseInt(day, 10);\n      if (isNaN(day)) {\n        throw new TypeError(`HDate called with bad day argument: ${day}`);\n      }\n      this.setDate(day);\n    } else {\n      // 0 arguments\n      if (typeof day === 'undefined') {\n        day = new Date();\n      }\n      // 1 argument\n      const abs0 = typeof day === 'number' && !isNaN(day) ? day : isDate(day) ? greg2abs(day) : HDate.isHDate(day) ? {\n        dd: day.day,\n        mm: day.month,\n        yy: day.year\n      } : throwTypeError(`HDate called with bad argument: ${day}`);\n      const isNumber = typeof abs0 === 'number';\n      const d = isNumber ? abs2hebrew(abs0) : abs0;\n      /**\n       * @private\n       * @type {number}\n       */\n      this.day = d.dd;\n      /**\n       * @private\n       * @type {number}\n       */\n      this.month = d.mm;\n      /**\n       * @private\n       * @type {number}\n       */\n      this.year = d.yy;\n      if (isNumber) {\n        /**\n         * @private\n         * @type {number}\n         */\n        this.abs0 = abs0;\n      }\n    }\n  }\n\n  /**\n   * Gets the Hebrew year of this Hebrew date\n   * @return {number}\n   */\n  getFullYear() {\n    return this.year;\n  }\n\n  /**\n   * Tests if this date occurs during a leap year\n   * @return {boolean}\n   */\n  isLeapYear() {\n    return isLeapYear(this.year);\n  }\n\n  /**\n   * Gets the Hebrew month (1=NISAN, 7=TISHREI) of this Hebrew date\n   * @return {number}\n   */\n  getMonth() {\n    return this.month;\n  }\n\n  /**\n   * The Tishrei-based month of the date. 1 is Tishrei, 7 is Nisan, 13 is Elul in a leap year\n   * @return {number}\n   */\n  getTishreiMonth() {\n    const nummonths = monthsInYear(this.getFullYear());\n    return (this.getMonth() + nummonths - 6) % nummonths || nummonths;\n  }\n\n  /**\n   * Number of days in the month of this Hebrew date\n   * @return {number}\n   */\n  daysInMonth() {\n    return daysInMonth(this.getMonth(), this.getFullYear());\n  }\n\n  /**\n   * Gets the day within the month (1-30)\n   * @return {number}\n   */\n  getDate() {\n    return this.day;\n  }\n\n  /**\n   * Gets the day of the week. 0=Sunday, 6=Saturday\n   * @return {number}\n   */\n  getDay() {\n    return mod(this.abs(), 7);\n  }\n\n  /**\n   * Sets the year of the date. Returns the object it was called upon.\n   * @private\n   * @deprecated\n   * @param {number} year\n   * @return {HDate}\n   */\n  setFullYear(year) {\n    this.year = year;\n    fix(this);\n    return this;\n  }\n\n  /**\n   * Sets the day of the month of the date. Returns the object it was called upon\n   * @private\n   * @param {number} month\n   * @return {HDate}\n   */\n  setMonth(month) {\n    this.month = HDate.monthNum(month);\n    fix(this);\n    return this;\n  }\n\n  /**\n   * @private\n   * @param {number} date\n   * @return {HDate}\n   */\n  setDate(date) {\n    this.day = date;\n    fix(this);\n    return this;\n  }\n\n  /**\n   * Converts to Gregorian date\n   * @return {Date}\n   */\n  greg() {\n    return abs2greg(this.abs());\n  }\n\n  /**\n   * Returns R.D. (Rata Die) fixed days.\n   * R.D. 1 == Monday, January 1, 1 (Gregorian)\n   * Note also that R.D. = Julian Date − 1,721,424.5\n   * https://en.wikipedia.org/wiki/Rata_Die#Dershowitz_and_Reingold\n   * @return {number}\n   */\n  abs() {\n    if (typeof this.abs0 !== 'number') {\n      this.abs0 = hebrew2abs(this.year, this.month, this.day);\n    }\n    return this.abs0;\n  }\n\n  /**\n   * Converts Hebrew date to R.D. (Rata Die) fixed days.\n   * R.D. 1 is the imaginary date Monday, January 1, 1 on the Gregorian\n   * Calendar.\n   * @param {number} year Hebrew year\n   * @param {number} month Hebrew month\n   * @param {number} day Hebrew date (1-30)\n   * @return {number}\n   */\n  static hebrew2abs(year, month, day) {\n    return hebrew2abs(year, month, day);\n  }\n\n  /**\n   * Converts absolute R.D. days to Hebrew date\n   * @private\n   * @param {number} abs absolute R.D. days\n   * @return {SimpleHebrewDate}\n   */\n  static abs2hebrew(abs) {\n    return abs2hebrew(abs);\n  }\n\n  /**\n   * Returns a transliterated Hebrew month name, e.g. `'Elul'` or `'Cheshvan'`.\n   * @return {string}\n   */\n  getMonthName() {\n    return getMonthName(this.getMonth(), this.getFullYear());\n  }\n\n  /**\n   * Renders this Hebrew date as a translated or transliterated string,\n   * including ordinal e.g. `'15th of Cheshvan, 5769'`.\n   * @example\n   * import {HDate, months} from '@hebcal/core';\n   *\n   * const hd = new HDate(15, months.CHESHVAN, 5769);\n   * console.log(hd.render('en')); // '15th of Cheshvan, 5769'\n   * console.log(hd.render('he')); // '15 חֶשְׁוָן, 5769'\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @param {boolean} [showYear=true] Display year (defaults to true).\n   * @return {string}\n   */\n  render(locale = null, showYear = true) {\n    const locale0 = locale || Locale.getLocaleName();\n    const day = this.getDate();\n    const monthName = Locale.gettext(this.getMonthName(), locale0);\n    const nth = Locale.ordinal(day, locale0);\n    const dayOf = HDate.getDayOfTranslation(locale0);\n    const dateStr = `${nth}${dayOf} ${monthName}`;\n    if (showYear) {\n      const fullYear = this.getFullYear();\n      return `${dateStr}, ${fullYear}`;\n    } else {\n      return dateStr;\n    }\n  }\n\n  /**\n   * @private\n   * @param {string} locale\n   * @return {string}\n   */\n  static getDayOfTranslation(locale) {\n    switch (locale) {\n      case 'en':\n      case 's':\n      case 'a':\n      case 'ashkenazi':\n        return ' of';\n    }\n    const ofStr = Locale.lookupTranslation('of', locale);\n    if (ofStr) {\n      return ' ' + ofStr;\n    }\n    if ('ashkenazi' === locale.substring(0, 9)) {\n      return ' of';\n    }\n    return '';\n  }\n\n  /**\n   * Renders this Hebrew date in Hebrew gematriya, regardless of locale.\n   * @example\n   * import {HDate, months} from '@hebcal/core';\n   * const hd = new HDate(15, months.CHESHVAN, 5769);\n   * console.log(hd.renderGematriya()); // 'ט״ו חֶשְׁוָן תשס״ט'\n   * @param {boolean} [suppressNikud]\n   * @return {string}\n   */\n  renderGematriya(suppressNikud = false) {\n    const d = this.getDate();\n    const locale = suppressNikud ? 'he-x-NoNikud' : 'he';\n    const m = Locale.gettext(this.getMonthName(), locale);\n    const y = this.getFullYear();\n    return gematriya(d) + ' ' + m + ' ' + gematriya(y);\n  }\n\n  /**\n   * Returns an `HDate` representing the a dayNumber before the current date.\n   * Sunday=0, Saturday=6\n   * @example\n   * new HDate(new Date('Wednesday February 19, 2014')).before(6).greg() // Sat Feb 15 2014\n   * @param {number} day day of week\n   * @return {HDate}\n   */\n  before(day) {\n    return onOrBefore(day, this, -1);\n  }\n\n  /**\n   * Returns an `HDate` representing the a dayNumber on or before the current date.\n   * Sunday=0, Saturday=6\n   * @example\n   * new HDate(new Date('Wednesday February 19, 2014')).onOrBefore(6).greg() // Sat Feb 15 2014\n   * new HDate(new Date('Saturday February 22, 2014')).onOrBefore(6).greg() // Sat Feb 22 2014\n   * new HDate(new Date('Sunday February 23, 2014')).onOrBefore(6).greg() // Sat Feb 22 2014\n   * @param {number} dow day of week\n   * @return {HDate}\n   */\n  onOrBefore(dow) {\n    return onOrBefore(dow, this, 0);\n  }\n\n  /**\n   * Returns an `HDate` representing the nearest dayNumber to the current date\n   * Sunday=0, Saturday=6\n   * @example\n   * new HDate(new Date('Wednesday February 19, 2014')).nearest(6).greg() // Sat Feb 22 2014\n   * new HDate(new Date('Tuesday February 18, 2014')).nearest(6).greg() // Sat Feb 15 2014\n   * @param {number} dow day of week\n   * @return {HDate}\n   */\n  nearest(dow) {\n    return onOrBefore(dow, this, 3);\n  }\n\n  /**\n   * Returns an `HDate` representing the a dayNumber on or after the current date.\n   * Sunday=0, Saturday=6\n   * @example\n   * new HDate(new Date('Wednesday February 19, 2014')).onOrAfter(6).greg() // Sat Feb 22 2014\n   * new HDate(new Date('Saturday February 22, 2014')).onOrAfter(6).greg() // Sat Feb 22 2014\n   * new HDate(new Date('Sunday February 23, 2014')).onOrAfter(6).greg() // Sat Mar 01 2014\n   * @param {number} dow day of week\n   * @return {HDate}\n   */\n  onOrAfter(dow) {\n    return onOrBefore(dow, this, 6);\n  }\n\n  /**\n   * Returns an `HDate` representing the a dayNumber after the current date.\n   * Sunday=0, Saturday=6\n   * @example\n   * new HDate(new Date('Wednesday February 19, 2014')).after(6).greg() // Sat Feb 22 2014\n   * new HDate(new Date('Saturday February 22, 2014')).after(6).greg() // Sat Mar 01 2014\n   * new HDate(new Date('Sunday February 23, 2014')).after(6).greg() // Sat Mar 01 2014\n   * @param {number} day day of week\n   * @return {HDate}\n   */\n  after(day) {\n    return onOrBefore(day, this, 7);\n  }\n\n  /**\n   * Returns the next Hebrew date\n   * @return {HDate}\n   */\n  next() {\n    return new HDate(this.abs() + 1);\n  }\n\n  /**\n   * Returns the previous Hebrew date\n   * @return {HDate}\n   */\n  prev() {\n    return new HDate(this.abs() - 1);\n  }\n\n  /**\n   * Returns a cloned `HDate` object with a specified amount of time added\n   *\n   * Units are case insensitive, and support plural and short forms.\n   * Note, short forms are case sensitive.\n   *\n   * | Unit | Shorthand | Description\n   * | --- | --- | --- |\n   * | `day` | `d` | days |\n   * | `week` | `w` | weeks |\n   * | `month` | `M` | months |\n   * | `year` | `y` | years |\n   * @param {number} number\n   * @param {string} [units]\n   * @return {HDate}\n   */\n  add(number, units = 'd') {\n    number = parseInt(number, 10);\n    if (!number) {\n      return new HDate(this);\n    }\n    units = HDate.standardizeUnits(units);\n    if (units === UNITS_DAY) {\n      return new HDate(this.abs() + number);\n    } else if (units === UNITS_WEEK) {\n      return new HDate(this.abs() + 7 * number);\n    } else if (units === UNITS_YEAR) {\n      return new HDate(this.getDate(), this.getMonth(), this.getFullYear() + number);\n    } else if (units === UNITS_MONTH) {\n      let hd = new HDate(this);\n      const sign = number > 0 ? 1 : -1;\n      number = Math.abs(number);\n      for (let i = 0; i < number; i++) {\n        hd = new HDate(hd.abs() + sign * hd.daysInMonth());\n      }\n      return hd;\n    }\n  }\n\n  /**\n   * @private\n   * @param {string} units\n   * @return {string}\n   */\n  static standardizeUnits(units) {\n    const full = UNITS_SINGLE[units] || String(units || '').toLowerCase().replace(/s$/, '');\n    return UNITS_VALID[full] || throwTypeError(`Invalid units '${units}'`);\n  }\n\n  /**\n   * Returns a cloned `HDate` object with a specified amount of time subracted\n   *\n   * Units are case insensitive, and support plural and short forms.\n   * Note, short forms are case sensitive.\n   *\n   * | Unit | Shorthand | Description\n   * | --- | --- | --- |\n   * | `day` | `d` | days |\n   * | `week` | `w` | weeks |\n   * | `month` | `M` | months |\n   * | `year` | `y` | years |\n   * @example\n   * import {HDate, months} from '@hebcal/core';\n   *\n   * const hd1 = new HDate(15, months.CHESHVAN, 5769);\n   * const hd2 = hd1.add(1, 'weeks'); // 7 Kislev 5769\n   * const hd3 = hd1.add(-3, 'M'); // 30 Av 5768\n   * @param {number} number\n   * @param {string} [units]\n   * @return {HDate}\n   */\n  subtract(number, units = 'd') {\n    return this.add(number * -1, units);\n  }\n\n  /**\n   * Returns the difference in days between the two given HDates.\n   *\n   * The result is positive if `this` date is comes chronologically\n   * after the `other` date, and negative\n   * if the order of the two dates is reversed.\n   *\n   * The result is zero if the two dates are identical.\n   * @example\n   * import {HDate, months} from '@hebcal/core';\n   *\n   * const hd1 = new HDate(25, months.KISLEV, 5770);\n   * const hd2 = new HDate(15, months.CHESHVAN, 5769);\n   * const days = hd1.deltaDays(hd2); // 394\n   * @param {HDate} other Hebrew date to compare\n   * @return {number}\n   */\n  deltaDays(other) {\n    if (!HDate.isHDate(other)) {\n      throw new TypeError(`Bad argument: ${other}`);\n    }\n    return this.abs() - other.abs();\n  }\n\n  /**\n   * Compares this date to another date, returning `true` if the dates match.\n   * @param {HDate} other Hebrew date to compare\n   * @return {boolean}\n   */\n  isSameDate(other) {\n    if (HDate.isHDate(other)) {\n      return this.year == other.year && this.month == other.month && this.day == other.day;\n    }\n    return false;\n  }\n\n  /** @return {string} */\n  toString() {\n    const day = this.getDate();\n    const fullYear = this.getFullYear();\n    const monthName = this.getMonthName();\n    return `${day} ${monthName} ${fullYear}`;\n  }\n\n  /**\n   * Returns true if Hebrew year is a leap year\n   * @param {number} year Hebrew year\n   * @return {boolean}\n   */\n  static isLeapYear(year) {\n    return isLeapYear(year);\n  }\n\n  /**\n   * Number of months in this Hebrew year (either 12 or 13 depending on leap year)\n   * @param {number} year Hebrew year\n   * @return {number}\n   */\n  static monthsInYear(year) {\n    return monthsInYear(year);\n  }\n\n  /**\n   * Number of days in Hebrew month in a given year (29 or 30)\n   * @param {number} month Hebrew month (e.g. months.TISHREI)\n   * @param {number} year Hebrew year\n   * @return {number}\n   */\n  static daysInMonth(month, year) {\n    return daysInMonth(month, year);\n  }\n\n  /**\n   * Returns a transliterated string name of Hebrew month in year,\n   * for example 'Elul' or 'Cheshvan'.\n   * @param {number} month Hebrew month (e.g. months.TISHREI)\n   * @param {number} year Hebrew year\n   * @return {string}\n   */\n  static getMonthName(month, year) {\n    return getMonthName(month, year);\n  }\n\n  /**\n   * Returns the Hebrew month number (NISAN=1, TISHREI=7)\n   * @param {number|string} month A number, or Hebrew month name string\n   * @return {number}\n   */\n  static monthNum(month) {\n    if (typeof month === 'number') {\n      if (isNaN(month) || month > 14) {\n        throw new RangeError(`Invalid month number: ${month}`);\n      }\n      return month;\n    }\n    return month.charCodeAt(0) >= 48 && month.charCodeAt(0) <= 57 ? /* number */\n    parseInt(month, 10) : HDate.monthFromName(month);\n  }\n\n  /**\n   * Number of days in the hebrew YEAR\n   * @param {number} year Hebrew year\n   * @return {number}\n   */\n  static daysInYear(year) {\n    return daysInYear(year);\n  }\n\n  /**\n   * true if Cheshvan is long in Hebrew year\n   * @param {number} year Hebrew year\n   * @return {boolean}\n   */\n  static longCheshvan(year) {\n    return longCheshvan(year);\n  }\n\n  /**\n   * true if Kislev is short in Hebrew year\n   * @param {number} year Hebrew year\n   * @return {boolean}\n   */\n  static shortKislev(year) {\n    return shortKislev(year);\n  }\n\n  /**\n   * Converts Hebrew month string name to numeric\n   * @param {string} monthName monthName\n   * @return {number}\n   */\n  static monthFromName(monthName) {\n    if (typeof monthName === 'number') {\n      if (isNaN(monthName) || monthName < 1 || monthName > 14) {\n        throw new RangeError(`Invalid month name: ${monthName}`);\n      }\n      return monthName;\n    }\n    const c = monthName.toLowerCase();\n    /*\n    the Hebrew months are unique to their second letter\n    N         Nisan  (November?)\n    I         Iyyar\n    E        Elul\n    C        Cheshvan\n    K        Kislev\n    1        1Adar\n    2        2Adar\n    Si Sh     Sivan, Shvat\n    Ta Ti Te Tamuz, Tishrei, Tevet\n    Av Ad    Av, Adar\n     אב אד אי אל   אב אדר אייר אלול\n    ח            חשון\n    ט            טבת\n    כ            כסלו\n    נ            ניסן\n    ס            סיון\n    ש            שבט\n    תמ תש        תמוז תשרי\n    */\n    switch (c[0]) {\n      case 'n':\n      case 'נ':\n        if (c[1] == 'o') {\n          break; /* this catches \"november\" */\n        }\n\n        return months.NISAN;\n      case 'i':\n        return months.IYYAR;\n      case 'e':\n        return months.ELUL;\n      case 'c':\n      case 'ח':\n        return months.CHESHVAN;\n      case 'k':\n      case 'כ':\n        return months.KISLEV;\n      case 's':\n        switch (c[1]) {\n          case 'i':\n            return months.SIVAN;\n          case 'h':\n            return months.SHVAT;\n        }\n      case 't':\n        switch (c[1]) {\n          case 'a':\n            return months.TAMUZ;\n          case 'i':\n            return months.TISHREI;\n          case 'e':\n            return months.TEVET;\n        }\n        break;\n      case 'a':\n        switch (c[1]) {\n          case 'v':\n            return months.AV;\n          case 'd':\n            if (/(1|[^i]i|a|א)$/i.test(monthName)) {\n              return months.ADAR_I;\n            }\n            return months.ADAR_II;\n          // else assume sheini\n        }\n\n        break;\n      case 'ס':\n        return months.SIVAN;\n      case 'ט':\n        return months.TEVET;\n      case 'ש':\n        return months.SHVAT;\n      case 'א':\n        switch (c[1]) {\n          case 'ב':\n            return months.AV;\n          case 'ד':\n            if (/(1|[^i]i|a|א)$/i.test(monthName)) {\n              return months.ADAR_I;\n            }\n            return months.ADAR_II;\n          // else assume sheini\n          case 'י':\n            return months.IYYAR;\n          case 'ל':\n            return months.ELUL;\n        }\n        break;\n      case 'ת':\n        switch (c[1]) {\n          case 'מ':\n            return months.TAMUZ;\n          case 'ש':\n            return months.TISHREI;\n        }\n        break;\n    }\n    throw new RangeError(`Unable to parse month name: ${monthName}`);\n  }\n\n  /**\n   * Note: Applying this function to d+6 gives us the DAYNAME on or after an\n   * absolute day d. Similarly, applying it to d+3 gives the DAYNAME nearest to\n   * absolute date d, applying it to d-1 gives the DAYNAME previous to absolute\n   * date d, and applying it to d+7 gives the DAYNAME following absolute date d.\n   * @param {number} dayOfWeek\n   * @param {number} absdate\n   * @return {number}\n   */\n  static dayOnOrBefore(dayOfWeek, absdate) {\n    return absdate - (absdate - dayOfWeek) % 7;\n  }\n\n  /**\n   * Tests if the object is an instance of `HDate`\n   * @param {any} obj\n   * @return {boolean}\n   */\n  static isHDate(obj) {\n    return obj !== null && typeof obj === 'object' && typeof obj.year === 'number' && typeof obj.month === 'number' && typeof obj.day === 'number' && typeof obj.greg === 'function' && typeof obj.abs === 'function';\n  }\n}\n\n/**\n * @private\n * @param {HDate} date\n */\nfunction fix(date) {\n  fixMonth(date);\n  fixDate(date);\n}\n\n/**\n * @private\n * @param {HDate} date\n */\nfunction fixDate(date) {\n  if (date.day < 1) {\n    if (date.month == months.TISHREI) {\n      date.year -= 1;\n    }\n    date.day += daysInMonth(date.month, date.year);\n    date.month -= 1;\n    fix(date);\n  }\n  if (date.day > daysInMonth(date.month, date.year)) {\n    if (date.month === months.ELUL) {\n      date.year += 1;\n    }\n    date.day -= daysInMonth(date.month, date.year);\n    date.month += 1;\n    fix(date);\n  }\n  fixMonth(date);\n}\n\n/**\n * @private\n * @param {HDate} date\n */\nfunction fixMonth(date) {\n  if (date.month === months.ADAR_II && !date.isLeapYear()) {\n    date.month -= 1; // to Adar I\n    fix(date);\n  } else if (date.month < 1) {\n    date.month += monthsInYear(date.year);\n    date.year -= 1;\n    fix(date);\n  } else if (date.month > monthsInYear(date.year)) {\n    date.month -= monthsInYear(date.year);\n    date.year += 1;\n    fix(date);\n  }\n  delete date.abs0;\n}\n\n/**\n * @private\n * @param {number} day\n * @param {HDate} t\n * @param {number} offset\n * @return {HDate}\n */\nfunction onOrBefore(day, t, offset) {\n  return new HDate(HDate.dayOnOrBefore(day, t.abs() + offset));\n}\n\n/**\n * Holiday flags for Event\n * @readonly\n * @enum {number}\n */\nconst flags = {\n  /** Chag, yontiff, yom tov */\n  CHAG: 0x000001,\n  /** Light candles 18 minutes before sundown */\n  LIGHT_CANDLES: 0x000002,\n  /** End of holiday (end of Yom Tov)  */\n  YOM_TOV_ENDS: 0x000004,\n  /** Observed only in the Diaspora (chutz l'aretz)  */\n  CHUL_ONLY: 0x000008,\n  /** Observed only in Israel */\n  IL_ONLY: 0x000010,\n  /** Light candles in the evening at Tzeit time (3 small stars) */\n  LIGHT_CANDLES_TZEIS: 0x000020,\n  /** Candle-lighting for Chanukah */\n  CHANUKAH_CANDLES: 0x000040,\n  /** Rosh Chodesh, beginning of a new Hebrew month */\n  ROSH_CHODESH: 0x000080,\n  /** Minor fasts like Tzom Tammuz, Ta'anit Esther, ... */\n  MINOR_FAST: 0x000100,\n  /** Shabbat Shekalim, Zachor, ... */\n  SPECIAL_SHABBAT: 0x000200,\n  /** Weekly sedrot on Saturdays */\n  PARSHA_HASHAVUA: 0x000400,\n  /** Daily page of Talmud (Bavli) */\n  DAF_YOMI: 0x000800,\n  /** Days of the Omer */\n  OMER_COUNT: 0x001000,\n  /** Yom HaShoah, Yom HaAtzma'ut, ... */\n  MODERN_HOLIDAY: 0x002000,\n  /** Yom Kippur and Tish'a B'Av */\n  MAJOR_FAST: 0x004000,\n  /** On the Saturday before Rosh Chodesh */\n  SHABBAT_MEVARCHIM: 0x008000,\n  /** Molad */\n  MOLAD: 0x010000,\n  /** Yahrzeit or Hebrew Anniversary */\n  USER_EVENT: 0x020000,\n  /** Daily Hebrew date (\"11th of Sivan, 5780\") */\n  HEBREW_DATE: 0x040000,\n  /** A holiday that's not major, modern, rosh chodesh, or a fast day */\n  MINOR_HOLIDAY: 0x080000,\n  /** Evening before a major or minor holiday */\n  EREV: 0x100000,\n  /** Chol haMoed, intermediate days of Pesach or Sukkot */\n  CHOL_HAMOED: 0x200000,\n  /** Mishna Yomi */\n  MISHNA_YOMI: 0x400000,\n  /** Yom Kippur Katan, minor day of atonement on the day preceeding each Rosh Chodesh */\n  YOM_KIPPUR_KATAN: 0x800000,\n  /** Daily page of Jerusalem Talmud (Yerushalmi) */\n  YERUSHALMI_YOMI: 0x1000000,\n  /** Nach Yomi */\n  NACH_YOMI: 0x2000000\n};\n\n/** Represents an Event with a title, date, and flags */\nclass Event {\n  /**\n   * Constructs Event\n   * @param {HDate} date Hebrew date event occurs\n   * @param {string} desc Description (not translated)\n   * @param {number} [mask=0] optional bitmask of holiday flags (see {@link flags})\n   * @param {Object} [attrs={}] optional additional attributes (e.g. `eventTimeStr`, `cholHaMoedDay`)\n   */\n  constructor(date, desc, mask, attrs) {\n    this.date = date;\n    this.desc = desc;\n    this.mask = +mask;\n    if (typeof attrs === 'object' && attrs !== null) {\n      Object.keys(attrs).forEach(k => this[k] = attrs[k]);\n    }\n  }\n  /**\n   * Hebrew date of this event\n   * @return {HDate}\n   */\n  getDate() {\n    return this.date;\n  }\n  /**\n   * Untranslated description of this event\n   * @return {string}\n   */\n  getDesc() {\n    return this.desc;\n  }\n  /**\n   * Bitmask of optional event flags. See {@link flags}\n   * @return {number}\n   */\n  getFlags() {\n    return this.mask;\n  }\n  /**\n   * Returns (translated) description of this event\n   * @example\n   * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);\n   * ev.render('en'); // 'Shavuot'\n   * ev.render('he'); // 'שָׁבוּעוֹת'\n   * ev.render('ashkenazi'); // 'Shavuos'\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    return Locale.gettext(this.desc, locale);\n  }\n  /**\n   * Returns a brief (translated) description of this event.\n   * For most events, this is the same as render(). For some events, it procudes\n   * a shorter text (e.g. without a time or added description).\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  renderBrief(locale) {\n    return this.render(locale);\n  }\n  /**\n   * Optional holiday-specific Emoji or `null`.\n   * @return {string}\n   */\n  getEmoji() {\n    return this.emoji || null;\n  }\n  /**\n   * Returns a simplified (untranslated) description for this event. For example,\n   * the {@link HolidayEvent} class supports\n   * \"Erev Pesach\" => \"Pesach\", and \"Sukkot III (CH''M)\" => \"Sukkot\".\n   * For many holidays the basename and the event description are the same.\n   * @return {string}\n   */\n  basename() {\n    return this.getDesc();\n  }\n  /**\n   * Returns a URL to hebcal.com or sefaria.org for more detail on the event.\n   * Returns `undefined` for events with no detail page.\n   * @return {string}\n   */\n  url() {\n    return undefined;\n  }\n  /**\n   * Is this event observed in Israel?\n   * @example\n   * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n   * ev1.observedInIsrael(); // false\n   * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n   * ev2.observedInIsrael(); // true\n   * @return {boolean}\n   */\n  observedInIsrael() {\n    return !(this.mask & flags.CHUL_ONLY);\n  }\n  /**\n   * Is this event observed in the Diaspora?\n   * @example\n   * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n   * ev1.observedInDiaspora(); // true\n   * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n   * ev2.observedInDiaspora(); // true\n   * @return {boolean}\n   */\n  observedInDiaspora() {\n    return !(this.mask & flags.IL_ONLY);\n  }\n  /**\n   * Is this event observed in Israel/Diaspora?\n   * @example\n   * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n   * ev1.observedIn(false); // true\n   * ev1.observedIn(true); // false\n   * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n   * ev2.observedIn(false); // true\n   * ev2.observedIn(true); // true\n   * @param {boolean} il\n   * @return {boolean}\n   */\n  observedIn(il) {\n    return il ? this.observedInIsrael() : this.observedInDiaspora();\n  }\n  /**\n   * @deprecated\n   * Optional additional event attributes (e.g. `eventTimeStr`, `cholHaMoedDay`)\n   * @return {Object}\n   */\n  getAttrs() {\n    return this;\n  }\n  /**\n   * Makes a clone of this Event object\n   * @return {Event}\n   */\n  clone() {\n    const ev = new this.constructor();\n    for (const property in this) {\n      if (this.hasOwnProperty(property)) {\n        ev[property] = this[property];\n      }\n    }\n    return ev;\n  }\n}\nconst KEYCAP_DIGITS = ['0️⃣', '1️⃣', '2️⃣', '3️⃣', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣'];\n\n/** Daily Hebrew date (\"11th of Sivan, 5780\") */\nclass HebrewDateEvent extends Event {\n  /**\n   * @param {HDate} date\n   */\n  constructor(date) {\n    super(date, date.toString(), flags.HEBREW_DATE);\n  }\n  /**\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @example\n   * import {HDate, HebrewDateEvent, months} from '@hebcal/core';\n   *\n   * const hd = new HDate(15, months.CHESHVAN, 5769);\n   * const ev = new HebrewDateEvent(hd);\n   * console.log(ev.render('en')); // '15th of Cheshvan, 5769'\n   * console.log(ev.render('he')); // 'ט״ו חֶשְׁוָן תשס״ט'\n   * @return {string}\n   */\n  render(locale) {\n    const locale1 = locale && locale.toLowerCase();\n    const locale0 = locale1 || Locale.getLocaleName();\n    const hd = this.getDate();\n    switch (locale0) {\n      case 'h':\n      case 'he':\n      case 'he-x-nonikud':\n        const dd = hd.getDate();\n        const mm = Locale.gettext(hd.getMonthName(), locale0);\n        const yy = hd.getFullYear();\n        return gematriya(dd) + ' ' + mm + ' ' + gematriya(yy);\n      default:\n        return hd.render(locale0, true);\n    }\n  }\n  /**\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @example\n   * import {HDate, HebrewDateEvent, months} from '@hebcal/core';\n   *\n   * const hd = new HDate(15, months.CHESHVAN, 5769);\n   * const ev = new HebrewDateEvent(hd);\n   * console.log(ev.renderBrief()); // '15th of Cheshvan'\n   * console.log(ev.renderBrief('he')); // 'ט״ו חֶשְׁוָן'\n   * @return {string}\n   */\n  renderBrief(locale) {\n    const locale1 = locale && locale.toLowerCase();\n    const locale0 = locale1 || Locale.getLocaleName();\n    const hd = this.getDate();\n    if (hd.getMonth() === months.TISHREI && hd.getDate() === 1) {\n      return this.render(locale0);\n    }\n    switch (locale0) {\n      case 'h':\n      case 'he':\n      case 'he-x-nonikud':\n        const dd = hd.getDate();\n        const mm = Locale.gettext(hd.getMonthName(), locale0);\n        return gematriya(dd) + ' ' + mm;\n      default:\n        return hd.render(locale0, false);\n    }\n  }\n  /**\n   * Helper function to render a Hebrew date\n   * @deprecated\n   * @param {number} day\n   * @param {string} monthName\n   * @param {number} fullYear\n   * @return {string}\n   */\n  static renderHebrew(day, monthName, fullYear) {\n    return gematriya(day) + ' ' + monthName + ' ' + gematriya(fullYear);\n  }\n}\n\nclass Sun {\n  constructor(date, latitude, longitude) {\n    this.date = date;\n    this.latitude = latitude;\n    this.longitude = longitude;\n\n    this.julianDate = getJD(date);\n  }\n\n  get solarNoon() {\n    return calcSolNoon(this.julianDate, this.longitude, this.date);\n  }\n\n  timeAtAngle(angle, rising) {\n    return calcSunriseSet(rising, angle, this.julianDate, this.date, this.latitude, this.longitude);\n  }\n}\n\nfunction formatDate(date, minutes) {\n  const seconds = (minutes - Math.floor(minutes)) * 60;\n  return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), 0, minutes, seconds));\n}\n\nfunction calcTimeJulianCent(jd) {\n  const T = (jd - 2451545.0) / 36525.0;\n  return T;\n}\n\nfunction radToDeg(angleRad) {\n  return (180.0 * angleRad / Math.PI);\n}\n\nfunction degToRad(angleDeg) {\n  return (Math.PI * angleDeg / 180.0);\n}\n\nfunction calcGeomMeanLongSun(t) {\n  let L0 = 280.46646 + t * (36000.76983 + t * (0.0003032));\n  while (L0 > 360.0) {\n    L0 -= 360.0;\n  }\n  while (L0 < 0.0) {\n    L0 += 360.0;\n  }\n  return L0; // in degrees\n}\n\nfunction calcGeomMeanAnomalySun(t) {\n  const M = 357.52911 + t * (35999.05029 - 0.0001537 * t);\n  return M; // in degrees\n}\n\nfunction calcEccentricityEarthOrbit(t) {\n  const e = 0.016708634 - t * (0.000042037 + 0.0000001267 * t);\n  return e; // unitless\n}\n\nfunction calcSunEqOfCenter(t) {\n  const m = calcGeomMeanAnomalySun(t);\n  const mrad = degToRad(m);\n  const sinm = Math.sin(mrad);\n  const sin2m = Math.sin(mrad + mrad);\n  const sin3m = Math.sin(mrad + mrad + mrad);\n  const C = sinm * (1.914602 - t * (0.004817 + 0.000014 * t)) + sin2m * (0.019993 - 0.000101 * t) + sin3m * 0.000289;\n  return C; // in degrees\n}\n\nfunction calcSunTrueLong(t) {\n  const l0 = calcGeomMeanLongSun(t);\n  const c = calcSunEqOfCenter(t);\n  const O = l0 + c;\n  return O; // in degrees\n}\n\nfunction calcSunApparentLong(t) {\n  const o = calcSunTrueLong(t);\n  const omega = 125.04 - 1934.136 * t;\n  const lambda = o - 0.00569 - 0.00478 * Math.sin(degToRad(omega));\n  return lambda; // in degrees\n}\n\nfunction calcMeanObliquityOfEcliptic(t) {\n  const seconds = 21.448 - t * (46.8150 + t * (0.00059 - t * (0.001813)));\n  const e0 = 23.0 + (26.0 + (seconds / 60.0)) / 60.0;\n  return e0; // in degrees\n}\n\nfunction calcObliquityCorrection(t) {\n  const e0 = calcMeanObliquityOfEcliptic(t);\n  const omega = 125.04 - 1934.136 * t;\n  const e = e0 + 0.00256 * Math.cos(degToRad(omega));\n  return e; // in degrees\n}\n\nfunction calcSunDeclination(t) {\n  const e = calcObliquityCorrection(t);\n  const lambda = calcSunApparentLong(t);\n\n  const sint = Math.sin(degToRad(e)) * Math.sin(degToRad(lambda));\n  const theta = radToDeg(Math.asin(sint));\n  return theta; // in degrees\n}\n\nfunction calcEquationOfTime(t) {\n  const epsilon = calcObliquityCorrection(t);\n  const l0 = calcGeomMeanLongSun(t);\n  const e = calcEccentricityEarthOrbit(t);\n  const m = calcGeomMeanAnomalySun(t);\n\n  let y = Math.tan(degToRad(epsilon) / 2.0);\n  y *= y;\n\n  const sin2l0 = Math.sin(2.0 * degToRad(l0));\n  const sinm = Math.sin(degToRad(m));\n  const cos2l0 = Math.cos(2.0 * degToRad(l0));\n  const sin4l0 = Math.sin(4.0 * degToRad(l0));\n  const sin2m = Math.sin(2.0 * degToRad(m));\n\n  const Etime = y * sin2l0 - 2.0 * e * sinm + 4.0 * e * y * sinm * cos2l0 - 0.5 * y * y * sin4l0 - 1.25 * e * e * sin2m;\n  return radToDeg(Etime) * 4.0; // in minutes of time\n}\n\nfunction calcHourAngle(angle, lat, solarDec) {\n  const latRad = degToRad(lat);\n  const sdRad = degToRad(solarDec);\n  const HAarg = (Math.cos(degToRad(90 + angle)) / (Math.cos(latRad) * Math.cos(sdRad)) - Math.tan(latRad) * Math.tan(sdRad));\n  const HA = Math.acos(HAarg);\n  return HA; // in radians (for sunset, use -HA)\n}\n\nfunction isNumber(inputVal) {\n  let oneDecimal = false;\n  const inputStr = `${inputVal}`;\n  for (let i = 0; i < inputStr.length; i++) {\n    const oneChar = inputStr.charAt(i);\n    if (i === 0 && (oneChar === '-' || oneChar === '+')) {\n      continue;\n    }\n    if (oneChar === '.' && !oneDecimal) {\n      oneDecimal = true;\n      continue;\n    }\n    if (oneChar < '0' || oneChar > '9') {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction getJD(date) {\n  let year = date.getFullYear();\n  let month = date.getMonth() + 1;\n  const day = date.getDate();\n  if (month < 3) {\n    year--;\n    month += 12;\n  }\n\n  const A = Math.floor(year / 100);\n  const B = 2 - A + Math.floor(A / 4);\n  const JD = Math.floor(365.25 * (year + 4716)) + Math.floor(30.6001 * (month + 1)) + day + B - 1524.5;\n  return JD;\n}\n\nfunction calcSolNoon(jd, longitude, date) {\n  const tnoon = calcTimeJulianCent(jd - longitude / 360.0);\n  let eqTime = calcEquationOfTime(tnoon);\n  const solNoonOffset = 720.0 - (longitude * 4) - eqTime; // in minutes\n  const newt = calcTimeJulianCent(jd + solNoonOffset / 1440.0);\n  eqTime = calcEquationOfTime(newt);\n  let solNoonLocal = 720 - (longitude * 4) - eqTime; // in minutes\n  while (solNoonLocal < 0.0) {\n    solNoonLocal += 1440.0;\n  }\n  while (solNoonLocal >= 1440.0) {\n    solNoonLocal -= 1440.0;\n  }\n  return formatDate(date, solNoonLocal);\n  // return timeString(solNoonLocal, 3);\n}\n\nfunction calcSunriseSetUTC(rise, angle, JD, latitude, longitude) {\n  const t = calcTimeJulianCent(JD);\n  const eqTime = calcEquationOfTime(t);\n  const solarDec = calcSunDeclination(t);\n  let hourAngle = calcHourAngle(angle, latitude, solarDec);\n  //alert(\"HA = \" + radToDeg(hourAngle));\n  if (!rise) hourAngle = -hourAngle;\n  const delta = longitude + radToDeg(hourAngle);\n  const timeUTC = 720 - (4.0 * delta) - eqTime; // in minutes\n  return timeUTC;\n}\n\nfunction calcSunriseSet(rise, angle, JD, date, latitude, longitude)\n  // rise = 1 for sunrise, 0 for sunset\n  {\n    const timeUTC = calcSunriseSetUTC(rise, angle, JD, latitude, longitude);\n    const newTimeUTC = calcSunriseSetUTC(rise, angle, JD + timeUTC / 1440.0, latitude, longitude);\n    if (isNumber(newTimeUTC)) {\n\n      return formatDate(date, newTimeUTC);\n\n    } else { // no sunrise/set found\n      return new Date(NaN);\n    }\n  }\n\nconst degreesBelowHorizon = {\n  sunrise: 0.833,\n  sunriseEnd: 0.3,\n  twilight: 6,\n  nauticalTwilight: 12,\n  night: 18,\n  goldenHour: -6\n};\n\nclass SolarCalc {\n  constructor(date, latitude, longitude) {\n    this.date = date;\n    this.lat = latitude;\n    this.longitude = longitude;\n\n    this.sun = new Sun(date, latitude, longitude);\n  }\n\n  get solarNoon() {\n    return this.sun.solarNoon;\n  }\n\n  get sunrise() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.sunrise, true);\n  }\n\n  get sunset() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.sunrise);\n  }\n\n  get sunriseEnd() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.sunriseEnd, true);\n  }\n\n  get sunsetStart() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.sunriseEnd, false);\n  }\n\n  get civilDawn() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.twilight, true);\n  }\n\n  get dawn() {\n    return this.civilDawn;\n  }\n\n  get civilDusk() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.twilight, false);\n  }\n\n  get dusk() {\n    return this.civilDusk;\n  }\n\n  get nauticalDawn() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.nauticalTwilight, true);\n  }\n\n  get nauticalDusk() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.nauticalTwilight, false);\n  }\n\n  get nightStart() {\n    return this.astronomicalDusk;\n  }\n\n  get astronomicalDusk() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.night, false);\n  }\n\n  get astronomicalDawn() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.night, true);\n  }\n\n  get nightEnd() {\n    return this.astronomicalDawn;\n  }\n\n  get goldenHourStart() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.goldenHour, false);\n  }\n\n  get goldenHourEnd() {\n    return this.sun.timeAtAngle(degreesBelowHorizon.goldenHour, true);\n  }\n}\n\nconst _formatters = {};\n\n/**\n * @private\n * @param {string} tzid\n * @return {Intl.DateTimeFormat}\n */\nfunction getFormatter$1(tzid) {\n  const fmt = _formatters[tzid];\n  if (fmt) return fmt;\n  const f = new Intl.DateTimeFormat('en-US', {\n    year: 'numeric',\n    month: '2-digit',\n    day: '2-digit',\n    hour: '2-digit',\n    minute: '2-digit',\n    second: '2-digit',\n    hour12: false,\n    timeZone: tzid\n  });\n  _formatters[tzid] = f;\n  return f;\n}\nconst dateFormatRegex = /^(\\d+).(\\d+).(\\d+),?\\s+(\\d+).(\\d+).(\\d+)/;\n\n/**\n * @private\n * @param {string} tzid\n * @param {Date} date\n * @return {string}\n */\nfunction getPseudoISO(tzid, date) {\n  const str = getFormatter$1(tzid).format(date);\n  const m = dateFormatRegex.exec(str);\n  let hour = m[4];\n  if (hour == '24') hour = '00';\n  m[3] = pad4(m[3]);\n  return `${m[3]}-${m[1]}-${m[2]}T${hour}:${m[5]}:${m[6]}Z`;\n}\n\n/**\n * @private\n * @param {string} tzid\n * @param {Date} date\n * @return {number}\n */\nfunction getTimezoneOffset(tzid, date) {\n  const utcStr = getPseudoISO('UTC', date);\n  const localStr = getPseudoISO(tzid, date);\n  const diffMs = new Date(utcStr).getTime() - new Date(localStr).getTime();\n  return Math.ceil(diffMs / 1000 / 60);\n}\n\n/**\n * @private\n * @param {number} number\n * @return {string}\n */\nfunction pad4(number) {\n  if (number < 0) {\n    return '-00' + pad4(-number);\n  } else if (number < 10) {\n    return '000' + number;\n  } else if (number < 100) {\n    return '00' + number;\n  } else if (number < 1000) {\n    return '0' + number;\n  }\n  return String(number);\n}\n\n/**\n * @private\n * @param {number} number\n * @return {string}\n */\nfunction pad2(number) {\n  if (number < 10) {\n    return '0' + number;\n  }\n  return String(number);\n}\n\n/**\n * @typedef {Object} ZmanimTimesResult\n * @property {Date} dawn\n * @property {Date} dusk\n * @property {Date} goldenHour\n * @property {Date} goldenHourEnd\n * @property {Date} nauticalDawn\n * @property {Date} nauticalDusk\n * @property {Date} night\n * @property {Date} nightEnd\n * @property {Date} solarNoon\n * @property {Date} sunrise\n * @property {Date} sunriseEnd\n * @property {Date} sunset\n * @property {Date} sunsetStart\n * @property {Date} alotHaShachar\n * @property {Date} misheyakir\n * @property {Date} misheyakirMachmir\n * @property {Date} tzeit\n*/\n\n/** Class representing halachic times */\nclass Zmanim {\n  /**\n     * Initialize a Zmanim instance.\n     * @param {Date|HDate} date Regular or Hebrew Date. If `date` is a regular `Date`,\n     *    hours, minutes, seconds and milliseconds are ignored.\n     * @param {number} latitude\n     * @param {number} longitude\n     */\n  constructor(date, latitude, longitude) {\n    if (typeof latitude !== 'number') throw new TypeError('Invalid latitude');\n    if (typeof longitude !== 'number') throw new TypeError('Invalid longitude');\n    if (latitude < -90 || latitude > 90) {\n      throw new RangeError(`Latitude ${latitude} out of range [-90,90]`);\n    }\n    if (longitude < -180 || longitude > 180) {\n      throw new RangeError(`Longitude ${longitude} out of range [-180,180]`);\n    }\n    const dt = isDate(date) ? date : HDate.isHDate(date) ? date.greg() : throwTypeError(`invalid date: ${date}`);\n    this.date = dt;\n    this.solarCalc = new SolarCalc(this.date, latitude, longitude);\n    this.sun = this.solarCalc.sun;\n    this.latitude = latitude;\n    this.longitude = longitude;\n  }\n  /**\n   * @deprecated\n   * @return {ZmanimTimesResult}\n   */\n  suntime() {\n    return {\n      solarNoon: this.solarCalc.solarNoon,\n      sunrise: this.sunrise(),\n      sunset: this.sunset(),\n      sunriseEnd: this.solarCalc.sunriseEnd,\n      sunsetStart: this.solarCalc.sunsetStart,\n      dawn: this.dawn(),\n      dusk: this.dusk(),\n      nauticalDawn: this.solarCalc.nauticalDawn,\n      nauticalDusk: this.solarCalc.nauticalDusk,\n      nightEnd: this.solarCalc.nightEnd,\n      night: this.solarCalc.nightStart,\n      goldenHourEnd: this.solarCalc.goldenHourEnd,\n      goldenHour: this.solarCalc.goldenHourStart,\n      alotHaShachar: this.alotHaShachar(),\n      misheyakir: this.misheyakir(),\n      misheyakirMachmir: this.misheyakirMachmir(),\n      tzeit: this.tzeit()\n    };\n  }\n  /**\n   * Upper edge of the Sun appears over the eastern horizon in the morning (0.833° above horizon)\n   * @return {Date}\n   */\n  sunrise() {\n    return this.sun.timeAtAngle(0.833333, true);\n  }\n  /**\n   * When the upper edge of the Sun disappears below the horizon (0.833° below horizon)\n   * @return {Date}\n   */\n  sunset() {\n    return this.sun.timeAtAngle(0.833333, false);\n  }\n  /**\n   * Civil dawn; Sun is 6° below the horizon in the morning\n   * @return {Date}\n   */\n  dawn() {\n    return this.solarCalc.dawn;\n  }\n  /**\n   * Civil dusk; Sun is 6° below the horizon in the evening\n   * @return {Date}\n   */\n  dusk() {\n    return this.solarCalc.dusk;\n  }\n  /** @return {number} */\n  hour() {\n    return (this.sunset() - this.sunrise()) / 12; // ms in hour\n  }\n  /** @return {number} */\n  hourMins() {\n    // hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n    return this.hour() / (1000 * 60);\n  }\n  /** @return {Date} */\n  gregEve() {\n    const prev = new Date(this.date);\n    prev.setDate(prev.getDate() - 1);\n    const zman = new Zmanim(prev, this.latitude, this.longitude);\n    return zman.sunset();\n  }\n  /** @return {number} */\n  nightHour() {\n    return (this.sunrise() - this.gregEve()) / 12; // ms in hour\n  }\n  /** @return {number} */\n  nightHourMins() {\n    // hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n    return this.nightHour() / (1000 * 60);\n  }\n  /**\n     * @param {number} hours\n     * @return {Date}\n     */\n  hourOffset(hours) {\n    return new Date(this.sunrise().getTime() + this.hour() * hours);\n  }\n  /**\n   * Midday – Chatzot; Sunrise plus 6 halachic hours\n   * @return {Date}\n   */\n  chatzot() {\n    return this.hourOffset(6);\n  }\n  /**\n   * Midnight – Chatzot; Sunset plus 6 halachic hours\n   * @return {Date}\n   */\n  chatzotNight() {\n    return new Date(this.sunrise().getTime() - this.nightHour() * 6);\n  }\n  /**\n   * Dawn – Alot haShachar; Sun is 16.1° below the horizon in the morning\n   * @return {Date}\n   */\n  alotHaShachar() {\n    return this.sun.timeAtAngle(16.1, true);\n  }\n  /**\n   * Earliest talis & tefillin – Misheyakir; Sun is 11.5° below the horizon in the morning\n   * @return {Date}\n   */\n  misheyakir() {\n    return this.sun.timeAtAngle(11.5, true);\n  }\n  /**\n   * Earliest talis & tefillin – Misheyakir Machmir; Sun is 10.2° below the horizon in the morning\n   * @return {Date}\n   */\n  misheyakirMachmir() {\n    return this.sun.timeAtAngle(10.2, true);\n  }\n  /**\n   * Latest Shema (Gra); Sunrise plus 3 halachic hours, according to the Gra\n   * @return {Date}\n   */\n  sofZmanShma() {\n    // Gra\n    return this.hourOffset(3);\n  }\n  /**\n   * Latest Shacharit (Gra); Sunrise plus 4 halachic hours, according to the Gra\n   * @return {Date}\n   */\n  sofZmanTfilla() {\n    // Gra\n    return this.hourOffset(4);\n  }\n  /**\n   * Latest Shema (MGA); Sunrise plus 3 halachic hours, according to Magen Avraham\n   * @return {Date}\n   */\n  sofZmanShmaMGA() {\n    // Magen Avraham\n    const alot72 = this.sunriseOffset(-72, false);\n    const tzeit72 = this.sunsetOffset(72, false);\n    const temporalHour = (tzeit72 - alot72) / 12; // ms in hour\n    return new Date(alot72.getTime() + 3 * temporalHour);\n  }\n  /**\n   * Latest Shacharit (MGA); Sunrise plus 4 halachic hours, according to Magen Avraham\n   * @return {Date}\n   */\n  sofZmanTfillaMGA() {\n    // Magen Avraham\n    const alot72 = this.sunriseOffset(-72, false);\n    const tzeit72 = this.sunsetOffset(72, false);\n    const temporalHour = (tzeit72 - alot72) / 12; // ms in hour\n    return new Date(alot72.getTime() + 4 * temporalHour);\n  }\n  /**\n   * Earliest Mincha – Mincha Gedola; Sunrise plus 6.5 halachic hours\n   * @return {Date}\n   */\n  minchaGedola() {\n    return this.hourOffset(6.5);\n  }\n  /**\n   * Preferable earliest time to recite Minchah – Mincha Ketana; Sunrise plus 9.5 halachic hours\n   * @return {Date}\n   */\n  minchaKetana() {\n    return this.hourOffset(9.5);\n  }\n  /**\n   * Plag haMincha; Sunrise plus 10.75 halachic hours\n   * @return {Date}\n   */\n  plagHaMincha() {\n    return this.hourOffset(10.75);\n  }\n  /**\n   * @param {number} [angle=8.5] optional time for solar depression.\n   *   Default is 8.5 degrees for 3 small stars, use 7.083 degress for 3 medium-sized stars.\n   * @return {Date}\n   */\n  tzeit(angle = 8.5) {\n    return this.sun.timeAtAngle(angle, false);\n  }\n  /**\n   * Alias for sunrise\n   * @return {Date}\n   */\n  neitzHaChama() {\n    return this.sunrise();\n  }\n  /**\n   * Alias for sunset\n   * @return {Date}\n   */\n  shkiah() {\n    return this.sunset();\n  }\n\n  /**\n   * Uses timeFormat to return a date like '20:34'\n   * @param {Date} dt\n   * @param {Intl.DateTimeFormat} timeFormat\n   * @return {string}\n   */\n  static formatTime(dt, timeFormat) {\n    const time = timeFormat.format(dt);\n    const hm = time.split(':');\n    if (hm[0] === '24') {\n      return '00:' + hm[1];\n    }\n    return time;\n  }\n\n  /**\n   * Discards seconds, rounding to nearest minute.\n   * @param {Date} dt\n   * @return {Date}\n   */\n  static roundTime(dt) {\n    const millis = dt.getTime();\n    if (isNaN(millis)) {\n      return dt;\n    }\n    // Round up to next minute if needed\n    const millisOnly = dt.getMilliseconds();\n    const seconds = dt.getSeconds();\n    if (seconds === 0 && millisOnly === 0) {\n      return dt;\n    }\n    const secAndMillis = seconds * 1000 + millisOnly;\n    const delta = secAndMillis >= 30000 ? 60000 - secAndMillis : -1 * secAndMillis;\n    return new Date(millis + delta);\n  }\n\n  /**\n   * Get offset string (like \"+05:00\" or \"-08:00\") from tzid (like \"Europe/Moscow\")\n   * @param {string} tzid\n   * @param {Date} date\n   * @return {string}\n   */\n  static timeZoneOffset(tzid, date) {\n    const offset = getTimezoneOffset(tzid, date);\n    const offsetAbs = Math.abs(offset);\n    const hours = Math.floor(offsetAbs / 60);\n    const minutes = offsetAbs % 60;\n    return (offset < 0 ? '+' : '-') + pad2(hours) + ':' + pad2(minutes);\n  }\n\n  /**\n   * Returns a string like \"2022-04-01T13:06:00-11:00\"\n   * @param {string} tzid\n   * @param {Date} date\n   * @return {string}\n   */\n  static formatISOWithTimeZone(tzid, date) {\n    if (isNaN(date.getTime())) {\n      return null;\n    }\n    return getPseudoISO(tzid, date).substring(0, 19) + Zmanim.timeZoneOffset(tzid, date);\n  }\n\n  /**\n   * Returns sunrise + `offset` minutes (either positive or negative).\n   * @param {number} offset minutes\n   * @param {boolean} roundMinute round time to nearest minute (default true)\n   * @return {Date}\n   */\n  sunriseOffset(offset, roundMinute = true) {\n    const sunrise = this.sunrise();\n    if (isNaN(sunrise.getTime())) {\n      return sunrise;\n    }\n    if (roundMinute) {\n      // For positive offsets only, round up to next minute if needed\n      if (offset > 0 && sunrise.getSeconds() >= 30) {\n        offset++;\n      }\n      sunrise.setSeconds(0, 0);\n    }\n    return new Date(sunrise.getTime() + offset * 60 * 1000);\n  }\n\n  /**\n   * Returns sunset + `offset` minutes (either positive or negative).\n   * @param {number} offset minutes\n   * @param {boolean} roundMinute round time to nearest minute (default true)\n   * @return {Date}\n   */\n  sunsetOffset(offset, roundMinute = true) {\n    const sunset = this.sunset();\n    if (isNaN(sunset.getTime())) {\n      return sunset;\n    }\n    if (roundMinute) {\n      // For Havdalah only, round up to next minute if needed\n      if (offset > 0 && sunset.getSeconds() >= 30) {\n        offset++;\n      }\n      sunset.setSeconds(0, 0);\n    }\n    return new Date(sunset.getTime() + offset * 60 * 1000);\n  }\n\n  /**\n   * Returns an array with sunset + offset Date object, and a 24-hour string formatted time.\n   * @deprecated\n   * @param {number} offset\n   * @param {Intl.DateTimeFormat} timeFormat\n   * @return {Object[]}\n   */\n  sunsetOffsetTime(offset, timeFormat) {\n    const dt = this.sunsetOffset(offset, true);\n    if (isNaN(dt.getTime())) {\n      // `No sunset for ${location} on ${hd}`\n      return [undefined, undefined];\n    }\n    const time = Zmanim.formatTime(dt, timeFormat);\n    return [dt, time];\n  }\n\n  /**\n   * Returns an array with tzeit Date object and a 24-hour string formatted time.\n   * @deprecated\n   * @param {number} angle degrees for solar depression.\n   *   Default is 8.5 degrees for 3 small stars, use 7.083 degress for 3 medium-sized stars.\n   * @param {Intl.DateTimeFormat} timeFormat\n   * @return {Object[]}\n   */\n  tzeitTime(angle, timeFormat) {\n    const dt = this.tzeit(angle);\n    if (isNaN(dt.getTime())) {\n      return [undefined, undefined];\n    }\n    const time = Zmanim.roundTime(dt);\n    const timeStr = Zmanim.formatTime(time, timeFormat);\n    return [time, timeStr];\n  }\n}\n\n/*\n    Hebcal - A Jewish Calendar Generator\n    Copyright (c) 1994-2020 Danny Sadinoff\n    Portions copyright Eyal Schachter and Michael J. Radwin\n\n    https://github.com/hebcal/hebcal-es6\n\n    This program is free software; you can redistribute it and/or\n    modify it under the terms of the GNU General Public License\n    as published by the Free Software Foundation; either version 2\n    of the License, or (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nconst classicCities0 = [['Ashdod', 'IL', 31.79213, 34.64966, 'Asia/Jerusalem'], ['Atlanta', 'US', 33.749, -84.38798, 'America/New_York'], ['Austin', 'US', 30.26715, -97.74306, 'America/Chicago'], ['Baghdad', 'IQ', 33.34058, 44.40088, 'Asia/Baghdad'], ['Beer Sheva', 'IL', 31.25181, 34.7913, 'Asia/Jerusalem'], ['Berlin', 'DE', 52.52437, 13.41053, 'Europe/Berlin'], ['Baltimore', 'US', 39.29038, -76.61219, 'America/New_York'], ['Bogota', 'CO', 4.60971, -74.08175, 'America/Bogota'], ['Boston', 'US', 42.35843, -71.05977, 'America/New_York'], ['Budapest', 'HU', 47.49801, 19.03991, 'Europe/Budapest'], ['Buenos Aires', 'AR', -34.61315, -58.37723, 'America/Argentina/Buenos_Aires'], ['Buffalo', 'US', 42.88645, -78.87837, 'America/New_York'], ['Chicago', 'US', 41.85003, -87.65005, 'America/Chicago'], ['Cincinnati', 'US', 39.162, -84.45689, 'America/New_York'], ['Cleveland', 'US', 41.4995, -81.69541, 'America/New_York'], ['Dallas', 'US', 32.78306, -96.80667, 'America/Chicago'], ['Denver', 'US', 39.73915, -104.9847, 'America/Denver'], ['Detroit', 'US', 42.33143, -83.04575, 'America/Detroit'], ['Eilat', 'IL', 29.55805, 34.94821, 'Asia/Jerusalem'], ['Gibraltar', 'GI', 36.14474, -5.35257, 'Europe/Gibraltar'], ['Haifa', 'IL', 32.81841, 34.9885, 'Asia/Jerusalem'], ['Hawaii', 'US', 21.30694, -157.85833, 'Pacific/Honolulu'], ['Helsinki', 'FI', 60.16952, 24.93545, 'Europe/Helsinki'], ['Houston', 'US', 29.76328, -95.36327, 'America/Chicago'], ['Jerusalem', 'IL', 31.76904, 35.21633, 'Asia/Jerusalem'], ['Johannesburg', 'ZA', -26.20227, 28.04363, 'Africa/Johannesburg'], ['Kiev', 'UA', 50.45466, 30.5238, 'Europe/Kiev'], ['La Paz', 'BO', -16.5, -68.15, 'America/La_Paz'], ['Livingston', 'US', 40.79593, -74.31487, 'America/New_York'], ['Las Vegas', 'US', 36.17497, -115.13722, 'America/Los_Angeles'], ['London', 'GB', 51.50853, -0.12574, 'Europe/London'], ['Los Angeles', 'US', 34.05223, -118.24368, 'America/Los_Angeles'], ['Marseilles', 'FR', 43.29695, 5.38107, 'Europe/Paris'], ['Miami', 'US', 25.77427, -80.19366, 'America/New_York'], ['Minneapolis', 'US', 44.97997, -93.26384, 'America/Chicago'], ['Melbourne', 'AU', -37.814, 144.96332, 'Australia/Melbourne'], ['Mexico City', 'MX', 19.42847, -99.12766, 'America/Mexico_City'], ['Montreal', 'CA', 45.50884, -73.58781, 'America/Toronto'], ['Moscow', 'RU', 55.75222, 37.61556, 'Europe/Moscow'], ['New York', 'US', 40.71427, -74.00597, 'America/New_York'], ['Omaha', 'US', 41.25861, -95.93779, 'America/Chicago'], ['Ottawa', 'CA', 45.41117, -75.69812, 'America/Toronto'], ['Panama City', 'PA', 8.9936, -79.51973, 'America/Panama'], ['Paris', 'FR', 48.85341, 2.3488, 'Europe/Paris'], ['Pawtucket', 'US', 41.87871, -71.38256, 'America/New_York'], ['Petach Tikvah', 'IL', 32.08707, 34.88747, 'Asia/Jerusalem'], ['Philadelphia', 'US', 39.95233, -75.16379, 'America/New_York'], ['Phoenix', 'US', 33.44838, -112.07404, 'America/Phoenix'], ['Pittsburgh', 'US', 40.44062, -79.99589, 'America/New_York'], ['Providence', 'US', 41.82399, -71.41283, 'America/New_York'], ['Portland', 'US', 45.52345, -122.67621, 'America/Los_Angeles'], ['Saint Louis', 'US', 38.62727, -90.19789, 'America/Chicago'], ['Saint Petersburg', 'RU', 59.93863, 30.31413, 'Europe/Moscow'], ['San Diego', 'US', 32.71533, -117.15726, 'America/Los_Angeles'], ['San Francisco', 'US', 37.77493, -122.41942, 'America/Los_Angeles'], ['Sao Paulo', 'BR', -23.5475, -46.63611, 'America/Sao_Paulo'], ['Seattle', 'US', 47.60621, -122.33207, 'America/Los_Angeles'], ['Sydney', 'AU', -33.86785, 151.20732, 'Australia/Sydney'], ['Tel Aviv', 'IL', 32.08088, 34.78057, 'Asia/Jerusalem'], ['Tiberias', 'IL', 32.79221, 35.53124, 'Asia/Jerusalem'], ['Toronto', 'CA', 43.70011, -79.4163, 'America/Toronto'], ['Vancouver', 'CA', 49.24966, -123.11934, 'America/Vancouver'], ['White Plains', 'US', 41.03399, -73.76291, 'America/New_York'], ['Washington DC', 'US', 38.89511, -77.03637, 'America/New_York'], ['Worcester', 'US', 42.26259, -71.80229, 'America/New_York']];\nconst classicCities = Object.create(null);\n\n// Zip-Codes.com TimeZone IDs\nconst ZIPCODES_TZ_MAP = {\n  '0': 'UTC',\n  '4': 'America/Puerto_Rico',\n  // Atlantic (GMT -04:00)\n  '5': 'America/New_York',\n  //    Eastern  (GMT -05:00)\n  '6': 'America/Chicago',\n  //     Central  (GMT -06:00)\n  '7': 'America/Denver',\n  //      Mountain (GMT -07:00)\n  '8': 'America/Los_Angeles',\n  // Pacific  (GMT -08:00)\n  '9': 'America/Anchorage',\n  //   Alaska   (GMT -09:00)\n  '10': 'Pacific/Honolulu',\n  //   Hawaii-Aleutian Islands (GMT -10:00)\n  '11': 'Pacific/Pago_Pago',\n  //  American Samoa (GMT -11:00)\n  '13': 'Pacific/Funafuti',\n  //   Marshall Islands (GMT +12:00)\n  '14': 'Pacific/Guam',\n  //       Guam     (GMT +10:00)\n  '15': 'Pacific/Palau',\n  //      Palau    (GMT +9:00)\n  '16': 'Pacific/Chuuk' //      Micronesia (GMT +11:00)\n};\n\n/** @private */\nconst timeFormatCache = Object.create(null);\n\n/**\n * Gets a 24-hour time formatter (e.g. 07:41 or 20:03) from cache\n * or makes a new one if needed\n * @private\n * @param {string} tzid\n * @return {Intl.DateTimeFormat}\n */\nfunction getFormatter(tzid) {\n  const fmt = timeFormatCache[tzid];\n  if (fmt) return fmt;\n  const f = new Intl.DateTimeFormat('en-US', {\n    timeZone: tzid,\n    hour: 'numeric',\n    minute: 'numeric',\n    hour12: false\n  });\n  timeFormatCache[tzid] = f;\n  return f;\n}\n\n/** Class representing Location */\nclass Location {\n  /**\n   * Initialize a Location instance\n   * @param {number} latitude - Latitude as a decimal, valid range -90 thru +90 (e.g. 41.85003)\n   * @param {number} longitude - Longitude as a decimal, valid range -180 thru +180 (e.g. -87.65005)\n   * @param {boolean} il - in Israel (true) or Diaspora (false)\n   * @param {string} tzid - Olson timezone ID, e.g. \"America/Chicago\"\n   * @param {string} cityName - optional descriptive city name\n   * @param {string} countryCode - ISO 3166 alpha-2 country code (e.g. \"FR\")\n   * @param {string} geoid - optional string or numeric geographic ID\n   */\n  constructor(latitude, longitude, il, tzid, cityName, countryCode, geoid) {\n    const lat = typeof latitude === 'number' ? latitude : parseFloat(latitude);\n    if (isNaN(lat) || lat < -90 || lat > 90) {\n      throw new RangeError(`Latitude ${latitude} out of range [-90,90]`);\n    }\n    const long = typeof longitude === 'number' ? longitude : parseFloat(longitude);\n    if (isNaN(long) || long < -180 || long > 180) {\n      throw new RangeError(`Longitude ${longitude} out of range [-180,180]`);\n    }\n    this.latitude = lat;\n    this.longitude = long;\n    this.il = Boolean(il);\n    this.tzid = tzid;\n    this.name = cityName;\n    this.cc = countryCode;\n    this.geoid = geoid;\n  }\n\n  /** @return {number} */\n  getLatitude() {\n    return this.latitude;\n  }\n\n  /** @return {number} */\n  getLongitude() {\n    return this.longitude;\n  }\n\n  /** @return {boolean} */\n  getIsrael() {\n    return this.il;\n  }\n\n  /** @return {string} */\n  getName() {\n    return this.name;\n  }\n\n  /**\n   * Returns the location name, up to the first comma\n   * @return {string}\n   */\n  getShortName() {\n    const name = this.name;\n    if (!name) return name;\n    const comma = name.indexOf(', ');\n    if (comma === -1) return name;\n    if (this.cc === 'US' && name[comma + 2] === 'D') {\n      if (name[comma + 3] === 'C') {\n        return name.substring(0, comma + 4);\n      } else if (name[comma + 3] === '.' && name[comma + 4] === 'C') {\n        return name.substring(0, comma + 6);\n      }\n    }\n    return name.substring(0, comma);\n  }\n\n  /** @return {string} */\n  getCountryCode() {\n    return this.cc;\n  }\n\n  /** @return {string} */\n  getTzid() {\n    return this.tzid;\n  }\n\n  /**\n   * Gets a 24-hour time formatter (e.g. 07:41 or 20:03) for this location\n   * @return {Intl.DateTimeFormat}\n   */\n  getTimeFormatter() {\n    return getFormatter(this.tzid);\n  }\n\n  /** @return {string} */\n  getGeoId() {\n    return this.geoid;\n  }\n\n  /**\n   * Creates a location object from one of 60 \"classic\" Hebcal city names.\n   * The following city names are supported:\n   * 'Ashdod', 'Atlanta', 'Austin', 'Baghdad', 'Beer Sheva',\n   * 'Berlin', 'Baltimore', 'Bogota', 'Boston', 'Budapest',\n   * 'Buenos Aires', 'Buffalo', 'Chicago', 'Cincinnati', 'Cleveland',\n   * 'Dallas', 'Denver', 'Detroit', 'Eilat', 'Gibraltar', 'Haifa',\n   * 'Hawaii', 'Helsinki', 'Houston', 'Jerusalem', 'Johannesburg',\n   * 'Kiev', 'La Paz', 'Livingston', 'Las Vegas', 'London', 'Los Angeles',\n   * 'Marseilles', 'Miami', 'Minneapolis', 'Melbourne', 'Mexico City',\n   * 'Montreal', 'Moscow', 'New York', 'Omaha', 'Ottawa', 'Panama City',\n   * 'Paris', 'Pawtucket', 'Petach Tikvah', 'Philadelphia', 'Phoenix',\n   * 'Pittsburgh', 'Providence', 'Portland', 'Saint Louis', 'Saint Petersburg',\n   * 'San Diego', 'San Francisco', 'Sao Paulo', 'Seattle', 'Sydney',\n   * 'Tel Aviv', 'Tiberias', 'Toronto', 'Vancouver', 'White Plains',\n   * 'Washington DC', 'Worcester'\n   * @param {string} name\n   * @return {Location}\n   */\n  static lookup(name) {\n    return classicCities[name.toLowerCase()];\n  }\n\n  /**\n   * @deprecated\n   * @param {Date|HDate} hdate\n   * @return {Date}\n   */\n  sunset(hdate) {\n    return new Zmanim(hdate, this.getLatitude(), this.getLongitude()).sunset();\n  }\n\n  /**\n   * @deprecated\n   * @param {Date|HDate} hdate\n   * @param {number} [angle]\n   * @return {Date}\n   */\n  tzeit(hdate, angle) {\n    return new Zmanim(hdate, this.getLatitude(), this.getLongitude()).tzeit(angle);\n  }\n\n  /** @return {string} */\n  toString() {\n    return JSON.stringify(this);\n  }\n\n  /**\n   * Converts legacy Hebcal timezone to a standard Olson tzid.\n   * @param {number} tz integer, GMT offset in hours\n   * @param {string} dst 'none', 'eu', 'usa', or 'israel'\n   * @return {string}\n   */\n  static legacyTzToTzid(tz, dst) {\n    tz = +tz;\n    if (dst == 'none') {\n      if (tz == 0) {\n        return 'UTC';\n      } else {\n        const plus = tz > 0 ? '+' : '';\n        return `Etc/GMT${plus}${tz}`;\n      }\n    } else if (tz == 2 && dst == 'israel') {\n      return 'Asia/Jerusalem';\n    } else if (dst == 'eu') {\n      switch (tz) {\n        case -2:\n          return 'Atlantic/Cape_Verde';\n        case -1:\n          return 'Atlantic/Azores';\n        case 0:\n          return 'Europe/London';\n        case 1:\n          return 'Europe/Paris';\n        case 2:\n          return 'Europe/Athens';\n      }\n    } else if (dst == 'usa') {\n      return ZIPCODES_TZ_MAP[String(tz * -1)];\n    }\n    return undefined;\n  }\n\n  /**\n   * Converts timezone info from Zip-Codes.com to a standard Olson tzid.\n   * @example\n   * Location.getUsaTzid('AZ', 7, 'Y') // 'America/Denver'\n   * @param {string} state two-letter all-caps US state abbreviation like 'CA'\n   * @param {number} tz positive number, 5=America/New_York, 8=America/Los_Angeles\n   * @param {string} dst single char 'Y' or 'N'\n   * @return {string}\n   */\n  static getUsaTzid(state, tz, dst) {\n    if (tz == 10 && state == 'AK') {\n      return 'America/Adak';\n    } else if (tz == 7 && state == 'AZ') {\n      return dst == 'Y' ? 'America/Denver' : 'America/Phoenix';\n    } else {\n      return ZIPCODES_TZ_MAP[tz];\n    }\n  }\n\n  /**\n   * Builds a city description from geonameid string components\n   * @deprecated\n   * @param {string} cityName e.g. 'Tel Aviv' or 'Chicago'\n   * @param {string} admin1 e.g. 'England' or 'Massachusetts'\n   * @param {string} countryName full country name, e.g. 'Israel' or 'United States'\n   * @return {string}\n   */\n  static geonameCityDescr(cityName, admin1, countryName) {\n    if (countryName == 'United States') countryName = 'USA';\n    if (countryName == 'United Kingdom') countryName = 'UK';\n    let cityDescr = cityName;\n    if (countryName != 'Israel' && admin1 && admin1.indexOf(cityName) != 0) {\n      cityDescr += ', ' + admin1;\n    }\n    if (countryName) {\n      cityDescr += ', ' + countryName;\n    }\n    return cityDescr;\n  }\n\n  /**\n   * Adds a location name for `Location.lookup()` only if the name isn't\n   * already being used. Returns `false` if the name is already taken\n   * and `true` if successfully added.\n   * @param {string} cityName\n   * @param {Location} location\n   * @return {boolean}\n   */\n  static addLocation(cityName, location) {\n    const name = cityName.toLowerCase();\n    if (classicCities[name]) {\n      return false;\n    }\n    classicCities[name] = location;\n    return true;\n  }\n}\nclassicCities0.forEach(city => {\n  const location = new Location(city[2], city[3], city[1] == 'IL', city[4], city[0], city[1]);\n  Location.addLocation(location.getName(), location);\n});\n\n/* eslint-disable max-len */\nconst days = {\n  FRI: 5,\n  SAT: 6\n};\n\n/**\n * @private\n * @constant\n * This method returns the tzais (nightfall) based on the opinion of the\n * Geonim calculated as 30 minutes after sunset during the equinox\n * (on March 16, about 4 days before the astronomical equinox, the day that\n * a solar hour is 60 minutes) in Yerushalayim.\n * @see {https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#getTzaisGeonim7Point083Degrees()}\n */\nconst TZEIT_3MEDIUM_STARS = 7.083;\n\n/**\n * @private\n * @param {Event} e\n * @param {HDate} hd\n * @param {number} dow\n * @param {Location} location\n * @param {CalOptions} options\n * @return {Event}\n */\nfunction makeCandleEvent(e, hd, dow, location, options) {\n  let havdalahTitle = false;\n  let useHavdalahOffset = dow == days.SAT;\n  let mask = e ? e.getFlags() : flags.LIGHT_CANDLES;\n  if (typeof e !== 'undefined') {\n    // if linked event && dow == FRI, use Candle lighting time & title\n    if (dow != days.FRI) {\n      if (mask & (flags.LIGHT_CANDLES_TZEIS | flags.CHANUKAH_CANDLES)) {\n        useHavdalahOffset = true;\n      } else if (mask & flags.YOM_TOV_ENDS) {\n        havdalahTitle = true;\n        useHavdalahOffset = true;\n      }\n    }\n  } else if (dow == days.SAT) {\n    havdalahTitle = true;\n    mask = flags.LIGHT_CANDLES_TZEIS;\n  }\n  // if offset is 0 or undefined, we'll use tzeit time\n  const offset = useHavdalahOffset ? options.havdalahMins : options.candleLightingMins;\n  const zmanim = new Zmanim(hd, location.getLatitude(), location.getLongitude());\n  const time = offset ? zmanim.sunsetOffset(offset, true) : zmanim.tzeit(options.havdalahDeg);\n  if (isNaN(time.getTime())) {\n    return null; // no sunset\n  }\n\n  if (havdalahTitle) {\n    return new HavdalahEvent(hd, mask, time, location, options.havdalahMins, e);\n  } else {\n    return new CandleLightingEvent(hd, mask, time, location, e);\n  }\n}\n\n/** An event that has an `eventTime` and `eventTimeStr` */\nclass TimedEvent extends Event {\n  /**\n   * @param {HDate} date\n   * @param {string} desc Description (not translated)\n   * @param {number} mask\n   * @param {Date} eventTime\n   * @param {Location} location\n   * @param {Event} linkedEvent\n   */\n  constructor(date, desc, mask, eventTime, location, linkedEvent) {\n    super(date, desc, mask);\n    this.eventTime = Zmanim.roundTime(eventTime);\n    this.location = location;\n    const timeFormat = location.getTimeFormatter();\n    this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n    if (typeof linkedEvent !== 'undefined') {\n      this.linkedEvent = linkedEvent;\n    }\n  }\n  /**\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    return Locale.gettext(this.getDesc(), locale) + ': ' + this.eventTimeStr;\n  }\n  /**\n   * Returns translation of \"Candle lighting\" without the time.\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  renderBrief(locale) {\n    return Locale.gettext(this.getDesc(), locale);\n  }\n}\n\n/** Havdalah after Shabbat or holiday */\nclass HavdalahEvent extends TimedEvent {\n  /**\n   * @param {HDate} date\n   * @param {number} mask\n   * @param {Date} eventTime\n   * @param {Location} location\n   * @param {number} havdalahMins\n   * @param {Event} linkedEvent\n   */\n  constructor(date, mask, eventTime, location, havdalahMins, linkedEvent) {\n    super(date, 'Havdalah', mask, eventTime, location, linkedEvent);\n    if (havdalahMins) {\n      this.havdalahMins = havdalahMins;\n    }\n  }\n  /**\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    return this.renderBrief(locale) + ': ' + this.eventTimeStr;\n  }\n  /**\n   * Returns translation of \"Havdalah\" without the time.\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  renderBrief(locale) {\n    let str = Locale.gettext(this.getDesc(), locale);\n    if (this.havdalahMins) {\n      const min = Locale.gettext('min', locale);\n      str += ` (${this.havdalahMins} ${min})`;\n    }\n    return str;\n  }\n  /** @return {string} */\n  getEmoji() {\n    return '✨';\n  }\n}\n\n/** Candle lighting before Shabbat or holiday */\nclass CandleLightingEvent extends TimedEvent {\n  /**\n   * @param {HDate} date\n   * @param {number} mask\n   * @param {Date} eventTime\n   * @param {Location} location\n   * @param {Event} linkedEvent\n   */\n  constructor(date, mask, eventTime, location, linkedEvent) {\n    super(date, 'Candle lighting', mask, eventTime, location, linkedEvent);\n  }\n  /** @return {string} */\n  getEmoji() {\n    return '🕯️';\n  }\n}\n\n/**\n * Makes a pair of events representing fast start and end times\n * @private\n * @param {Event} ev\n * @param {Location} location\n * @return {Event}\n */\nfunction makeFastStartEnd(ev, location) {\n  const desc = ev.getDesc();\n  if (desc === 'Yom Kippur') {\n    return ev;\n  }\n  ev = ev.clone();\n  const hd = ev.getDate();\n  const dt = hd.greg();\n  const zmanim = new Zmanim(dt, location.getLatitude(), location.getLongitude());\n  if (desc === 'Erev Tish\\'a B\\'Av') {\n    const sunset = zmanim.sunset();\n    ev.startEvent = makeTimedEvent(hd, sunset, 'Fast begins', ev, location);\n  } else if (desc.substring(0, 11) === 'Tish\\'a B\\'Av') {\n    ev.endEvent = makeTimedEvent(hd, zmanim.tzeit(TZEIT_3MEDIUM_STARS), 'Fast ends', ev, location);\n  } else {\n    const dawn = zmanim.alotHaShachar();\n    ev.startEvent = makeTimedEvent(hd, dawn, 'Fast begins', ev, location);\n    if (dt.getDay() !== 5 && !(hd.getDate() === 14 && hd.getMonth() === months.NISAN)) {\n      ev.endEvent = makeTimedEvent(hd, zmanim.tzeit(TZEIT_3MEDIUM_STARS), 'Fast ends', ev, location);\n    }\n  }\n  return ev;\n}\n\n/**\n * @private\n * @param {HDate} hd\n * @param {Date} time\n * @param {string} desc\n * @param {Event} ev\n * @param {Location} location\n * @return {TimedEvent}\n */\nfunction makeTimedEvent(hd, time, desc, ev, location) {\n  if (isNaN(time.getTime())) {\n    return null;\n  }\n  return new TimedEvent(hd, desc, ev.getFlags(), time, location, ev);\n}\n\n/**\n * Makes a candle-lighting event for Chankah (not on Friday/Saturday)\n * @private\n * @param {Event} ev\n * @param {HDate} hd\n * @param {Location} location\n * @return {TimedEvent}\n */\nfunction makeWeekdayChanukahCandleLighting(ev, hd, location) {\n  const zmanim = new Zmanim(hd.greg(), location.getLatitude(), location.getLongitude());\n  const candleLightingTime = zmanim.dusk();\n  // const candleLightingTime = zmanim.tzeit(4.6667);\n  return makeTimedEvent(hd, candleLightingTime, ev.getDesc(), ev, location);\n}\n\n/* eslint-disable camelcase */\nconst shortDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n/**\n * Represents a molad, the moment when the new moon is \"born\"\n */\nclass Molad {\n  /**\n   * Calculates the molad for a Hebrew month\n   * @param {number} year\n   * @param {number} month\n   */\n  constructor(year, month) {\n    let m_adj = month - 7;\n    if (m_adj < 0) {\n      m_adj += HDate.monthsInYear(year);\n    }\n    const m_elapsed = 235 * Math.floor((year - 1) / 19) +\n    // Months in complete 19 year lunar (Metonic) cycles so far\n    12 * ((year - 1) % 19) +\n    // Regular months in this cycle\n    Math.floor((7 * ((year - 1) % 19) + 1) / 19) +\n    // Leap months this cycle\n    m_adj; // add elapsed months till the start of the molad of the month\n\n    const p_elapsed = 204 + Math.floor(793 * (m_elapsed % 1080));\n    const h_elapsed = 5 + 12 * m_elapsed + 793 * Math.floor(m_elapsed / 1080) + Math.floor(p_elapsed / 1080) - 6;\n    const parts = p_elapsed % 1080 + 1080 * (h_elapsed % 24);\n    const chalakim = parts % 1080;\n    const day = 1 + 29 * m_elapsed + Math.floor(h_elapsed / 24);\n    const dow = day % 7;\n    this.year = year;\n    this.month = month;\n    this.dow = dow;\n    this.hour = h_elapsed % 24;\n    this.minutes = Math.floor(chalakim / 18);\n    this.chalakim = chalakim % 18;\n  }\n  /**\n   * @return {number}\n   */\n  getYear() {\n    return this.year;\n  }\n  /**\n   * @return {number}\n   */\n  getMonth() {\n    return this.month;\n  }\n  /**\n   * @return {string}\n   */\n  getMonthName() {\n    return HDate.getMonthName(this.month, this.year);\n  }\n  /**\n   * @return {number} Day of Week (0=Sunday, 6=Saturday)\n   */\n  getDow() {\n    return this.dow;\n  }\n  /**\n   * @return {number} hour of day (0-23)\n   */\n  getHour() {\n    return this.hour;\n  }\n  /**\n   * @return {number} minutes past hour (0-59)\n   */\n  getMinutes() {\n    return this.minutes;\n  }\n  /**\n   * @return {number} parts of a minute (0-17)\n   */\n  getChalakim() {\n    return this.chalakim;\n  }\n}\n\n/** Represents a Molad announcement on Shabbat Mevarchim */\nclass MoladEvent extends Event {\n  /**\n   * @param {HDate} date Hebrew date event occurs\n   * @param {number} hyear molad year\n   * @param {number} hmonth molad month\n   */\n  constructor(date, hyear, hmonth) {\n    const m = new Molad(hyear, hmonth);\n    const monthName = m.getMonthName();\n    super(date, `Molad ${monthName} ${hyear}`, flags.MOLAD);\n    this.molad = m;\n  }\n  /**\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    const m = this.molad;\n    const monthName = m.getMonthName();\n    const dow = shortDayNames[m.getDow()];\n    const minutes = m.getMinutes();\n    const hour = m.getHour();\n    const chalakim = m.getChalakim();\n    return `Molad ${monthName}: ${dow}, ${minutes} minutes and ${chalakim} chalakim after ${hour}:00`;\n  }\n}\n\nconst sefirot = [null, 'Lovingkindness', 'Might', 'Beauty', 'Eternity', 'Splendor', 'Foundation', 'Majesty'];\nconst sefirotTranslit = [null, 'Chesed', 'Gevurah', 'Tiferet', 'Netzach', 'Hod', 'Yesod', 'Malkhut'];\n\n/** Represents a day 1-49 of counting the Omer from Pesach to Shavuot */\nclass OmerEvent extends Event {\n  /**\n   * @param {HDate} date\n   * @param {number} omerDay\n   */\n  constructor(date, omerDay) {\n    super(date, `Omer ${omerDay}`, flags.OMER_COUNT);\n    if (omerDay < 1 || omerDay > 49) {\n      throw new RangeError(`Invalid Omer day ${omerDay}`);\n    }\n    this.weekNumber = Math.floor((omerDay - 1) / 7) + 1;\n    this.daysWithinWeeks = omerDay % 7 || 7;\n    this.omer = omerDay;\n  }\n  /**\n   * @param {string} lang\n   * @return {string}\n   */\n  sefira(lang = 'en') {\n    const week = sefirot[this.weekNumber];\n    const dayWithinWeek = sefirot[this.daysWithinWeeks];\n    switch (lang) {\n      case 'he':\n        const heWeek = Locale.gettext(week, 'he');\n        const heDayWithinWeek = Locale.gettext(dayWithinWeek, 'he');\n        const hePrefix = this.weekNumber === 2 || this.weekNumber === 6 ? 'שֶׁבִּ' : 'שֶׁבְּ';\n        return `${heDayWithinWeek} ${hePrefix}${heWeek}`.normalize();\n      case 'translit':\n        const translitWeek = sefirotTranslit[this.weekNumber];\n        const translitDayWithinWeek = sefirotTranslit[this.daysWithinWeeks];\n        const translitPrefix = this.weekNumber === 2 || this.weekNumber === 6 ? 'shebi' : `sheb'`;\n        return `${translitDayWithinWeek} ${translitPrefix}${translitWeek}`;\n      case 'en':\n      default:\n        return `${dayWithinWeek} within ${week}`;\n    }\n  }\n  /**\n   * @todo use gettext()\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    locale = locale || Locale.getLocaleName();\n    const omer = this.omer;\n    const nth = locale == 'he' ? gematriya(omer) : Locale.ordinal(omer, locale);\n    return nth + ' ' + Locale.gettext('day of the Omer', locale);\n  }\n  /**\n   * Returns translation of \"Omer day 22\" without ordinal numbers.\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  renderBrief(locale) {\n    return Locale.gettext('Omer', locale) + ' ' + Locale.gettext('day', locale) + ' ' + this.omer;\n  }\n  /** @return {string} */\n  getEmoji() {\n    if (typeof this.emoji === 'string') return this.emoji;\n    const number = this.omer;\n    if (number <= 20) {\n      return String.fromCodePoint(9312 + number - 1);\n    } else if (number <= 35) {\n      // between 21 and 35 inclusive\n      return String.fromCodePoint(12881 + number - 21);\n    } else {\n      // between 36 and 49 inclusive\n      return String.fromCodePoint(12977 + number - 36);\n    }\n  }\n  /** @return {number} */\n  getWeeks() {\n    const day7 = this.daysWithinWeeks === 7;\n    return day7 ? this.weekNumber : this.weekNumber - 1;\n  }\n  /** @return {number} */\n  getDaysWithinWeeks() {\n    return this.daysWithinWeeks;\n  }\n  /**\n   * @param {string} locale\n   * @return {string}\n   */\n  getTodayIs(locale) {\n    locale = locale || Locale.getLocaleName();\n    if (typeof locale === 'string') {\n      locale = locale.toLowerCase();\n    }\n    if (locale === 'he') {\n      return getTodayIsHe(this.omer);\n    } else if (locale === 'he-x-nonikud') {\n      return Locale.hebrewStripNikkud(getTodayIsHe(this.omer));\n    }\n    const totalDaysStr = this.omer === 1 ? 'day' : 'days';\n    let str = `Today is ${this.omer} ${totalDaysStr}`;\n    if (this.weekNumber > 1 || this.omer === 7) {\n      const day7 = this.daysWithinWeeks === 7;\n      const numWeeks = day7 ? this.weekNumber : this.weekNumber - 1;\n      const weeksStr = numWeeks === 1 ? 'week' : 'weeks';\n      str += `, which is ${numWeeks} ${weeksStr}`;\n      if (!day7) {\n        const daysStr = this.daysWithinWeeks === 1 ? 'day' : 'days';\n        str += ` and ${this.daysWithinWeeks} ${daysStr}`;\n      }\n    }\n    return str + ' of the Omer';\n  }\n  /** @return {string} */\n  url() {\n    return `https://www.hebcal.com/omer/${this.getDate().getFullYear()}/${this.omer}`;\n  }\n}\n\n// adapted from pip hdate package (GPL)\n// https://github.com/py-libhdate/py-libhdate/blob/master/hdate/date.py\n\nconst tens = ['', 'עֲשָׂרָה', 'עֶשְׂרִים', 'שְׁלוֹשִׁים', 'אַרְבָּעִים'];\nconst ones = ['', 'אֶחָד', 'שְׁנַיִם', 'שְׁלוֹשָׁה', 'אַרְבָּעָה', 'חֲמִשָׁה', 'שִׁשָׁה', 'שִׁבְעָה', 'שְׁמוֹנָה', 'תִּשְׁעָה'];\nconst shnei = 'שְׁנֵי';\nconst yamim = 'יָמִים';\nconst shneiYamim = shnei + ' ' + yamim;\nconst shavuot = 'שָׁבוּעוֹת';\nconst yom = 'יוֹם';\nconst yomEchad = yom + ' ' + ones[1];\n\n/**\n * @private\n * @param {number} omer\n * @return {string}\n */\nfunction getTodayIsHe(omer) {\n  const ten = Math.floor(omer / 10);\n  const one = omer % 10;\n  let str = 'הַיוֹם ';\n  if (10 < omer && omer < 20) {\n    str += ones[one] + ' עָשָׂר';\n  } else if (omer > 9) {\n    str += ones[one];\n    if (one) {\n      str += ' וְ';\n    }\n  }\n  if (omer > 2) {\n    if (omer > 20 || omer === 10 || omer === 20) {\n      str += tens[ten];\n    }\n    if (omer < 11) {\n      str += ones[one] + ' ' + yamim + ' ';\n    } else {\n      str += ' ' + yom + ' ';\n    }\n  } else if (omer === 1) {\n    str += yomEchad + ' ';\n  } else {\n    // omer == 2\n    str += shneiYamim + ' ';\n  }\n  if (omer > 6) {\n    str = str.trim(); // remove trailing space before comma\n    str += ', שְׁהֵם ';\n    const weeks = Math.floor(omer / 7);\n    const days = omer % 7;\n    if (weeks > 2) {\n      str += ones[weeks] + ' ' + shavuot + ' ';\n    } else if (weeks == 1) {\n      str += 'שָׁבוּעַ' + ' ' + ones[1] + ' ';\n    } else {\n      // weeks == 2\n      str += shnei + ' ' + shavuot + ' ';\n    }\n    if (days) {\n      str += 'וְ';\n      if (days > 2) {\n        str += ones[days] + ' ' + yamim + ' ';\n      } else if (days == 1) {\n        str += yomEchad + ' ';\n      } else {\n        // days == 2\n        str += shneiYamim + ' ';\n      }\n    }\n  }\n  str += 'לָעוֹמֶר';\n  return str.normalize();\n}\n\n/* eslint-disable no-multi-spaces */\nconst osdate = new Date(1923, 8, 11);\nconst osday = greg2abs(osdate);\nconst nsday = greg2abs(new Date(1975, 5, 24));\nconst shas0 = [['Berachot', 64], ['Shabbat', 157], ['Eruvin', 105], ['Pesachim', 121], ['Shekalim', 22], ['Yoma', 88], ['Sukkah', 56], ['Beitzah', 40], ['Rosh Hashana', 35], ['Taanit', 31], ['Megillah', 32], ['Moed Katan', 29], ['Chagigah', 27], ['Yevamot', 122], ['Ketubot', 112], ['Nedarim', 91], ['Nazir', 66], ['Sotah', 49], ['Gitin', 90], ['Kiddushin', 82], ['Baba Kamma', 119], ['Baba Metzia', 119], ['Baba Batra', 176], ['Sanhedrin', 113], ['Makkot', 24], ['Shevuot', 49], ['Avodah Zarah', 76], ['Horayot', 14], ['Zevachim', 120], ['Menachot', 110], ['Chullin', 142], ['Bechorot', 61], ['Arachin', 34], ['Temurah', 34], ['Keritot', 28], ['Meilah', 22], ['Kinnim', 4], ['Tamid', 9], ['Midot', 5], ['Niddah', 73]].map(m => {\n  return {\n    name: m[0],\n    blatt: m[1]\n  };\n});\n\n/**\n * Returns the Daf Yomi for given date\n */\nclass DafYomi {\n  /**\n   * Initializes a daf yomi instance\n   * @param {Date|HDate|number} date Gregorian or Hebrew date\n   */\n  constructor(date) {\n    const cday = typeof date === 'number' && !isNaN(date) ? date : isDate(date) ? greg2abs(date) : HDate.isHDate(date) ? date.abs() : throwTypeError(`non-date given to dafyomi: ${date}`);\n    if (cday < osday) {\n      throw new RangeError(`Date ${date} too early; Daf Yomi cycle began on ${osdate}`);\n    }\n    let cno;\n    let dno;\n    if (cday >= nsday) {\n      // \"new\" cycle\n      cno = 8 + Math.floor((cday - nsday) / 2711);\n      dno = (cday - nsday) % 2711;\n    } else {\n      // old cycle\n      cno = 1 + Math.floor((cday - osday) / 2702);\n      dno = (cday - osday) % 2702;\n    }\n\n    // Find the daf taking note that the cycle changed slightly after cycle 7.\n\n    let total = 0;\n    let blatt = 0;\n    let count = -1;\n\n    // Fix Shekalim for old cycles\n    const shortShekalim = cno <= 7;\n    const shas = shortShekalim ? shas0.slice() : shas0;\n    if (shortShekalim) {\n      shas[4] = {\n        name: 'Shekalim',\n        blatt: 13\n      };\n    }\n\n    // Find the daf\n    let j = 0;\n    const dafcnt = 40;\n    while (j < dafcnt) {\n      count++;\n      total = total + shas[j].blatt - 1;\n      if (dno < total) {\n        blatt = shas[j].blatt + 1 - (total - dno);\n        // fiddle with the weird ones near the end\n        switch (count) {\n          case 36:\n            blatt = blatt + 21;\n            break;\n          case 37:\n            blatt = blatt + 24;\n            break;\n          case 38:\n            blatt = blatt + 32;\n            break;\n        }\n        // Bailout\n        j = 1 + dafcnt;\n      }\n      j++;\n    }\n    this.name = shas[count].name;\n    this.blatt = blatt;\n  }\n  /**\n   * @return {number}\n   */\n  getBlatt() {\n    return this.blatt;\n  }\n  /**\n   * @return {string}\n   */\n  getName() {\n    return this.name;\n  }\n  /**\n   * Formats (with translation) the dafyomi result as a string like \"Pesachim 34\"\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    locale = locale || Locale.getLocaleName();\n    if (typeof locale === 'string') {\n      locale = locale.toLowerCase();\n    }\n    if (locale === 'he' || locale === 'he-x-nonikud') {\n      return Locale.gettext(this.name, locale) + ' דף ' + gematriya(this.blatt);\n    }\n    return Locale.gettext(this.name, locale) + ' ' + this.blatt;\n  }\n}\nconst dafYomiSefaria = {\n  'Berachot': 'Berakhot',\n  'Rosh Hashana': 'Rosh Hashanah',\n  'Gitin': 'Gittin',\n  'Baba Kamma': 'Bava Kamma',\n  'Baba Metzia': 'Bava Metzia',\n  'Baba Batra': 'Bava Batra',\n  'Bechorot': 'Bekhorot',\n  'Arachin': 'Arakhin',\n  'Midot': 'Middot',\n  'Shekalim': 'Jerusalem_Talmud_Shekalim'\n};\n\n/**\n * Event wrapper around a DafYomi instance\n */\nclass DafYomiEvent extends Event {\n  /**\n   * @param {HDate} date\n   */\n  constructor(date) {\n    const daf = new DafYomi(date.greg());\n    super(date, daf.render('en'), flags.DAF_YOMI);\n    this.daf = daf;\n  }\n  /**\n   * Returns Daf Yomi name including the 'Daf Yomi: ' prefix (e.g. \"Daf Yomi: Pesachim 107\").\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    return Locale.gettext('Daf Yomi', locale) + ': ' + this.daf.render(locale);\n  }\n  /**\n   * Returns Daf Yomi name without the 'Daf Yomi: ' prefix (e.g. \"Pesachim 107\").\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  renderBrief(locale) {\n    return this.daf.render(locale);\n  }\n  /**\n   * Returns a link to sefaria.org or dafyomi.org\n   * @return {string}\n   */\n  url() {\n    const daf = this.daf;\n    const tractate = daf.getName();\n    const blatt = daf.getBlatt();\n    if (tractate == 'Kinnim' || tractate == 'Midot') {\n      return `https://www.dafyomi.org/index.php?masechta=meilah&daf=${blatt}a`;\n    } else {\n      const name0 = dafYomiSefaria[tractate] || tractate;\n      const name = name0.replace(/ /g, '_');\n      return `https://www.sefaria.org/${name}.${blatt}a?lang=bi`;\n    }\n  }\n}\n\n/* eslint-disable new-cap */\nconst INCOMPLETE = 0;\nconst REGULAR = 1;\nconst COMPLETE = 2;\n\n// eslint-disable-next-line require-jsdoc\nfunction throwError(errorMessage) {\n  throw new TypeError(errorMessage);\n}\n\n/**\n * Result of Sedra.lookup\n * @typedef {Object} SedraResult\n * @property {string[]} parsha Name of the parsha (or parshiyot) read on\n *     Hebrew date, e.g. `['Noach']` or `['Matot', 'Masei']`\n * @property {boolean} chag True if this is a regular parasha HaShavua\n *     Torah reading, false if it's a special holiday reading\n * @property {number|number[]} num the parsha number (or numbers) using 1-indexing.\n *     A `number` for a regular (single) parsha, and a `number[]` for a doubled parsha.\n *     For Parashat *Bereshit*, `num` would be equal to `1`, and for\n *     *Matot-Masei* it would be `[42, 43]`\n */\n\n/**\n * Represents Parashah HaShavua for an entire Hebrew year\n */\nclass Sedra {\n  /**\n   * Caculates the Parashah HaShavua for an entire Hebrew year\n   * @param {number} hebYr - Hebrew year (e.g. 5749)\n   * @param {boolean} il - Use Israel sedra schedule (false for Diaspora)\n   */\n  constructor(hebYr, il) {\n    // the Hebrew year\n    hebYr = +hebYr;\n    const longC = HDate.longCheshvan(hebYr);\n    const shortK = HDate.shortKislev(hebYr);\n    const type = this.type = longC && !shortK ? COMPLETE : !longC && shortK ? INCOMPLETE : REGULAR;\n    this.year = hebYr;\n    const rh0 = new HDate(1, months.TISHREI, hebYr);\n    const rh = rh0.abs();\n    const rhDay = this.roshHashanaDay = rh0.getDay() + 1;\n\n    // find the first Saturday on or after Rosh Hashana\n    this.firstSaturday = HDate.dayOnOrBefore(6, rh + 6);\n    const leap = this.leap = +HDate.isLeapYear(hebYr);\n    this.il = Boolean(il);\n    const key = `${leap}${rhDay}${type}`;\n    if (types[key]) {\n      this.key = key;\n      this.theSedraArray = types[key];\n    } else {\n      const key2 = this.key = key + +this.il; // cast to num, then concat\n      this.theSedraArray = types[key2];\n    }\n    if (!this.theSedraArray) {\n      throw new Error(`improper sedra year type ${this.key} calculated for ${hebYr}`);\n    }\n  }\n\n  /**\n   * Returns the parsha (or parshiyot) read on Hebrew date\n   * @param {HDate|number} hDate Hebrew date or R.D. days\n   * @return {string[]}\n   */\n  get(hDate) {\n    return this.lookup(hDate).parsha;\n  }\n\n  /**\n   * Looks up parsha for the date, then returns a translated or transliterated string\n   * @param {HDate|number} hDate Hebrew date or R.D. days\n   * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale\n   * @return {string}\n   */\n  getString(hDate, locale) {\n    const parsha = this.get(hDate);\n    const locale0 = locale || Locale.getLocaleName();\n    let name = Locale.gettext(parsha[0], locale0);\n    if (parsha.length == 2) {\n      const hyphen = locale0 == 'he' ? '־' : '-';\n      name += hyphen + Locale.gettext(parsha[1], locale0);\n    }\n    return Locale.gettext('Parashat', locale0) + ' ' + name;\n  }\n\n  /**\n   * Checks to see if this day would be a regular parasha HaShavua\n   * Torah reading or special holiday reading\n   * @param {HDate|number} hDate Hebrew date or R.D. days\n   * @return {boolean}\n   */\n  isParsha(hDate) {\n    return !this.lookup(hDate).chag;\n  }\n\n  /**\n   * Returns the date that a parsha occurs\n   * @param {number|string|string[]} parsha\n   * @return {HDate}\n   */\n  find(parsha) {\n    if (typeof parsha === 'number') {\n      if (parsha > 53 || parsha < 0 && !isValidDouble(parsha)) {\n        throw new RangeError(`Invalid parsha number: ${parsha}`);\n      }\n      const idx = this.theSedraArray.indexOf(parsha);\n      if (idx === -1) {\n        return null; // doesn't occur this year\n      }\n\n      return new HDate(this.firstSaturday + idx * 7);\n    } else if (typeof parsha === 'string') {\n      const num = parsha2id[parsha];\n      if (typeof num === 'number') {\n        return this.find(num);\n      } else if (parsha.indexOf('-') !== -1) {\n        return this.find(parsha.split('-'));\n      } else {\n        // try to find Saturday holiday like 'Yom Kippur'\n        const idx = this.theSedraArray.indexOf(parsha);\n        if (idx === -1) {\n          return null; // doesn't occur this year\n        }\n\n        return new HDate(this.firstSaturday + idx * 7);\n      }\n    } else if (Array.isArray(parsha) && parsha.length === 1 && typeof parsha[0] === 'string') {\n      return this.find(parsha[0]);\n    } else if (Array.isArray(parsha) && parsha.length === 2 && typeof parsha[0] === 'string' && typeof parsha[1] === 'string') {\n      const p1 = parsha[0];\n      const p2 = parsha[1];\n      const num1 = parsha2id[p1];\n      const num2 = parsha2id[p2];\n      if (num2 === num1 + 1) {\n        return this.find(-num1);\n      } else {\n        throw new RangeError(`Unrecognized parsha name: ${p1}-${p2}`);\n      }\n    } else {\n      throw new TypeError(`Invalid parsha argument: ${parsha}`);\n    }\n  }\n\n  /**\n   * @private\n   * @return {Object[]}\n   */\n  getSedraArray() {\n    return this.theSedraArray;\n  }\n\n  /**\n   * R.D. date of the first Saturday on or after Rosh Hashana\n   * @return {number}\n   */\n  getFirstSaturday() {\n    return this.firstSaturday;\n  }\n\n  /** @return {number} */\n  getYear() {\n    return this.year;\n  }\n\n  /**\n   * Returns an object describing the parsha on the first Saturday on or after absdate\n   * @param {HDate|number} hDate Hebrew date or R.D. days\n   * @return {SedraResult}\n   */\n  lookup(hDate) {\n    const absDate = typeof hDate === 'number' ? hDate : HDate.isHDate(hDate) ? hDate.abs() : throwError(`Bad date argument: ${hDate}`);\n\n    // find the first saturday on or after today's date\n    const saturday = HDate.dayOnOrBefore(6, absDate + 6);\n    const weekNum = (saturday - this.firstSaturday) / 7;\n    const index = this.theSedraArray[weekNum];\n    if (typeof index === 'undefined') {\n      const sedra = new Sedra(this.year + 1, this.il);\n      return sedra.lookup(saturday); // must be next year\n    }\n\n    if (typeof index === 'string') {\n      // Shabbat has a chag. Return a description\n      return {\n        parsha: [index],\n        chag: true\n      };\n    }\n    if (index >= 0) {\n      return {\n        parsha: [parshiot[index]],\n        chag: false,\n        num: index + 1\n      };\n    }\n    const p1 = D(index); // undouble the parsha\n    return {\n      parsha: [parshiot[p1], parshiot[p1 + 1]],\n      chag: false,\n      num: [p1 + 1, p1 + 2]\n    };\n  }\n}\n\n/**\n * The 54 parshiyot of the Torah as transilterated strings\n * parshiot[0] == 'Bereshit', parshiot[1] == 'Noach', parshiot[53] == \"Ha'Azinu\".\n * @readonly\n * @type {string[]}\n */\nconst parshiot = ['Bereshit', 'Noach', 'Lech-Lecha', 'Vayera', 'Chayei Sara', 'Toldot', 'Vayetzei', 'Vayishlach', 'Vayeshev', 'Miketz', 'Vayigash', 'Vayechi', 'Shemot', 'Vaera', 'Bo', 'Beshalach', 'Yitro', 'Mishpatim', 'Terumah', 'Tetzaveh', 'Ki Tisa', 'Vayakhel', 'Pekudei', 'Vayikra', 'Tzav', 'Shmini', 'Tazria', 'Metzora', 'Achrei Mot', 'Kedoshim', 'Emor', 'Behar', 'Bechukotai', 'Bamidbar', 'Nasso', 'Beha\\'alotcha', 'Sh\\'lach', 'Korach', 'Chukat', 'Balak', 'Pinchas', 'Matot', 'Masei', 'Devarim', 'Vaetchanan', 'Eikev', 'Re\\'eh', 'Shoftim', 'Ki Teitzei', 'Ki Tavo', 'Nitzavim', 'Vayeilech', 'Ha\\'Azinu'];\nconst parsha2id = {};\nfor (let id = 0; id < parshiot.length; id++) {\n  const name = parshiot[id];\n  parsha2id[name] = id;\n}\n\n/**\n * @private\n * @param {number} id\n * @return {boolean}\n */\nfunction isValidDouble(id) {\n  switch (id) {\n    case -21: // Vayakhel-Pekudei\n    case -26: // Tazria-Metzora\n    case -28: // Achrei Mot-Kedoshim\n    case -31: // Behar-Bechukotai\n    case -38: // Chukat-Balak\n    case -41: // Matot-Masei\n    case -50:\n      // Nitzavim-Vayeilech\n      return true;\n  }\n  return false;\n}\n\n/**\n * @private\n * @param {number} p\n * @return {number}\n */\nfunction D(p) {\n  // parsha doubler/undoubler\n  return -p;\n}\nconst RH = 'Rosh Hashana'; // 0\nconst YK = 'Yom Kippur'; // 1\n\nconst SUKKOT = 'Sukkot'; // 0\nconst CHMSUKOT = 'Sukkot Shabbat Chol ha-Moed'; // 0\nconst SHMINI = 'Shmini Atzeret'; // 0\nconst EOY = CHMSUKOT; // always Sukkot day 3, 5 or 6\n\nconst PESACH = 'Pesach'; // 25\nconst PESACH1 = 'Pesach I';\nconst CHMPESACH = 'Pesach Shabbat Chol ha-Moed'; // 25\nconst PESACH7 = 'Pesach VII'; // 25\nconst PESACH8 = 'Pesach VIII';\nconst SHAVUOT = 'Shavuot'; // 33\n\n/**\n * Returns an array from start to end\n * @private\n * @param {number} start beginning number, inclusive\n * @param {number} stop ending number, inclusive\n * @return {number[]}\n */\nfunction range$1(start, stop) {\n  return Array.from({\n    length: stop - start + 1\n  }, (v, k) => k + start);\n}\n\n/**\n * The ordinary year types (keviot)\n * names are leap/nonleap - day - incomplete/regular/complete - diaspora/Israel\n * @private\n * @readonly\n * @type {Object.<string, Object[]>}\n */\nconst types = {\n  /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n     * Kislev each have 29 days), and has Passover start on Tuesday. */\n  // e.g. 5753\n  '020': [51, 52].concat(EOY, range$1(0, 20), D(21), 23, 24, PESACH, 25, D(26), D(28), 30, D(31), range$1(33, 40), D(41), range$1(43, 49), D(50)),\n  /* Hebrew year that starts on Monday, is `complete' (Heshvan and\n     * Kislev each have 30 days), and has Passover start on Thursday. */\n  // e.g. 5756\n  '0220': [51, 52].concat(EOY, range$1(0, 20), D(21), 23, 24, PESACH, 25, D(26), D(28), 30, D(31), 33, SHAVUOT, range$1(34, 37), D(38), 40, D(41), range$1(43, 49), D(50)),\n  /* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n     * days and Kislev has 30 days), and has Passover start on Saturday. */\n  // e.g. 5701\n  '0510': [52].concat(YK, EOY, range$1(0, 20), D(21), 23, 24, PESACH1, PESACH8, 25, D(26), D(28), 30, D(31), range$1(33, 40), D(41), range$1(43, 50)),\n  /* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n     * days and Kislev has 30 days), and has Passover start on Saturday. */\n  // e.g. 5745\n  '0511': [52].concat(YK, EOY, range$1(0, 20), D(21), 23, 24, PESACH, 25, D(26), D(28), range$1(30, 40), D(41), range$1(43, 50)),\n  /* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n     * Kislev each have 30 days), and has Passover start on Sunday. */\n  // e.g. 5754\n  '052': [52].concat(YK, CHMSUKOT, range$1(0, 24), PESACH7, 25, D(26), D(28), 30, D(31), range$1(33, 40), D(41), range$1(43, 50)),\n  /* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and Kislev\n     * each have 29 days), and has Passover start on Sunday. */\n  // e.g. 5761\n  '070': [].concat(RH, 52, SUKKOT, SHMINI, range$1(0, 20), D(21), 23, 24, PESACH7, 25, D(26), D(28), 30, D(31), range$1(33, 40), D(41), range$1(43, 50)),\n  /* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n     * Kislev each have 30 days), and has Passover start on Tuesday. */\n  // e.g. 5716\n  '072': [].concat(RH, 52, SUKKOT, SHMINI, range$1(0, 20), D(21), 23, 24, CHMPESACH, 25, D(26), D(28), 30, D(31), range$1(33, 40), D(41), range$1(43, 49), D(50)),\n  /* --  The leap year types (keviot) -- */\n  /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n     * Kislev each have 29 days), and has Passover start on Thursday. */\n  // e.g. 5746\n  '1200': [51, 52].concat(CHMSUKOT, range$1(0, 27), CHMPESACH, range$1(28, 33), SHAVUOT, range$1(34, 37), D(38), 40, D(41), range$1(43, 49), D(50)),\n  /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n     * Kislev each have 29 days), and has Passover start on Thursday. */\n  // e.g. 5746\n  '1201': [51, 52].concat(CHMSUKOT, range$1(0, 27), CHMPESACH, range$1(28, 40), D(41), range$1(43, 49), D(50)),\n  /* Hebrew year that starts on Monday, is `complete' (Heshvan and\n     * Kislev each have 30 days), and has Passover start on Saturday. */\n  // e.g.5752\n  '1220': [51, 52].concat(CHMSUKOT, range$1(0, 27), PESACH1, PESACH8, range$1(28, 40), D(41), range$1(43, 50)),\n  /* Hebrew year that starts on Monday, is `complete' (Heshvan and\n     * Kislev each have 30 days), and has Passover start on Saturday. */\n  // e.g.5752\n  '1221': [51, 52].concat(CHMSUKOT, range$1(0, 27), PESACH, range$1(28, 50)),\n  /* Hebrew year that starts on Thursday, is `incomplete' (Heshvan and\n     * Kislev both have 29 days), and has Passover start on Sunday. */\n  // e.g. 5768\n  '150': [52].concat(YK, CHMSUKOT, range$1(0, 28), PESACH7, range$1(29, 50)),\n  /* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n     * Kislev both have 30 days), and has Passover start on Tuesday. */\n  // eg. 5771\n  '152': [52].concat(YK, CHMSUKOT, range$1(0, 28), CHMPESACH, range$1(29, 49), D(50)),\n  /* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and\n     * Kislev each have 29 days), and has Passover start on Tuesday. */\n  // e.g.5757\n  '170': [].concat(RH, 52, SUKKOT, SHMINI, range$1(0, 27), CHMPESACH, range$1(28, 40), D(41), range$1(43, 49), D(50)),\n  /* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n     * Kislev each have 30 days), and has Passover start on Thursday. */\n  '1720': [].concat(RH, 52, SUKKOT, SHMINI, range$1(0, 27), CHMPESACH, range$1(28, 33), SHAVUOT, range$1(34, 37), D(38), 40, D(41), range$1(43, 49), D(50))\n};\n\n/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['0221'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\n// e.g. 5715\ntypes['0310'] = types['0220'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\ntypes['0311'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n// e.g. 5715\ntypes['1310'] = types['1220'];\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\ntypes['1311'] = types['1221'];\n\n/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['1721'] = types['170'];\n\n/**\n * Represents one of 54 weekly Torah portions, always on a Saturday\n */\nclass ParshaEvent extends Event {\n  /**\n   * @param {HDate} date\n   * @param {string[]} parsha - untranslated name of single or double parsha,\n   *   such as ['Bereshit'] or ['Achrei Mot', 'Kedoshim']\n   * @param {boolean} il\n   * @param {number|number[]} num\n   */\n  constructor(date, parsha, il, num) {\n    if (!Array.isArray(parsha) || parsha.length === 0 || parsha.length > 2) {\n      throw new TypeError('Bad parsha argument');\n    }\n    const desc = 'Parashat ' + parsha.join('-');\n    super(date, desc, flags.PARSHA_HASHAVUA);\n    this.parsha = parsha;\n    this.il = Boolean(il);\n    this.num = num || -1;\n  }\n  /**\n   * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.\n   * @return {string}\n   */\n  render(locale) {\n    const locale0 = locale || Locale.getLocaleName();\n    const parsha = this.parsha;\n    let name = Locale.gettext(parsha[0], locale);\n    if (parsha.length == 2) {\n      const hyphen = locale0 == 'he' ? '־' : '-';\n      name += hyphen + Locale.gettext(parsha[1], locale);\n    }\n    const str = Locale.gettext('Parashat', locale) + ' ' + name;\n    return str.normalize();\n  }\n  /** @return {string} */\n  basename() {\n    return this.parsha.join('-');\n  }\n  /** @return {string} */\n  url() {\n    const year = this.getDate().greg().getFullYear();\n    if (year < 100) {\n      return undefined;\n    }\n    const dt = this.urlDateSuffix();\n    const url = 'https://www.hebcal.com/sedrot/' + this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') + '-' + dt;\n    return this.il ? url + '?i=on' : url;\n  }\n\n  /** @return {string} */\n  urlDateSuffix() {\n    const isoDateTime = this.getDate().greg().toISOString();\n    const isoDate = isoDateTime.substring(0, isoDateTime.indexOf('T'));\n    return isoDate.replace(/-/g, '');\n  }\n}\n\nconst SUN$2 = 0;\nconst TUE$1 = 2;\nconst FRI$2 = 5;\nconst SAT$3 = 6;\nconst NISAN$3 = months.NISAN;\nconst IYYAR = months.IYYAR;\n\n/**\n * Yom HaShoah first observed in 1951.\n * When the actual date of Yom Hashoah falls on a Friday, the\n * state of Israel observes Yom Hashoah on the preceding\n * Thursday. When it falls on a Sunday, Yom Hashoah is observed\n * on the following Monday.\n * http://www.ushmm.org/remembrance/dor/calendar/\n * @private\n * @param {number} year\n * @return {HDate|null}\n */\nfunction dateYomHaShoah(year) {\n  if (year < 5711) {\n    return null;\n  }\n  let nisan27dt = new HDate(27, NISAN$3, year);\n  if (nisan27dt.getDay() === FRI$2) {\n    nisan27dt = new HDate(26, NISAN$3, year);\n  } else if (nisan27dt.getDay() === SUN$2) {\n    nisan27dt = new HDate(28, NISAN$3, year);\n  }\n  return nisan27dt;\n}\n\n/**\n * Yom HaAtzma'ut only celebrated after 1948\n * @private\n * @param {number} year\n * @return {HDate|null}\n */\nfunction dateYomHaZikaron(year) {\n  if (year < 5708) {\n    return null;\n  }\n  let day;\n  const pesach = new HDate(15, NISAN$3, year);\n  const pdow = pesach.getDay();\n  if (pdow === SUN$2) {\n    day = 2;\n  } else if (pdow === SAT$3) {\n    day = 3;\n  } else if (year < 5764) {\n    day = 4;\n  } else if (pdow === TUE$1) {\n    day = 5;\n  } else {\n    day = 4;\n  }\n  return new HDate(day, IYYAR, year);\n}\n\nconst Nisan = months.NISAN;\nconst Iyyar = months.IYYAR;\nconst Sivan = months.SIVAN;\nconst Tamuz = months.TAMUZ;\nconst Av = months.AV;\nconst Elul = months.ELUL;\nconst Tishrei = months.TISHREI;\nconst Cheshvan = months.CHESHVAN;\nconst Kislev = months.KISLEV;\n// const Tevet = months.TEVET;\nconst Shvat = months.SHVAT;\n// const Adar1 = months.ADAR_I;\nconst Adar2 = months.ADAR_II;\nconst CHAG$1 = flags.CHAG;\nconst LIGHT_CANDLES$1 = flags.LIGHT_CANDLES;\nconst YOM_TOV_ENDS$1 = flags.YOM_TOV_ENDS;\nconst CHUL_ONLY$1 = flags.CHUL_ONLY;\nconst IL_ONLY$1 = flags.IL_ONLY;\nconst LIGHT_CANDLES_TZEIS$2 = flags.LIGHT_CANDLES_TZEIS;\nconst CHANUKAH_CANDLES$2 = flags.CHANUKAH_CANDLES;\n// const MINOR_FAST = flags.MINOR_FAST;\nconst MAJOR_FAST$2 = flags.MAJOR_FAST;\nconst MINOR_HOLIDAY$2 = flags.MINOR_HOLIDAY;\nconst EREV$2 = flags.EREV;\nconst CHOL_HAMOED$1 = flags.CHOL_HAMOED;\nconst emojiPesach = '🫓';\nconst emojiSukkot = '🌿🍋';\nconst staticHolidays = [{\n  mm: Tishrei,\n  dd: 2,\n  desc: 'Rosh Hashana II',\n  flags: CHAG$1 | YOM_TOV_ENDS$1,\n  emoji: '🍏🍯'\n}, {\n  mm: Tishrei,\n  dd: 9,\n  desc: 'Erev Yom Kippur',\n  flags: EREV$2 | LIGHT_CANDLES$1\n}, {\n  mm: Tishrei,\n  dd: 10,\n  desc: 'Yom Kippur',\n  flags: CHAG$1 | MAJOR_FAST$2 | YOM_TOV_ENDS$1\n}, {\n  mm: Tishrei,\n  dd: 14,\n  desc: 'Erev Sukkot',\n  flags: CHUL_ONLY$1 | EREV$2 | LIGHT_CANDLES$1,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 15,\n  desc: 'Sukkot I',\n  flags: CHUL_ONLY$1 | CHAG$1 | LIGHT_CANDLES_TZEIS$2,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 16,\n  desc: 'Sukkot II',\n  flags: CHUL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 17,\n  desc: 'Sukkot III (CH\\'\\'M)',\n  flags: CHUL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 1,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 18,\n  desc: 'Sukkot IV (CH\\'\\'M)',\n  flags: CHUL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 2,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 19,\n  desc: 'Sukkot V (CH\\'\\'M)',\n  flags: CHUL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 3,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 20,\n  desc: 'Sukkot VI (CH\\'\\'M)',\n  flags: CHUL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 4,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 22,\n  desc: 'Shmini Atzeret',\n  flags: CHUL_ONLY$1 | CHAG$1 | LIGHT_CANDLES_TZEIS$2\n}, {\n  mm: Tishrei,\n  dd: 23,\n  desc: 'Simchat Torah',\n  flags: CHUL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1\n}, {\n  mm: Tishrei,\n  dd: 14,\n  desc: 'Erev Sukkot',\n  flags: IL_ONLY$1 | EREV$2 | LIGHT_CANDLES$1,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 15,\n  desc: 'Sukkot I',\n  flags: IL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 16,\n  desc: 'Sukkot II (CH\\'\\'M)',\n  flags: IL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 1,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 17,\n  desc: 'Sukkot III (CH\\'\\'M)',\n  flags: IL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 2,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 18,\n  desc: 'Sukkot IV (CH\\'\\'M)',\n  flags: IL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 3,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 19,\n  desc: 'Sukkot V (CH\\'\\'M)',\n  flags: IL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 4,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 20,\n  desc: 'Sukkot VI (CH\\'\\'M)',\n  flags: IL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 5,\n  emoji: emojiSukkot\n}, {\n  mm: Tishrei,\n  dd: 22,\n  desc: 'Shmini Atzeret',\n  flags: IL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1\n}, {\n  mm: Tishrei,\n  dd: 21,\n  desc: 'Sukkot VII (Hoshana Raba)',\n  flags: LIGHT_CANDLES$1 | CHOL_HAMOED$1,\n  chmDay: -1,\n  emoji: emojiSukkot\n}, {\n  mm: Kislev,\n  dd: 24,\n  desc: 'Chanukah: 1 Candle',\n  flags: EREV$2 | MINOR_HOLIDAY$2 | CHANUKAH_CANDLES$2,\n  emoji: '🕎1️⃣'\n}, {\n  mm: Shvat,\n  dd: 15,\n  desc: 'Tu BiShvat',\n  flags: MINOR_HOLIDAY$2,\n  emoji: '🌳'\n}, {\n  mm: Adar2,\n  dd: 13,\n  desc: 'Erev Purim',\n  flags: EREV$2 | MINOR_HOLIDAY$2,\n  emoji: '🎭️📜'\n}, {\n  mm: Adar2,\n  dd: 14,\n  desc: 'Purim',\n  flags: MINOR_HOLIDAY$2,\n  emoji: '🎭️📜'\n}, {\n  mm: Adar2,\n  dd: 15,\n  desc: 'Shushan Purim',\n  flags: MINOR_HOLIDAY$2,\n  emoji: '🎭️📜'\n},\n// Pesach Israel\n{\n  mm: Nisan,\n  dd: 14,\n  desc: 'Erev Pesach',\n  flags: IL_ONLY$1 | EREV$2 | LIGHT_CANDLES$1,\n  emoji: '🫓🍷'\n}, {\n  mm: Nisan,\n  dd: 15,\n  desc: 'Pesach I',\n  flags: IL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 16,\n  desc: 'Pesach II (CH\\'\\'M)',\n  flags: IL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 1,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 17,\n  desc: 'Pesach III (CH\\'\\'M)',\n  flags: IL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 2,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 18,\n  desc: 'Pesach IV (CH\\'\\'M)',\n  flags: IL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 3,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 19,\n  desc: 'Pesach V (CH\\'\\'M)',\n  flags: IL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 4,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 20,\n  desc: 'Pesach VI (CH\\'\\'M)',\n  flags: IL_ONLY$1 | CHOL_HAMOED$1 | LIGHT_CANDLES$1,\n  chmDay: 5,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 21,\n  desc: 'Pesach VII',\n  flags: IL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,\n  emoji: emojiPesach\n},\n// Pesach chutz l'aretz\n{\n  mm: Nisan,\n  dd: 14,\n  desc: 'Erev Pesach',\n  flags: CHUL_ONLY$1 | EREV$2 | LIGHT_CANDLES$1,\n  emoji: '🫓🍷'\n}, {\n  mm: Nisan,\n  dd: 15,\n  desc: 'Pesach I',\n  flags: CHUL_ONLY$1 | CHAG$1 | LIGHT_CANDLES_TZEIS$2,\n  emoji: '🫓🍷'\n}, {\n  mm: Nisan,\n  dd: 16,\n  desc: 'Pesach II',\n  flags: CHUL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 17,\n  desc: 'Pesach III (CH\\'\\'M)',\n  flags: CHUL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 1,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 18,\n  desc: 'Pesach IV (CH\\'\\'M)',\n  flags: CHUL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 2,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 19,\n  desc: 'Pesach V (CH\\'\\'M)',\n  flags: CHUL_ONLY$1 | CHOL_HAMOED$1,\n  chmDay: 3,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 20,\n  desc: 'Pesach VI (CH\\'\\'M)',\n  flags: CHUL_ONLY$1 | CHOL_HAMOED$1 | LIGHT_CANDLES$1,\n  chmDay: 4,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 21,\n  desc: 'Pesach VII',\n  flags: CHUL_ONLY$1 | CHAG$1 | LIGHT_CANDLES_TZEIS$2,\n  emoji: emojiPesach\n}, {\n  mm: Nisan,\n  dd: 22,\n  desc: 'Pesach VIII',\n  flags: CHUL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,\n  emoji: emojiPesach\n}, {\n  mm: Iyyar,\n  dd: 14,\n  desc: 'Pesach Sheni',\n  flags: MINOR_HOLIDAY$2\n}, {\n  mm: Iyyar,\n  dd: 18,\n  desc: 'Lag BaOmer',\n  flags: MINOR_HOLIDAY$2,\n  emoji: '🔥'\n}, {\n  mm: Sivan,\n  dd: 5,\n  desc: 'Erev Shavuot',\n  flags: EREV$2 | LIGHT_CANDLES$1,\n  emoji: '⛰️🌸'\n}, {\n  mm: Sivan,\n  dd: 6,\n  desc: 'Shavuot',\n  flags: IL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,\n  emoji: '⛰️🌸'\n}, {\n  mm: Sivan,\n  dd: 6,\n  desc: 'Shavuot I',\n  flags: CHUL_ONLY$1 | CHAG$1 | LIGHT_CANDLES_TZEIS$2,\n  emoji: '⛰️🌸'\n}, {\n  mm: Sivan,\n  dd: 7,\n  desc: 'Shavuot II',\n  flags: CHUL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,\n  emoji: '⛰️🌸'\n}, {\n  mm: Av,\n  dd: 15,\n  desc: 'Tu B\\'Av',\n  flags: MINOR_HOLIDAY$2,\n  emoji: '❤️'\n}, {\n  mm: Elul,\n  dd: 1,\n  desc: 'Rosh Hashana LaBehemot',\n  flags: MINOR_HOLIDAY$2,\n  emoji: '🐑'\n}, {\n  mm: Elul,\n  dd: 29,\n  desc: 'Erev Rosh Hashana',\n  flags: EREV$2 | LIGHT_CANDLES$1,\n  emoji: '🍏🍯'\n}];\nconst staticModernHolidays = [{\n  firstYear: 5727,\n  mm: Iyyar,\n  dd: 28,\n  desc: 'Yom Yerushalayim',\n  chul: true\n}, {\n  firstYear: 5737,\n  mm: Kislev,\n  dd: 6,\n  desc: 'Ben-Gurion Day',\n  satPostponeToSun: true,\n  friPostponeToSun: true\n}, {\n  firstYear: 5750,\n  mm: Shvat,\n  dd: 30,\n  desc: 'Family Day'\n}, {\n  firstYear: 5758,\n  mm: Cheshvan,\n  dd: 12,\n  desc: 'Yitzhak Rabin Memorial Day',\n  friSatMovetoThu: true\n}, {\n  firstYear: 5764,\n  mm: Iyyar,\n  dd: 10,\n  desc: 'Herzl Day',\n  satPostponeToSun: true\n}, {\n  firstYear: 5765,\n  mm: Tamuz,\n  dd: 29,\n  desc: 'Jabotinsky Day',\n  satPostponeToSun: true\n}, {\n  firstYear: 5769,\n  mm: Cheshvan,\n  dd: 29,\n  desc: 'Sigd',\n  chul: true,\n  suppressEmoji: true\n}, {\n  firstYear: 5777,\n  mm: Nisan,\n  dd: 10,\n  desc: 'Yom HaAliyah',\n  chul: true\n}, {\n  firstYear: 5777,\n  mm: Cheshvan,\n  dd: 7,\n  desc: 'Yom HaAliyah School Observance'\n}];\n\n/*\n    Hebcal - A Jewish Calendar Generator\n    Copyright (c) 1994-2020 Danny Sadinoff\n    Portions copyright Eyal Schachter and Michael J. Radwin\n\n    https://github.com/hebcal/hebcal-es6\n\n    This program is free software; you can redistribute it and/or\n    modify it under the terms of the GNU General Public License\n    as published by the Free Software Foundation; either version 2\n    of the License, or (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */\nclass HolidayEvent extends Event {\n  /**\n   * Constructs Holiday event\n   * @param {HDate} date Hebrew date event occurs\n   * @param {string} desc Description (not translated)\n   * @param {number} [mask=0] optional holiday flags\n   * @param {Object} [attrs={}]\n   */\n  constructor(date, desc, mask, attrs) {\n    super(date, desc, mask, attrs);\n  }\n  /** @return {string} */\n  basename() {\n    return this.getDesc().replace(/ \\d{4}$/, '').replace(/ \\(CH''M\\)$/, '').replace(/ \\(observed\\)$/, '').replace(/ \\(Hoshana Raba\\)$/, '').replace(/ [IV]+$/, '').replace(/: \\d Candles?$/, '').replace(/: 8th Day$/, '').replace(/^Erev /, '');\n  }\n  /** @return {string} */\n  url() {\n    const year = this.getDate().greg().getFullYear();\n    if (year < 100) {\n      return undefined;\n    }\n    const url = 'https://www.hebcal.com/holidays/' + this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') + '-' + this.urlDateSuffix();\n    return this.getFlags() & flags.IL_ONLY ? url + '?i=on' : url;\n  }\n  /** @return {string} */\n  urlDateSuffix() {\n    const year = this.getDate().greg().getFullYear();\n    return year;\n  }\n  /** @return {string} */\n  getEmoji() {\n    if (this.emoji) {\n      return this.emoji;\n    } else if (this.getFlags() & flags.SPECIAL_SHABBAT) {\n      return '🕍';\n    } else {\n      return '✡️';\n    }\n  }\n}\nconst roshChodeshStr = 'Rosh Chodesh';\n\n/** Represents Rosh Chodesh, the beginning of a new month */\nclass RoshChodeshEvent extends HolidayEvent {\n  /**\n   * Constructs Rosh Chodesh event\n   * @param {HDate} date Hebrew date event occurs\n   * @param {string} monthName Hebrew month name (not translated)\n   */\n  constructor(date, monthName) {\n    super(date, `${roshChodeshStr} ${monthName}`, flags.ROSH_CHODESH);\n  }\n  /**\n   * Returns (translated) description of this event\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    const monthName = this.getDesc().substring(roshChodeshStr.length + 1);\n    return Locale.gettext(roshChodeshStr, locale) + ' ' + Locale.gettext(monthName, locale);\n  }\n  /** @return {string} */\n  basename() {\n    return this.getDesc();\n  }\n  /** @return {string} */\n  getEmoji() {\n    return this.emoji || '🌒';\n  }\n}\n\n/**\n * Because Asara B'Tevet often occurs twice in the same Gregorian year,\n * we subclass HolidayEvent to override the `url()` method.\n */\nclass AsaraBTevetEvent extends HolidayEvent {\n  /**\n   * Constructs AsaraBTevetEvent\n   * @param {HDate} date Hebrew date event occurs\n   * @param {string} desc Description (not translated)\n   * @param {number} [mask=0] optional holiday flags\n   */\n  constructor(date, desc, mask) {\n    super(date, desc, mask);\n  }\n  /** @return {string} */\n  urlDateSuffix() {\n    const isoDateTime = this.getDate().greg().toISOString();\n    const isoDate = isoDateTime.substring(0, isoDateTime.indexOf('T'));\n    return isoDate.replace(/-/g, '');\n  }\n}\nconst mevarchimChodeshStr = 'Shabbat Mevarchim Chodesh';\n\n/** Represents Mevarchim haChodesh, the announcement of the new month */\nclass MevarchimChodeshEvent extends Event {\n  /**\n   * Constructs Mevarchim haChodesh event\n   * @param {HDate} date Hebrew date event occurs\n   * @param {string} monthName Hebrew month name (not translated)\n   */\n  constructor(date, monthName) {\n    super(date, `${mevarchimChodeshStr} ${monthName}`, flags.SHABBAT_MEVARCHIM);\n    this.monthName = monthName;\n    const hyear = date.getFullYear();\n    const hmonth = date.getMonth();\n    const monNext = hmonth == HDate.monthsInYear(hyear) ? months.NISAN : hmonth + 1;\n    const molad = new MoladEvent(date, hyear, monNext);\n    this.memo = molad.render('en');\n  }\n  /** @return {string} */\n  basename() {\n    return this.getDesc();\n  }\n  /**\n   * Returns (translated) description of this event\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    return Locale.gettext(mevarchimChodeshStr, locale) + ' ' + Locale.gettext(this.monthName, locale);\n  }\n}\n\n/** Represents Rosh Hashana, the Jewish New Year */\nclass RoshHashanaEvent extends HolidayEvent {\n  /**\n   * @private\n   * @param {HDate} date Hebrew date event occurs\n   * @param {number} hyear Hebrew year\n   * @param {number} mask optional holiday flags\n   */\n  constructor(date, hyear, mask) {\n    super(date, `Rosh Hashana ${hyear}`, mask);\n    this.hyear = hyear;\n  }\n  /**\n   * Returns (translated) description of this event\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    return Locale.gettext('Rosh Hashana', locale) + ' ' + this.hyear;\n  }\n  /** @return {string} */\n  getEmoji() {\n    return '🍏🍯';\n  }\n}\nconst ykk = 'Yom Kippur Katan';\n\n/** YKK is minor day of atonement on the day preceeding each Rosh Chodesh */\nclass YomKippurKatanEvent extends HolidayEvent {\n  /**\n   * @private\n   * @param {HDate} date Hebrew date event occurs\n   * @param {string} nextMonthName name of the upcoming month\n   */\n  constructor(date, nextMonthName) {\n    super(date, `${ykk} ${nextMonthName}`, flags.MINOR_FAST | flags.YOM_KIPPUR_KATAN);\n    this.nextMonthName = nextMonthName;\n    this.memo = `Minor Day of Atonement on the day preceeding Rosh Chodesh ${nextMonthName}`;\n  }\n  /** @return {string} */\n  basename() {\n    return this.getDesc();\n  }\n  /**\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    return Locale.gettext(ykk, locale) + ' ' + Locale.gettext(this.nextMonthName, locale);\n  }\n  /**\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  renderBrief(locale) {\n    return Locale.gettext(ykk, locale);\n  }\n  /** @return {string} */\n  url() {\n    return undefined;\n  }\n}\nconst SUN$1 = 0;\n// const MON = 1;\nconst TUE = 2;\n// const WED = 3;\nconst THU = 4;\nconst FRI$1 = 5;\nconst SAT$2 = 6;\nconst NISAN$2 = months.NISAN;\n// const IYYAR = months.IYYAR;\n// const SIVAN = months.SIVAN;\nconst TAMUZ = months.TAMUZ;\nconst AV = months.AV;\nconst ELUL$1 = months.ELUL;\nconst TISHREI$1 = months.TISHREI;\n// const CHESHVAN = months.CHESHVAN;\nconst KISLEV$1 = months.KISLEV;\nconst TEVET$1 = months.TEVET;\n// const SHVAT = months.SHVAT;\nconst ADAR_I$1 = months.ADAR_I;\n// const ADAR_II = months.ADAR_II;\n\nconst CHAG = flags.CHAG;\n// const LIGHT_CANDLES = flags.LIGHT_CANDLES;\n// const YOM_TOV_ENDS = flags.YOM_TOV_ENDS;\n// const CHUL_ONLY = flags.CHUL_ONLY;\n// const IL_ONLY = flags.IL_ONLY;\nconst LIGHT_CANDLES_TZEIS$1 = flags.LIGHT_CANDLES_TZEIS;\nconst CHANUKAH_CANDLES$1 = flags.CHANUKAH_CANDLES;\nconst MINOR_FAST$1 = flags.MINOR_FAST;\nconst SPECIAL_SHABBAT$1 = flags.SPECIAL_SHABBAT;\nconst MODERN_HOLIDAY$1 = flags.MODERN_HOLIDAY;\nconst MAJOR_FAST$1 = flags.MAJOR_FAST;\nconst MINOR_HOLIDAY$1 = flags.MINOR_HOLIDAY;\nconst EREV$1 = flags.EREV;\n// const CHOL_HAMOED = flags.CHOL_HAMOED;\n\n/**\n * Avoid dependency on ES6 Map object\n * @private\n */\nclass SimpleMap {\n  /**\n   * @param {string} key\n   * @return {boolean}\n   */\n  has(key) {\n    return typeof this[key] !== 'undefined';\n  }\n  /**\n   * @param {string} key\n   * @return {any}\n   */\n  get(key) {\n    return this[key];\n  }\n  /**\n   * @param {string} key\n   * @param {any} val\n   */\n  set(key, val) {\n    this[key] = val;\n  }\n  /**\n   * @return {string[]}\n   */\n  keys() {\n    return Object.keys(this);\n  }\n}\nconst sedraCache = new SimpleMap();\n\n/**\n * @private\n * @param {number} hyear\n * @param {boolean} il\n * @return {Sedra}\n */\nfunction getSedra_(hyear, il) {\n  const cacheKey = `${hyear}-${il ? 1 : 0}`;\n  let sedra = sedraCache.get(cacheKey);\n  if (!sedra) {\n    sedra = new Sedra(hyear, il);\n    sedraCache.set(cacheKey, sedra);\n  }\n  return sedra;\n}\nconst emojiIsraelFlag = {\n  emoji: '🇮🇱'\n};\nconst chanukahEmoji = '🕎';\nconst yearCache = Object.create(null);\n\n/**\n * Lower-level holidays interface, which returns a `Map` of `Event`s indexed by\n * `HDate.toString()`. These events must filtered especially for `flags.IL_ONLY`\n * or `flags.CHUL_ONLY` depending on Israel vs. Diaspora holiday scheme.\n * @private\n * @param {number} year Hebrew year\n * @return {Map<string,Event[]>}\n */\nfunction getHolidaysForYear_(year) {\n  if (typeof year !== 'number') {\n    throw new TypeError(`bad Hebrew year: ${year}`);\n  } else if (year < 1 || year > 32658) {\n    throw new RangeError(`Hebrew year ${year} out of range 1-32658`);\n  }\n  const cached = yearCache[year];\n  if (cached) {\n    return cached;\n  }\n  const RH = new HDate(1, TISHREI$1, year);\n  const pesach = new HDate(15, NISAN$2, year);\n  const h = new SimpleMap();\n  // eslint-disable-next-line require-jsdoc\n  function add(...events) {\n    // for (const ev of events) {\n    events.forEach(ev => {\n      const key = ev.date.toString();\n      const arr = h.get(key);\n      if (typeof arr === 'object') {\n        if (arr[0].getFlags() & flags.EREV) {\n          arr.unshift(ev);\n        } else {\n          arr.push(ev);\n        }\n      } else {\n        h.set(key, [ev]);\n      }\n    });\n  }\n  staticHolidays.forEach(h => {\n    const hd = new HDate(h.dd, h.mm, year);\n    const ev = new HolidayEvent(hd, h.desc, h.flags);\n    if (h.emoji) ev.emoji = h.emoji;\n    if (h.chmDay) ev.cholHaMoedDay = h.chmDay;\n    add(ev);\n  });\n\n  // standard holidays that don't shift based on year\n  add(new RoshHashanaEvent(RH, year, CHAG | LIGHT_CANDLES_TZEIS$1));\n\n  // Variable date holidays\n  add(new HolidayEvent(new HDate(3 + (RH.getDay() == THU), TISHREI$1, year), 'Tzom Gedaliah', MINOR_FAST$1));\n  // first SAT after RH\n  add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$2, 7 + RH.abs())), 'Shabbat Shuva', SPECIAL_SHABBAT$1));\n  const rchTevet = HDate.shortKislev(year) ? new HDate(1, TEVET$1, year) : new HDate(30, KISLEV$1, year);\n  add(new HolidayEvent(rchTevet, 'Chag HaBanot', MINOR_HOLIDAY$1));\n  // yes, we know Kislev 30-32 are wrong\n  // HDate() corrects the month automatically\n  for (let candles = 2; candles <= 8; candles++) {\n    const hd = new HDate(23 + candles, KISLEV$1, year);\n    add(new HolidayEvent(hd, `Chanukah: ${candles} Candles`, MINOR_HOLIDAY$1 | CHANUKAH_CANDLES$1, {\n      chanukahDay: candles - 1,\n      emoji: chanukahEmoji + KEYCAP_DIGITS[candles]\n    }));\n  }\n  add(new HolidayEvent(new HDate(32, KISLEV$1, year), 'Chanukah: 8th Day', MINOR_HOLIDAY$1, {\n    chanukahDay: 8,\n    emoji: chanukahEmoji\n  }));\n  add(new AsaraBTevetEvent(new HDate(10, TEVET$1, year), 'Asara B\\'Tevet', MINOR_FAST$1));\n  const pesachAbs = pesach.abs();\n  add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$2, pesachAbs - 43)), 'Shabbat Shekalim', SPECIAL_SHABBAT$1), new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$2, pesachAbs - 30)), 'Shabbat Zachor', SPECIAL_SHABBAT$1), new HolidayEvent(new HDate(pesachAbs - (pesach.getDay() == TUE ? 33 : 31)), 'Ta\\'anit Esther', MINOR_FAST$1));\n  add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$2, pesachAbs - 14) - 7), 'Shabbat Parah', SPECIAL_SHABBAT$1), new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$2, pesachAbs - 14)), 'Shabbat HaChodesh', SPECIAL_SHABBAT$1), new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$2, pesachAbs - 1)), 'Shabbat HaGadol', SPECIAL_SHABBAT$1), new HolidayEvent(\n  // if the fast falls on Shabbat, move to Thursday\n  pesach.prev().getDay() == SAT$2 ? pesach.onOrBefore(THU) : new HDate(14, NISAN$2, year), 'Ta\\'anit Bechorot', MINOR_FAST$1));\n  add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$2, new HDate(1, TISHREI$1, year + 1).abs() - 4)), 'Leil Selichot', MINOR_HOLIDAY$1, {\n    emoji: '🕍'\n  }));\n  if (pesach.getDay() == SUN$1) {\n    add(new HolidayEvent(new HDate(16, months.ADAR_II, year), 'Purim Meshulash', MINOR_HOLIDAY$1));\n  }\n  if (HDate.isLeapYear(year)) {\n    add(new HolidayEvent(new HDate(14, ADAR_I$1, year), 'Purim Katan', MINOR_HOLIDAY$1, {\n      emoji: '🎭️'\n    }));\n    add(new HolidayEvent(new HDate(15, ADAR_I$1, year), 'Shushan Purim Katan', MINOR_HOLIDAY$1, {\n      emoji: '🎭️'\n    }));\n  }\n  const nisan27dt = dateYomHaShoah(year);\n  if (nisan27dt) {\n    add(new HolidayEvent(nisan27dt, 'Yom HaShoah', MODERN_HOLIDAY$1));\n  }\n  const yomHaZikaronDt = dateYomHaZikaron(year);\n  if (yomHaZikaronDt) {\n    add(new HolidayEvent(yomHaZikaronDt, 'Yom HaZikaron', MODERN_HOLIDAY$1, emojiIsraelFlag), new HolidayEvent(yomHaZikaronDt.next(), 'Yom HaAtzma\\'ut', MODERN_HOLIDAY$1, emojiIsraelFlag));\n  }\n  staticModernHolidays.forEach(h => {\n    if (year >= h.firstYear) {\n      let hd = new HDate(h.dd, h.mm, year);\n      const dow = hd.getDay();\n      if (h.friSatMovetoThu && (dow === FRI$1 || dow === SAT$2)) {\n        hd = hd.onOrBefore(THU);\n      } else if (h.friPostponeToSun && dow === FRI$1) {\n        hd = new HDate(hd.abs() + 2);\n      } else if (h.satPostponeToSun && dow === SAT$2) {\n        hd = hd.next();\n      }\n      const mask = h.chul ? MODERN_HOLIDAY$1 : MODERN_HOLIDAY$1 | flags.IL_ONLY;\n      const ev = new HolidayEvent(hd, h.desc, mask);\n      if (!h.suppressEmoji) {\n        ev.emoji = '🇮🇱';\n      }\n      add(ev);\n    }\n  });\n  let tamuz17 = new HDate(17, TAMUZ, year);\n  let tamuz17attrs;\n  if (tamuz17.getDay() == SAT$2) {\n    tamuz17 = new HDate(18, TAMUZ, year);\n    tamuz17attrs = {\n      observed: true\n    };\n  }\n  add(new HolidayEvent(tamuz17, 'Tzom Tammuz', MINOR_FAST$1, tamuz17attrs));\n  let av9dt = new HDate(9, AV, year);\n  let av9title = 'Tish\\'a B\\'Av';\n  let av9attrs;\n  if (av9dt.getDay() == SAT$2) {\n    av9dt = av9dt.next();\n    av9attrs = {\n      observed: true\n    };\n    av9title += ' (observed)';\n  }\n  const av9abs = av9dt.abs();\n  add(new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$2, av9abs)), 'Shabbat Chazon', SPECIAL_SHABBAT$1), new HolidayEvent(av9dt.prev(), 'Erev Tish\\'a B\\'Av', EREV$1 | MAJOR_FAST$1, av9attrs), new HolidayEvent(av9dt, av9title, MAJOR_FAST$1, av9attrs), new HolidayEvent(new HDate(HDate.dayOnOrBefore(SAT$2, av9abs + 7)), 'Shabbat Nachamu', SPECIAL_SHABBAT$1));\n  const monthsInYear = HDate.monthsInYear(year);\n  for (let month = 1; month <= monthsInYear; month++) {\n    const monthName = HDate.getMonthName(month, year);\n    if ((month == NISAN$2 ? HDate.daysInMonth(HDate.monthsInYear(year - 1), year - 1) : HDate.daysInMonth(month - 1, year)) == 30) {\n      add(new RoshChodeshEvent(new HDate(1, month, year), monthName));\n      add(new RoshChodeshEvent(new HDate(30, month - 1, year), monthName));\n    } else if (month !== TISHREI$1) {\n      add(new RoshChodeshEvent(new HDate(1, month, year), monthName));\n    }\n    if (month == ELUL$1) {\n      continue;\n    }\n\n    // Don't worry about month overrun; will get \"Nisan\" for month=14\n    const nextMonthName = HDate.getMonthName(month + 1, year);\n    add(new MevarchimChodeshEvent(new HDate(29, month, year).onOrBefore(SAT$2), nextMonthName));\n  }\n\n  // Begin: Yom Kippur Katan\n  // start at Iyyar because one may not fast during Nisan\n  for (let month = months.IYYAR; month <= monthsInYear; month++) {\n    const nextMonth = month + 1;\n    // Yom Kippur Katan is not observed on the day before Rosh Hashanah.\n    // Not observed prior to Rosh Chodesh Cheshvan because Yom Kippur has just passed.\n    // Not observed before Rosh Chodesh Tevet, because that day is Hanukkah.\n    if (nextMonth === months.TISHREI || nextMonth === months.CHESHVAN || nextMonth === months.TEVET) {\n      continue;\n    }\n    let ykk = new HDate(29, month, year);\n    const dow = ykk.getDay();\n    if (dow === FRI$1 || dow === SAT$2) {\n      ykk = ykk.onOrBefore(THU);\n    }\n    const nextMonthName = HDate.getMonthName(nextMonth, year);\n    const ev = new YomKippurKatanEvent(ykk, nextMonthName);\n    add(ev);\n  }\n  const sedra = getSedra_(year, false);\n  const beshalachHd = sedra.find(15);\n  add(new HolidayEvent(beshalachHd, 'Shabbat Shirah', SPECIAL_SHABBAT$1));\n\n  // Birkat Hachamah appears only once every 28 years\n  const birkatHaChama = getBirkatHaChama(year);\n  if (birkatHaChama) {\n    const hd = new HDate(birkatHaChama);\n    add(new HolidayEvent(hd, 'Birkat Hachamah', MINOR_HOLIDAY$1, {\n      emoji: '☀️'\n    }));\n  }\n  yearCache[year] = h;\n  return h;\n}\n\n/**\n * Birkat Hachamah appears only once every 28 years.\n * Although almost always in Nisan, it can occur in Adar II.\n *   - 27 Adar II 5461 (Gregorian year 1701)\n *   - 29 Adar II 5993 (Gregorian year 2233)\n *\n * Due to drift, this will eventually slip into Iyyar\n *   - 2 Iyyar 7141 (Gregorian year 3381)\n * @private\n * @param {number} year\n * @return {number}\n */\nfunction getBirkatHaChama(year) {\n  const leap = HDate.isLeapYear(year);\n  const startMonth = leap ? months.ADAR_II : NISAN$2;\n  const startDay = leap ? 20 : 1;\n  const baseRd = HDate.hebrew2abs(year, startMonth, startDay);\n  for (let day = 0; day <= 40; day++) {\n    const abs = baseRd + day;\n    const elapsed = abs + 1373429;\n    if (elapsed % 10227 == 172) {\n      return abs;\n    }\n  }\n  return 0;\n}\n\nvar mishnayot = [{k:\"Berakhot\",v:[5,8,6,7,5,8,5,8,5]},{k:\"Peah\",v:[6,8,8,11,8,11,8,9]},{k:\"Demai\",v:[4,5,6,7,11,12,8]},{k:\"Kilayim\",v:[9,11,7,9,8,9,8,6,10]},{k:\"Sheviit\",v:[8,10,10,10,9,6,7,11,9,9]},{k:\"Terumot\",v:[10,6,9,13,9,6,7,12,7,12,10]},{k:\"Maasrot\",v:[8,8,10,6,8]},{k:\"Maaser Sheni\",v:[7,10,13,12,15]},{k:\"Challah\",v:[9,8,10,11]},{k:\"Orlah\",v:[9,17,9]},{k:\"Bikkurim\",v:[11,11,12,5]},{k:\"Shabbat\",v:[11,7,6,2,4,10,4,7,7,6,6,6,7,4,3,8,8,3,6,5,3,6,5,5]},{k:\"Eruvin\",v:[10,6,9,11,9,10,11,11,4,15]},{k:\"Pesachim\",v:[7,8,8,9,10,6,13,8,11,9]},{k:\"Shekalim\",v:[7,5,4,9,6,6,7,8]},{k:\"Yoma\",v:[8,7,11,6,7,8,5,9]},{k:\"Sukkah\",v:[11,9,15,10,8]},{k:\"Beitzah\",v:[10,10,8,7,7]},{k:\"Rosh Hashanah\",v:[9,9,8,9]},{k:\"Taanit\",v:[7,10,9,8]},{k:\"Megillah\",v:[11,6,6,10]},{k:\"Moed Katan\",v:[10,5,9]},{k:\"Chagigah\",v:[8,7,8]},{k:\"Yevamot\",v:[4,10,10,13,6,6,6,6,6,9,7,6,13,9,10,7]},{k:\"Ketubot\",v:[10,10,9,12,9,7,10,8,9,6,6,4,11]},{k:\"Nedarim\",v:[4,5,11,8,6,10,9,7,10,8,12]},{k:\"Nazir\",v:[7,10,7,7,7,11,4,2,5]},{k:\"Sotah\",v:[9,6,8,5,5,4,8,7,15]},{k:\"Gittin\",v:[6,7,8,9,9,7,9,10,10]},{k:\"Kiddushin\",v:[10,10,13,14]},{k:\"Bava Kamma\",v:[4,6,11,9,7,6,7,7,12,10]},{k:\"Bava Metzia\",v:[8,11,12,12,11,8,11,9,13,6]},{k:\"Bava Batra\",v:[6,14,8,9,11,8,4,8,10,8]},{k:\"Sanhedrin\",v:[6,5,8,5,5,6,11,7,6,6,6]},{k:\"Makkot\",v:[10,8,16]},{k:\"Shevuot\",v:[7,5,11,13,5,7,8,6]},{k:\"Eduyot\",v:[14,10,12,12,7,3,9,7]},{k:\"Avodah Zarah\",v:[9,7,10,12,12]},{k:\"Avot\",v:[18,16,18,22,23,11]},{k:\"Horayot\",v:[5,7,8]},{k:\"Zevachim\",v:[4,5,6,6,8,7,6,12,7,8,8,6,8,10]},{k:\"Menachot\",v:[4,5,7,5,9,7,6,7,9,9,9,5,11]},{k:\"Chullin\",v:[7,10,7,7,5,7,6,6,8,4,2,5]},{k:\"Bekhorot\",v:[7,9,4,10,6,12,7,10,8]},{k:\"Arakhin\",v:[4,6,5,4,6,5,5,7,8]},{k:\"Temurah\",v:[6,3,5,4,6,5,6]},{k:\"Keritot\",v:[7,6,10,3,8,9]},{k:\"Meilah\",v:[4,9,8,6,5,6]},{k:\"Tamid\",v:[4,5,9,3,6,3,4]},{k:\"Middot\",v:[9,6,8,7,4]},{k:\"Kinnim\",v:[4,5,6]},{k:\"Kelim\",v:[9,8,8,4,11,4,6,11,8,8,9,8,8,8,6,8,17,9,10,7,3,10,5,17,9,9,12,10,8,4]},{k:\"Oholot\",v:[8,7,7,3,7,7,6,6,16,7,9,8,6,7,10,5,5,10]},{k:\"Negaim\",v:[6,5,8,11,5,8,5,10,3,10,12,7,12,13]},{k:\"Parah\",v:[4,5,11,4,9,5,12,11,9,6,9,11]},{k:\"Tahorot\",v:[9,8,8,13,9,10,9,9,9,8]},{k:\"Mikvaot\",v:[8,10,4,5,6,11,7,5,7,8]},{k:\"Niddah\",v:[7,7,7,7,9,14,5,4,11,8]},{k:\"Makhshirin\",v:[6,11,8,10,11,8]},{k:\"Zavim\",v:[6,4,3,7,12]},{k:\"Tevul Yom\",v:[5,8,6,7]},{k:\"Yadayim\",v:[5,4,5,8]},{k:\"Oktzin\",v:[6,10,12]}];\n\nconst cycleStartDate$1 = new Date(1947, 4, 20);\nconst mishnaYomiStart = greg2abs(cycleStartDate$1);\nconst numMishnayot = 4192;\nconst numDays = numMishnayot / 2;\n\n/**\n * Describes a mishna to be read\n * @typedef {Object} MishnaYomi\n * @property {string} k tractate name in Sephardic transliteration (e.g. \"Berakhot\", \"Moed Katan\")\n * @property {string} v verse (e.g. \"2:1\")\n */\n\n/**\n * A program of daily learning in which participants study two Mishnahs\n * each day in order to finish the entire Mishnah in ~6 years.\n */\nclass MishnaYomiIndex {\n  /**\n   * Initializes a Mishna Yomi instance\n   */\n  constructor() {\n    const tmp = Array(numMishnayot);\n    let i = 0;\n    for (let j = 0; j < mishnayot.length; j++) {\n      const tractate = mishnayot[j];\n      const v = tractate.v;\n      for (let chap = 1; chap <= v.length; chap++) {\n        const numv = v[chap - 1];\n        for (let verse = 1; verse <= numv; verse++) {\n          tmp[i++] = {\n            k: tractate.k,\n            v: `${chap}:${verse}`\n          };\n        }\n      }\n    }\n    const days = Array(numDays);\n    for (let j = 0; j < numDays; j++) {\n      const k = j * 2;\n      days[j] = [tmp[k], tmp[k + 1]];\n    }\n    /** @type {MishnaYomi[]} */\n    this.days = days;\n  }\n\n  /**\n   * Looks up a Mishna Yomi\n   * @param {Date|HDate|number} date Gregorian date\n   * @return {MishnaYomi[]}\n   */\n  lookup(date) {\n    const abs = typeof date === 'number' && !isNaN(date) ? date : isDate(date) ? greg2abs(date) : HDate.isHDate(date) ? date.abs() : throwTypeError(`Invalid date: ${date}`);\n    if (abs < mishnaYomiStart) {\n      const dt = abs2greg(abs);\n      const s = dt.toISOString().substring(0, 10);\n      throw new RangeError(`Date ${s} too early; Mishna Yomi cycle began on 1947-05-20`);\n    }\n    const dayNum = (abs - mishnaYomiStart) % numDays;\n    return this.days[dayNum];\n  }\n}\n\n/**\n * @private\n * @param {MishnaYomi[]} mishnaYomi\n * @param {string} locale\n * @return {string}\n */\nfunction formatMyomi(mishnaYomi, locale) {\n  const k1 = mishnaYomi[0].k;\n  const cv1 = mishnaYomi[0].v;\n  const mishna1 = Locale.gettext(k1, locale) + ' ' + cv1;\n  const k2 = mishnaYomi[1].k;\n  const cv2 = mishnaYomi[1].v;\n  if (k1 !== k2) {\n    return mishna1 + '-' + Locale.gettext(k2, locale) + ' ' + cv2;\n  }\n  const p1 = cv1.split(':');\n  const p2 = cv2.split(':');\n  if (p1[0] === p2[0]) {\n    return mishna1 + '-' + p2[1];\n  }\n  return mishna1 + '-' + cv2;\n}\n\n/**\n * Event wrapper around a Mishna Yomi instance\n */\nclass MishnaYomiEvent extends Event {\n  /**\n   * @param {HDate} date\n   * @param {MishnaYomi[]} mishnaYomi\n   */\n  constructor(date, mishnaYomi) {\n    super(date, formatMyomi(mishnaYomi, null), flags.MISHNA_YOMI);\n    this.mishnaYomi = mishnaYomi;\n  }\n  /**\n   * Returns Mishna Yomi name (e.g. \"Bava Metzia 10:5-6\" or \"Berakhot 9:5-Peah 1:1\").\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    return formatMyomi(this.mishnaYomi, locale);\n  }\n  /**\n   * Returns a link to sefaria.org\n   * @return {string}\n   */\n  url() {\n    const mishnaYomi = this.mishnaYomi;\n    const k1 = mishnaYomi[0].k;\n    const mishna = k1 === 'Avot' ? 'Pirkei' : 'Mishnah';\n    const name = k1.replace(/ /g, '_');\n    const prefix = `https://www.sefaria.org/${mishna}_${name}`;\n    const cv1 = mishnaYomi[0].v;\n    if (k1 !== mishnaYomi[1].k) {\n      const verse1 = cv1.replace(':', '.');\n      return `${prefix}.${verse1}?lang=bi`;\n    }\n    const cv2 = mishnaYomi[1].v;\n    const p1 = cv1.split(':');\n    const p2 = cv2.split(':');\n    const verse1 = p1.join('.');\n    const verse2 = p1[0] === p2[0] ? p2[1] : p2.join('.');\n    return `${prefix}.${verse1}-${verse2}?lang=bi`;\n  }\n}\n\nconst nach = [['Joshua', 24], ['Judges', 21], ['I Samuel', 31], ['II Samuel', 24], ['I Kings', 22], ['II Kings', 25], ['Isaiah', 66], ['Jeremiah', 52], ['Ezekiel', 48], ['Hosea', 14], ['Joel', 4], ['Amos', 9], ['Obadiah', 1], ['Jonah', 4], ['Micah', 7], ['Nachum', 3], ['Habakkuk', 3], ['Zephaniah', 3], ['Haggai', 2], ['Zechariah', 14], ['Malachi', 3], ['Psalms', 150], ['Proverbs', 31], ['Job', 42], ['Song of Songs', 8], ['Ruth', 4], ['Lamentations', 5], ['Ecclesiastes', 12], ['Esther', 10], ['Daniel', 12], ['Ezra', 10], ['Nehemiah', 13], ['I Chronicles', 29], ['II Chronicles', 36]];\nconst cycleStartDate = new Date(2007, 10, 1);\nconst nachYomiStart = greg2abs(cycleStartDate);\nconst numChapters = 742;\n\n/**\n * Describes a chapter to be read\n * @typedef {Object} NachYomi\n * @property {string} k book name in Sephardic transliteration (e.g. \"Berakhot\", \"Moed Katan\")\n * @property {number} v chapter (e.g. \"2:1\")\n */\n\n/**\n * A daily regimen of learning the books of Nevi'im (Prophets)\n * and Ketuvim (Writings).\n */\nclass NachYomiIndex {\n  /**\n   * Initializes a Nach Yomi instance\n   */\n  constructor() {\n    const days = Array(numChapters);\n    let i = 0;\n    for (let j = 0; j < nach.length; j++) {\n      const book = nach[j][0];\n      const chapters = nach[j][1];\n      for (let chap = 1; chap <= chapters; chap++) {\n        days[i++] = {\n          k: book,\n          v: chap\n        };\n      }\n    }\n    this.days = days;\n  }\n\n  /**\n   * Looks up a Mishna Yomi\n   * @param {Date|HDate|number} date Gregorian date\n   * @return {NachYomi}\n   */\n  lookup(date) {\n    const abs = typeof date === 'number' && !isNaN(date) ? date : isDate(date) ? greg2abs(date) : HDate.isHDate(date) ? date.abs() : throwTypeError(`Invalid date: ${date}`);\n    if (abs < nachYomiStart) {\n      const dt = abs2greg(abs);\n      const s = dt.toISOString().substring(0, 10);\n      throw new RangeError(`Date ${s} too early; Nach Yomi cycle began on 2007-11-01`);\n    }\n    const dayNum = (abs - nachYomiStart) % numChapters;\n    return this.days[dayNum];\n  }\n}\n\n/**\n * Event wrapper around a Nach Yomi instance\n */\nclass NachYomiEvent extends Event {\n  /**\n   * @param {HDate} date\n   * @param {NachYomi} nachYomi\n   */\n  constructor(date, nachYomi) {\n    super(date, `${nachYomi.k} ${nachYomi.v}`, flags.NACH_YOMI);\n    this.nachYomi = nachYomi;\n  }\n  /**\n   * Returns name of tractate and page (e.g. \"Beitzah 21\").\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    locale = locale || Locale.getLocaleName();\n    if (typeof locale === 'string') {\n      locale = locale.toLowerCase();\n    }\n    const name = Locale.gettext(this.nachYomi.k, locale);\n    if (locale === 'he' || locale === 'he-x-nonikud') {\n      return name + ' ' + gematriya(this.nachYomi.v);\n    }\n    return name + ' ' + this.nachYomi.v;\n  }\n  /**\n   * Returns a link to sefaria.org\n   * @return {string}\n   */\n  url() {\n    const name = this.nachYomi.k.replace(/ /g, '_');\n    const chapter = this.nachYomi.v;\n    return `https://www.sefaria.org/${name}.${chapter}?lang=bi`;\n  }\n}\n\nconst Berakhot=[\"1:1:1-2\",\"1:1:7-11\",\"1:1:12-15\",\"1:1:16-19\",\"1:1:23-27\",\"1:1:29-31\",\"1:1:36-2:2\",\"1:2:8-9\",\"1:4:3-5:3\",\"1:5:9-14\",\"1:5:18-6:3\",\"2:1:1-4\",\"2:1:14-19\",\"2:3:4-7\",\"2:3:10-14\",\"2:4:1-3\",\"2:4:8-12\",\"2:5:1-8\",\"2:6:3-7:2\",\"2:8:2-7\",\"2:9:1-4\",\"3:1:4-7\",\"3:1:12-18\",\"3:1:23-2:3\",\"3:2:5-3:8\",\"3:3:11-4:5\",\"3:4:15-5:6\",\"3:5:13-6:1\",\"4:1:1-2\",\"4:1:10-16\",\"4:1:21-25\",\"4:1:28-31\",\"4:1:33-3:2\",\"4:3:11-4:2\",\"4:4:9-5:5\",\"4:6:3-7\",\"5:1:3-11\",\"5:1:18-2:3\",\"5:2:6-10\",\"5:3:2-7\",\"6:1:1-2\",\"6:1:4-6\",\"6:1:8-9\",\"6:1:11-15\",\"6:1:17-23\",\"6:2:1-4\",\"6:4:2-4\",\"6:5:3-5\",\"6:6:3-4\",\"6:6:6-8:2\",\"7:1:1-3\",\"7:1:5-6\",\"7:1:7-2:2\",\"7:2:7-3:1\",\"7:3:4-4:3\",\"7:5:5-11\",\"8:1:6-7\",\"8:2:2-6\",\"8:2:12-3:3\",\"8:4:1-5:6\",\"8:6:4-11\",\"9:1:1-4\",\"9:1:13-22\",\"9:1:33-2:6\",\"9:2:12-20\",\"9:3:3-7\",\"9:5:1-7\",\"9:5:16-22\"];const Peah=[\"1:1:1-3\",\"1:1:6-11\",\"1:1:15-22\",\"1:1:31-39\",\"1:1:47-56\",\"1:3:1-3\",\"1:3:5-4:1\",\"1:4:3-7\",\"1:5:1-2\",null,\"2:1:4-9\",\"2:1:11-3:2\",\"2:4:3-5:1\",\"3:1:1-7\",\"3:1:10-2:4\",\"3:4:3-5:4\",\"3:7:1-3\",\"3:7:7-13\",\"3:7:18\",\"4:1:1-3\",\"4:2:1-5\",\"4:2:7-5:3\",\"4:6:6-9\",\"4:7:1-5\",\"5:1:3-2:2\",\"5:2:5-7\",\"5:3:5-5:3\",\"6:1:1-7\",\"6:2:1-3:1\",\"6:3:4-5:3\",\"6:6:7-8:4\",\"7:2:1-6\",\"7:3:5-4:2\",\"7:5:3-11\",\"8:1:1-2:1\",\"8:3:2-5:4\",\"8:7:1-8:5\"];const Demai=[\"1:1:1-5\",\"1:1:10-2:1\",\"1:2:4-5\",\"1:3:6-16\",\"1:3:21-4:1\",\"1:4:7-8\",\"2:1:1-3\",\"2:1:6-12\",\"2:1:19-2:4\",\"2:3:4-4:2\",\"2:4:4-5:4\",\"3:1:5-7\",\"3:2:1-4\",\"3:3:5-4:3\",\"3:4:5-7\",\"3:4:9-5:1\",\"4:1:4-8\",\"4:2:2-3:4\",\"4:3:8-5:4\",\"5:1:2-2:1\",\"5:2:5-8\",\"5:3:3-5:1\",\"5:6:2-8:4\",\"5:8:8-11\",\"6:1:1-6\",\"6:1:9-2:5\",\"6:2:9-3:1\",\"6:5:3-6\",\"6:8:1-7\",\"7:1:4-2:4\",\"7:4:2-4\",\"7:4:5-6:1\",\"7:6:6-7:1\",\"7:8:1-3\"];const Kilayim=[\"1:1:1-4\",\"1:2:1-4:3\",\"1:6:3-7:3\",\"1:7:6-9:2\",\"1:9:4-5\",\"2:1:1-5\",\"2:1:9-11\",\"2:3:2-4\",\"2:3:4-4:3\",\"2:5:3-6:2\",\"2:6:5-7:1\",\"2:8:2-7\",\"3:1:1-2\",\"3:1:2-3\",\"3:1:6-2:3\",\"3:3:1-4:1\",\"3:4:3-5:1\",\"3:6:1-6\",\"4:1:2-5\",\"4:1:7-8\",\"4:2:4-9\",\"4:3:2-5:1\",\"4:6:3-5\",\"5:1:4-5\",\"5:1:5-2:2\",\"5:3:1-4:1\",\"5:5:2-6:3\",\"6:1:1-3\",\"6:1:4-2:2\",\"6:2:5-3:4\",\"6:4:4-9\",\"7:1:3-2:3\",\"7:2:6-3:2\",\"7:3:4-4:2\",\"7:6:2-5\",\"8:1:3-4\",\"8:1:6-8\",\"8:2:1-3:2\",\"8:3:6-4:5\",\"9:1:2-7\",\"9:1:12-2:5\",\"9:3:3-8\",\"9:3:13-4:5\",\"9:5:2-6:3\"];const Sheviit=[\"1:1:1-2:2\",\"1:2:4-3:6\",\"2:1:1-2\",\"2:2:2-3:2\",\"2:4:6-5:3\",\"2:5:8-7:6\",\"3:1:3-2:3\",\"3:3:4-4:5\",\"3:6:2-7:4\",\"4:1:6-2:4\",\"4:2:10-4:4\",\"4:6:3-7:1\",\"5:1:1-4\",\"5:2:3-9\",\"5:3:3-4:3\",\"6:1:4-10\",\"6:1:17-2:4\",\"6:4:1-7\",\"7:1:9-15\",\"7:2:3-5\",\"7:2:5-7\",\"8:1:4-2:3\",\"8:4:3-5:3\",\"8:7:1-8:4\",\"9:1:5-12\",\"9:2:9-5:1\",\"9:6:1-5\",\"10:1:5-9\",\"10:1:16-2:1\",\"10:3:2-10\",\"10:4:6\"];const Terumot=[\"1:1:1-4\",\"1:1:8-12\",\"1:1:15-16\",\"1:1:19-21\",\"1:1:23-2:3\",\"1:3:1-4:3\",\"1:5:1-3\",\"1:5:5-9\",\"2:1:3-9\",\"2:1:12-13\",\"2:1:15-17\",\"2:1:19-21\",\"2:2:2-4\",\"2:3:2-6\",\"3:1:4-2:2\",\"3:2:3-8\",\"3:3:5-11\",\"4:1:1-2\",\"4:1:4-2:3\",\"4:3:3-7\",\"4:4:3-6\",\"4:5:2-7:3\",\"4:7:6-10\",\"4:8:1-4\",\"5:1:1-2\",\"5:1:4-8\",\"5:1:10-12\",\"5:1:14-2:3\",\"5:2:3-4\",\"5:2:6-3:2\",\"6:1:1-5\",\"6:1:10\",\"6:2:2\",\"6:2:5-3:3\",\"7:1:3-7\",\"7:1:10-12\",\"7:2:2-6\",\"7:3:4-6\",\"8:1:2\",\"8:1:3\",\"8:1:6-9\",\"8:2:2-3:6\",\"8:3:15-21\",\"8:3:29-36\",\"8:4:3-4\",\"8:4:6-7\",\"8:4:11-15\",\"9:1:11-14\",\"9:2:1-3\",\"9:2:7-3:4\",\"10:1:6-2:2\",\"10:2:6-4:2\",\"10:5:2-6:1\",\"10:6:4-12\",\"11:1:6-2:4\",\"11:2:7-3:3\",\"11:4:5-9\",\"11:5:2-5\",\"11:5:12-13\"];const Maasrot=[\"1:1:1-3\",\"1:1:5-9\",\"1:2:5-13\",\"1:3:4-4:2\",\"1:4:6-7\",\"1:4:10-5:3\",\"2:1:1-4\",\"2:1:6-8\",\"2:1:9-2:2\",\"2:3:2-4\",\"2:3:8-4:5\",\"2:4:10-14\",\"3:1:3-4\",\"3:1:6-10\",\"3:1:12-2:1\",\"3:2:4-3:2\",\"3:4:1-7\",\"3:4:10-14\",\"4:1:5-2:3\",\"4:3:1-4:4\",\"5:1:1-3\",\"5:1:5-7\",\"5:2:1-5\",\"5:2:6-3:1\",\"5:3:4\",\"5:3:8-11\"];const Challah=[\"1:1:1-3\",\"1:1:9-13\",\"1:1:16-20\",\"1:1:21-25\",\"1:1:27-2:2\",\"1:3:4-7\",\"1:3:12-16\",\"1:4:2-5:1\",\"1:5:6-6:1\",\"2:1:1-3\",\"2:1:5-7\",\"2:1:8-12\",\"2:2:1-3:2\",\"2:3:4-7\",\"3:1:2-5\",\"3:1:8\",\"3:2:2-4:2\",\"3:4:6-7\",\"3:5:2-3\",\"3:5:4-5\",\"3:5:8-9\",\"3:5:11-13\",\"4:1:4-2:2\",\"4:2:5-3:2\",\"4:3:4-4:1\",\"4:4:5-6\",\"4:4:9-15\",\"4:5:1-7\"];const Orlah=[\"1:1:1-6\",\"1:1:10-14\",\"1:1:18-2:2\",\"1:2:7-9\",\"1:3:3-6\",\"1:3:9-13\",\"1:4:1-6\",\"1:5:2-9\",\"2:1:4-6\",\"2:1:10-14\",\"2:1:19-21\",\"2:2:2\",\"2:3:5-4:2\",\"2:4:5-5:4\",\"2:6:2-7:4\",\"2:9:1-4\",\"3:1:6-12\",\"3:1:16-2:3\",\"3:3:1-5:2\",\"3:6:4-7:7\"];const Bikkurim=[\"1:1:1-4\",\"1:2:2-3\",\"1:3:6-4:3\",\"1:5:5-8\",\"1:6:4-7:1\",\"1:8:1-9:3\",\"2:1:9-15\",\"2:2:2-8\",\"2:2:10-3:2\",\"2:4:2-6:2\",\"3:1:4-3:8\",\"3:3:20-4:10\",\"3:6:1-4\"];const Shabbat=[\"1:1:1-2\",\"1:1:3-7\",\"1:1:9-10\",\"1:1:14-17\",\"1:1:20-23\",\"1:1:26-2:2\",\"1:2:6-11\",\"1:3:3-7\",\"1:3:11-4:4\",\"1:4:6-9\",\"1:4:15-5:1\",\"1:5:4-7:3\",\"1:8:3-10:2\",\"1:11:2-8\",\"2:1:9-13\",\"2:1:17-2:1\",\"2:3:3-6\",\"2:5:1-6\",\"2:5:8-6:1\",\"2:6:9-7:3\",\"3:1:1-8\",\"3:1:10-13\",\"3:3:2-6\",\"3:3:8-14\",\"3:4:4-6:2\",\"3:7:2-6\",\"3:7:9-13\",\"4:1:1-2\",\"4:1:3-7\",\"4:2:4-9\",\"5:1:1-7\",\"5:2:5-4:2\",\"6:1:1-2\",\"6:1:7-10\",\"6:2:2-8\",\"6:2:11-3:2\",\"6:4:4-5:3\",\"6:6:2-8:2\",\"6:9:6-14\",\"7:1:1-3\",\"7:1:4-6\",\"7:1:7-9\",\"7:1:12-15\",\"7:2:1-6\",\"7:2:9-12\",\"7:2:14-16\",\"7:2:17-19\",\"7:2:20-22\",\"7:2:27-32\",\"7:2:35-37\",\"7:2:41-45\",\"7:2:49-54\",\"7:2:59-4:2\",\"8:1:1-5\",\"8:1:9-2:3\",\"8:3:5-6:1\",\"9:1:1-2\",\"9:1:4\",\"9:2:3-3:2\",\"9:3:4-4:2\",\"9:6:2-7:7\",\"10:2:1-3\",\"10:4:2-5:2\",\"10:5:4-6:2\",\"11:1:3-7\",\"11:2:3-3:2\",\"11:5:2-6\",\"12:1:1-4\",\"12:1:7-3:2\",\"12:3:5-4:3\",\"13:1:1-2\",\"13:1:4-3:3\",\"13:5:1-3\",\"14:1:1-2\",\"14:2:3-3:5\",\"14:4:2-6\",\"15:1:1-2\",\"15:2:3-3:3\",\"16:1:2-4\",\"16:1:9-3:3\",\"16:5:1-7:2\",\"17:1:1-6\",\"17:2:4-5:1\",\"18:1:1-5\",\"18:1:6-2:1\",\"19:1:1-3\",\"19:1:8-2:1\",\"19:3:1-4:2\",\"19:4:2-5:2\",\"19:5:2-6:3\",\"20:1:4-3:2\",\"23:1:1\"];const Eruvin=[\"1:1:1-2\",\"1:1:2-4\",\"1:1:7-9\",\"1:1:12-13\",\"1:1:14-18\",\"1:1:22-26\",\"1:2:3-3:4\",\"1:4:4-5:4\",\"1:6:3-6\",\"1:7:4-8:3\",\"1:9:3-5\",\"1:10:2-3\",\"1:10:5-6\",\"2:1:3-4\",\"2:1:6-8\",\"2:2:2-4:2\",\"2:5:2-6:1\",\"3:1:1-2\",\"3:1:5-7\",\"3:1:10-2:3\",\"3:3:1-2\",\"3:3:4-4:1\",\"3:4:4-5\",\"3:5:2-4\",\"3:7:1-3\",\"3:8:3-9:3\",\"4:1:2-4\",\"4:1:7-3:3\",\"4:5:3-7:1\",\"4:9:2-10:2\",\"5:1:4-5\",\"5:1:10-13\",\"5:1:15-17\",\"5:2:1-3\",\"5:3:3-4:2\",\"5:5:2-7:1\",\"5:7:4-8:2\",\"6:1:1-2:2\",\"6:2:5-3:2\",\"6:4:1-4\",\"6:5:2-6:3\",\"6:7:2-3\",\"6:8:2-6\",\"6:8:8-10:1\",\"7:1:1-3\",\"7:1:5-2:1\",\"7:2:4-3:1\",\"7:5:1-6:1\",\"7:6:3-7:2\",\"7:10:1-4\",\"8:1:2-2:3\",\"8:3:3-7\",\"8:4:3-6:4\",\"8:8:1-3\",\"8:8:6-9:2\",\"9:1:1-3\",\"9:1:8-3:2\",\"9:4:4-5:3\",\"10:1:3-6\",\"10:2:1-3:2\",\"10:5:1-6:2\",\"10:7:1-8:4\",\"10:9:2-10:3\",\"10:12:2-13:3\",\"10:14:2-5\"];const Pesachim=[\"1:1:1-4\",\"1:1:9-12\",\"1:1:17-2:2\",\"1:3:4-4:4\",\"1:4:6-5:2\",\"1:5:5-6:2\",\"1:7:2-8:2\",\"1:8:3-6\",\"1:8:7-9\",\"1:8:12-13\",\"2:1:4-7\",\"2:1:11-16\",\"2:2:2-9\",\"2:2:12-13\",\"2:2:16-3:1\",\"2:3:4-6\",\"2:4:4-9\",\"2:4:10-5:4\",\"2:7:3-6\",\"3:1:11-12\",\"3:2:3-3:2\",\"3:3:5-9\",\"3:4:3-6:3\",\"3:7:4-8:3\",\"4:1:1-4\",\"4:1:10-13\",\"4:3:2-5\",\"4:4:1-4\",\"4:8:1-9:1\",\"4:9:5-9\",\"5:1:2-6\",\"5:2:1-6\",\"5:2:8-10\",\"5:3:1-3\",\"5:3:7-4:1\",\"5:4:5-9\",\"5:4:12-6:1\",\"5:7:2-8:3\",\"6:1:1-4\",\"6:1:8-13\",\"6:1:15-19\",\"6:2:2-3:3\",\"6:4:4-5:2\",\"6:5:4-5\",\"6:5:5-6:2\",\"7:1:1-5\",\"7:1:7-2:3\",\"7:2:8-4:3\",\"7:5:4-6\",\"7:6:2\",\"7:6:5-7:4\",\"7:7:5-8\",\"7:8:2-9:3\",\"7:10:1-2\",\"7:11:2-5\",\"7:12:2-13:2\",\"7:13:4-7\",\"8:1:2-5\",\"8:1:7-10\",\"8:3:2-3\",\"8:4:3-5:2\",\"8:6:4-8:3\",\"8:8:6-9\",\"9:1:4-2:1\",\"9:3:2-4:3\",\"9:6:1-6\",\"9:7:1-9:1\",\"10:1:1-2\",\"10:1:7-14\",\"10:3:1-4:1\",\"10:5:4-7:1\"];const Beitzah=[\"1:1:1-3\",\"1:1:5-7\",\"1:1:9-11\",\"1:3:2-3\",\"1:3:5-4:2\",\"1:5:1-4\",\"1:6:3-8:1\",\"1:9:3-10:3\",\"1:11:2-12:4\",\"2:1:3-7\",\"2:3:2-4:5\",\"2:6:1-8:1\",\"3:1:1-2\",\"3:3:1-4:2\",\"3:5:1-6:3\",\"4:1:1-2\",\"4:1:6-3:1\",\"4:3:10-4:5\",\"5:1:1-6\",\"5:2:2-7\",\"5:2:12-16\",\"5:4:3-7:2\"];const Yoma=[\"1:1:1-4\",\"1:1:5-8\",\"1:1:11-13\",\"1:1:13-16\",\"1:1:20-25\",\"1:2:2-5\",\"1:4:1-5:5\",\"2:1:1-3\",\"2:1:5-8\",\"2:1:10-16\",\"2:2:2-3\",\"2:2:4-8\",\"2:4:1-4\",\"3:2:1-3:1\",\"3:3:4-4:3\",\"3:5:3-6:2\",\"3:6:4-6\",\"3:7:1-5\",\"3:8:3-9\",\"4:1:1-4\",\"4:1:7-9\",\"4:2:1-3:4\",\"4:4:9-5:5\",\"4:6:3-6\",\"5:1:3-5\",\"5:1:7-9\",\"5:2:2-4:1\",\"5:4:5-8\",\"5:5:1-2\",\"5:6:3-7\",\"5:6:9-7:2\",\"6:1:1-7\",\"6:1:13-3:2\",\"6:4:1-5:2\",\"6:6:3-5\",\"6:6:7-7:1\",\"7:1:4-2:3\",\"7:3:2-6\",\"8:1:3-9\",\"8:3:2-11\",\"8:3:15-5:2\",\"8:6:3-7:4\"];const Sukkah=[\"1:1:1-2\",\"1:1:4-5\",\"1:1:7-10\",\"1:1:14-2:1\",\"1:3:2-4:3\",\"1:5:4-7:2\",\"1:8:2-10:2\",\"2:1:1-2\",\"2:2:2-4:2\",\"2:4:5-5:6\",\"2:7:2-8:3\",\"3:1:1-4\",\"3:1:8-3:2\",\"3:4:2-3\",\"3:6:2-7:2\",\"3:9:2-10:4\",\"3:11:2-12:1\",\"4:1:2-2:2\",\"4:3:4-4:2\",\"4:5:4-6:2\",\"4:6:5-6\",\"5:1:1-2\",\"5:1:3-2:2\",\"5:3:4-5:1\",\"5:6:2-7:1\",\"5:8:1-6\"];const Taanit=[\"1:1:1-2\",\"1:1:5-9\",\"1:1:13-17\",\"1:2:4-3:3\",\"1:3:8-4:6\",\"1:5:1-6:4\",\"1:6:9-8:2\",\"2:1:2-8\",\"2:1:13-2:3\",\"2:2:11-3:2\",\"2:6:2-10:1\",\"2:11:4-12:3\",\"2:13:2-14:2\",\"3:1:3-3:1\",\"3:4:3-5:2\",\"3:7:1-9:3\",\"3:10:3-11:4\",\"4:1:2-6\",\"4:1:10-15\",\"4:2:3-8\",\"4:2:14-3:2\",\"4:3:4-4:2\",\"4:5:2-6\",\"4:5:9-13\",\"4:5:16-22\",\"4:6:4-7:2\"];const Shekalim=[\"1:1:1-4\",\"1:1:6-8\",\"1:1:14-2:3\",\"1:3:1-4\",\"1:4:1-4\",\"1:4:5-7\",\"1:4:7\",\"2:1:3-2:1\",\"2:2:4-3:2\",\"2:4:1-3\",\"2:5:3-6\",\"3:1:3-4\",\"3:2:2-6\",\"3:2:10-3:4\",\"4:1:1-3\",\"4:2:1-3\",\"4:2:6-3:1\",\"4:3:3-4:1\",\"4:4:2-5\",\"4:4:6-10\",\"5:1:1-6\",\"5:1:12-21\",\"5:3:1-4:1\",\"6:1:1-5\",\"6:1:9-14\",\"6:2:3-7\",\"6:3:3-4:2\",\"6:4:5-7\",\"7:1:3-2:6\",\"7:3:1-3\",\"7:3:8-10\",\"8:1:2-2:1\",\"8:3:2-4:4\"];const Megillah=[\"1:1:1-2\",\"1:1:4\",\"1:1:8-10\",\"1:3:2-3\",\"1:4:2-6\",\"1:4:9-12\",\"1:5:3-7\",\"1:6:3-5\",\"1:7:3-8:3\",\"1:8:4-9:4\",\"1:9:6-9\",\"1:9:10-12\",\"1:9:17-10:1\",\"1:10:4-8\",\"1:11:3-5\",\"1:11:6-7\",\"1:12:3-4\",\"2:1:1-3\",\"2:2:1-6\",\"2:3:2-4:4\",\"2:5:2-6:1\",\"2:7:2-5\",\"3:1:3-5\",\"3:1:10-2:5\",\"3:3:1-4:3\",\"3:5:3-7:1\",\"3:7:3-6\",\"4:1:4-8\",\"4:1:11-13\",\"4:2:2-4:1\",\"4:4:6-5:2\",\"4:5:6-7:2\",\"4:10:3-11:2\",\"4:12:3-6\"];const Chagigah=[\"1:1:1-3\",\"1:1:8-9\",\"1:1:9-18\",\"1:1:20-2:3\",\"1:2:4-4:2\",\"1:6:2-7:3\",\"1:8:4-10\",\"2:1:1-2\",\"2:1:6-9\",\"2:1:11-15\",\"2:2:4-6\",\"2:3:3-4:3\",\"2:5:2-5\",\"2:6:3-7:3\",\"3:1:1-3\",\"3:1:4-7\",\"3:2:4-5\",\"3:2:7\",\"3:2:10-3:3\",\"3:4:1-3\",\"3:5:1-7:1\",\"3:8:2-4\"];const Yevamot=[\"1:1:1-6\",\"1:1:7-10\",\"1:1:14-17\",\"1:1:18-20\",\"1:1:21-24\",\"1:2:2-5\",\"1:2:10-5:2\",\"1:6:2-5\",\"1:6:8-9\",\"2:1:6-2:3\",\"2:2:4-3:1\",\"2:4:2-7\",\"2:4:10-6:5\",\"2:8:3-10:3\",\"2:11:2-12:2\",\"3:1:3-4\",\"3:1:5-6\",\"3:1:8-10\",\"3:2:1-3:2\",\"3:3:4-4:3\",\"3:8:2-9:4\",\"4:1:1-2\",\"4:1:4-6\",\"4:2:3-4\",\"4:2:7-4:2\",\"4:7:3-8:3\",\"4:11:1-4\",\"4:11:6-8\",\"4:12:3-15:3\",\"5:1:1-5\",\"5:1:7-10\",\"5:2:3-4:1\",\"5:4:3-6:1\",\"5:8:1-2\",\"6:1:3-7\",\"6:3:1-2\",\"6:4:5-5:2\",\"6:6:3-6\",\"7:1:3-4\",\"7:1:8-3:2\",\"7:3:3-5\",\"7:4:2-5:4\",\"8:1:1-2\",\"8:1:6-8\",\"8:1:12-15\",\"8:1:18-2:2\",\"8:2:4-6\",\"8:2:9-12\",\"8:3:5-8\",\"8:4:1-6:2\",\"9:1:1-2:2\",\"9:4:4-5:1\",\"10:1:1-2\",\"10:1:5-11\",\"10:1:12-2:2\",\"10:3:2-4\",\"10:5:3-6:4\",\"10:6:7-7:3\",\"10:7:6-8\",\"11:1:1-2\",\"11:1:5-7\",\"11:1:11-2:2\",\"11:2:6-3:1\",\"11:5:5-6:3\",\"11:7:3-8\",\"12:1:8-14\",\"12:1:17-2:4\",\"12:2:6-4:2\",\"12:6:1-6\",\"13:1:2-6\",\"13:1:13-2:6\",\"13:2:8-9\",\"13:6:1-4\",\"13:7:3-8:2\",\"13:14:1-3\",\"14:1:4-2:3\",\"15:1:1-4\",\"15:2:2-3:7\",\"15:3:9-4:4\",\"15:5:2-4\",\"15:8:2-9:3\",\"16:1:2-2:3\",\"16:3:5-4:2\",\"16:5:5-6:4\",\"16:9:2\"];const Ketubot=[\"1:1:1-4\",\"1:1:6-9\",\"1:1:14-17\",\"1:2:5-3:1\",\"1:3:5-4:5\",\"1:5:3-6:3\",\"1:8:2-9:3\",\"1:10:3-4\",\"2:1:1-4\",\"2:2:1-4\",\"2:2:4-3:3\",\"2:4:5-6\",\"2:5:4-7:2\",\"2:7:4-9:4\",\"2:10:3-8\",\"3:1:4-7\",\"3:1:12-13\",\"3:1:16-18\",\"3:3:3-5:1\",\"3:5:4-6:2\",\"3:6:3-7:2\",\"3:8:1-9:3\",\"4:1:1-4\",\"4:1:6-2:1\",\"4:2:3-3:2\",\"4:4:3-7\",\"4:4:8-9\",\"4:4:12-7:1\",\"4:8:4-12\",\"4:9:1-11:3\",\"4:12:2-14:3\",\"5:1:3-4\",\"5:1:6-2:2\",\"5:3:1-4:1\",\"5:5:2-3\",\"5:5:4-6:3\",\"5:6:5-7:5\",\"5:8:3-10:1\",\"6:1:2-3\",\"6:3:2-4:2\",\"6:5:2-6:3\",\"6:7:1-4\",\"7:1:1-3\",\"7:2:1-5:1\",\"7:6:6-7\",\"7:7:3-5\",\"7:8:2-9:3\",\"8:2:2-4:2\",\"8:6:2-9:1\",\"8:10:3\",\"9:1:1-2\",\"9:1:5-7\",\"9:1:12\",\"9:3:1-4:2\",\"9:5:3-6:2\",\"9:7:6-8:1\",\"9:9:1-10:1\",\"10:1:1-6\",\"10:2:3-4:1\",\"10:4:4-5:2\",\"11:1:1-5\",\"11:2:4-3:2\",\"11:4:2-6:2\",\"11:7:1-8\",\"12:2:2-3:3\",\"12:3:8-10\",\"12:3:14-5:2\",\"13:1:2-5\",\"13:2:3-3:1\",\"13:3:4-4:3\",\"13:7:1-8:2\",\"13:10:2-11:3\"];const Sotah=[\"1:1:1-6\",\"1:1:9-10\",\"1:2:1-5\",\"1:2:7-10\",\"1:3:2-4:3\",\"1:5:1-6:1\",\"1:7:4-8:5\",\"1:8:11-10:4\",\"2:1:2-4\",\"2:1:9-2:5\",\"2:2:9-4:1\",\"2:5:1-5\",\"2:5:6-6:1\",\"3:1:4-2:1\",\"3:3:2-4:1\",\"3:4:6-11\",\"3:5:3-6:5\",\"3:6:6-8:2\",\"4:1:3-2:2\",\"4:4:1-5:3\",\"5:1:5\",\"5:2:3-5\",\"5:2:6-8\",\"5:2:11-3:2\",\"5:4:3-5:6\",\"6:1:1-2\",\"6:2:4-3:1\",\"6:3:2-4:4\",\"7:1:1-5\",\"7:2:2-3:2\",\"7:4:4-7\",\"7:4:9-5:3\",\"7:5:6-6:3\",\"8:1:1-2\",\"8:2:2-3:3\",\"8:3:6-9\",\"8:3:12-4:3\",\"8:5:5-8:1\",\"8:9:2-10:1\",\"9:1:2-6\",\"9:2:1-7\",\"9:4:2-5:4\",\"9:5:7-6:3\",\"9:8:1-11:2\",\"9:11:8-13:2\",\"9:14:1-15:6\",\"9:16:1-4\"];const Nedarim=[\"1:1:1-3\",\"1:1:7-10\",\"1:1:14-2:2\",\"1:3:1-9\",\"2:1:1-2\",\"2:2:2-3:2\",\"2:4:2-4\",\"3:1:2-4\",\"3:2:1-5\",\"3:2:9-3:2\",\"3:4:3-5:3\",\"3:7:1-9:1\",\"4:1:1-3\",\"4:2:4-3:3\",\"4:5:2-7:2\",\"4:10:2-3\",\"5:1:1-2\",\"5:1:5-3:3\",\"5:5:1-6:1\",\"6:1:2-2:2\",\"6:4:2-3\",\"6:8:1-6\",\"6:8:10-14\",\"7:1:1-5\",\"7:3:2-6:2\",\"8:1:1-5\",\"8:2:2-4:2\",\"8:6:1-7:3\",\"9:1:2-6\",\"9:2:3-4:2\",\"9:5:2-8:1\",\"10:1:3-4\",\"10:2:3-4:2\",\"10:6:1-7:2\",\"10:8:4-9\",\"11:1:2-4\",\"11:1:8-2:3\",\"11:3:5-4:3\",\"11:7:1-11:1\",\"11:12:6\"];const Nazir=[\"1:1:1-3\",\"1:1:7-9\",\"1:2:5-7\",\"1:2:9-3:2\",\"2:1:1-2\",\"2:1:4-2:2\",\"2:4:1-5:1\",\"2:5:3-7:2\",\"2:9:1-2\",\"2:10:2-3\",\"3:1:1-3\",\"3:2:2\",\"3:4:1-2\",\"3:5:3-5\",\"3:5:7-6:1\",\"4:1:1-2\",\"4:2:2-3:5\",\"4:4:3-7\",\"4:5:1-6:1\",\"5:1:1-3\",\"5:1:6-7\",\"5:1:9-12\",\"5:2:3-3:3\",\"6:1:1-2\",\"6:1:4-6\",\"6:1:7-9\",\"6:1:11-14\",\"6:2:5-3:2\",\"6:3:5-4:3\",\"6:6:2-7:2\",\"6:9:1-5\",\"6:9:9-11:2\",\"7:1:2-6\",\"7:1:11-20\",\"7:2:1-4\",\"7:2:7-11\",\"7:3:4-6\",\"7:4:2-3\",\"8:1:2-3\",\"8:1:5-9\",\"8:2:2-8\",\"9:1:1-3\",\"9:1:4-6\",\"9:2:3-6\",\"9:2:10-3:2\",\"9:3:7-4:2\",\"9:5:2-6:1\"];const Gittin=[\"1:1:1-3\",\"1:1:3-4\",\"1:1:5-6\",\"1:1:7-8\",\"1:2:2-5\",\"1:3:2-4:1\",\"1:4:3-5\",\"1:5:2-4\",\"2:1:1-2\",\"2:1:4-6\",\"2:2:2-3:1\",\"2:3:3-7\",\"2:3:8-4:3\",\"2:6:1-7:3\",\"3:1:3-6\",\"3:2:2-3:1\",\"3:4:1-5:3\",\"3:6:3-7:2\",\"3:8:1-4\",\"4:1:2-2:3\",\"4:2:5-3:1\",\"4:3:4-4:2\",\"4:4:5-6\",\"4:4:7-6:2\",\"4:7:1-8:3\",\"5:1:1-5\",\"5:1:7-11\",\"5:3:3-6\",\"5:4:1-4\",\"5:5:2-4\",\"5:6:4-7:2\",\"5:7:5-9:2\",\"5:9:6-10:3\",\"6:1:1-5\",\"6:1:6-9\",\"6:2:3-4\",\"6:4:2-5:4\",\"6:6:2-7:2\",\"7:1:3-7\",\"7:1:10-3:2\",\"7:3:4-6\",\"7:4:2-5\",\"7:5:1-6:3\",\"8:1:1-3\",\"8:1:3-2:1\",\"8:3:3-9\",\"8:4:3-6:2\",\"8:8:2-10:2\",\"8:10:4-6\",\"9:1:4-6\",\"9:3:2-5\",\"9:5:2-6:2\",\"9:7:2-4\",\"9:8:5-11:1\"];const Kiddushin=[\"1:1:1-7\",\"1:1:13-18\",\"1:1:18-19\",\"1:1:21-25\",\"1:1:30-2:1\",\"1:2:3-6\",\"1:2:7\",\"1:2:10-13\",\"1:2:15-20\",\"1:2:23-24\",\"1:2:27-29\",\"1:3:1-6\",\"1:3:8-11\",\"1:3:13-4:3\",\"1:4:6-9\",\"1:4:11-5:3\",\"1:5:8-11\",\"1:5:14-6:3\",\"1:6:4-7:2\",\"1:7:4-8\",\"1:7:14-18\",\"1:8:2-6\",\"2:1:1-2\",\"2:1:5-8\",\"2:1:10-11\",\"2:1:14-2:1\",\"2:4:2-5\",\"2:5:2-6:3\",\"2:7:4-7\",\"2:7:9-8:3\",\"3:1:1-4\",\"3:1:6-8\",\"3:1:11-2:1\",\"3:2:5-6\",\"3:3:2-3\",\"3:4:4-7\",\"3:5:3-7\",\"3:6:3-8:1\",\"3:8:4-10:1\",\"3:12:1-5\",\"3:12:9-13:3\",\"4:1:4-7\",\"4:1:8-12\",\"4:2:3-3:3\",\"4:4:2-5:1\",\"4:6:3-7:1\",\"4:8:1-11:1\",\"4:11:3-12:2\"];const Shevuot=[\"1:1:1-2\",\"1:1:3-5\",\"1:1:5-2:1\",\"1:2:3-7\",\"1:3:2-4:2\",\"1:4:3-5\",\"1:6:3-8\",\"1:7:2-3\",\"2:1:4-7\",\"2:1:9-11\",\"2:3:2-5:1\",\"3:1:2-3\",\"3:2:2-3:2\",\"3:4:2-4\",\"3:4:8-5:2\",\"3:5:3-7:2\",\"3:7:7-8:4\",\"3:8:9-9:5\",\"4:1:1-20\",\"4:2:3-3:1\",\"4:3:4-5:2\",\"4:7:1-9:2\",\"5:1:1-2\",\"5:1:4-2:4\",\"5:3:4-4:2\",\"5:4:4\",\"5:5:1-6:1\",\"6:1:2-4\",\"6:1:7-2:4\",\"6:3:2-4:2\",\"6:5:1-3\",\"6:6:3-7:2\",\"6:8:4\",\"7:1:3-4\",\"7:1:6-8\",\"7:2:4-4:2\",\"7:5:4-6:2\",\"7:7:2-4\",\"7:7:9-8:3\",\"8:1:2-5\",\"8:1:9\",\"8:1:12-2:3\",\"8:3:2-4\",\"8:3:5-6\"];const Makkot=[\"1:1:1-4\",\"1:2:2-4\",\"1:3:2-4:2\",\"1:6:2-7:3\",\"2:1:1-3:1\",\"2:5:1-6:1\",\"2:6:7-11\",\"3:1:1-3:1\",\"3:7:1-11:1\"];const Sanhedrin=[\"1:1:1-6\",\"1:1:11-17\",\"1:1:29-2:1\",\"1:2:8-13\",\"1:2:19-26\",\"1:2:33-38\",\"1:2:45-3:4\",\"1:3:7-4:2\",\"1:4:7-10\",\"2:1:3-6\",\"2:2:4-3:7\",\"2:4:2-5:3\",\"2:6:4-12\",\"3:2:1-3:2\",\"3:4:2-5:4\",\"3:5:7-11\",\"3:6:3-7:1\",\"3:9:1-11\",\"3:9:19-21\",\"3:10:2-12:1\",\"4:1:2-2:2\",\"4:5:2-7:1\",\"4:7:6-9:1\",\"5:1:1-8\",\"5:2:3-4\",\"5:3:4-4:2\",\"6:1:1-2\",\"6:3:2-5:2\",\"6:6:5-7:3\",\"7:1:1-2\",\"7:1:4-2:4\",\"7:5:2-3\",\"7:5:5-6\",\"7:6:3-5\",\"7:6:6-7:1\",\"7:7:4-8:2\",\"7:8:7-9:3\",\"7:9:7-10:2\",\"7:10:4-8\",\"7:11:2-12:1\",\"7:13:3-7\",\"8:2:4-3:4\",\"8:6:5-7:1\",\"8:8:3-9:3\",\"9:1:5-9\",\"9:1:14-2:1\",\"9:3:2-3\",\"9:5:1-6:3\",\"10:1:1-8\",\"10:1:13-22\",\"10:2:3-7\",\"10:2:15-19\",\"10:2:23-4:2\",\"10:6:1-7:2\",\"11:1:2-3:2\",\"11:4:3-4\",\"11:5:4-6:2\"];const Horayot=[\"1:1:1-3\",\"1:1:4-7\",\"1:1:8-2:1\",\"1:2:3-5\",\"1:2:8-3:3\",\"1:4:2-6:2\",\"1:6:2-8:2\",\"2:1:1-2\",\"2:2:2-4:2\",\"2:4:2-5:4\",\"2:7:1-3\",\"3:1:2-2:3\",\"3:2:7-11\",\"3:2:11-13\",\"3:2:15-19\",\"3:2:25-30\",\"3:2:35-3:4\",\"3:4:3-9\",\"3:5:7-9\"];const Niddah=[\"1:1:1-4\",\"1:1:7-2:2\",\"1:3:4-7\",\"1:4:5-5:2\",\"1:5:4-6:2\",\"2:1:1-5\",\"2:2:3-4:2\",\"2:6:1-7:2\",\"3:1:1-2:1\",\"3:2:5-9\",\"3:4:1-5\",\"3:4:7-5:3\"];var vilnaMap = {Berakhot:Berakhot,Peah:Peah,Demai:Demai,Kilayim:Kilayim,Sheviit:Sheviit,Terumot:Terumot,Maasrot:Maasrot,\"Maaser Sheni\":[\"1:1:1-3\",\"1:1:5-10\",\"1:1:13-16\",\"1:1:19-20\",\"1:2:2-5\",\"1:2:8-3:1\",\"1:3:2-4\",\"2:1:1-2\",\"2:1:8-10\",\"2:1:14-16\",\"2:2:3-6\",\"2:3:2-6\",\"2:3:9-4:1\",\"3:1:1-4\",\"3:2:2-5\",\"3:2:6-3:1\",\"3:3:7-9\",\"3:4:3-5:3\",\"3:5:7-6:4\",\"3:6:5-9\",\"4:1:4-7\",\"4:1:10-2:3\",\"4:2:7-3:4\",\"4:3:8-4:2\",\"4:4:6-5:1\",\"4:5:2-6:1\",\"4:6:5-9\",\"5:1:1-4\",\"5:1:10-2:1\",\"5:2:9-3:1\",\"5:3:5-9\",\"5:4:5-5:1\",\"5:5:8-12\"],Challah:Challah,Orlah:Orlah,Bikkurim:Bikkurim,Shabbat:Shabbat,Eruvin:Eruvin,Pesachim:Pesachim,Beitzah:Beitzah,\"Rosh Hashanah\":[\"1:1:1-2\",\"1:1:3-5\",\"1:1:8\",\"1:1:10-11\",\"1:1:12-15\",\"1:2:1-4\",\"1:2:6-3:4\",\"1:3:6-4:3\",\"1:7:1-6\",\"1:8:4\",\"2:1:3-7\",\"2:1:8-4:1\",\"2:4:6-5:3\",\"2:6:1-8:4\",\"3:1:3-5\",\"3:1:10-3:4\",\"3:5:4-6:2\",\"4:1:1-2\",\"4:2:2-4:2\",\"4:6:3-7:3\",\"4:8:3-10:2\",\"4:10:5\"],Yoma:Yoma,Sukkah:Sukkah,Taanit:Taanit,Shekalim:Shekalim,Megillah:Megillah,Chagigah:Chagigah,\"Moed Katan\":[\"1:1:1-2\",\"1:1:4-2:2\",\"1:2:3-3:1\",\"1:4:4-5:2\",\"1:5:2-4\",\"1:7:2-8:1\",\"1:9:2-10:5\",\"2:1:5-2:3\",\"2:3:3-4:3\",\"3:1:1-6\",\"3:1:10-14\",\"3:1:16-3:1\",\"3:5:1-4\",\"3:5:6-10\",\"3:5:14-16\",\"3:5:19-23\",\"3:6:1-7:5\",\"3:7:12-17\",\"3:8:3-9:2\"],Yevamot:Yevamot,Ketubot:Ketubot,Sotah:Sotah,Nedarim:Nedarim,Nazir:Nazir,Gittin:Gittin,Kiddushin:Kiddushin,\"Bava Kamma\":[\"1:1:1\",\"1:1:3-7\",\"1:1:8\",\"1:1:10-2:2\",\"1:2:3-4\",\"1:2:5-3:1\",\"2:1:1-2\",\"2:1:5-2:2\",\"2:2:2-3:2\",\"2:4:2-5:3\",\"2:5:3-6:3\",\"3:1:2-4\",\"3:1:7-2:2\",\"3:3:4-4:4\",\"3:4:5-5:2\",\"3:6:2-9:1\",\"3:10:1-11:2\",\"4:1:2-5\",\"4:1:6-2:3\",\"4:4:3-5\",\"4:5:2-3\",\"4:5:3-6:3\",\"5:1:1-2\",\"5:2:1-5:1\",\"5:6:1-7:1\",\"5:7:6-8:3\",\"6:1:3-2:4\",\"6:2:5-4:2\",\"6:5:2-7:2\",\"7:1:1-2\",\"7:2:1-3:2\",\"7:3:2-4:1\",\"7:4:3-5:2\",\"8:1:1-4\",\"8:2:2-3:3\",\"8:5:1-6:1\",\"8:8:1-2\",\"9:1:3-3:1\",\"9:5:1-4\",\"9:5:5-6:2\",\"9:8:1-9:2\",\"10:1:1-2\",\"10:1:5-2:3\",\"10:6:1-8:2\"],\"Bava Metzia\":[\"1:1:1-2\",\"1:1:3-3:2\",\"1:4:2\",\"1:5:1-6:2\",\"1:6:3-7:3\",\"2:1:1-3\",\"2:3:2-4:3\",\"2:5:2-7\",\"2:8:2-10:2\",\"3:1:1-2\",\"3:2:1-3:2\",\"3:4:2-6:2\",\"3:7:1-9:3\",\"4:1:2-5\",\"4:2:1-4\",\"4:2:7-3:2\",\"4:3:4-5:1\",\"4:6:1-7:2\",\"5:1:3-7\",\"5:2:2-3:1\",\"5:3:7-8\",\"5:4:7-5:4\",\"5:5:9-6:2\",\"5:6:4-7:1\",\"6:1:1-3\",\"6:2:2-3:3\",\"6:4:2-6:2\",\"7:1:4-3:1\",\"7:6:1-7:2\",\"8:2:1-3:2\",\"8:4:2-7:1\",\"9:1:1-3:1\",\"9:5:2-7:2\",\"9:8:2-10:2\",\"9:12:2-13:2\",\"10:2:1-4:1\",\"10:5:2-6:3\"],\"Bava Batra\":[\"1:1:1-2\",\"1:3:2-4:2\",\"1:5:3-6\",\"2:1:4-2:2\",\"2:3:5-4:2\",\"2:5:2-7:1\",\"2:10:1-11:2\",\"3:1:3-5\",\"3:1:6-3:2\",\"3:4:1-5:1\",\"3:5:6-8:1\",\"3:8:4-10:2\",\"4:1:1-2:1\",\"4:4:2-8:1\",\"4:8:4\",\"5:1:3-4\",\"5:1:7-4:1\",\"6:1:1-2\",\"6:1:6-2:1\",\"7:1:1-2\",\"7:2:2-4:2\",\"8:1:2-2:1\",\"8:2:7-4:1\",\"8:5:2-3\",\"8:7:1-4\",\"8:8:3-5\",\"9:1:4-5\",\"9:3:1-4:1\",\"9:5:3-6:3\",\"9:7:2-9:1\",\"10:1:6-9\",\"10:4:1-5:1\",\"10:6:4-9:2\",\"10:10:2-4\"],Shevuot:Shevuot,Makkot:Makkot,Sanhedrin:Sanhedrin,\"Avodah Zarah\":[\"1:1:1-3\",\"1:1:8-11\",\"1:2:3-9\",\"1:3:3-4:2\",\"1:4:3-5:1\",\"1:6:1-5\",\"1:7:1-9:1\",\"1:9:5-10:2\",\"2:1:2-5\",\"2:1:11-2:4\",\"2:2:9-14\",\"2:3:7-15\",\"2:3:19-4:3\",\"2:4:10-7:1\",\"2:7:3-10\",\"2:8:4-10\",\"2:9:2-4\",\"3:1:1-9\",\"3:2:2-3:3\",\"3:4:2-5:3\",\"3:5:5-8\",\"3:6:2-4\",\"3:6:4-7:2\",\"3:8:4-11:2\",\"4:1:1-3\",\"4:1:7-3:1\",\"4:4:4-9\",\"4:5:2-7:3\",\"4:8:3-9:1\",\"4:10:1-11:2\",\"5:1:1-3\",\"5:1:5-3:1\",\"5:3:5-4:3\",\"5:4:8-7:1\",\"5:8:3-10:4\",\"5:11:4-12:1\",\"5:13:2-15:1\"],Horayot:Horayot,Niddah:Niddah};\n\nconst vilnaStartDate = new Date(1980, 1, 2);\n/**\n * Yerushalmi Yomi configuration for Vilna Edition\n * @readonly\n */\nconst vilna = {\n  ed: 'vilna',\n  startDate: vilnaStartDate,\n  startAbs: greg2abs(vilnaStartDate),\n  skipYK9Av: true,\n  shas: [['Berakhot', 68], ['Peah', 37], ['Demai', 34], ['Kilayim', 44], ['Sheviit', 31], ['Terumot', 59], ['Maasrot', 26], ['Maaser Sheni', 33], ['Challah', 28], ['Orlah', 20], ['Bikkurim', 13], ['Shabbat', 92], ['Eruvin', 65], ['Pesachim', 71], ['Beitzah', 22], ['Rosh Hashanah', 22], ['Yoma', 42], ['Sukkah', 26], ['Taanit', 26], ['Shekalim', 33], ['Megillah', 34], ['Chagigah', 22], ['Moed Katan', 19], ['Yevamot', 85], ['Ketubot', 72], ['Sotah', 47], ['Nedarim', 40], ['Nazir', 47], ['Gittin', 54], ['Kiddushin', 48], ['Bava Kamma', 44], ['Bava Metzia', 37], ['Bava Batra', 34], ['Shevuot', 44], ['Makkot', 9], ['Sanhedrin', 57], ['Avodah Zarah', 37], ['Horayot', 19], ['Niddah', 13]]\n};\nconst schottensteinStartDate = new Date(2022, 10, 14);\n/**\n * Yerushalmi Yomi configuration for Schottenstein Edition\n * @readonly\n */\nconst schottenstein = {\n  ed: 'schottenstein',\n  startDate: schottensteinStartDate,\n  startAbs: greg2abs(schottensteinStartDate),\n  skipYK9Av: false,\n  shas: [['Berakhot', 94], ['Peah', 73], ['Demai', 77], ['Kilayim', 84], ['Sheviit', 87], ['Terumot', 107], ['Maasrot', 46], ['Maaser Sheni', 59], ['Challah', 49], ['Orlah', 42], ['Bikkurim', 26], ['Shabbat', 113], ['Eruvin', 71], ['Pesachim', 86], ['Shekalim', 61], ['Yoma', 57], ['Sukkah', 33], ['Beitzah', 49], ['Rosh Hashanah', 27], ['Taanit', 31], ['Megillah', 41], ['Chagigah', 28], ['Moed Katan', 23], ['Yevamot', 88], ['Ketubot', 77], ['Nedarim', 42], ['Nazir', 53], ['Sotah', 52], ['Gittin', 53], ['Kiddushin', 53], ['Bava Kamma', 40], ['Bava Metzia', 35], ['Bava Batra', 39], ['Sanhedrin', 75], ['Shevuot', 49], ['Avodah Zarah', 34], ['Makkot', 11], ['Horayot', 18], ['Niddah', 11]]\n};\nconst SUN = 0;\nconst SAT$1 = 6;\n\n/**\n * Using the Vilna edition, the Yerushalmi Daf Yomi program takes\n * ~4.25 years or 51 months.\n * Unlike the Daf Yomi Bavli cycle, this Yerushalmi cycle skips both\n * Yom Kippur and Tisha B'Av (returning `null`).\n * The page numbers are according to the Vilna\n * Edition which is used since 1900.\n *\n * The Schottenstein edition uses different page numbers and takes\n * ~6 years to complete.\n *\n * Throws an exception if the date is before Daf Yomi Yerushalmi\n * cycle began (2 February 1980 for Vilna,\n * 14 November 2022 for Schottenstein).\n *\n * @param {HDate|Date|number} date - Hebrew or Gregorian date\n * @param {any} config - either vilna or schottenstein\n * @return {any}\n */\nfunction yerushalmiYomi(date, config) {\n  if (typeof config !== 'object' || !Array.isArray(config.shas)) {\n    throw new Error('invalid yerushalmi config');\n  }\n  const cday = typeof date === 'number' && !isNaN(date) ? date : isDate(date) ? greg2abs(date) : HDate.isHDate(date) ? date.abs() : throwTypeError(`non-date given to dafyomi: ${date}`);\n  const startAbs = config.startAbs;\n  if (cday < startAbs) {\n    throw new RangeError(`Date ${date} too early; Yerushalmi Yomi cycle began on ${config.startDate}`);\n  }\n  const hd = new HDate(cday);\n  // No Daf for Yom Kippur and Tisha B'Av\n  if (config.skipYK9Av && skipDay(hd)) {\n    return null;\n  }\n  const shas = config.shas;\n  let numDapim = 0;\n  for (let j = 0; j < shas.length; j++) {\n    numDapim += shas[j][1];\n  }\n  let prevCycle = startAbs;\n  let nextCycle = startAbs;\n  while (cday >= nextCycle) {\n    prevCycle = nextCycle;\n    nextCycle += numDapim;\n    nextCycle += numSpecialDays(config, prevCycle, nextCycle);\n  }\n  let total = cday - prevCycle - numSpecialDays(config, prevCycle, cday);\n  for (let j = 0; j < shas.length; j++) {\n    const masechet = shas[j];\n    if (total < masechet[1]) {\n      return {\n        name: masechet[0],\n        blatt: total + 1,\n        ed: config.ed\n      };\n    }\n    total -= masechet[1];\n  }\n  throw new Error('Interal error, this code should be unreachable');\n}\n\n/**\n * @private\n * @param {HDate} hd\n * @return {boolean}\n */\nfunction skipDay(hd) {\n  if (hd.getMonth() === months.TISHREI && hd.getDate() === 10 || hd.getMonth() === months.AV && (hd.getDate() === 9 && hd.getDay() !== SAT$1 || hd.getDate() === 10 && hd.getDay() === SUN)) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * @private\n * @param {any} config\n * @param {number} startAbs\n * @param {number} endAbs\n * @return {number}\n */\nfunction numSpecialDays(config, startAbs, endAbs) {\n  if (!config.skipYK9Av) {\n    return 0;\n  }\n  const startYear = new HDate(startAbs).getFullYear();\n  const endYear = new HDate(endAbs).getFullYear();\n  let specialDays = 0;\n  for (let year = startYear; year <= endYear; year++) {\n    const ykAbs = new HDate(10, months.TISHREI, year).abs();\n    if (ykAbs >= startAbs && ykAbs <= endAbs) {\n      specialDays++;\n    }\n    let av9dt = new HDate(9, months.AV, year);\n    if (av9dt.getDay() == SAT$1) {\n      av9dt = av9dt.next();\n    }\n    const av9abs = av9dt.abs();\n    if (av9abs >= startAbs && av9abs <= endAbs) {\n      specialDays++;\n    }\n  }\n  return specialDays;\n}\n\n/**\n * Event wrapper around a Yerushalmi Yomi result\n */\nclass YerushalmiYomiEvent extends Event {\n  /**\n   * @param {HDate} date\n   * @param {any} daf\n   */\n  constructor(date, daf) {\n    super(date, `${daf.name} ${daf.blatt}`, flags.YERUSHALMI_YOMI);\n    this.daf = daf;\n  }\n  /**\n   * Returns name of tractate and page (e.g. \"Yerushalmi Beitzah 21\").\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  render(locale) {\n    const prefix = Locale.gettext('Yerushalmi', locale);\n    return prefix + ' ' + this.renderBrief(locale);\n  }\n  /**\n   * Returns name of tractate and page (e.g. \"Beitzah 21\").\n   * @param {string} [locale] Optional locale name (defaults to active locale).\n   * @return {string}\n   */\n  renderBrief(locale) {\n    locale = locale || Locale.getLocaleName();\n    if (typeof locale === 'string') {\n      locale = locale.toLowerCase();\n    }\n    const name = Locale.gettext(this.daf.name, locale);\n    if (locale === 'he' || locale === 'he-x-nonikud') {\n      return name + ' דף ' + gematriya(this.daf.blatt);\n    }\n    return name + ' ' + this.daf.blatt;\n  }\n  /**\n   * Returns a link to sefaria.org\n   * @return {string}\n   */\n  url() {\n    const daf = this.daf;\n    if (daf.ed !== 'vilna') {\n      return undefined;\n    }\n    const tractate = daf.name;\n    const pageMap = vilnaMap[tractate];\n    if (!Array.isArray(pageMap)) {\n      return undefined;\n    }\n    const idx = daf.blatt - 1;\n    const verses0 = pageMap[idx];\n    if (typeof verses0 !== 'string') {\n      return undefined;\n    }\n    const name0 = 'Jerusalem Talmud ' + tractate;\n    const name = name0.replace(/ /g, '_');\n    const verses = verses0.replace(/:/g, '.');\n    return `https://www.sefaria.org/${name}.${verses}?lang=bi`;\n  }\n}\n\nconst NISAN$1 = months.NISAN;\nconst CHESHVAN = months.CHESHVAN;\nconst KISLEV = months.KISLEV;\nconst TEVET = months.TEVET;\nconst SHVAT = months.SHVAT;\nconst ADAR_I = months.ADAR_I;\nconst ADAR_II = months.ADAR_II;\n\n/**\n * @private\n * @param {number} hyear Hebrew year\n * @param {Date|HDate} gdate Gregorian or Hebrew date of death\n * @return {HDate} anniversary occurring in hyear\n */\nfunction getYahrzeit_(hyear, gdate) {\n  const orig = HDate.isHDate(gdate) ? gdate : new HDate(gdate);\n  let hDeath = {\n    yy: orig.getFullYear(),\n    mm: orig.getMonth(),\n    dd: orig.getDate()\n  };\n  if (hyear <= hDeath.yy) {\n    // `Hebrew year ${hyear} occurs on or before original date in ${hDeath.yy}`\n    return undefined;\n  }\n  if (hDeath.mm == CHESHVAN && hDeath.dd == 30 && !longCheshvan(hDeath.yy + 1)) {\n    // If it's Heshvan 30 it depends on the first anniversary;\n    // if that was not Heshvan 30, use the day before Kislev 1.\n    hDeath = abs2hebrew(hebrew2abs(hyear, KISLEV, 1) - 1);\n  } else if (hDeath.mm == KISLEV && hDeath.dd == 30 && shortKislev(hDeath.yy + 1)) {\n    // If it's Kislev 30 it depends on the first anniversary;\n    // if that was not Kislev 30, use the day before Teveth 1.\n    hDeath = abs2hebrew(hebrew2abs(hyear, TEVET, 1) - 1);\n  } else if (hDeath.mm == ADAR_II) {\n    // If it's Adar II, use the same day in last month of year (Adar or Adar II).\n    hDeath.mm = monthsInYear(hyear);\n  } else if (hDeath.mm == ADAR_I && hDeath.dd == 30 && !isLeapYear(hyear)) {\n    // If it's the 30th in Adar I and year is not a leap year\n    // (so Adar has only 29 days), use the last day in Shevat.\n    hDeath.dd = 30;\n    hDeath.mm = SHVAT;\n  }\n  // In all other cases, use the normal anniversary of the date of death.\n\n  // advance day to rosh chodesh if needed\n  if (hDeath.mm == CHESHVAN && hDeath.dd == 30 && !longCheshvan(hyear)) {\n    hDeath.mm = KISLEV;\n    hDeath.dd = 1;\n  } else if (hDeath.mm == KISLEV && hDeath.dd == 30 && shortKislev(hyear)) {\n    hDeath.mm = TEVET;\n    hDeath.dd = 1;\n  }\n  return new HDate(hDeath.dd, hDeath.mm, hyear);\n}\n\n/**\n * @private\n * @param {number} hyear Hebrew year\n * @param {Date|HDate} gdate Gregorian or Hebrew date of event\n * @return {HDate} anniversary occurring in `hyear`\n */\nfunction getBirthdayOrAnniversary_(hyear, gdate) {\n  const orig = HDate.isHDate(gdate) ? gdate : new HDate(gdate);\n  const origYear = orig.getFullYear();\n  if (hyear === origYear) {\n    return orig;\n  } else if (hyear < origYear) {\n    // `Hebrew year ${hyear} occurs on or before original date in ${origYear}`\n    return undefined;\n  }\n  const isOrigLeap = isLeapYear(origYear);\n  let month = orig.getMonth();\n  let day = orig.getDate();\n  if (month == ADAR_I && !isOrigLeap || month == ADAR_II && isOrigLeap) {\n    month = monthsInYear(hyear);\n  } else if (month == CHESHVAN && day == 30 && !longCheshvan(hyear)) {\n    month = KISLEV;\n    day = 1;\n  } else if (month == KISLEV && day == 30 && shortKislev(hyear)) {\n    month = TEVET;\n    day = 1;\n  } else if (month == ADAR_I && day == 30 && isOrigLeap && !isLeapYear(hyear)) {\n    month = NISAN$1;\n    day = 1;\n  }\n  return new HDate(day, month, hyear);\n}\n\nconst version=\"3.50.4\";\n\nconst headers$1={\"plural-forms\":\"nplurals=2; plural=(n > 1);\"};const contexts$1={\"\":{Berachot:[\"Berachos\"],Shabbat:[\"Shabbos\"],Taanit:[\"Taanis\"],Yevamot:[\"Yevamos\"],Ketubot:[\"Kesubos\"],\"Baba Batra\":[\"Baba Basra\"],Makkot:[\"Makkos\"],Shevuot:[\"Shevuos\"],Horayot:[\"Horayos\"],Menachot:[\"Menachos\"],Bechorot:[\"Bechoros\"],Keritot:[\"Kerisos\"],Midot:[\"Midos\"],\"Achrei Mot\":[\"Achrei Mos\"],Bechukotai:[\"Bechukosai\"],\"Beha'alotcha\":[\"Beha'aloscha\"],Bereshit:[\"Bereshis\"],Chukat:[\"Chukas\"],\"Erev Shavuot\":[\"Erev Shavuos\"],\"Erev Sukkot\":[\"Erev Sukkos\"],\"Ki Tavo\":[\"Ki Savo\"],\"Ki Teitzei\":[\"Ki Seitzei\"],\"Ki Tisa\":[\"Ki Sisa\"],Matot:[\"Matos\"],\"Purim Katan\":[\"Purim Koton\"],Tazria:[\"Sazria\"],\"Shabbat Chazon\":[\"Shabbos Chazon\"],\"Shabbat HaChodesh\":[\"Shabbos HaChodesh\"],\"Shabbat HaGadol\":[\"Shabbos HaGadol\"],\"Shabbat Nachamu\":[\"Shabbos Nachamu\"],\"Shabbat Parah\":[\"Shabbos Parah\"],\"Shabbat Shekalim\":[\"Shabbos Shekalim\"],\"Shabbat Shuva\":[\"Shabbos Shuvah\"],\"Shabbat Zachor\":[\"Shabbos Zachor\"],Shavuot:[\"Shavuos\"],\"Shavuot I\":[\"Shavuos I\"],\"Shavuot II\":[\"Shavuos II\"],Shemot:[\"Shemos\"],\"Shmini Atzeret\":[\"Shmini Atzeres\"],\"Simchat Torah\":[\"Simchas Torah\"],Sukkot:[\"Sukkos\"],\"Sukkot I\":[\"Sukkos I\"],\"Sukkot II\":[\"Sukkos II\"],\"Sukkot II (CH''M)\":[\"Sukkos II (CH''M)\"],\"Sukkot III (CH''M)\":[\"Sukkos III (CH''M)\"],\"Sukkot IV (CH''M)\":[\"Sukkos IV (CH''M)\"],\"Sukkot V (CH''M)\":[\"Sukkos V (CH''M)\"],\"Sukkot VI (CH''M)\":[\"Sukkos VI (CH''M)\"],\"Sukkot VII (Hoshana Raba)\":[\"Sukkos VII (Hoshana Raba)\"],\"Ta'anit Bechorot\":[\"Ta'anis Bechoros\"],\"Ta'anit Esther\":[\"Ta'anis Esther\"],Toldot:[\"Toldos\"],Vaetchanan:[\"Vaeschanan\"],Yitro:[\"Yisro\"],\"Vezot Haberakhah\":[\"Vezos Haberakhah\"],Parashat:[\"Parshas\"],\"Leil Selichot\":[\"Leil Selichos\"],\"Shabbat Mevarchim Chodesh\":[\"Shabbos Mevorchim Chodesh\"],\"Shabbat Shirah\":[\"Shabbos Shirah\"],Tevet:[\"Teves\"],\"Asara B'Tevet\":[\"Asara B'Teves\"],Berakhot:[\"Berakhos\"],Sheviit:[\"Sheviis\"],Terumot:[\"Terumos\"],Maasrot:[\"Maasros\"],Eduyot:[\"Eduyos\"],Avot:[\"Avos\"],Bekhorot:[\"Bekhoros\"],Middot:[\"Middos\"],Oholot:[\"Oholos\"],Tahorot:[\"Tahoros\"],Mikvaot:[\"Mikvaos\"],\"Alot HaShachar\":[\"Alos HaShachar\"],\"Kriat Shema, sof zeman\":[\"Krias Shema, sof zman\"],\"Tefilah, sof zeman\":[\"Tefilah, sof zman\"],\"Kriat Shema, sof zeman (MGA)\":[\"Krias Shema, sof zman (MGA)\"],\"Tefilah, sof zeman (MGA)\":[\"Tefilah, sof zman (MGA)\"],\"Chatzot HaLailah\":[\"Chatzos HaLailah\"],\"Chatzot hayom\":[\"Chatzos\"],\"Tzeit HaKochavim\":[\"Tzeis HaKochavim\"],\"Birkat Hachamah\":[\"Birkas Hachamah\"],\"Shushan Purim Katan\":[\"Shushan Purim Koton\"]}};var poAshkenazi = {headers:headers$1,contexts:contexts$1};\n\nLocale.addLocale('ashkenazi', poAshkenazi);\nLocale.addLocale('a', poAshkenazi);\n\nconst headers={\"plural-forms\":\"nplurals=2; plural=(n > 1);\"};const contexts={\"\":{Berachot:[\"ברכות\"],Shabbat:[\"שַׁבָּת\"],Eruvin:[\"עירובין\"],Pesachim:[\"פסחים\"],Shekalim:[\"שקלים\"],Yoma:[\"יומא\"],Sukkah:[\"סוכה\"],Beitzah:[\"ביצה\"],Taanit:[\"תענית\"],Megillah:[\"מגילה\"],\"Moed Katan\":[\"מועד קטן\"],Chagigah:[\"חגיגה\"],Yevamot:[\"יבמות\"],Ketubot:[\"כתובות\"],Nedarim:[\"נדרים\"],Nazir:[\"נזיר\"],Sotah:[\"סוטה\"],Gitin:[\"גיטין\"],Kiddushin:[\"קידושין\"],\"Baba Kamma\":[\"בבא קמא\"],\"Baba Metzia\":[\"בבא מציעא\"],\"Baba Batra\":[\"בבא בתרא\"],Sanhedrin:[\"סנהדרין\"],Makkot:[\"מכות\"],Shevuot:[\"שבועות\"],\"Avodah Zarah\":[\"עבודה זרה\"],Horayot:[\"הוריות\"],Zevachim:[\"זבחים\"],Menachot:[\"מנחות\"],Chullin:[\"חולין\"],Bechorot:[\"בכורות\"],Arachin:[\"ערכין\"],Temurah:[\"תמורה\"],Keritot:[\"כריתות\"],Meilah:[\"מעילה\"],Kinnim:[\"קינים\"],Tamid:[\"תמיד\"],Midot:[\"מדות\"],Niddah:[\"נדה\"],\"Daf Yomi\":[\"דַף יוֹמִי\"],Parashat:[\"פָּרָשַׁת\"],\"Achrei Mot\":[\"אַחֲרֵי מוֹת\"],Balak:[\"בָּלָק\"],Bamidbar:[\"בְּמִדְבַּר\"],Bechukotai:[\"בְּחֻקֹּתַי\"],\"Beha'alotcha\":[\"בְּהַעֲלֹתְךָ\"],Behar:[\"בְּהַר\"],Bereshit:[\"בְּרֵאשִׁית\"],Beshalach:[\"בְּשַׁלַּח\"],Bo:[\"בֹּא\"],\"Chayei Sara\":[\"חַיֵּי שָֹרָה\"],Chukat:[\"חֻקַּת\"],Devarim:[\"דְּבָרִים\"],Eikev:[\"עֵקֶב\"],Emor:[\"אֱמוֹר\"],\"Ha'Azinu\":[\"הַאֲזִינוּ\"],Kedoshim:[\"קְדשִׁים\"],\"Ki Tavo\":[\"כִּי־תָבוֹא\"],\"Ki Teitzei\":[\"כִּי־תֵצֵא\"],\"Ki Tisa\":[\"כִּי תִשָּׂא\"],Korach:[\"קוֹרַח\"],\"Lech-Lecha\":[\"לֶךְ־לְךָ\"],Masei:[\"מַסְעֵי\"],Matot:[\"מַּטּוֹת\"],Metzora:[\"מְּצֹרָע\"],Miketz:[\"מִקֵּץ\"],Mishpatim:[\"מִּשְׁפָּטִים\"],Nasso:[\"נָשׂא\"],Nitzavim:[\"נִצָּבִים\"],Noach:[\"נֹחַ\"],Pekudei:[\"פְקוּדֵי\"],Pinchas:[\"פִּינְחָס\"],\"Re'eh\":[\"רְאֵה\"],\"Sh'lach\":[\"שְׁלַח־לְךָ\"],Shemot:[\"שְׁמוֹת\"],Shmini:[\"שְּׁמִינִי\"],Shoftim:[\"שׁוֹפְטִים\"],Tazria:[\"תַזְרִיעַ\"],Terumah:[\"תְּרוּמָה\"],Tetzaveh:[\"תְּצַוֶּה\"],Toldot:[\"תּוֹלְדוֹת\"],Tzav:[\"צַו\"],Vaera:[\"וָאֵרָא\"],Vaetchanan:[\"וָאֶתְחַנַּן\"],Vayakhel:[\"וַיַּקְהֵל\"],Vayechi:[\"וַיְחִי\"],Vayeilech:[\"וַיֵּלֶךְ\"],Vayera:[\"וַיֵּרָא\"],Vayeshev:[\"וַיֵּשֶׁב\"],Vayetzei:[\"וַיֵּצֵא\"],Vayigash:[\"וַיִּגַּשׁ\"],Vayikra:[\"וַיִּקְרָא\"],Vayishlach:[\"וַיִּשְׁלַח\"],\"Vezot Haberakhah\":[\"וְזֹאת הַבְּרָכָה\"],Yitro:[\"יִתְרוֹ\"],\"Asara B'Tevet\":[\"עֲשָׂרָה בְּטֵבֵת\"],\"Candle lighting\":[\"הַדלָקָת נֵרוֹת\"],Chanukah:[\"חֲנוּכָּה\"],\"Chanukah: 1 Candle\":[\"חֲנוּכָּה: א׳ נֵר\"],\"Chanukah: 2 Candles\":[\"חֲנוּכָּה: ב׳ נֵרוֹת\"],\"Chanukah: 3 Candles\":[\"חֲנוּכָּה: ג׳ נֵרוֹת\"],\"Chanukah: 4 Candles\":[\"חֲנוּכָּה: ד׳ נֵרוֹת\"],\"Chanukah: 5 Candles\":[\"חֲנוּכָּה: ה׳ נֵרוֹת\"],\"Chanukah: 6 Candles\":[\"חֲנוּכָּה: ו׳ נֵרוֹת\"],\"Chanukah: 7 Candles\":[\"חֲנוּכָּה: ז׳ נֵרוֹת\"],\"Chanukah: 8 Candles\":[\"חֲנוּכָּה: ח׳ נֵרוֹת\"],\"Chanukah: 8th Day\":[\"חֲנוּכָּה: יוֹם ח׳\"],\"Days of the Omer\":[\"סְפִירַת הָעוֹמֶר\"],Omer:[\"עוֹמֶר\"],\"day of the Omer\":[\"בָּעוֹמֶר\"],\"Erev Pesach\":[\"עֶרֶב פֶּסַח\"],\"Erev Purim\":[\"עֶרֶב פּוּרִים\"],\"Erev Rosh Hashana\":[\"עֶרֶב רֹאשׁ הַשָּׁנָה\"],\"Erev Shavuot\":[\"עֶרֶב שָׁבוּעוֹת\"],\"Erev Simchat Torah\":[\"עֶרֶב שִׂמְחַת תּוֹרָה\"],\"Erev Sukkot\":[\"עֶרֶב סוּכּוֹת\"],\"Erev Tish'a B'Av\":[\"עֶרֶב תִּשְׁעָה בְּאָב\"],\"Erev Yom Kippur\":[\"עֶרֶב יוֹם כִּפּוּר\"],Havdalah:[\"הַבדָלָה\"],\"Lag BaOmer\":[\"ל״ג בָּעוֹמֶר\"],\"Leil Selichot\":[\"סליחות\"],Pesach:[\"פֶּסַח\"],\"Pesach I\":[\"פֶּסַח א׳\"],\"Pesach II\":[\"פֶּסַח ב׳\"],\"Pesach II (CH''M)\":[\"פֶּסַח ב׳ (חוה״מ)\"],\"Pesach III (CH''M)\":[\"פֶּסַח ג׳ (חוה״מ)\"],\"Pesach IV (CH''M)\":[\"פֶּסַח ד׳ (חוה״מ)\"],\"Pesach Sheni\":[\"פֶּסַח שני\"],\"Pesach V (CH''M)\":[\"פֶּסַח ה׳ (חוה״מ)\"],\"Pesach VI (CH''M)\":[\"פֶּסַח ו׳ (חוה״מ)\"],\"Pesach VII\":[\"פֶּסַח ז׳\"],\"Pesach VIII\":[\"פֶּסַח ח׳\"],Purim:[\"פּוּרִים\"],\"Purim Katan\":[\"פּוּרִים קָטָן\"],\"Rosh Chodesh %s\":[\"רֹאשׁ חוֹדֶשׁ %s\"],\"Rosh Chodesh\":[\"רֹאשׁ חוֹדֶשׁ\"],Adar:[\"אַדָר\"],\"Adar I\":[\"אַדָר א׳\"],\"Adar II\":[\"אַדָר ב׳\"],Av:[\"אָב\"],Cheshvan:[\"חֶשְׁוָן\"],Elul:[\"אֱלוּל\"],Iyyar:[\"אִיָיר\"],Kislev:[\"כִּסְלֵו\"],Nisan:[\"נִיסָן\"],\"Sh'vat\":[\"שְׁבָט\"],Sivan:[\"סִיוָן\"],Tamuz:[\"תַּמּוּז\"],Tevet:[\"טֵבֵת\"],Tishrei:[\"תִשְׁרֵי\"],\"Rosh Hashana\":[\"רֹאשׁ הַשָּׁנָה\"],\"Rosh Hashana I\":[\"רֹאשׁ הַשָּׁנָה א׳\"],\"Rosh Hashana II\":[\"רֹאשׁ הַשָּׁנָה ב׳\"],\"Shabbat Chazon\":[\"שַׁבָּת חֲזוֹן\"],\"Shabbat HaChodesh\":[\"שַׁבָּת הַחֹדֶשׁ\"],\"Shabbat HaGadol\":[\"שַׁבָּת הַגָּדוֹל\"],\"Shabbat Machar Chodesh\":[\"שַׁבָּת מָחָר חוֹדֶשׁ\"],\"Shabbat Nachamu\":[\"שַׁבָּת נַחֲמוּ\"],\"Shabbat Parah\":[\"שַׁבָּת פּרה\"],\"Shabbat Rosh Chodesh\":[\"שַׁבָּת רֹאשׁ חוֹדֶשׁ\"],\"Shabbat Shekalim\":[\"שַׁבָּת שְׁקָלִים\"],\"Shabbat Shuva\":[\"שַׁבָּת שׁוּבָה\"],\"Shabbat Zachor\":[\"שַׁבָּת זָכוֹר\"],Shavuot:[\"שָׁבוּעוֹת\"],\"Shavuot I\":[\"שָׁבוּעוֹת א׳\"],\"Shavuot II\":[\"שָׁבוּעוֹת ב׳\"],\"Shmini Atzeret\":[\"שְׁמִינִי עֲצֶרֶת\"],\"Shushan Purim\":[\"שׁוּשָׁן פּוּרִים\"],Sigd:[\"סיגד\"],\"Simchat Torah\":[\"שִׂמְחַת תּוֹרָה\"],Sukkot:[\"סוּכּוֹת\"],\"Sukkot I\":[\"סוּכּוֹת א׳\"],\"Sukkot II\":[\"סוּכּוֹת ב׳\"],\"Sukkot II (CH''M)\":[\"סוּכּוֹת ב׳ (חוה״מ)\"],\"Sukkot III (CH''M)\":[\"סוּכּוֹת ג׳ (חוה״מ)\"],\"Sukkot IV (CH''M)\":[\"סוּכּוֹת ד׳ (חוה״מ)\"],\"Sukkot V (CH''M)\":[\"סוּכּוֹת ה׳ (חוה״מ)\"],\"Sukkot VI (CH''M)\":[\"סוּכּוֹת ו׳ (חוה״מ)\"],\"Sukkot VII (Hoshana Raba)\":[\"סוּכּוֹת ז׳ (הוֹשַׁעְנָא רַבָּה)\"],\"Ta'anit Bechorot\":[\"תַּעֲנִית בְּכוֹרוֹת\"],\"Ta'anit Esther\":[\"תַּעֲנִית אֶסְתֵּר\"],\"Tish'a B'Av\":[\"תִּשְׁעָה בְּאָב\"],\"Tu B'Av\":[\"טוּ בְּאָב\"],\"Tu BiShvat\":[\"טוּ בִּשְׁבָט\"],\"Tu B'Shvat\":[\"טוּ בִּשְׁבָט\"],\"Tzom Gedaliah\":[\"צוֹם גְּדַלְיָה\"],\"Tzom Tammuz\":[\"צוֹם תָּמוּז\"],\"Yom HaAtzma'ut\":[\"יוֹם הָעַצְמָאוּת\"],\"Yom HaShoah\":[\"יוֹם הַשּׁוֹאָה\"],\"Yom HaZikaron\":[\"יוֹם הַזִּכָּרוֹן\"],\"Yom Kippur\":[\"יוֹם כִּפּוּר\"],\"Yom Yerushalayim\":[\"יוֹם יְרוּשָׁלַיִם\"],\"Yom HaAliyah\":[\"יוֹם הַעֲלִיָּה\"],\"Yom HaAliyah School Observance\":[\"שְׁמִירָת בֵּית הַסֵפֶר לְיוֹם הַעֲלִיָּה\"],\"Pesach I (on Shabbat)\":[\"פֶּסַח יוֹם א׳ (בְּשַׁבָּת)\"],\"Pesach Chol ha-Moed Day 1\":[\"פֶּסַח חוֹל הַמּוֹעֵד יוֹם א׳\"],\"Pesach Chol ha-Moed Day 2\":[\"פֶּסַח חוֹל הַמּוֹעֵד יוֹם ב׳\"],\"Pesach Chol ha-Moed Day 3\":[\"פֶּסַח חוֹל הַמּוֹעֵד יוֹם ג׳\"],\"Pesach Chol ha-Moed Day 4\":[\"פֶּסַח חוֹל הַמּוֹעֵד יוֹם ד׳\"],\"Pesach Chol ha-Moed Day 5\":[\"פֶּסַח חוֹל הַמּוֹעֵד יוֹם ה׳\"],\"Pesach Shabbat Chol ha-Moed\":[\"פֶּסַח שַׁבָּת חוֹל הַמּוֹעֵד\"],\"Shavuot II (on Shabbat)\":[\"שָׁבוּעוֹת יוֹם ב׳ (בְּשַׁבָּת)\"],\"Rosh Hashana I (on Shabbat)\":[\"רֹאשׁ הַשָּׁנָה יוֹם א׳ (בְּשַׁבָּת)\"],\"Yom Kippur (on Shabbat)\":[\"יוֹם כִּפּוּר (בְּשַׁבָּת)\"],\"Yom Kippur (Mincha, Traditional)\":[\"יוֹם כִּפּוּר מִנחָה\"],\"Yom Kippur (Mincha, Alternate)\":[\"יוֹם כִּפּוּר מִנחָה\"],\"Sukkot I (on Shabbat)\":[\"סוּכּוֹת יוֹם א׳ (בְּשַׁבָּת)\"],\"Sukkot Chol ha-Moed Day 1\":[\"סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם א׳\"],\"Sukkot Chol ha-Moed Day 2\":[\"סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ב׳\"],\"Sukkot Chol ha-Moed Day 3\":[\"סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ג׳\"],\"Sukkot Chol ha-Moed Day 4\":[\"סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ד׳\"],\"Sukkot Chol ha-Moed Day 5\":[\"סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ה׳\"],\"Sukkot Shabbat Chol ha-Moed\":[\"סוּכּוֹת שַׁבָּת חוֹל הַמּוֹעֵד\"],\"Sukkot Final Day (Hoshana Raba)\":[\"סוּכּוֹת ז׳ (הוֹשַׁעְנָא רַבָּה)\"],\"Rosh Chodesh Adar\":[\"רֹאשׁ חוֹדֶשׁ אַדָר\"],\"Rosh Chodesh Adar I\":[\"רֹאשׁ חוֹדֶשׁ אַדָר א׳\"],\"Rosh Chodesh Adar II\":[\"רֹאשׁ חוֹדֶשׁ אַדָר ב׳\"],\"Rosh Chodesh Av\":[\"רֹאשׁ חוֹדֶשׁ אָב\"],\"Rosh Chodesh Cheshvan\":[\"רֹאשׁ חוֹדֶשׁ חֶשְׁוָן\"],\"Rosh Chodesh Elul\":[\"רֹאשׁ חוֹדֶשׁ אֱלוּל\"],\"Rosh Chodesh Iyyar\":[\"רֹאשׁ חוֹדֶשׁ אִיָיר\"],\"Rosh Chodesh Kislev\":[\"רֹאשׁ חוֹדֶשׁ כִּסְלֵו\"],\"Rosh Chodesh Nisan\":[\"רֹאשׁ חוֹדֶשׁ נִיסָן\"],\"Rosh Chodesh Sh'vat\":[\"רֹאשׁ חוֹדֶשׁ שְׁבָט\"],\"Rosh Chodesh Sivan\":[\"רֹאשׁ חוֹדֶשׁ סִיוָן\"],\"Rosh Chodesh Tamuz\":[\"רֹאשׁ חוֹדֶשׁ תָּמוּז\"],\"Rosh Chodesh Tevet\":[\"רֹאשׁ חוֹדֶשׁ טֵבֵת\"],min:[\"דקות\"],\"Fast begins\":[\"תחילת הַצוֹם\"],\"Fast ends\":[\"סִיּוּם הַצוֹם\"],\"Rosh Hashana LaBehemot\":[\"רֹאשׁ הַשָּׁנָה לְמַעְשַׂר בְּהֵמָה\"],\"Tish'a B'Av (observed)\":[\"תִּשְׁעָה בְּאָב נִדחֶה\"],\"Shabbat Mevarchim Chodesh\":[\"שַׁבָּת מְבָרְכִים חוֹדֶשׁ\"],\"Shabbat Shirah\":[\"שַׁבָּת שִׁירָה\"],\"Chatzot HaLailah\":[\"חֲצוֹת הַלַיְלָה\"],\"Alot haShachar\":[\"עֲלוֹת הַשַּׁחַר\"],Misheyakir:[\"מִשֶּׁיַּכִּיר\"],\"Misheyakir Machmir\":[\"מִשֶּׁיַּכִּיר מַחמִיר\"],Dawn:[\"דִּימְדּוּמֵי בּוֹקֵר\"],Sunrise:[\"הַנֵץ הַחַמָּה\"],\"Kriat Shema, sof zeman\":[\"סוֹף זְמַן קְרִיאַת שְׁמַע גר״א\"],\"Tefilah, sof zeman\":[\"סוֹף זְמַן תְּפִלָּה גר״א\"],\"Kriat Shema, sof zeman (MGA)\":[\"סוֹף זְמַן קְרִיאַת שְׁמַע מג״א\"],\"Tefilah, sof zeman (MGA)\":[\"סוֹף זְמַן תְּפִלָּה מג״א\"],\"Chatzot hayom\":[\"חֲצוֹת הַיּוֹם\"],\"Mincha Gedolah\":[\"מִנְחָה גְּדוֹלָה\"],\"Mincha Ketanah\":[\"מִנְחָה קְטַנָּה\"],\"Plag HaMincha\":[\"פְּלַג הַמִּנְחָה\"],Dusk:[\"דִּימְדּוּמֵי עֶרֶב\"],Sunset:[\"שְׁקִיעָה\"],\"Nightfall - End of ordained fasts\":[\"לַיְלָה - גמר תעניות דרבנן\"],\"Tzeit HaKochavim\":[\"צֵאת כוכבים\"],Lovingkindness:[\"חֶֽסֶד\"],Might:[\"גְבוּרָה\"],Beauty:[\"תִּפאֶרֶת\"],Eternity:[\"נֶּֽצַח\"],Splendor:[\"הוֹד\"],Foundation:[\"יְּסוֹד\"],Majesty:[\"מַּלְכוּת\"],day:[\"יוֹם\"],\"Chanukah Day 1\":[\"חֲנוּכָּה יוֹם א׳\"],\"Chanukah Day 2\":[\"חֲנוּכָּה יוֹם ב׳\"],\"Chanukah Day 3\":[\"חֲנוּכָּה יוֹם ג׳\"],\"Chanukah Day 4\":[\"חֲנוּכָּה יוֹם ד׳\"],\"Chanukah Day 5\":[\"חֲנוּכָּה יוֹם ה׳\"],\"Chanukah Day 6\":[\"חֲנוּכָּה יוֹם ו׳\"],\"Chanukah Day 7\":[\"חֲנוּכָּה יוֹם ז׳\"],\"Chanukah Day 7 (on Rosh Chodesh)\":[\"חֲנוּכָּה יוֹם ז׳ (רֹאשׁ חוֹדֶשׁ)\"],\"Chanukah Day 8\":[\"חֲנוּכָּה יוֹם ח׳\"],\"Chanukah Day 1 (on Shabbat)\":[\"חֲנוּכָּה יוֹם א׳ (בְּשַׁבָּת)\"],\"Chanukah Day 2 (on Shabbat)\":[\"חֲנוּכָּה יוֹם ב׳ (בְּשַׁבָּת)\"],\"Chanukah Day 3 (on Shabbat)\":[\"חֲנוּכָּה יוֹם ג׳ (בְּשַׁבָּת)\"],\"Chanukah Day 4 (on Shabbat)\":[\"חֲנוּכָּה יוֹם ד׳ (בְּשַׁבָּת)\"],\"Chanukah Day 5 (on Shabbat)\":[\"חֲנוּכָּה יוֹם ה׳ (בְּשַׁבָּת)\"],\"Chanukah Day 7 (on Shabbat)\":[\"חֲנוּכָּה יוֹם ז׳ (בְּשַׁבָּת)\"],\"Chanukah Day 8 (on Shabbat)\":[\"חֲנוּכָּה יוֹם ח׳ (בְּשַׁבָּת)\"],\"Shabbat Rosh Chodesh Chanukah\":[\"שַׁבָּת רֹאשׁ חוֹדֶשׁ חֲנוּכָּה\"],Berakhot:[\"ברכות\"],Peah:[\"פאה\"],Demai:[\"דמאי\"],Kilayim:[\"כלאים\"],Sheviit:[\"שביעית\"],Terumot:[\"תרומות\"],Maasrot:[\"מעשרות\"],\"Maaser Sheni\":[\"מעשר שני\"],Challah:[\"חלה\"],Orlah:[\"ערלה\"],Bikkurim:[\"ביכורים\"],\"Rosh Hashanah\":[\"ראש השנה\"],Gittin:[\"גיטין\"],\"Bava Kamma\":[\"בבא קמא\"],\"Bava Metzia\":[\"בבא מציעא\"],\"Bava Batra\":[\"בבא בתרא\"],Eduyot:[\"עדיות\"],Avot:[\"אבות\"],Bekhorot:[\"בכורות\"],Arakhin:[\"ערכין\"],Middot:[\"מדות\"],Kelim:[\"כלים\"],Oholot:[\"אהלות\"],Negaim:[\"נגעים\"],Parah:[\"פרה\"],Tahorot:[\"טהרות\"],Mikvaot:[\"מקואות\"],Makhshirin:[\"מכשירין\"],Zavim:[\"זבים\"],\"Tevul Yom\":[\"טבול יום\"],Yadayim:[\"ידים\"],Oktzin:[\"עוקצים\"],\"Yom Kippur Katan\":[\"יוֹם כִּפּוּר קָטָן\"],\"Family Day\":[\"יוֹם הַמִּשׁפָּחָה\"],\"Yitzhak Rabin Memorial Day\":[\"יוֹם הַזִּכָּרוֹן ליצחק רבין\"],\"Jabotinsky Day\":[\"יוֹם ז׳בוטינסקי\"],\"Herzl Day\":[\"יוֹם הרצל\"],\"Ben-Gurion Day\":[\"יוֹם בן־גוריון\"],\"Birkat Hachamah\":[\"בִרְכַּת הַחַמָּה\"],\"Shushan Purim Katan\":[\"שׁוּשָׁן פּוּרִים קָטָן\"],\"Purim Meshulash\":[\"פּוּרִים מְשׁוּלָּשׁ\"],\"after sunset\":[\"אחרי השקיעה\"],Yerushalmi:[\"יְרוּשַׁלְמִי\"],\"Chag HaBanot\":[\"חַג הַבָּנוֹת\"],Joshua:[\"יְהוֹשׁוּעַ\"],Judges:[\"שׁוֹפְטִים\"],\"I Samuel\":[\"שְׁמוּאֵל רִאשׁוֹן\"],\"II Samuel\":[\"שְׁמוּאֵל שֵׁנִי\"],\"I Kings\":[\"מְלָכִים רִאשׁוֹן\"],\"II Kings\":[\"מְלָכִים שֵׁנִי\"],Isaiah:[\"יְשַׁעְיָהוּ\"],Jeremiah:[\"יִרְמְיָהוּ\"],Ezekiel:[\"יְחֶזְקֵאל\"],Hosea:[\"הוֹשֵׁעַ\"],Joel:[\"יוֹאֵל\"],Amos:[\"עָמוּס\"],Obadiah:[\"עוֹבַדְיָה\"],Jonah:[\"יוֹנָה\"],Micah:[\"מִיכָה\"],Nachum:[\"נַחוּם\"],Habakkuk:[\"חֲבַקּוּק\"],Zephaniah:[\"צְפַנְיָה\"],Haggai:[\"חַגַּי\"],Zechariah:[\"זְכַרְיָה\"],Malachi:[\"מַלְאָכִי\"],Psalms:[\"תְּהִלִּים\"],Proverbs:[\"מִשְׁלֵי\"],Job:[\"אִיּוֹב\"],\"Song of Songs\":[\"שִׁיר הַשִּׁירִים\"],Ruth:[\"רוּת\"],Lamentations:[\"אֵיכָה\"],Ecclesiastes:[\"קֹהֶלֶת\"],Esther:[\"אֶסְתֵּר\"],Daniel:[\"דָּנִיֵּאל\"],Ezra:[\"עֶזְרָא\"],Nehemiah:[\"נְחֶמְיָה\"],\"I Chronicles\":[\"דִברֵי הַיָמִים רִאשׁוֹן\"],\"II Chronicles\":[\"דִברֵי הַיָמִים שֵׁנִי\"],\"Yom Kippur (Mincha)\":[\"יוֹם כִּפּוּר מִנחָה\"],\"Tish'a B'Av (Mincha)\":[\"תִּשְׁעָה בְּאָב מִנחָה\"],\"Asara B'Tevet (Mincha)\":[\"עֲשָׂרָה בְּטֵבֵת מִנחָה\"],\"Ta'anit Bechorot (Mincha)\":[\"תַּעֲנִית בְּכוֹרוֹת מִנחָה\"],\"Ta'anit Esther (Mincha)\":[\"תַּעֲנִית אֶסְתֵּר מִנחָה\"],\"Tzom Gedaliah (Mincha)\":[\"צוֹם גְּדַלְיָה מִנחָה\"],\"Tzom Tammuz (Mincha)\":[\"צוֹם תָּמוּז מִנחָה\"]}};var poHe = {headers:headers,contexts:contexts};\n\nLocale.addLocale('he', poHe);\nLocale.addLocale('h', poHe);\nconst heStrs = poHe.contexts[''];\nconst heNoNikud = {};\nObject.keys(heStrs).forEach(key => {\n  heNoNikud[key] = [Locale.hebrewStripNikkud(heStrs[key][0])];\n});\nconst poHeNoNikud = {\n  headers: poHe.headers,\n  contexts: {\n    '': heNoNikud\n  }\n};\nLocale.addLocale('he-x-NoNikud', poHeNoNikud);\n\nconst NONE$1 = 0;\nconst HALF = 1;\nconst WHOLE = 2;\n\n/**\n * @private\n * @param {Event[]} events\n * @param {HDate} hdate\n * @return {number}\n */\nfunction hallel_(events, hdate) {\n  const whole = events.filter(ev => {\n    /** @type {string} */\n    const desc = ev.getDesc();\n    /** @type {HDate} */\n    const hd = ev.getDate();\n    const month = hd.getMonth();\n    const mday = hd.getDate();\n    return desc.startsWith('Chanukah') || desc.startsWith('Shavuot') || desc.startsWith('Sukkot') || month === months.NISAN && (mday === 15 || mday === 16) && ev.getFlags() & flags.CHAG ||\n    // Pesach\n    desc === 'Yom HaAtzma\\'ut' || desc === 'Yom Yerushalayim';\n  }).map(ev => {\n    return ev.getDate().abs();\n  });\n  const abs = hdate.abs();\n  if (whole.includes(abs)) {\n    return WHOLE;\n  }\n  const half = events.filter(ev => {\n    const desc = ev.getDesc();\n    return ev.getFlags() & flags.ROSH_CHODESH || desc.startsWith('Pesach') && desc !== 'Pesach I' && desc !== 'Pesach II';\n  }).map(ev => {\n    return ev.getDate().abs();\n  });\n  if (half.includes(abs)) {\n    return HALF;\n  }\n  return NONE$1;\n}\n\n/**\n * @private\n * @param {number} start\n * @param {number} end\n * @return {number[]}\n */\nfunction range(start, end) {\n  const arr = [];\n  for (let i = start; i <= end; i++) {\n    arr.push(i);\n  }\n  return arr;\n}\nconst cache = Object.create(null);\nconst NONE = {\n  shacharit: false,\n  mincha: false,\n  allCongs: false\n};\n\n/**\n * @private\n * @param {HDate} hdate\n * @param {boolean} il\n * @return {TachanunResult}\n */\nfunction tachanun_(hdate, il) {\n  return tachanun0(hdate, il, true);\n}\n\n/**\n * @private\n * @param {HDate} hdate\n * @param {boolean} il\n * @param {boolean} checkNext\n * @return {TachanunResult}\n */\nfunction tachanun0(hdate, il, checkNext) {\n  const year = hdate.getFullYear();\n  const key = `${year}-${il ? 1 : 0}`;\n  const dates = cache[key] = cache[key] || tachanunYear(year, il);\n  const abs = hdate.abs();\n  if (dates.none.indexOf(abs) > -1) {\n    return NONE;\n  }\n  const dow = hdate.getDay();\n  const ret = {\n    shacharit: false,\n    mincha: false,\n    allCongs: false\n  };\n  if (dates.some.indexOf(abs) === -1) {\n    ret.allCongs = true;\n  }\n  if (dow !== 6) {\n    ret.shacharit = true;\n  }\n  const tomorrow = abs + 1;\n  if (checkNext && dates.yesPrev.indexOf(tomorrow) === -1) {\n    const tmp = tachanun0(new HDate(tomorrow), il, false);\n    ret.mincha = tmp.shacharit;\n  } else {\n    ret.mincha = dow !== 5;\n  }\n  if (ret.allCongs && !ret.mincha && !ret.shacharit) {\n    return NONE;\n  }\n  return ret;\n}\n\n/**\n * @private\n * @param {number} year\n * @param {boolean} il\n * @return {*}\n */\nfunction tachanunYear(year, il) {\n  const leap = HDate.isLeapYear(year);\n  const monthsInYear = 12 + leap;\n  let av9dt = new HDate(9, months.AV, year);\n  if (av9dt.getDay() === 6) {\n    av9dt = av9dt.next();\n  }\n  let shushPurim = new HDate(15, months.ADAR_II, year);\n  if (shushPurim.getDay() === 6) {\n    shushPurim = shushPurim.next();\n  }\n  const none = [].concat(\n  // Rosh Chodesh - 1st of every month. Also includes RH day 1 (1 Tishrei)\n  range(1, monthsInYear).map(month => new HDate(1, month, year)),\n  // Rosh Chodesh - 30th of months that have one\n  range(1, monthsInYear).filter(month => HDate.daysInMonth(month, year) === 30).map(month => new HDate(30, month, year)), new HDate(2, months.TISHREI, year),\n  // Rosh Hashana II\n  // entire month of Nisan\n  range(1, HDate.daysInMonth(months.NISAN, year)).map(mday => new HDate(mday, months.NISAN, year)), new HDate(18, months.IYYAR, year),\n  // Lag BaOmer\n  // Rosh Chodesh Sivan thru Isru Chag\n  range(1, 8 - (il ? 1 : 0)).map(mday => new HDate(mday, months.SIVAN, year)), av9dt,\n  // Tisha B'Av\n  new HDate(15, months.AV, year),\n  // Tu B'Av\n  new HDate(29, months.ELUL, year),\n  // Erev Rosh Hashanah\n  // Erev Yom Kippur thru Isru Chag\n  range(9, 24 - (il ? 1 : 0)).map(mday => new HDate(mday, months.TISHREI, year)),\n  // Chanukah\n  range(25, 33).map(mday => new HDate(mday, months.KISLEV, year)), new HDate(15, months.SHVAT, year),\n  // Tu BiShvat\n  new HDate(14, months.ADAR_II, year),\n  // Purim\n  shushPurim, leap ? new HDate(14, months.ADAR_I, year) : [] // Purim Katan\n  );\n\n  const some = [].concat(\n  // Until 14 Sivan\n  range(1, 13).map(mday => new HDate(mday, months.SIVAN, year)),\n  // Until after Rosh Chodesh Cheshvan\n  range(20, 31).map(mday => new HDate(mday, months.TISHREI, year)), new HDate(14, months.IYYAR, year),\n  // Pesach Sheini\n  // Yom HaAtzma'ut, which changes based on day of week\n  year >= 5708 ? dateYomHaZikaron(year).next() : [],\n  // Yom Yerushalayim\n  year >= 5727 ? new HDate(28, months.IYYAR, year) : []);\n  const yesPrev = [].concat(new HDate(29, months.ELUL, year - 1),\n  // Erev Rosh Hashanah\n  new HDate(9, months.TISHREI, year),\n  // Erev Yom Kippur\n  new HDate(14, months.IYYAR, year) // Pesach Sheini\n  );\n\n  return {\n    none: none.map(hd => hd.abs()).sort(),\n    some: some.map(hd => hd.abs()).sort(),\n    yesPrev: yesPrev.map(hd => hd.abs()).sort()\n  };\n}\n\n/*\n    Hebcal - A Jewish Calendar Generator\n    Copyright (c) 1994-2020 Danny Sadinoff\n    Portions copyright Eyal Schachter and Michael J. Radwin\n\n    https://github.com/hebcal/hebcal-es6\n\n    This program is free software; you can redistribute it and/or\n    modify it under the terms of the GNU General Public License\n    as published by the Free Software Foundation; either version 2\n    of the License, or (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nconst FRI = 5;\nconst SAT = 6;\nconst NISAN = months.NISAN;\n// const IYYAR = months.IYYAR;\nconst SIVAN = months.SIVAN;\n// const TAMUZ = months.TAMUZ;\n// const AV = months.AV;\nconst ELUL = months.ELUL;\nconst TISHREI = months.TISHREI;\nconst LIGHT_CANDLES = flags.LIGHT_CANDLES;\nconst YOM_TOV_ENDS = flags.YOM_TOV_ENDS;\nconst CHUL_ONLY = flags.CHUL_ONLY;\nconst IL_ONLY = flags.IL_ONLY;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\nconst CHANUKAH_CANDLES = flags.CHANUKAH_CANDLES;\nconst MINOR_FAST = flags.MINOR_FAST;\nconst SPECIAL_SHABBAT = flags.SPECIAL_SHABBAT;\nconst MODERN_HOLIDAY = flags.MODERN_HOLIDAY;\nconst MAJOR_FAST = flags.MAJOR_FAST;\nconst ROSH_CHODESH = flags.ROSH_CHODESH;\nconst PARSHA_HASHAVUA = flags.PARSHA_HASHAVUA;\nconst DAF_YOMI = flags.DAF_YOMI;\nconst OMER_COUNT = flags.OMER_COUNT;\nconst SHABBAT_MEVARCHIM = flags.SHABBAT_MEVARCHIM;\nconst MINOR_HOLIDAY = flags.MINOR_HOLIDAY;\nconst EREV = flags.EREV;\nconst CHOL_HAMOED = flags.CHOL_HAMOED;\nconst unrecognizedAlreadyWarned = Object.create(null);\nconst RECOGNIZED_OPTIONS = {\n  location: 1,\n  year: 1,\n  isHebrewYear: 1,\n  month: 1,\n  numYears: 1,\n  start: 1,\n  end: 1,\n  candlelighting: 1,\n  candleLightingMins: 1,\n  havdalahMins: 1,\n  havdalahDeg: 1,\n  sedrot: 1,\n  il: 1,\n  noMinorFast: 1,\n  noModern: 1,\n  shabbatMevarchim: 1,\n  noRoshChodesh: 1,\n  noSpecialShabbat: 1,\n  noHolidays: 1,\n  dafyomi: 1,\n  mishnaYomi: 1,\n  nachYomi: 1,\n  omer: 1,\n  molad: 1,\n  ashkenazi: 1,\n  locale: 1,\n  addHebrewDates: 1,\n  addHebrewDatesForEvents: 1,\n  appendHebrewToSubject: 1,\n  mask: 1,\n  userMask: 1,\n  yomKippurKatan: 1,\n  hour12: 1,\n  yerushalmi: 1,\n  yerushalmiEdition: 1\n};\n\n/**\n * @private\n * @param {CalOptions} options\n */\nfunction warnUnrecognizedOptions(options) {\n  Object.keys(options).forEach(k => {\n    if (typeof RECOGNIZED_OPTIONS[k] === 'undefined' && !unrecognizedAlreadyWarned[k]) {\n      console.warn(`Ignoring unrecognized HebrewCalendar option: ${k}`);\n      unrecognizedAlreadyWarned[k] = true;\n    }\n  });\n}\n\n/**\n * A bit like Object.assign(), but just a shallow copy\n * @private\n * @param {any} target\n * @param {any} source\n * @return {any}\n */\nfunction shallowCopy(target, source) {\n  Object.keys(source).forEach(k => target[k] = source[k]);\n  return target;\n}\nconst israelCityOffset = {\n  'Jerusalem': 40,\n  'Haifa': 30,\n  'Zikhron Ya\\'aqov': 30,\n  'Zikhron Ya\\'akov': 30,\n  'Zikhron Yaakov': 30,\n  'Zichron Ya\\'akov': 30,\n  'Zichron Yaakov': 30\n};\nconst geoIdCandleOffset = {\n  '281184': 40,\n  // Jerusalem\n  '294801': 30,\n  // Haifa\n  '293067': 30 // Zikhron Yaakov\n};\n\n/**\n * Modifies options in-place\n * @private\n * @param {CalOptions} options\n */\nfunction checkCandleOptions(options) {\n  if (!options.candlelighting) {\n    return;\n  }\n  const location = options.location;\n  if (typeof location === 'undefined' || !location instanceof Location) {\n    throw new TypeError('options.candlelighting requires valid options.location');\n  }\n  if (typeof options.havdalahMins === 'number' && typeof options.havdalahDeg === 'number') {\n    throw new TypeError('options.havdalahMins and options.havdalahDeg are mutually exclusive');\n  }\n  let min = parseInt(options.candleLightingMins, 10) || 18;\n  if (location.getIsrael() && Math.abs(min) === 18) {\n    const geoid = location.getGeoId();\n    const offset0 = geoIdCandleOffset[geoid];\n    if (typeof offset0 === 'number') {\n      min = offset0;\n    }\n    const offset = israelCityOffset[location.getShortName()];\n    if (typeof offset === 'number') {\n      min = offset;\n    }\n  }\n  options.candleLightingMins = -1 * Math.abs(min);\n  if (typeof options.havdalahMins === 'number') {\n    options.havdalahMins = Math.abs(options.havdalahMins);\n  } else if (typeof options.havdalahDeg === 'number') {\n    options.havdalahDeg = Math.abs(options.havdalahDeg);\n  } else {\n    options.havdalahDeg = 8.5;\n  }\n}\n\n/**\n * Options to configure which events are returned\n * @typedef {Object} CalOptions\n * @property {Location} location - latitude/longitude/tzid used for candle-lighting\n * @property {number} year - Gregorian or Hebrew year\n * @property {boolean} isHebrewYear - to interpret year as Hebrew year\n * @property {number} month - Gregorian or Hebrew month (to filter results to a single month)\n * @property {number} numYears - generate calendar for multiple years (default 1)\n * @property {Date|HDate|number} start - use specific start date (requires end date)\n * @property {Date|HDate|number} end - use specific end date (requires start date)\n * @property {boolean} candlelighting - calculate candle-lighting and havdalah times\n * @property {number} candleLightingMins - minutes before sundown to light candles (default 18)\n * @property {number} havdalahMins - minutes after sundown for Havdalah (typical values are 42, 50, or 72).\n *      If `undefined` (the default), calculate Havdalah according to Tzeit Hakochavim -\n *      Nightfall (the point when 3 small stars are observable in the night time sky with\n *      the naked eye). If `0`, Havdalah times are supressed.\n * @property {number} havdalahDeg - degrees for solar depression for Havdalah.\n *      Default is 8.5 degrees for 3 small stars. use 7.083 degress for 3 medium-sized stars.\n *      If `0`, Havdalah times are supressed.\n * @property {boolean} sedrot - calculate parashah hashavua on Saturdays\n * @property {boolean} il - Israeli holiday and sedra schedule\n * @property {boolean} noMinorFast - suppress minor fasts\n * @property {boolean} noModern - suppress modern holidays\n * @property {boolean} noRoshChodesh - suppress Rosh Chodesh\n * @property {boolean} shabbatMevarchim - add Shabbat Mevarchim\n * @property {boolean} noSpecialShabbat - suppress Special Shabbat\n * @property {boolean} noHolidays - suppress regular holidays\n * @property {boolean} dafyomi - Babylonian Talmud Daf Yomi\n * @property {boolean} yerushalmi - Jerusalem Talmud (Yerushalmi) Yomi\n * @property {number} yerushalmiEdition - Use 1 for Vilna, 2 for Schottenstein\n * @property {boolean} mishnaYomi - include Mishna Yomi\n * @property {boolean} nachYomi - include Nach Yomi\n * @property {boolean} omer - include Days of the Omer\n * @property {boolean} molad - include event announcing the molad\n * @property {boolean} ashkenazi - use Ashkenazi transliterations for event titles (default Sephardi transliterations)\n * @property {string} locale - translate event titles according to a locale\n *      Default value is `en`, also built-in are `he` and `ashkenazi`.\n *      Additional locales (such as `ru` or `fr`) are provided by the\n *      {@link https://github.com/hebcal/hebcal-locales @hebcal/locales} package\n * @property {boolean} addHebrewDates - print the Hebrew date for the entire date range\n * @property {boolean} addHebrewDatesForEvents - print the Hebrew date for dates with some events\n * @property {number} mask - use bitmask from `flags` to filter events\n * @property {boolean} yomKippurKatan - include Yom Kippur Katan (default `false`).\n *      יוֹם כִּפּוּר קָטָן is a minor day of atonement occurring monthly on the day preceeding each Rosh Chodesh.\n *      Yom Kippur Katan is omitted in Elul (on the day before Rosh Hashanah),\n *      Tishrei (Yom Kippur has just passed), Kislev (due to Chanukah)\n *      and Nisan (fasting not permitted during Nisan).\n *      When Rosh Chodesh occurs on Shabbat or Sunday, Yom Kippur Katan is observed on the preceding Thursday.\n *      See {@link https://en.wikipedia.org/wiki/Yom_Kippur_Katan#Practices Wikipedia Yom Kippur Katan practices}\n * @property {boolean} hour12 - Whether to use 12-hour time (as opposed to 24-hour time).\n *      Possible values are `true` and `false`; the default is locale dependent.\n */\n\n/**\n * @typedef {Object} TachanunResult\n * @property {boolean} shacharit Tachanun is said at Shacharit\n * @property {boolean} mincha Tachanun is said at Mincha\n * @property {boolean} allCongs All congregations say Tachanun on the day\n */\n\n/**\n * Gets the R.D. days for a number, Date, or HDate\n * @private\n * @param {Date|HDate|number} d\n * @return {number}\n */\nfunction getAbs(d) {\n  if (typeof d == 'number') return d;\n  if (isDate(d)) return greg2abs(d);\n  if (HDate.isHDate(d)) return d.abs();\n  throw new TypeError(`Invalid date type: ${d}`);\n}\n\n/**\n * Parse options object to determine start & end days\n * @private\n * @param {CalOptions} options\n * @return {number[]}\n */\nfunction getStartAndEnd(options) {\n  if (options.start && !options.end || options.end && !options.start) {\n    throw new TypeError('Both options.start and options.end are required');\n  } else if (options.start && options.end) {\n    return [getAbs(options.start), getAbs(options.end)];\n  }\n  const isHebrewYear = Boolean(options.isHebrewYear);\n  const theYear = typeof options.year !== 'undefined' ? parseInt(options.year, 10) : isHebrewYear ? new HDate().getFullYear() : new Date().getFullYear();\n  if (isNaN(theYear)) {\n    throw new RangeError(`Invalid year ${options.year}`);\n  } else if (isHebrewYear && theYear < 1) {\n    throw new RangeError(`Invalid Hebrew year ${theYear}`);\n  }\n  let theMonth = NaN;\n  if (options.month) {\n    if (isHebrewYear) {\n      theMonth = HDate.monthNum(options.month);\n    } else {\n      theMonth = options.month;\n    }\n  }\n  const numYears = parseInt(options.numYears, 10) || 1;\n  if (isHebrewYear) {\n    const startDate = new HDate(1, theMonth || TISHREI, theYear);\n    let startAbs = startDate.abs();\n    const endAbs = options.month ? startAbs + startDate.daysInMonth() : new HDate(1, TISHREI, theYear + numYears).abs() - 1;\n    // for full Hebrew year, start on Erev Rosh Hashana which\n    // is technically in the previous Hebrew year\n    // (but conveniently lets us get candle-lighting time for Erev)\n    if (!theMonth && theYear > 1) {\n      startAbs--;\n    }\n    return [startAbs, endAbs];\n  } else {\n    const gregMonth = options.month ? theMonth - 1 : 0;\n    const startGreg = new Date(theYear, gregMonth, 1);\n    if (theYear < 100) {\n      startGreg.setFullYear(theYear);\n    }\n    const startAbs = greg2abs(startGreg);\n    let endAbs;\n    if (options.month) {\n      endAbs = startAbs + daysInMonth$1(theMonth, theYear) - 1;\n    } else {\n      const endYear = theYear + numYears;\n      const endGreg = new Date(endYear, 0, 1);\n      if (endYear < 100) {\n        endGreg.setFullYear(endYear);\n      }\n      endAbs = greg2abs(endGreg) - 1;\n    }\n    return [startAbs, endAbs];\n  }\n}\n\n/**\n * Mask to filter Holiday array\n * @private\n * @param {CalOptions} options\n * @return {number}\n */\nfunction getMaskFromOptions(options) {\n  if (typeof options.mask === 'number') {\n    const m = options.mask;\n    if (m & ROSH_CHODESH) delete options.noRoshChodesh;\n    if (m & MODERN_HOLIDAY) delete options.noModern;\n    if (m & MINOR_FAST) delete options.noMinorFast;\n    if (m & SPECIAL_SHABBAT) delete options.noSpecialShabbat;\n    if (m & PARSHA_HASHAVUA) options.sedrot = true;\n    if (m & DAF_YOMI) options.dafyomi = true;\n    if (m & OMER_COUNT) options.omer = true;\n    if (m & SHABBAT_MEVARCHIM) options.shabbatMevarchim = true;\n    if (m & flags.MISHNA_YOMI) options.mishnaYomi = true;\n    if (m & flags.NACH_YOMI) options.nachYomi = true;\n    if (m & flags.YOM_KIPPUR_KATAN) options.yomKippurKatan = true;\n    if (m & flags.YERUSHALMI_YOMI) options.yerushalmi = true;\n    options.userMask = true;\n    return m;\n  }\n  const il = options.il || options.location && options.location.il || false;\n  let mask = 0;\n\n  // default options\n  if (!options.noHolidays) {\n    mask |= ROSH_CHODESH | YOM_TOV_ENDS | MINOR_FAST | SPECIAL_SHABBAT | MODERN_HOLIDAY | MAJOR_FAST | MINOR_HOLIDAY | EREV | CHOL_HAMOED | LIGHT_CANDLES | LIGHT_CANDLES_TZEIS | CHANUKAH_CANDLES;\n  }\n  if (options.candlelighting) {\n    mask |= LIGHT_CANDLES | LIGHT_CANDLES_TZEIS | YOM_TOV_ENDS;\n  }\n  // suppression of defaults\n  if (options.noRoshChodesh) {\n    mask &= ~ROSH_CHODESH;\n  }\n  if (options.noModern) {\n    mask &= ~MODERN_HOLIDAY;\n  }\n  if (options.noMinorFast) {\n    mask &= ~MINOR_FAST;\n  }\n  if (options.noSpecialShabbat) {\n    mask &= ~SPECIAL_SHABBAT;\n    mask &= ~SHABBAT_MEVARCHIM;\n  }\n  if (il) {\n    mask |= IL_ONLY;\n  } else {\n    mask |= CHUL_ONLY;\n  }\n  // non-default options\n  if (options.sedrot) {\n    mask |= PARSHA_HASHAVUA;\n  }\n  if (options.dafyomi) {\n    mask |= DAF_YOMI;\n  }\n  if (options.mishnaYomi) {\n    mask |= flags.MISHNA_YOMI;\n  }\n  if (options.nachYomi) {\n    mask |= flags.NACH_YOMI;\n  }\n  if (options.omer) {\n    mask |= OMER_COUNT;\n  }\n  if (options.shabbatMevarchim) {\n    mask |= SHABBAT_MEVARCHIM;\n  }\n  if (options.yomKippurKatan) {\n    mask |= flags.YOM_KIPPUR_KATAN;\n  }\n  if (options.yerushalmi) {\n    mask |= flags.YERUSHALMI_YOMI;\n  }\n  return mask;\n}\nconst MASK_LIGHT_CANDLES = LIGHT_CANDLES | LIGHT_CANDLES_TZEIS | CHANUKAH_CANDLES | YOM_TOV_ENDS;\nconst defaultLocation = new Location(0, 0, false, 'UTC');\nconst hour12cc = {\n  US: 1,\n  CA: 1,\n  BR: 1,\n  AU: 1,\n  NZ: 1,\n  DO: 1,\n  PR: 1,\n  GR: 1,\n  IN: 1,\n  KR: 1,\n  NP: 1,\n  ZA: 1\n};\n\n/**\n * @private\n * @param {Event} ev\n * @return {boolean}\n */\nfunction observedInIsrael(ev) {\n  return ev.observedInIsrael();\n}\n\n/**\n * @private\n * @param {Event} ev\n * @return {boolean}\n */\nfunction observedInDiaspora(ev) {\n  return ev.observedInDiaspora();\n}\nconst yearArrayCache = Object.create(null);\n\n/**\n * HebrewCalendar is the main interface to the `@hebcal/core` library.\n * This namespace is used to calculate holidays, rosh chodesh, candle lighting & havdalah times,\n * Parashat HaShavua, Daf Yomi, days of the omer, and the molad.\n * Event names can be rendered in several languges using the `locale` option.\n */\nclass HebrewCalendar {\n  /**\n   * Calculates holidays and other Hebrew calendar events based on {@link CalOptions}.\n   *\n   * Each holiday is represented by an {@link Event} object which includes a date,\n   * a description, flags and optional attributes.\n   * If given no options, returns holidays for the Diaspora for the current Gregorian year.\n   *\n   * The date range returned by this function can be controlled by:\n   * * `options.year` - Gregorian (e.g. 1993) or Hebrew year (e.g. 5749)\n   * * `options.isHebrewYear` - to interpret `year` as Hebrew year\n   * * `options.numYears` - generate calendar for multiple years (default 1)\n   * * `options.month` - Gregorian or Hebrew month (to filter results to a single month)\n   *\n   * Alternatively, specify start and end days with `Date` or {@link HDate} instances:\n   * * `options.start` - use specific start date (requires `end` date)\n   * * `options.end` - use specific end date (requires `start` date)\n   *\n   * Unless `options.noHolidays == true`, default holidays include:\n   * * Major holidays - Rosh Hashana, Yom Kippur, Pesach, Sukkot, etc.\n   * * Minor holidays - Purim, Chanukah, Tu BiShvat, Lag BaOmer, etc.\n   * * Minor fasts - Ta'anit Esther, Tzom Gedaliah, etc. (unless `options.noMinorFast`)\n   * * Special Shabbatot - Shabbat Shekalim, Zachor, etc. (unless `options.noSpecialShabbat`)\n   * * Modern Holidays - Yom HaShoah, Yom HaAtzma'ut, etc. (unless `options.noModern`)\n   * * Rosh Chodesh (unless `options.noRoshChodesh`)\n   *\n   * Holiday and Torah reading schedules differ between Israel and the Disapora.\n   * Set `options.il=true` to use the Israeli schedule.\n   *\n   * Additional non-default event types can be specified:\n   * * Parashat HaShavua - weekly Torah Reading on Saturdays (`options.sedrot`)\n   * * Counting of the Omer (`options.omer`)\n   * * Babylonian Talmud Daf Yomi (`options.dafyomi`)\n   * * Jerusalem Talmud (Yerushalmi) Yomi (`options.yerushalmi`)\n   * * Mishna Yomi (`options.mishnaYomi`)\n   * * Nach Yomi (`options.nachYomi`)\n   * * Shabbat Mevarchim HaChodesh on Saturday before Rosh Chodesh (`options.shabbatMevarchim`)\n   * * Molad announcement on Saturday before Rosh Chodesh (`options.molad`)\n   * * Yom Kippur Katan (`options.yomKippurKatan`)\n   *\n   * Candle-lighting and Havdalah times are approximated using latitude and longitude\n   * specified by the {@link Location} class. The `Location` class contains a small\n   * database of cities with their associated geographic information and time-zone information.\n   * If you ever have any doubts about Hebcal's times, consult your local halachic authority.\n   * If you enter geographic coordinates above the arctic circle or antarctic circle,\n   * the times are guaranteed to be wrong.\n   *\n   * To add candle-lighting options, set `options.candlelighting=true` and set\n   * `options.location` to an instance of `Location`. By default, candle lighting\n   * time is 18 minutes before sundown (40 minutes for Jerusalem,\n   * 30 minutes for Haifa and Zikhron Ya'akov) and Havdalah is\n   * calculated according to Tzeit Hakochavim - Nightfall (the point when 3 small stars\n   * are observable in the night time sky with the naked eye). The default Havdalah\n   * option (Tzeit Hakochavim) is calculated when the sun is 8.5° below the horizon.\n   * These defaults can be changed using these options:\n   * * `options.candleLightingMins` - minutes before sundown to light candles\n   * * `options.havdalahMins` - minutes after sundown for Havdalah (typical values are 42, 50, or 72).\n   *    Havdalah times are supressed when `options.havdalahMins=0`.\n   * * `options.havdalahDeg` - degrees for solar depression for Havdalah.\n   *    Default is 8.5 degrees for 3 small stars. Use 7.083 degress for 3 medium-sized stars.\n   *    Havdalah times are supressed when `options.havdalahDeg=0`.\n   *\n   * If both `options.candlelighting=true` and `options.location` is specified,\n   * Chanukah candle-lighting times and minor fast start/end times will also be generated.\n   * Chanukah candle-lighting is at dusk (when the sun is 6.0° below the horizon in the evening)\n   * on weekdays, at regular candle-lighting time on Fridays, and at regular Havdalah time on\n   * Saturday night (see above).\n   *\n   * Minor fasts begin at Alot HaShachar (sun is 16.1° below the horizon in the morning) and\n   * end when 3 medium-sized stars are observable in the night sky (sun is 7.083° below the horizon\n   * in the evening).\n   *\n   * Two options also exist for generating an Event with the Hebrew date:\n   * * `options.addHebrewDates` - print the Hebrew date for the entire date range\n   * * `options.addHebrewDatesForEvents` - print the Hebrew date for dates with some events\n   *\n   * Lastly, translation and transliteration of event titles is controlled by\n   * `options.locale` and the {@link Locale} API.\n   * `@hebcal/core` supports three locales by default:\n   * * `en` - default, Sephardic transliterations (e.g. \"Shabbat\")\n   * * `ashkenazi` - Ashkenazi transliterations (e.g. \"Shabbos\")\n   * * `he` - Hebrew (e.g. \"שַׁבָּת\")\n   *\n   * Additional locales (such as `ru` or `fr`) are supported by the\n   * {@link https://github.com/hebcal/hebcal-locales @hebcal/locales} package\n   *\n   * @example\n   * import {HebrewCalendar, HDate, Location, Event} from '@hebcal/core';\n   * const options = {\n   *   year: 1981,\n   *   isHebrewYear: false,\n   *   candlelighting: true,\n   *   location: Location.lookup('San Francisco'),\n   *   sedrot: true,\n   *   omer: true,\n   * };\n   * const events = HebrewCalendar.calendar(options);\n   * for (const ev of events) {\n   *   const hd = ev.getDate();\n   *   const date = hd.greg();\n   *   console.log(date.toLocaleDateString(), ev.render('en'), hd.toString());\n   * }\n   * @param {CalOptions} [options={}]\n   * @return {Event[]}\n   */\n  static calendar(options = {}) {\n    options = shallowCopy({}, options); // so we can modify freely\n    checkCandleOptions(options);\n    const location = options.location = options.location || defaultLocation;\n    const il = options.il = options.il || location.il || false;\n    options.mask = getMaskFromOptions(options);\n    if (options.ashkenazi || options.locale) {\n      if (options.locale && typeof options.locale !== 'string') {\n        throw new TypeError(`Invalid options.locale: ${options.locale}`);\n      }\n      const locale = options.ashkenazi ? 'ashkenazi' : options.locale;\n      const translationObj = Locale.useLocale(locale);\n      if (!translationObj) {\n        throw new TypeError(`Locale '${locale}' not found; did you forget to import @hebcal/locales?`);\n      }\n    } else {\n      Locale.useLocale('en');\n    }\n    const evts = [];\n    let sedra;\n    let holidaysYear;\n    let beginOmer;\n    let endOmer;\n    let currentYear = -1;\n    const startAndEnd = getStartAndEnd(options);\n    warnUnrecognizedOptions(options);\n    const startAbs = startAndEnd[0];\n    const endAbs = startAndEnd[1];\n    const startGreg = abs2greg(startAbs);\n    if (startGreg.getFullYear() < 100) {\n      options.candlelighting = false;\n    }\n    let mishnaYomiIndex;\n    if (options.mishnaYomi) {\n      mishnaYomiIndex = new MishnaYomiIndex();\n    }\n    let nachYomiIndex;\n    if (options.nachYomi) {\n      nachYomiIndex = new NachYomiIndex();\n    }\n    const yerushalmiCfg = options.yerushalmiEdition === 2 ? schottenstein : vilna;\n    for (let abs = startAbs; abs <= endAbs; abs++) {\n      const hd = new HDate(abs);\n      const hyear = hd.getFullYear();\n      if (hyear != currentYear) {\n        currentYear = hyear;\n        holidaysYear = getHolidaysForYear_(currentYear);\n        if (options.sedrot) {\n          sedra = getSedra_(currentYear, il);\n        }\n        if (options.omer) {\n          beginOmer = HDate.hebrew2abs(currentYear, NISAN, 16);\n          endOmer = HDate.hebrew2abs(currentYear, SIVAN, 5);\n        }\n      }\n      const prevEventsLength = evts.length;\n      const dow = hd.getDay();\n      let candlesEv = undefined;\n      const ev = holidaysYear.get(hd.toString()) || [];\n      ev.forEach(e => {\n        candlesEv = appendHolidayAndRelated(evts, e, options, candlesEv, dow);\n      });\n      if (options.sedrot && dow === SAT) {\n        const parsha0 = sedra.lookup(abs);\n        if (!parsha0.chag) {\n          evts.push(new ParshaEvent(hd, parsha0.parsha, il, parsha0.num));\n        }\n      }\n      if (options.dafyomi && hyear >= 5684) {\n        evts.push(new DafYomiEvent(hd));\n      }\n      if (options.yerushalmi && abs >= yerushalmiCfg.startAbs) {\n        const daf = yerushalmiYomi(abs, yerushalmiCfg);\n        // daf will be null to signal no Yerushalmi Yomi on YK and 9Av\n        if (daf != null) {\n          evts.push(new YerushalmiYomiEvent(hd, daf));\n        }\n      }\n      if (options.mishnaYomi && abs >= mishnaYomiStart) {\n        const mishnaYomi = mishnaYomiIndex.lookup(abs);\n        evts.push(new MishnaYomiEvent(hd, mishnaYomi));\n      }\n      if (options.nachYomi && abs >= nachYomiStart) {\n        const nachYomi = nachYomiIndex.lookup(abs);\n        evts.push(new NachYomiEvent(hd, nachYomi));\n      }\n      if (options.omer && abs >= beginOmer && abs <= endOmer) {\n        const omer = abs - beginOmer + 1;\n        const omerEv = new OmerEvent(hd, omer);\n        if (options.candlelighting) {\n          const zmanim = new Zmanim(hd.prev(), location.getLatitude(), location.getLongitude());\n          const tzeit = zmanim.tzeit(7.0833);\n          if (!isNaN(tzeit.getTime())) {\n            omerEv.alarm = tzeit;\n          }\n        }\n        evts.push(omerEv);\n      }\n      const hmonth = hd.getMonth();\n      if (options.molad && dow == SAT && hmonth != ELUL && hd.getDate() >= 23 && hd.getDate() <= 29) {\n        const monNext = hmonth == HDate.monthsInYear(hyear) ? NISAN : hmonth + 1;\n        evts.push(new MoladEvent(hd, hyear, monNext));\n      }\n      if (!candlesEv && options.candlelighting && (dow == FRI || dow == SAT)) {\n        candlesEv = makeCandleEvent(undefined, hd, dow, location, options);\n        if (dow === FRI && candlesEv && sedra) {\n          candlesEv.memo = sedra.getString(abs);\n        }\n      }\n      // suppress Havdalah when options.havdalahMins=0 or options.havdalahDeg=0\n      if (candlesEv instanceof HavdalahEvent && (options.havdalahMins === 0 || options.havdalahDeg === 0)) {\n        candlesEv = null;\n      }\n      if (candlesEv) {\n        evts.push(candlesEv);\n      }\n      if (options.addHebrewDates || options.addHebrewDatesForEvents && prevEventsLength != evts.length) {\n        const e2 = new HebrewDateEvent(hd);\n        if (prevEventsLength == evts.length) {\n          evts.push(e2);\n        } else {\n          evts.splice(prevEventsLength, 0, e2);\n        }\n      }\n    }\n    return evts;\n  }\n\n  /**\n   * Calculates a birthday or anniversary (non-yahrzeit).\n   * `hyear` must be after original `gdate` of anniversary.\n   * Returns `undefined` when requested year preceeds or is same as original year.\n   *\n   * Hebcal uses the algorithm defined in \"Calendrical Calculations\"\n   * by Edward M. Reingold and Nachum Dershowitz.\n   *\n   * The birthday of someone born in Adar of an ordinary year or Adar II of\n   * a leap year is also always in the last month of the year, be that Adar\n   * or Adar II. The birthday in an ordinary year of someone born during the\n   * first 29 days of Adar I in a leap year is on the corresponding day of Adar;\n   * in a leap year, the birthday occurs in Adar I, as expected.\n   *\n   * Someone born on the thirtieth day of Marcheshvan, Kislev, or Adar I\n   * has his birthday postponed until the first of the following month in\n   * years where that day does not occur. [Calendrical Calculations p. 111]\n   * @example\n   * import {HebrewCalendar} from '@hebcal/core';\n   * const dt = new Date(2014, 2, 2); // '2014-03-02' == '30 Adar I 5774'\n   * const hd = HebrewCalendar.getBirthdayOrAnniversary(5780, dt); // '1 Nisan 5780'\n   * console.log(hd.greg().toLocaleDateString('en-US')); // '3/26/2020'\n   * @param {number} hyear Hebrew year\n   * @param {Date|HDate} gdate Gregorian or Hebrew date of event\n   * @return {HDate} anniversary occurring in `hyear`\n   */\n  static getBirthdayOrAnniversary(hyear, gdate) {\n    return getBirthdayOrAnniversary_(hyear, gdate);\n  }\n\n  /**\n   * Calculates yahrzeit.\n   * `hyear` must be after original `gdate` of death.\n   * Returns `undefined` when requested year preceeds or is same as original year.\n   *\n   * Hebcal uses the algorithm defined in \"Calendrical Calculations\"\n   * by Edward M. Reingold and Nachum Dershowitz.\n   *\n   * The customary anniversary date of a death is more complicated and depends\n   * also on the character of the year in which the first anniversary occurs.\n   * There are several cases:\n   *\n   * * If the date of death is Marcheshvan 30, the anniversary in general depends\n   *   on the first anniversary; if that first anniversary was not Marcheshvan 30,\n   *   use the day before Kislev 1.\n   * * If the date of death is Kislev 30, the anniversary in general again depends\n   *   on the first anniversary — if that was not Kislev 30, use the day before\n   *   Tevet 1.\n   * * If the date of death is Adar II, the anniversary is the same day in the\n   *   last month of the Hebrew year (Adar or Adar II).\n   * * If the date of death is Adar I 30, the anniversary in a Hebrew year that\n   *   is not a leap year (in which Adar only has 29 days) is the last day in\n   *   Shevat.\n   * * In all other cases, use the normal (that is, same month number) anniversary\n   *   of the date of death. [Calendrical Calculations p. 113]\n   * @example\n   * import {HebrewCalendar} from '@hebcal/core';\n   * const dt = new Date(2014, 2, 2); // '2014-03-02' == '30 Adar I 5774'\n   * const hd = HebrewCalendar.getYahrzeit(5780, dt); // '30 Sh\\'vat 5780'\n   * console.log(hd.greg().toLocaleDateString('en-US')); // '2/25/2020'\n   * @param {number} hyear Hebrew year\n   * @param {Date|HDate} gdate Gregorian or Hebrew date of death\n   * @return {HDate} anniversary occurring in hyear\n   */\n  static getYahrzeit(hyear, gdate) {\n    return getYahrzeit_(hyear, gdate);\n  }\n\n  /**\n   * Lower-level holidays interface, which returns a `Map` of `Event`s indexed by\n   * `HDate.toString()`. These events must filtered especially for `flags.IL_ONLY`\n   * or `flags.CHUL_ONLY` depending on Israel vs. Diaspora holiday scheme.\n   * @function\n   * @param {number} year Hebrew year\n   * @return {Map<string,Event[]>}\n   */\n  static getHolidaysForYear(year) {\n    return getHolidaysForYear_(year);\n  }\n\n  /**\n   * Returns an array of holidays for the year\n   * @param {number} year Hebrew year\n   * @param {boolean} il use the Israeli schedule for holidays\n   * @return {Event[]}\n   */\n  static getHolidaysForYearArray(year, il) {\n    const cacheKey = `${year}-${il ? 1 : 0}`;\n    let events = yearArrayCache[cacheKey];\n    if (events) {\n      return events;\n    }\n    const yearMap = getHolidaysForYear_(year);\n    const startAbs = HDate.hebrew2abs(year, TISHREI, 1);\n    const endAbs = HDate.hebrew2abs(year + 1, TISHREI, 1) - 1;\n    events = [];\n    const myFilter = il ? observedInIsrael : observedInDiaspora;\n    for (let absDt = startAbs; absDt <= endAbs; absDt++) {\n      const hd = new HDate(absDt);\n      const holidays = yearMap.get(hd.toString());\n      if (holidays) {\n        const filtered = holidays.filter(myFilter);\n        events = events.concat(filtered);\n      }\n    }\n    yearArrayCache[cacheKey] = events;\n    return events;\n  }\n\n  /**\n   * Returns an array of Events on this date (or undefined if no events)\n   * @param {HDate|Date|number} date Hebrew Date, Gregorian date, or absolute R.D. day number\n   * @param {boolean} [il] use the Israeli schedule for holidays\n   * @return {Event[]}\n   */\n  static getHolidaysOnDate(date, il) {\n    const hd = HDate.isHDate(date) ? date : new HDate(date);\n    const yearMap = getHolidaysForYear_(hd.getFullYear());\n    const events = yearMap.get(hd.toString());\n    if (typeof il === 'undefined' || typeof events === 'undefined') {\n      return events;\n    }\n    const myFilter = il ? observedInIsrael : observedInDiaspora;\n    return events.filter(myFilter);\n  }\n\n  /**\n   * Helper function to format a 23-hour (00:00-23:59) time in US format (\"8:13pm\") or\n   * keep as \"20:13\" for any other locale/country. Uses {@link CalOptions} to determine\n   * locale.\n   * If `options.hour12` is `false`, locale is ignored and always returns 24-hour time.\n   * If `options.hour12` is `true`, locale is ignored and always returns 12-hour time.\n   * @param {string} timeStr - original time like \"20:30\"\n   * @param {string} suffix - \"p\" or \"pm\" or \" P.M.\". Add leading space if you want it\n   * @param {CalOptions} options\n   * @return {string}\n   */\n  static reformatTimeStr(timeStr, suffix, options) {\n    if (typeof timeStr !== 'string') throw new TypeError(`Bad timeStr: ${timeStr}`);\n    const cc = options.location && options.location.cc || (options.il ? 'IL' : 'US');\n    if (typeof options.hour12 !== 'undefined' && !options.hour12) {\n      return timeStr;\n    }\n    if (!options.hour12 && typeof hour12cc[cc] === 'undefined') {\n      return timeStr;\n    }\n    const hm = timeStr.split(':');\n    let hour = parseInt(hm[0], 10);\n    if (hour < 12 && suffix) {\n      suffix = suffix.replace('p', 'a').replace('P', 'A');\n    } else if (hour > 12) {\n      hour = hour % 12;\n    }\n    return `${hour}:${hm[1]}${suffix}`;\n  }\n\n  /** @return {string} */\n  static version() {\n    return version;\n  }\n\n  /**\n   * Convenience function to create an instance of `Sedra` or reuse a previously\n   * created and cached instance.\n   * @function\n   * @param {number} hyear\n   * @param {boolean} il\n   * @return {Sedra}\n   */\n  static getSedra(hyear, il) {\n    return getSedra_(hyear, il);\n  }\n\n  /**\n   * Return a number containing information on what Hallel is said on that day.\n   *\n   * Whole Hallel is said on Chanukah, the first Yom Tov of Pesach, Shavuot, Sukkot,\n   * Yom Ha'atzmaut, and Yom Yerushalayim.\n   *\n   * Half Hallel is said on Rosh Chodesh (not Rosh Hashanah), and the last 6 days of Pesach.\n   *\n   * The number is one of the following values:\n   *\n   * 0 - No Hallel\n   * 1 - Half Hallel\n   * 2 - Whole Hallel\n   *\n   * @param {HDate} hdate\n   * @param {boolean} il\n   * @return {number}\n   */\n  static hallel(hdate, il) {\n    const events = HebrewCalendar.getHolidaysForYearArray(hdate.getFullYear(), il);\n    return hallel_(events, hdate);\n  }\n\n  /**\n   * Return details on what Tachanun (or Tzidchatcha on Shabbat) is said on `hdate`.\n   *\n   * Tachanun is not said on Rosh Chodesh, the month of Nisan, Lag Baomer,\n   * Rosh Chodesh Sivan until Isru Chag, Tisha B'av, 15 Av, Erev Rosh Hashanah,\n   * Rosh Hashanah, Erev Yom Kippur until after Simchat Torah, Chanukah,\n   * Tu B'shvat, Purim and Shushan Purim, and Purim and Shushan Purim Katan.\n   *\n   * In some congregations Tachanun is not said until from Rosh Chodesh Sivan\n   * until 14th Sivan, Sukkot until after Rosh Chodesh Cheshvan, Pesach Sheini,\n   * Yom Ha'atzmaut, and Yom Yerushalayim.\n   *\n   * Tachanun is not said at Mincha on days before it is not said at Shacharit.\n   *\n   * Tachanun is not said at Shacharit on Shabbat, but is at Mincha, usually.\n   * @param {HDate} hdate\n   * @param {boolean} il\n   * @return {TachanunResult}\n   */\n  static tachanun(hdate, il) {\n    return tachanun_(hdate, il);\n  }\n}\n\n/**\n * Appends the Event `ev` to the `events` array. Also may add related\n * timed events like candle-lighting or fast start/end\n * @private\n * @param {Event[]} events\n * @param {Event} ev\n * @param {CalOptions} options\n * @param {Event} candlesEv\n * @param {number} dow\n * @return {Event}\n */\nfunction appendHolidayAndRelated(events, ev, options, candlesEv, dow) {\n  const il = options.il;\n  if (!ev.observedIn(il)) {\n    return candlesEv; // holiday isn't observed here; bail out early\n  }\n\n  const eFlags = ev.getFlags();\n  if (!options.yomKippurKatan && eFlags & flags.YOM_KIPPUR_KATAN || options.noModern && eFlags & MODERN_HOLIDAY) {\n    return candlesEv; // bail out early\n  }\n\n  const location = options.location;\n  const isMajorFast = Boolean(eFlags & MAJOR_FAST);\n  const isMinorFast = Boolean(eFlags & MINOR_FAST);\n  if (options.candlelighting && (isMajorFast || isMinorFast)) {\n    ev = makeFastStartEnd(ev, location);\n    if (ev.startEvent && (isMajorFast || isMinorFast && !options.noMinorFast)) {\n      events.push(ev.startEvent);\n    }\n  }\n  if (eFlags & options.mask || !eFlags && !options.userMask) {\n    if (options.candlelighting && eFlags & MASK_LIGHT_CANDLES) {\n      const hd = ev.getDate();\n      candlesEv = makeCandleEvent(ev, hd, dow, location, options);\n      if (eFlags & CHANUKAH_CANDLES && candlesEv && !options.noHolidays) {\n        const chanukahEv = dow === FRI || dow === SAT ? candlesEv : makeWeekdayChanukahCandleLighting(ev, hd, location);\n        const attrs = {\n          eventTime: chanukahEv.eventTime,\n          eventTimeStr: chanukahEv.eventTimeStr,\n          location\n        };\n        if (ev.chanukahDay) attrs.chanukahDay = ev.chanukahDay;\n        if (ev.emoji) attrs.emoji = ev.emoji;\n        // Replace Chanukah event with a clone that includes candle lighting time.\n        // For clarity, allow a \"duplicate\" candle lighting event to remain for Shabbat\n        ev = new HolidayEvent(ev.getDate(), ev.getDesc(), eFlags, attrs);\n        candlesEv = undefined;\n      }\n    }\n    if (options.yomKippurKatan && eFlags & flags.YOM_KIPPUR_KATAN) {\n      events.push(ev);\n    } else if (!options.noHolidays) {\n      events.push(ev); // the original event itself\n    }\n  }\n\n  if (ev.endEvent && (isMajorFast || isMinorFast && !options.noMinorFast)) {\n    events.push(ev.endEvent);\n  }\n  return candlesEv;\n}\n\nexport { AsaraBTevetEvent, CandleLightingEvent, DafYomi, DafYomiEvent, Event, HDate, HavdalahEvent, HebrewCalendar, HebrewDateEvent, HolidayEvent, Locale, Location, MevarchimChodeshEvent, MishnaYomiEvent, MishnaYomiIndex, Molad, MoladEvent, NachYomiEvent, NachYomiIndex, OmerEvent, ParshaEvent, RoshChodeshEvent, RoshHashanaEvent, Sedra, SolarCalc, TimedEvent, YerushalmiYomiEvent, Zmanim, flags, gematriya, greg, months, parshiot, schottenstein, version, vilna, yerushalmiYomi };\n","import $ from './sefariaJquery';\nimport extend from 'extend';\nimport striptags from 'striptags';\nimport humanizeDuration from 'humanize-duration';\nimport sanitizeHtml from 'sanitize-html';\nimport Sefaria  from './sefaria';\nimport {HDate, months} from '@hebcal/core';\n\nvar INBROWSER = (typeof document !== 'undefined');\n\nclass Util {\n\n    /**\n     * Method to scroll into view port, if it's outside the viewport\n     * From: https://medium.com/@makk.bit/scroll-into-view-if-needed-10a96e0bdb61\n     * @param {Object} target - DOM Element\n     * @returns {undefined}\n     * See also: https://www.javascripttutorial.net/dom/css/check-if-an-element-is-visible-in-the-viewport/\n     *\n     */\n    static scrollIntoViewIfNeeded(target, scrollIntoViewOptions) {\n        // Target is outside the viewport from the bottom\n        if (target.getBoundingClientRect().bottom > window.innerHeight) {\n            //  The bottom of the target will be aligned to the bottom of the visible area of the scrollable ancestor.\n            target.scrollIntoView(scrollIntoViewOptions);\n        }\n\n        // Target is outside the view from the top\n        if (target.getBoundingClientRect().top < 0) {\n            // The top of the target will be aligned to the top of the visible area of the scrollable ancestor\n            target.scrollIntoView(scrollIntoViewOptions);\n        }\n    }\n    static selectElementContents(el) {\n      //source: https://stackoverflow.com/questions/4183401/can-you-set-and-or-change-the-user-s-text-selection-in-javascript\n      if (window.getSelection && document.createRange) {\n        var sel = window.getSelection();\n        var range = document.createRange();\n        range.selectNodeContents(el);\n        sel.removeAllRanges();\n        sel.addRange(range);\n      } else if (document.selection && document.body.createTextRange) {\n        var textRange = document.body.createTextRange();\n        textRange.moveToElementText(el);\n        textRange.select();\n      }\n    }\n    static encodeVtitle(vtitle) {\n      return vtitle.replace(/\\s/g, '_').replace(/;/g, '%3B');\n    }\n    static getUrlVersionsParams(currVersions, i=0) {\n      currVersions = this.getCurrVersionsWithoutAPIResultFields(currVersions);\n      if (currVersions) {\n        return Object.entries(currVersions)\n          .filter(([vlang, vtitle]) => !!vtitle)\n          .map(([vlang, vtitle]) =>`&v${vlang}${i > 1 ? i : \"\"}=${this.encodeVtitle(vtitle)}`)\n          .join(\"\");\n      } else {\n        return \"\";\n      }\n    }\n    static getCurrVersionsWithoutAPIResultFields(currVersions) {\n      /**\n       * currVersions can contain fields like `enAPIResult` and `heAPIResult`.\n       * returns an object without these fields\n       */\n      if (!currVersions) { return currVersions; }\n      return Object.entries(currVersions).reduce(\n        (a, [vlang, vtitle]) => {\n          if (vlang.endsWith(\"APIResult\")) { return a; }\n          a[vlang] = vtitle;\n          return a;\n        }, {}\n      );\n    }\n    static decodeVtitle(vtitle) {\n      return vtitle.replace(/_/g, ' ').replace(/%3B/g, ';');\n    }\n    static localeDate(dateString) {\n        // takes dateString (usually generated from Python datetime object) and returns a human readable string depending on interfaceLang\n        const locale = Sefaria.interfaceLang === 'english' ? 'en-US' : 'he-Hebr-IL';\n        const dateOptions = {year: 'numeric', month: 'long', day: 'numeric'};\n        return (new Date(dateString)).toLocaleDateString(locale, dateOptions);  // remove comma from english date\n    }\n    static hebrewCalendarDateStr(dateObjStr){\n        //returns a fully qualified Hebrew calendar date from a Gregorian input. Can output in English or Hebrew\n        const hd = new HDate(new Date(dateObjStr));\n        //Up to this we could have gotten away with built in international date objects in js:\n        // By specifying dateOptions['calendar'] = 'hebrew'; as in the function above.\n        //That would result in a hybrid hebrew date though, that still uses English numerals for day and year.\n        //So we use Hebcal's renderGematriya()\n        return Sefaria.interfaceLang === 'english' ? hd.render() : hd.renderGematriya();\n    }\n    static sign_up_user_testing() {\n      // temporary function to be used in template 'user_testing_israel.html'\n        const validateEmail = function(email) {\n          const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n          return re.test(email);\n        };\n        const email = $('#email-input').val();\n        if (!validateEmail(email)) {\n            alert(email + ' is not a valid email');\n            return;\n        }\n        console.log('Email valid', email);\n        const feedback = {\n          refs: null,\n          type: 'user_testing',\n          url: null,\n          currVersions: null,\n          email: email\n        };\n        const postData = {json: JSON.stringify(feedback)};\n        $.post('/api/send_feedback', postData);\n    }\n     static subscribeToNbList(email, lists) {\n        if (Sefaria.util.isValidEmailAddress(email)) {\n            $.post(\"/api/subscribe/\" + email + \"?lists=\" + lists, function(data) {\n                if (\"error\" in data) {\n                    console.log(data.error);\n                } else {\n                    console.log(\"Subscribed! Welcome to our list.\");\n                }\n            }).error(data => console.log(\"Sorry, there was an error.\"));\n        } else {\n        console.log(\"not valid email address\")\n        }\n    }\n    static naturalTimePlural(n, singular, plural) {\n      return n <= 1 ? singular : plural;\n    }\n    static naturalTime(timeStamp, {lang, short}={}) {\n      // given epoch time stamp, return string of time delta between `timeStamp` and now\n      const now = Util.epoch_time();\n      let language = lang ? lang : (Sefaria.interfaceLang === 'hebrew' ? 'he' : 'en');\n      let spacer = \" \";\n      if(short){\n          language = language == \"en\" ? \"shortEn\" : \"shortHe\";\n          spacer = language == \"shortEn\" ? \"\" : \" \";\n      }\n      return Util.sefariaHumanizeDuration(now - timeStamp, { \"language\": language, \"spacer\": spacer });\n    }\n    static object_equals(a, b) {\n        // simple object equality assuming values are primitive. see here\n        // http://adripofjavascript.com/blog/drips/object-equality-in-javascript.html\n        if ((typeof a) !== (typeof b))      { return false; }\n        if ((a === null && b !== null) || (a !== null && b === null))\n                                            { return false; }\n        const aProps = Object.getOwnPropertyNames(a);\n        const bProps = Object.getOwnPropertyNames(b);\n        if (aProps.length != bProps.length) { return false; }\n        for (let propName of aProps) {\n          if (a[propName] !== b[propName])  { return false; }\n        }\n        return true;\n    }\n    static epoch_time() {\n      // get current epoch time in UTC\n      // silly but thus is JS\n      // see: https://stackoverflow.com/a/6777470/4246723\n      const now = new Date();\n      const nowUTC =  Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(),\n                               now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());\n      return Math.round(nowUTC/1000);\n    }\n    static stripImgs(s) {\n      return !s ? \"\" : sanitizeHtml(s, {\n          allowedTags: sanitizeHtml.defaults.allowedTags.filter(tag => tag !== 'img'),\n          allowedAttributes: sanitizeHtml.defaults.allowedAttributes\n      });\n    }\n    static zip(...rows) {\n      // rows is an array\n      // corrolary to zip in python\n      return rows[0].map((_,c)=>rows.map(row=>row[c]));\n    }\n    static clone(obj, prepareForSerialization) {\n        // Handle the 3 simple types, and null or undefined\n        if (null == obj || \"object\" != typeof obj) {\n            return obj;\n        }\n\n        if (typeof obj.clone === 'function') {\n          // this handles any object with a clone function which currently\n          // includes SearchState and FilterNode\n          return obj.clone(prepareForSerialization);\n        }\n\n        // Handle Date\n        if (obj instanceof Date) {\n            const copy = new Date();\n            copy.setTime(obj.getTime());\n            return copy;\n        }\n\n        // Handle Array\n        if (obj instanceof Array) {\n            return obj.map(item => this.clone(item, prepareForSerialization));\n        }\n\n        // Handle Object\n        if (obj instanceof Object) {\n            const copy = {};\n            for (const [attr, value] of Object.entries(obj)) {\n                copy[attr] = this.clone(value, prepareForSerialization);\n            }\n            return copy;\n        }\n\n        throw new Error(\"Unable to copy obj! Its type isn't supported.\");\n    }\n    static throttle(func, limit) {\n      // Returns a functions which throttle `func`\n        var wait = false;                 // Initially, we're not waiting\n        return function () {              // We return a throttled function\n            if (!wait) {                  // If we're not waiting\n                func.call();              // Execute users function\n                wait = true;              // Prevent future invocations\n                setTimeout(function () {  // After a period of time\n                    wait = false;         // And allow future invocations\n                }, limit);\n            }\n        }\n    }\n\n    static htmlToText(html){\n        //remove code brakes and tabs\n        html = html.replace(/\\n/g, \"\");\n        html = html.replace(/\\t/g, \"\");\n\n        //keep html brakes and tabs\n        html = html.replace(/<\\/td>/g, \"\\t\");\n        html = html.replace(/<\\/table>/g, \"\\n\");\n        html = html.replace(/<\\/tr>/g, \"\\n\");\n        html = html.replace(/<\\/p>/g, \"\\n\");\n        html = html.replace(/<\\/div>/g, \"\\n\");\n        html = html.replace(/<br>/g, \"\\n\");\n        html = html.replace(/<br( )*\\/>/g, \"\\n\");\n\n\n        //parse html into text\n        const dom = (new DOMParser()).parseFromString('<!doctype html><body>' + html, 'text/html');\n        //remove duplicate line breaks\n        const text = dom.body.textContent.replace(/\\n\\s*\\n/g, \"\\n\");\n\n        return text\n      }\n\n\n\n    static cleanHTML(html) {\n        html = html.replace(/\\u00a0/g, ' ').replace(/&nbsp;/g, ' ').replace(new RegExp (\"(\\\\n)+$\", 'gm'), '');\n        var clean = sanitizeHtml(html, {\n            allowedTags: ['blockquote', 'p', 'a', 'ul', 'ol',\n                'nl', 'li', 'b', 'i', 'strong', 'em', 'small', 'big', 'span', 'strike', 'hr', 'br', 'div',\n                'table', 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre', 'sup','u', 'h1'],\n            allowedAttributes: {\n                a: ['href', 'name', 'target', 'class', 'data-ref'],\n                img: ['src'],\n                p: ['style'],\n                span: ['style'],\n                div: ['style'],\n                td: ['colspan'],\n            },\n            allowedStyles: {\n                '*': {\n                    'color': [/^\\#(0x)?[0-9a-f]+$/i, /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/],\n                    'background-color': [/^\\#(0x)?[0-9a-f]+$/i, /^rgb(?!\\(\\s*255\\s*,\\s*255\\s*,\\s*255\\s*\\))\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/],\n                    'text-align': [/^left$/, /^right$/, /^center$/],\n                },\n            },\n            exclusiveFilter: function (frame) {\n                return frame.tag === 'p' && !frame.text.trim();\n            } //removes empty p tags  generated by ckeditor...\n\n        });\n        return clean;\n    }\n\n    static debounce(func, wait, immediate) {\n      // Returns a function which debounces `func`\n        var timeout;\n        return function() {\n            var context = this, args = arguments;\n            var later = function() {\n                timeout = null;\n                if (!immediate) func.apply(context, args);\n            };\n            var callNow = immediate && !timeout;\n            clearTimeout(timeout);\n            timeout = setTimeout(later, wait);\n            if (callNow) func.apply(context, args);\n        };\n    }\n    static inArray(needle, haystack) {\n      if (!haystack) { return -1 } //For parity of behavior w/ JQuery inArray\n      var index = -1;\n      for (var i = 0; i < haystack.length; i++) {\n        if ((needle.compare && needle.compare(haystack[i])) || haystack[i] === needle) {\n          index = i;\n          break;\n        }\n      }\n      return index;\n    }\n    static currentPath() {\n      // Returns the current path plus search string if a browser context\n      // or \"/\" in a browser-less context.\n      return (typeof window === \"undefined\" ) ? this._initialPath :\n                window.location.pathname + window.location.search;\n    }\n\n    static isUrl(string) {\n      var res = string.match(/(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/g);\n      return (res !== null)\n    }\n\n    static parseUrl(url) {\n      var a =  document.createElement('a');\n      a.href = url;\n      return {\n        source: url,\n        protocol: a.protocol.replace(':',''),\n        host: a.hostname,\n        port: a.port,\n        query: a.search,\n        params: (function(){\n          var ret = {},\n            seg = a.search.replace(/^\\?/,'').split('&'),\n            len = seg.length, i = 0, s;\n          for (;i<len;i++) {\n            if (!seg[i]) { continue; }\n            s = seg[i].split('=');\n            ret[s[0]] = s[1];\n          }\n          return ret;\n        })(),\n        file: (a.pathname.match(/\\/([^\\/?#]+)$/i) || [,''])[1],\n        hash: a.hash.replace('#',''),\n        path: a.pathname.replace(/^([^\\/])/,'/$1'),\n        relative: (a.href.match(/tps?:\\/\\/[^\\/]+(.+)/) || [,''])[1],\n        segments: a.pathname.replace(/^\\//,'').split('/')\n      };\n    }\n\n    static parseHash(urlHash) {\n      let sections = urlHash.split(\"&\");\n      let hashDict = {}\n      sections.forEach(x => {\n        const i = x.indexOf(\"=\");\n        if (i !== -1) {\n          hashDict[x.slice(0,i)] = x.slice(i+1);\n        } else {\n          hashDict[x] = x;\n        }\n      })\n      return hashDict;\n    }\n    static isValidEmailAddress(emailAddress) {\n      var pattern = new RegExp(/^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i);\n      return pattern.test(emailAddress);\n    }\n    static cookie(key, value) {\n     // Mock cookie function to mirror $.cookie for use Server Side\n     if (typeof value === \"undefined\") {\n      return Util._cookies[key];\n     }\n     Util._cookies[key] = value;\n    }\n    static openInNewTab(url) {\n      var win = window.open(url, '_blank');\n      win.focus();\n    }\n    static commonSubstring(str1, str2){\n        const length = Math.min(str1.length, str2.length);\n        let index = 0;\n        while(index<length && str1[index] === str2[index])\n            index++;\n        return str1.substring(0, index);\n    }\n    static setupPrototypes() {\n\n        String.prototype.toProperCase = function() {\n          // Treat anything after \", \" as a new clause\n          // so that titles like \"Orot, The Ideals of Israel\" keep a capital The\n          var clauses = this.split(\", \");\n\n          for (var n = 0; n < clauses.length; n++) {\n              var i, j, str, lowers, uppers;\n              str = clauses[n].replace(/([^\\W_]+[^\\s-]*) */g, function(txt) {\n                // We're not lowercasing the end of the string because of cases like \"HaRambam\"\n                return txt.charAt(0).toUpperCase() + txt.substr(1);\n              });\n\n              // Certain minor words should be left lowercase unless\n              // they are the first or last words in the string\n              lowers = ['A', 'An', 'The', 'And', 'But', 'Or', 'For', 'Nor', 'As', 'At',\n              'By', 'For', 'From', 'Is', 'In', 'Into', 'Near', 'Of', 'On', 'Onto', 'To', 'With'];\n              for (i = 0, j = lowers.length; i < j; i++) {\n                str = str.replace(new RegExp('\\\\s' + lowers[i] + '\\\\s', 'g'),\n                  function(txt) {\n                    return txt.toLowerCase();\n                  });\n               }\n\n              // Certain words such as initialisms or acronyms should be left uppercase\n              uppers = ['Id', 'Tv', 'Ii', 'Iii', \"Iv\"];\n              for (i = 0, j = uppers.length; i < j; i++) {\n                str = str.replace(new RegExp('\\\\b' + uppers[i] + '\\\\b', 'g'),\n                  uppers[i].toUpperCase());\n              }\n\n              clauses[n] = str;\n          }\n\n          return clauses.join(\", \");\n        };\n\n        String.prototype.toFirstCapital = function() {\n            return this.charAt(0).toUpperCase() + this.substr(1);\n        };\n\n        String.prototype.stripHtml = function() {\n          return striptags(this.replace(/\\u00a0/g, ' ').decodeHtmlEntities());\n        };\n\n        String.prototype.stripNikkud = function() {\n          return this.replace(/[\\u0591-\\u05C7]/g,\"\");\n        }\n\n        String.prototype.stripHtmlConvertLineBreaks = function() {\n          // Converts line breaks to spaces\n          return striptags(this.replace(/\\u00a0/g, ' ').decodeHtmlEntities().replace(/<p>/g, ' <p>').replace(/(<br>|\\n)+/g,' '));\n        };\n\n        String.prototype.stripPunctuation = function() {\n          const regex = /[!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]/g;\n          return this.replace(regex, '');\n        };\n\n        String.prototype.escapeHtml = function() {\n          return this.replace(/&/g,'&amp;')\n                      .replace(/</g,'&lt;')\n                      .replace(/>/g,'&gt;')\n                      .replace(/'/g,'&apos;')\n                      .replace(/\"/g,'&quot;')\n                      .replace(/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g, '$1<br />$2');\n        };\n\n        String.prototype.decodeHtmlEntities = function() {\n          return this.replace(/&nbsp;/gi, \" \")\n                      .replace(/&amp;/gi, \"&\")\n                      .replace(/&quot;/gi, `\"`)\n                      .replace(/&lt;/gi, \"<\")\n                      .replace(/&gt;/gi, \">\");\n        };\n\n        if (!String.prototype.startsWith) {\n            String.prototype.startsWith = function(searchString, position){\n              position = position || 0;\n              return this.substr(position, searchString.length) === searchString;\n          };\n        }\n\n        String.prototype.splitCamelCase = function() {\n              return this.replace(/([A-Z])/g, ' $1')\n                          .trim()\n                          .replace(/^./, str => str.toUpperCase())\n        };\n\n        String.prototype.camelize = function() {\n          return this.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, function(match, index) {\n            if (+match === 0) return \"\"; // or if (/\\s+/.test(match)) for white spaces\n            return index === 0 ? match.toLowerCase() : match.toUpperCase();\n          });\n        }\n\n        Array.prototype.compare = function(testArr) {\n            if (this.length != testArr.length) return false;\n            for (var i = 0; i < testArr.length; i++) {\n                if (this[i].compare) {\n                    if (!this[i].compare(testArr[i])) return false;\n                }\n                if (this[i] !== testArr[i]) return false;\n            }\n            return true;\n        };\n\n        Array.prototype.elementsAreEqual = function (testArr) {\n          // uses Object.is() to determine is elements point to same objects even if outer array is different\n          if (!testArr || (this.length != testArr.length)) return false;\n          for (var i = 0; i < testArr.length; i++) {\n              if (!Object.is(this[i], testArr[i])) return false;\n          }\n          return true;\n        }\n\n        Array.prototype.pad = function(s,v) {\n            var l = Math.abs(s) - this.length;\n            var a = [].concat(this);\n            if (l <= 0)\n              return a;\n            for(var i=0; i<l; i++)\n              s < 0 ? a.unshift(v) : a.push(v);\n            return a;\n        };\n\n        Array.prototype.unique = function() {\n            var a = [];\n            var l = this.length;\n            for(var i=0; i<l; i++) {\n              for(var j=i+1; j<l; j++) {\n                // If this[i] is found later in the array\n                if (this[i] === this[j])\n                  j = ++i;\n              }\n              a.push(this[i]);\n            }\n            return a;\n        };\n\n        Array.prototype.toggle = function(value) {\n            var index = this.indexOf(value);\n\n            if (index === -1) {\n                this.push(value);\n            } else {\n                this.splice(index, 1);\n            }\n            return this;\n        };\n\n        Array.prototype.move = function (old_index, new_index) {\n            if (new_index >= this.length) {\n                var k = new_index - this.length;\n                while ((k--) + 1) {\n                    this.push(undefined);\n                }\n            }\n            this.splice(new_index, 0, this.splice(old_index, 1)[0]);\n            return this; // for testing purposes\n        };\n        /*  I highly suspect that these functions work properly. Not worth the slight performance gain. Commenting out for now in case we want to revisit later.\n        Array.prototype.insertInOrder = function(element, comparer) {\n          // see https://stackoverflow.com/questions/1344500/efficient-way-to-insert-a-number-into-a-sorted-array-of-numbers\n          // insert `element` into array so that the array remains sorted, assuming it was sorted to begin with\n          this.splice(this.locationOfSorted(element, comparer) + 1, 0, element);\n          return this;\n        };\n\n        Array.prototype.locationOfSorted = function(element, comparer, start, end) {\n          // https://stackoverflow.com/questions/1344500/efficient-way-to-insert-a-number-into-a-sorted-array-of-numbers\n          // get index to insert `element` into array so that array remains sorted, assuming it was sorted to begin with\n          if (this.length === 0)\n            return -1;\n\n          start = start || 0;\n          end = end || this.length;\n          const pivot = (start + end) >> 1;  // should be faster than dividing by 2\n\n          const c = comparer(element, this[pivot]);\n          if (end - start <= 1) return c == -1 ? pivot - 1 : pivot;\n\n          switch (c) {\n            case -1: return this.locationOfSorted(element, comparer, start, pivot);\n            case 0: return pivot;\n            case 1: return this.locationOfSorted(element, comparer, pivot, end);\n          };\n        };\n        */\n\n        Number.prototype.addCommas = function() {\n          return this.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n        };\n\n        if (!Array.prototype.fill) {\n          Object.defineProperty(Array.prototype, 'fill', {\n            value: function(value) {\n\n              if (this == null) {\n                throw new TypeError('this is null or not defined');\n              }\n\n              var O = Object(this);\n              var len = O.length >>> 0;\n\n              var start = arguments[1];\n              var relativeStart = start >> 0;\n              var k = relativeStart < 0 ?\n                Math.max(len + relativeStart, 0) :\n                Math.min(relativeStart, len);\n              var end = arguments[2];\n              var relativeEnd = end === undefined ?\n                len : end >> 0;\n              var final = relativeEnd < 0 ?\n                Math.max(len + relativeEnd, 0) :\n                Math.min(relativeEnd, len);\n              while (k < final) {\n                O[k] = value;\n                k++;\n              }\n              return O;\n            }\n          });\n        }\n\n        // https://tc39.github.io/ecma262/#sec-array.prototype.find\n        if (!Array.prototype.find) {\n          Object.defineProperty(Array.prototype, 'find', {\n            value: function(predicate) {\n             // 1. Let O be ? ToObject(this value).\n              if (this == null) {\n                throw new TypeError('\"this\" is null or not defined');\n              }\n\n              var o = Object(this);\n\n              // 2. Let len be ? ToLength(? Get(O, \"length\")).\n              var len = o.length >>> 0;\n\n              // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n              if (typeof predicate !== 'function') {\n                throw new TypeError('predicate must be a function');\n              }\n\n              // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n              var thisArg = arguments[1];\n\n              // 5. Let k be 0.\n              var k = 0;\n\n              // 6. Repeat, while k < len\n              while (k < len) {\n                // a. Let Pk be ! ToString(k).\n                // b. Let kValue be ? Get(O, Pk).\n                // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n                // d. If testResult is true, return kValue.\n                var kValue = o[k];\n                if (predicate.call(thisArg, kValue, k, o)) {\n                  return kValue;\n                }\n                // e. Increase k by 1.\n                k++;\n              }\n\n              // 7. Return undefined.\n              return undefined;\n            }\n          });\n        }\n\n        RegExp.escape = function(s) {\n            return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n        };\n    }\n    static setupMisc() {\n        // Protect against browsers without consoles and forgotten console statements\n        if(typeof(console) === 'undefined') {\n            var console = {};\n            console.log = function() {};\n        }\n    }\n    static handleUserCookie(uid) {\n        var cookie = INBROWSER ? $.cookie : this.cookie;\n\n        if (uid) {\n            // If logged in, replace cookie with current system details\n\n            var expires = new Date(); // starts with current time\n            expires.setTime(expires.getTime() + 2 * 365 * 24 * 3600 * 1000);  // milliseconds\n\n            cookie(\"_user\", JSON.stringify({\n               _uid: uid,\n            }), { path: \"/\", expires: expires });\n        } else {\n            // If not logged in, get details from cookie\n            var c = cookie(\"_user\");\n            if (c) {\n              c = JSON.parse(c);\n              return c;\n            }\n        }\n    }\n    static getNormalizedSelectionString(){\n          const selection = window.getSelection()\n          if (selection.rangeCount) {\n              let container = document.createElement(\"div\");\n              for (let i = 0, len = selection.rangeCount; i < len; ++i) {\n                  container.appendChild(selection.getRangeAt(i).cloneContents());\n              }\n                //remove line numbers\n              let lineNumbers = container.getElementsByClassName('segmentNumber');\n              while(lineNumbers.length > 0){\n                  lineNumbers[0].parentNode.removeChild(lineNumbers[0]);\n              }\n              let titleBoxes = container.getElementsByClassName('titleBox');\n              while(titleBoxes.length > 0){\n                  titleBoxes[0].parentNode.removeChild(titleBoxes[0]);\n              }\n              //remove other language. will need to be generalized for\n              var curReaderPanel = (selection.getRangeAt(0).commonAncestorContainer.parentNode.closest('.readerPanel'))\n              if (curReaderPanel && curReaderPanel.classList.contains('hebrew')) {\n                  var elsToRemove = container.getElementsByClassName('en')\n                  while(elsToRemove.length > 0){\n                      elsToRemove[0].parentNode.removeChild(elsToRemove[0]);\n                  }\n              }\n              else if (curReaderPanel && curReaderPanel.classList.contains('english')) {\n                  var elsToRemove = container.getElementsByClassName('he')\n                  while(elsToRemove.length > 0){\n                      elsToRemove[0].parentNode.removeChild(elsToRemove[0]);\n                  }\n              }\n              return container.innerText;\n          }\n          else {\n              return selection.toString();\n          }\n    }\n    static getSelectionBoundaryElement(isStart) {\n        // http://stackoverflow.com/questions/1335252/how-can-i-get-the-dom-element-which-contains-the-current-selection\n        var range, sel, container;\n        if (document.selection) {\n            range = document.selection.createRange();\n            range.collapse(isStart);\n            return range.parentElement();\n        } else {\n            sel = window.getSelection();\n            if (sel.getRangeAt) {\n                if (sel.rangeCount > 0) {\n                    range = sel.getRangeAt(0);\n                }\n            } else {\n                // Old WebKit\n                range = document.createRange();\n                range.setStart(sel.anchorNode, sel.anchorOffset);\n                range.setEnd(sel.focusNode, sel.focusOffset);\n\n                // Handle the case when the selection was selected backwards (from the end to the start in the document)\n                if (range.collapsed !== sel.isCollapsed) {\n                    range.setStart(sel.focusNode, sel.focusOffset);\n                    range.setEnd(sel.anchorNode, sel.anchorOffset);\n                }\n           }\n\n            if (range) {\n               container = range[isStart ? \"startContainer\" : \"endContainer\"];\n\n               // Check if the container is a text node and return its parent if so\n               return container.nodeType === 3 ? container.parentNode : container;\n            }\n        }\n    }\n    static getUrlVars() {\n      var vars = {};\n      var url = INBROWSER ? window.location.href : this._initialPath;\n      var parts = url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {\n          vars[key] = decodeURIComponent(value);\n      });\n      return vars;\n    }\n    static replaceUrlParam(paramName, paramValue){\n      //TODO: This does not create the correct urls for multipanel views. It ends up just tacking on an extra \"with\" param on the end\n      var url = INBROWSER ? window.location.href : this._initialPath;\n      if(paramValue == null)\n          paramValue = '';\n      var pattern = new RegExp('\\\\b('+paramName+'=).*?(&|$)')\n      if(url.search(pattern)>=0){\n          return url.replace(pattern,'$1' + paramValue + '$2');\n      }\n      return url + (url.indexOf('?')>0 ? '&' : '?') + paramName + '=' + paramValue\n    }\n    static removeUrlParam(paramName){\n      var url = INBROWSER ? window.location.href : this._initialPath;\n      var pattern = new RegExp('\\\\b(&|\\\\?)('+paramName+'=).*?(&|$)');\n      return url.replace(pattern, '$1');\n    }\n    static linkify(str) {\n      return str.replace(/(?:(https?\\:\\/\\/[^\\s]+))/m, '<a target=\"_blank\" href=\"$1\">$1</a>');\n    }\n    static getScrollbarWidth() {\n      // Returns the size of the browser scrollbars in pixels\n      // May be 0 for browsers that hide scrollbars when not in use\n      if (Util._scrollbarWidth !== null) {\n        return Util._scrollbarWidth;\n      }\n      $(\"body\").append(\n        '<div id=\"scrollbarTestA\" style=\"display:none;overflow:scroll\">' +\n          '<div id=\"scrollbarTestB\"></div>' +\n        '</div>');\n        Util._scrollbarWidth = $(\"#scrollbarTestA\").width() - $(\"#scrollbarTestB\").width();\n        $(\"#scrollbarTestA\").remove();\n        return Util._scrollbarWidth;\n    }\n    static subscribeToAnnouncementsList(email) {\n\n    }\n\n    static RefValidator($input, $msg, $ok, $preview, options = {}) {\n        /** Replacement for utils.js:sjs.checkref that uses only new tools.\n         * Instantiated as an object, and then invoked with `check` method\n         * $input - input element\n         * $msg - status message element\n         * $ok - Ok button element\n         * $preview - Text preview box (optional)\n         * config - a dictionary, with named arguments:\n             * disallow_segments - if true, only allows book and section level refs.\n                                By default, allows section and segment level references.\n             * allow_new_titles = if true, allows names not recognized by the system.\n                                  By default, does not allow unrecognized names.\n\n         * example usage:\n\n         new Sefaria.util.RefValidator($(\"#inlineAdd\"), $(\"#inlineAddDialogTitle\"), $(\"#inlineAddSourceOK\"), $(\"#preview\"));\n\n         The object is instantiated, and sets up its own events.\n         It doesn't need to be interacted with from the outside.\n         */\n\n        this.$input = $input;\n        this.$msg = $msg;\n        this.$ok = $ok;\n        this.$preview = $preview;\n        this.options = options;\n\n        // We want completion messages to be somewhat sticky.\n        // This records the string used to build the current message.\n        this.completion_message_base = undefined;\n        // And the current message\n        this.completion_message = \"\";\n\n        this.current_lookup_ajax = null;\n\n        this.dropdownAnchorSide = this.options.interfaceLang == \"he\" ? \"right\" : \"left\";\n\n        this.$input\n            .on(\"input\", this.check.bind(this))\n            .keyup(function(e) {\n                  if (e.keyCode == 13) {\n                      if (!this.$ok.hasClass('disabled')) { this.$ok.trigger(\"click\"); }\n                  }\n                }.bind(this))\n            .autocomplete({\n                source: function(request, response) {\n                  Sefaria.getName(request.term, true)\n                         .then(d => d.completions)\n                         .then(response);\n                },\n                position: {my: this.dropdownAnchorSide + \" top\", at: this.dropdownAnchorSide + \" bottom\"},\n                select: (event, ui) => this._lookupAndRoute(ui.item.value),\n                minLength: 3,\n                focus: ( event, ui ) => {\n                  $(\".ui-menu-item.ui-state-focus\").removeClass(\"ui-state-focus\");\n                  $(\"a.ui-state-focus\").parent().addClass(\"ui-state-focus\");\n                }\n            });\n    };\n}\n\nUtil.RefValidator.prototype = {\n  _sectionListString: function(arr, lang) {\n      //Put together an \"A, B, and C\" type string from [A,B,C]\n      //arr - array of strings\n      if (arr.length == 1) return arr[0];                            // One alone\n      var lastTwo = arr.slice(-2).join((lang==\"en\")?\" and \":\" ו\");   // and together last two:\n      return arr.slice(0,-2).concat(lastTwo).join(\", \");            // join the rest with a ,\n  },\n  //Too simple to merit a function, but function calls are cheap!\n  _addressListString: function(arr, lang) {\n      //Put together an \"A:B:C\" type string from [A,B,C]\n      //arr - array of strings\n      return arr.join((lang==\"en\")?\":\":\" \");\n  },\n  _getCompletionMessage: function(inString, data, depthUp) {\n    // instring - the originally entered string\n    // data - data returned from api/names\n    // depthUp: 0 for segment.  1 for section.\n    if (!data[\"sectionNames\"] || data[\"sectionNames\"].length == 0) return;\n\n    var lang = data[\"lang\"];\n    var sectionNames = (lang==\"en\")?data[\"sectionNames\"]:data[\"heSectionNames\"];\n    var addressExamples = (lang==\"en\")?data[\"addressExamples\"]:data[\"heAddressExamples\"];\n    var current = data[\"sections\"].length;\n    var sectionListString = this._sectionListString(sectionNames.slice(current, depthUp?-depthUp:undefined), lang);\n    var addressListString = this._addressListString(addressExamples.slice(current, depthUp?-depthUp:undefined), lang);\n    var separator = (lang == \"en\" && !data[\"is_node\"])?\":\":\" \";\n    var exampleRef = inString + separator + addressListString;\n    return ((lang==\"en\")?\n    \"Enter a \" + sectionListString + \". E.g: '<b>\" + exampleRef +\"</b>'\":\n    \"הקלידו \" + sectionListString + \". לדוגמא \" + exampleRef)\n  },\n  _getSegmentCompletionMessage: function(inString, data) {\n      return this._getCompletionMessage(inString, data, 0);\n  },\n  _getSectionCompletionMessage: function(inString, data) {\n      return this._getCompletionMessage(inString, data, 1);\n  },\n  _getMessage: function(inString, data) {\n      // If current string contains string used for last message, and itself isn't a new state, use current message.\n      if (inString.indexOf(this.completion_message_base) == 0 && !data[\"is_ref\"]) {\n          return this.completion_message;\n      }\n\n      var return_message = \"\";\n      var prompt_message = (data[\"lang\"]==\"en\")?\"Select a text\":\"נא בחרו טקסט\";\n      var create_new_message = (data[\"lang\"]==\"en\")?\"Create a new Index record\":\"צור טקסט חדש\";\n      var success_message = (data[\"lang\"]==\"en\")?\"OK. Click <b>add</b> to continue\":(\"לחצו \" + \"<b>הוסף</b>\" + \" בכדי להמשיך\");\n      var no_segment_message = \"Segment Level References Not Allowed Here.\";\n      var or_phrase = (data[\"lang\"]==\"en\")?\" or \":\" או \";\n      var range_phrase = (data[\"lang\"] == \"en\")?\"enter a range.  E.g. \":\"הוסיפו טווח. לדוגמא \";\n\n      if (!data[\"is_ref\"] && this.options.allow_new_titles) {\n          return_message = create_new_message + or_phrase + prompt_message;\n      } else if ((data[\"is_node\"]) ||\n          (data[\"is_ref\"] && (!(data[\"is_segment\"] || data[\"is_section\"])))\n      ) {\n          return_message = this._getSectionCompletionMessage(inString, data) || prompt_message;\n      } else if (data[\"is_section\"]) {\n          if (this.options.disallow_segments) {\n              return_message = success_message;\n          } else {\n              return_message = success_message + or_phrase + this._getSegmentCompletionMessage(inString, data);\n          }\n      } else if (data[\"is_segment\"] && this.options.disallow_segments) {\n          return_message = no_segment_message;\n      } else if (data[\"is_segment\"] && !data[\"is_range\"] &&  +(data[\"sections\"].slice(-1)) > 0) {  // check that it's an int\n          var range_end = +(data[\"sections\"].slice(-1)) + 1;\n          return_message = success_message + or_phrase + range_phrase + \"<b>\" + inString + \"-\" + range_end + \"</b>\";\n      } else if (data[\"is_segment\"]) {\n          return_message = success_message + \".\";\n      } else {\n          return_message = prompt_message;\n      }\n\n      this.completion_message_base = inString;\n      this.completion_message = return_message;\n      return return_message;\n  },\n  _lookupAndRoute: function(inString) {\n      if (this.current_lookup_ajax) {this.current_lookup_ajax.cancel();}\n      this.current_lookup_ajax = Sefaria.makeCancelable(Sefaria.getName(inString, true));\n      this.current_lookup_ajax.promise.then(data => {\n              // If this query has been outpaced by typing, just return.\n              if (this.$input.val() != inString) { this.current_lookup_ajax = null; return; }\n\n              // If the query isn't recognized as a ref, but only for reasons of capitalization. Resubmit with recognizable caps.\n              if (Sefaria.isACaseVariant(inString, data)) {\n                this._lookupAndRoute(Sefaria.repairCaseVariant(inString, data));\n                this.current_lookup_ajax = null;\n                return;\n              }\n\n              this.$msg.css(\"direction\", (data[\"lang\"]==\"he\"?\"rtl\":\"ltr\"))\n                  .html(this._getMessage(inString, data));\n              if (!data.is_ref && this.options.allow_new_titles) {\n                  this._allow(inString);\n                  this.current_lookup_ajax = null;\n                  return;\n              }\n              if (data.is_ref && (data.is_section || (data.is_segment && !this.options.disallow_segments))) {\n                this._allow(inString, data[\"ref\"]);  //pass normalized ref\n                this.current_lookup_ajax = null;\n                return;\n              }\n              this._disallow();\n              this.current_lookup_ajax = null;\n          });\n  },\n  _allow: function(inString, ref) {\n    if (inString != this.$input.val()) {\n      // Ref was corrected (likely for capitalization)\n      this.$input.val(inString);\n    }\n    this.$ok.removeClass(\"inactive\").removeClass(\"disabled\");\n    if (ref) {\n        this.$input.autocomplete(\"disable\");\n        this._inlineAddSourcePreview(inString, ref);\n    }\n  },\n  _disallow: function() {\n    this.$ok.addClass(\"inactive\").addClass(\"disabled\");\n  },\n  _preview_segment_mapper: function(lang, s) {\n    return (s[lang])?\n        (\"<div class='previewLine'><span class='previewNumber'>(\" + (s.number) + \")</span> \" + s[lang] + \"</div> \"):\n        \"\";\n  },\n  _inlineAddSourcePreview: function(inString, ref) {\n    Sefaria.text(ref, {}, function (data) {\n        if (this.$input.val() != inString) { return; }\n        if (!this.$preview) { return; }\n\n        var segments = Sefaria.makeSegments(data);\n        segments = Sefaria.stripImagesFromSegments(segments);\n        var en = segments.map(this._preview_segment_mapper.bind(this, \"en\")).filter(Boolean);\n        var he = segments.map(this._preview_segment_mapper.bind(this, \"he\")).filter(Boolean);\n\n        // Handle missing text cases\n        var path = parseURL(document.URL).path;\n        if (!en.length && !he.length) {this.$msg.html(\"<i>No text available. Click below to add this text.</i>\");}\n\n        // Set it on the DOM\n        this.$input.autocomplete(\"disable\");\n        this.$preview.show();\n        this.$preview.html(\"<div class='en'>\" + en.join(\"\") + \"</div>\" + \"<div class='he'>\" + he.join(\"\") + \"</div>\");\n        this.$preview.position({my: this.dropdownAnchorSide + \" top\", at: this.dropdownAnchorSide + \" bottom\", of: this.$input, collision: \"none\" }).width('691px');\n    }.bind(this));\n  },\n  check: function() {\n      if (this.$preview) {\n          this.$preview.html(\"\");\n          this.$preview.hide();\n      }\n      this.$input.autocomplete(\"enable\");\n      var inString = this.$input.val();\n      if (inString.length < 3) {\n          this._disallow();\n          return;\n      }\n      this._lookupAndRoute(inString);\n  }\n};\nconst secsInDay = 24 * 60 * 60;\nUtil._cookies = {};\nUtil._scrollbarWidth = null;\nUtil.sefariaHumanizeDuration = humanizeDuration.humanizer({\n  units: ['y', 'mo', 'w', 'd', 'h', 'm', 's'],\n  largest: 1,\n  round: true,\n  unitMeasures: {\n    y: 365 * secsInDay,\n    mo: 30 * secsInDay,\n    w: 7 * secsInDay,\n    d: secsInDay,\n    h: 60 * 60,\n    m: 60,\n    s: 1,\n  },\n  languages: {\n    shortEn: {\n      y: () => \"y\",\n      mo: () => \"mo\",\n      w: () => \"w\",\n      d: () => \"d\",\n      h: () => \"h\",\n      m: () => \"m\",\n      s: () => \"s\",\n      ms: () => \"ms\",\n    },\n    shortHe: {\n      y: () => \"ש'\",\n      mo: () => \"ח'\",\n      w: () => \"שב'\",\n      d: () => \"י'\",\n      h: () => \"שע'\",\n      m: () => \"דק'\",\n      s: () => \"שנ'\",\n      ms: () => \"מלש'\",\n    },\n  },\n});\n\n\nexport default Util;\n","import Util from './util';\nimport FilterNode from './FilterNode';\n\nclass SearchState {\n  constructor({\n    type,\n    appliedFilters,\n    appliedFilterAggTypes,\n    availableFilters,\n    filterRegistry,\n    filtersValid,\n    orphanFilters,\n    fieldExact,\n    fieldBroad,\n    field,\n    sortType,\n  } = {}) {\n    this.type                  = type;  // always required\n    this.appliedFilters        = appliedFilters   || [];\n    this.appliedFilterAggTypes = appliedFilterAggTypes || [];\n    this.availableFilters      = typeof availableFilters === 'undefined' ? [] : availableFilters.map(f => f instanceof FilterNode ? f : new FilterNode(f));\n    this.filterRegistry        = typeof filterRegistry !== \"undefined\" ? filterRegistry : this._recreateRegistry(this.availableFilters);\n    this.filtersValid          = filtersValid       || false;\n    this.orphanFilters         = orphanFilters      || [];\n    this.fieldExact            = fieldExact         || SearchState.metadataByType[type].fieldExact;\n    this.fieldBroad            = fieldBroad         || SearchState.metadataByType[type].fieldBroad;\n    this.field                 = field              || SearchState.metadataByType[type].field;\n    this.sortType              = sortType           || SearchState.metadataByType[type].sortType;\n  }\n\n  _recreateRegistry(filters, registry = {}) {\n    for (let f of filters) {\n      registry[f.aggKey] = f;\n      registry = this._recreateRegistry(f.children, registry);\n    }\n    return registry;\n  }\n\n  clone(prepareForSerialization) {\n    const clonedAvailableFilters = Util.clone(this.availableFilters, prepareForSerialization);\n    return new SearchState({\n      appliedFilters:   Util.clone(this.appliedFilters, prepareForSerialization),\n      appliedFilterAggTypes: Util.clone(this.appliedFilterAggTypes, prepareForSerialization),\n      availableFilters:   clonedAvailableFilters,\n      filtersValid:       this.filtersValid,\n      orphanFilters:      this.orphanFilters,\n      type:               this.type,\n      fieldExact:         this.fieldExact,\n      fieldBroad:         this.fieldBroad,\n      field:              this.field,\n      sortType:           this.sortType,\n    });\n  }\n\n  update({\n    type,\n    appliedFilters,\n    appliedFilterAggTypes,\n    availableFilters,\n    filterRegistry,\n    filtersValid,\n    orphanFilters,\n    fieldExact,\n    fieldBroad,\n    field,\n    sortType,\n    aggregationsToUpdate,\n  }) {\n    type             = typeof type             === 'undefined' ? this.type             : type;\n    appliedFilters   = typeof appliedFilters   === 'undefined' ? this.appliedFilters   : appliedFilters;\n    appliedFilterAggTypes = typeof appliedFilterAggTypes === 'undefined' ? this.appliedFilterAggTypes : appliedFilterAggTypes;\n    filtersValid     = typeof filtersValid     === 'undefined' ? this.filtersValid     : filtersValid;\n    orphanFilters    = typeof orphanFilters    === 'undefined' ? this.orphanFilters    : orphanFilters;\n    fieldExact       = typeof fieldExact       === 'undefined' ? this.fieldExact       : fieldExact;\n    fieldBroad       = typeof fieldBroad       === 'undefined' ? this.fieldBroad       : fieldBroad;\n    field            = typeof field            === 'undefined' ? this.field            : field;\n    sortType         = typeof sortType         === 'undefined' ? this.sortType         : sortType;\n    const tempAvailableFilters = availableFilters;\n    const tempFilterRegistry   = typeof filterRegistry   === 'undefined' ? this.filterRegistry   : filterRegistry;\n    if (!!aggregationsToUpdate && this.filtersValid) {\n      if (typeof tempAvailableFilters !== 'undefined') {\n        availableFilters = this.availableFilters.filter( f => aggregationsToUpdate.indexOf(f.aggType) === -1).concat(availableFilters);\n        filterRegistry = this.filterRegistry;\n      }\n    } else {\n      availableFilters = typeof tempAvailableFilters === 'undefined' ? this.availableFilters : tempAvailableFilters;\n      filterRegistry = tempFilterRegistry;\n    }\n    return new SearchState({\n      type,\n      appliedFilters,\n      appliedFilterAggTypes,\n      availableFilters,\n      filterRegistry,\n      filtersValid,\n      orphanFilters,\n      fieldExact,\n      fieldBroad,\n      field,\n      sortType,\n    });\n  }\n\n  isEqual({\n    other,\n    fields,\n  }) {\n    if (!(other instanceof SearchState)) { return false; }\n    for (let field of fields) {\n      const thisField = this[field];\n      const otherField = other[field];\n      if (thisField instanceof Array) {\n        if (!(otherField instanceof Array)) { return false; }\n        if (thisField.length !== otherField.length) { return false; }\n        if (!thisField.every((v, i) => v === otherField[i])) { return false; }\n      } else {\n        if (thisField !== otherField) { return false; }\n      }\n    }\n    return true;\n  }\n\n  makeURL({ prefix, isStart }) {\n    // prefix: string prepended to every parameter. meant to distinguish between different types\n    //         of searchState URL parameters (e.g. sheet and text)\n    //         oneOf({'t': 'text', 's': sheet, 'c': collection, 'u': user})\n    const aggTypes = SearchState.metadataByType[this.type].aggregation_field_array;\n    const aggTypesSuffixes = SearchState.metadataByType[this.type].aggregation_field_lang_suffix_array;\n    const aggTypesWithSuffixes = []\n    Sefaria.util // \n      .zip(aggTypes, aggTypesSuffixes)\n      .map(([agg, suffixMap]) => {\n        if (suffixMap) {\n          Object.values(suffixMap).map(suffix => {aggTypesWithSuffixes.push(agg+suffix)});\n        } else {\n          aggTypesWithSuffixes.push(agg);\n        }\n      });\n\n    const url = aggTypesWithSuffixes.reduce( (accum, aggType) => {  \n        const aggTypeFilters = aggTypes.length > 1 ? \n          Util.zip(this.appliedFilters, this.appliedFilterAggTypes)\n          .filter( f => f[1] === aggType)\n          .map( x => x[0]) \n          : this.appliedFilters;\n        return accum + (aggTypeFilters.length > 0 ? `&${prefix}${aggType}Filters=${aggTypeFilters.map( f => encodeURIComponent(f)).join('|')}` : '');\n      }, '') +\n      `&${prefix}var=` + (this.field !== this.fieldExact ? '1' : '0') +\n      `&${prefix}sort=${this.sortType}`;\n    if (isStart) {\n      url.replace(/&/, '?');\n    }\n    return url;\n  }\n}\n\nSearchState.metadataByType = {\n  text: {\n    fieldExact: 'exact',\n    fieldBroad: 'naive_lemmatizer',\n    field: 'naive_lemmatizer',\n    aggregation_field_array: ['path'],\n    aggregation_field_lang_suffix_array: [null],\n    build_and_apply_filters: 'buildAndApplyTextFilters',  // func name from Search.js\n    sortType: 'relevance',\n    sortTypeArray: [  // this array defines the sort options available for each search type\n      {\n        type: 'relevance',\n        name: 'Relevance',\n        heName: 'רלוונטיות',\n        fieldArray: ['pagesheetrank'],\n        sort_method: 'score',  // if sort_method == 'score', it will combine the standard elasticsearch score with `field`\n        score_missing: 0.04,  // this default value comes from the equation used to calculate pagesheetrank. see search.py where this field is created\n      },\n      {\n        type: 'chronological',\n        name: 'Chronological',\n        heName: 'כרונולוגי',\n        fieldArray: ['comp_date', 'order'],  // if sort_method == 'sort', then we need to define fieldArray, which is a list of fields we want to sort on\n        sort_method: 'sort',\n        direction: 'asc',\n      }\n    ],\n  },\n  sheet: {\n    fieldExact: null,\n    fieldBroad: null,\n    field: 'content',\n    aggregation_field_array: ['collections', 'topics'],\n    aggregation_field_lang_suffix_array: [null, {'english': '_en', 'hebrew': '_he'}],\n    build_and_apply_filters: 'buildAndApplySheetFilters',  // func name from Search.js\n    sortType: 'relevance',\n    sortTypeArray: [\n      {\n        type: 'relevance',\n        name: 'Relevance',\n        heName: 'רלוונטיות',\n        fieldArray: [],\n        sort_method: 'score',\n      },\n      {\n        type: 'dateCreated',\n        name: 'Date Created',\n        heName: 'תאריך',\n        fieldArray: ['dateCreated'],\n        sort_method: 'sort',\n        direction: 'desc',\n      },\n      {\n        type: 'views',\n        name: 'Views',\n        heName: 'צפיות',\n        fieldArray: ['views'],\n        sort_method: 'sort',\n        direction: 'desc',\n      },\n    ],\n  },\n};\n\nexport default SearchState;\n","export class SearchTotal {\n    constructor({value=0, relation=\"eq\"} = {}) {\n        this._value = value;\n        this._relation = relation;\n    }\n    getValue = () => this._value;\n    add = (num) => this._value += num;\n    asString = () => `${this._value.addCommas()}${this._getRelationString()}`;\n    _getRelationString = () => this._relation === 'gte' ? '+' : '';\n    combine = (other) => {\n        if (!(other instanceof SearchTotal)) {\n            throw new TypeError('Parameter must be an instance of SearchTotal.');\n        }\n        const newValue = this.getValue() + other.getValue();\n        let newRelation = this._relation;\n        if (other._relation === 'gte' || this._relation === 'gte') {\n            newRelation = 'gte';\n        }\n        return new SearchTotal({value: newValue, relation: newRelation});\n    };\n}\n\n\n","import $ from './sefariaJquery';\nimport extend from 'extend';\nimport FilterNode from './FilterNode';\nimport SearchState from './searchState';\nimport { SearchTotal } from \"./searchTotal\";\n\n\nclass Search {\n    constructor(searchIndexText, searchIndexSheet) {\n      this.searchIndexText = searchIndexText;\n      this.searchIndexSheet = searchIndexSheet;\n      this._cache = {};\n      this.sefariaQueryQueue = {hits: {hits:[], total: new SearchTotal(), max_score: 0.0}, lastSeen: -1};\n      this.dictaQueryQueue = {lastSeen: -1, hits: {total: new SearchTotal(), hits:[]}};\n      this.queryDictaFlag = true;\n      this.dictaCounts = null;\n      this.sefariaSheetsResult = null;\n      this.buckets = [];\n      this.queryAborter = new HackyQueryAborter();\n      this.dictaSearchUrl = 'https://sefaria.loadbalancer.dicta.org.il';\n    }\n    cache(key, result) {\n        if (result !== undefined) {\n           this._cache[key] = result;\n        }\n        if (!this._cache[key]) {\n            //console.log(\"Cache miss\");\n            //console.log(key);\n        }\n        return this._cache[key];\n    }\n    sefariaQuery(args, isQueryStart, wrapper) {\n        return new Promise((resolve, reject) => {\n            const jsonData = this.sortedJSON(this.get_query_object(args));\n            const cacheKey = \"sefariaQuery|\" + jsonData;\n            const cacheResult = this.cache(cacheKey);\n            if (cacheResult) {\n                resolve(cacheResult);\n                return null;\n            }\n\n            wrapper.addQuery($.ajax({\n                url: `${Sefaria.apiHost}/api/search-wrapper/es8`,\n                type: 'POST',\n                data: jsonData,\n                contentType: \"application/json; charset=utf-8\",\n                crossDomain: true,\n                processData: false,\n                dataType: 'json',\n                success: data => {\n                    data.hits.total = new SearchTotal(data.hits.total);\n                    this.cache(cacheKey, data);\n                    resolve(data)\n                },\n                error: reject\n            }));\n        }).then(x => {\n            if (args.type === \"sheet\") {\n                this.sefariaSheetsResult = x;\n                return null;\n            }\n            for (let i=0; i < x.hits.hits.length; i++) {\n                x.hits.hits[i]['comp_date'] = x.hits.hits[i]._source.comp_date;\n                x.hits.hits[i]['cameFrom'] = 'Sefaria';\n                x.hits.hits[i]['score'] =  x.hits.hits[i]['_score'] * -1;\n            }\n\n            let mergedHits = this.sefariaQueryQueue.hits.hits.concat(x.hits.hits);\n            let lastSeen = this.sefariaQueryQueue.lastSeen + x.hits.hits.length;\n            this.sefariaQueryQueue = x;\n            this.sefariaQueryQueue.hits.hits = mergedHits;\n            this.sefariaQueryQueue.lastSeen = lastSeen;\n        });\n\n    }\n    /**\n     * Function to reformat the Hebrew Ref from the Dicta convention - תנ״ר/נביאים/ספר זכריה/פרק א/פסוק א\n     * to the Sefaria Hebrew Ref convention (the results of Ref('Zechariah 1.1').he_normal())\n     * @param {*} ref - the incoming Dicta Ref\n     * @returns cleanedHebrewRef - according to Sefaria conventions\n     */\n    reformatDictaRef(ref) {\n        const hebrewRef = ref.match(/תנ\"ך\\/.*\\/ספר (.*)\\/פרק (.*)\\/פסוק (.*)/);\n        const sefer = hebrewRef[1];\n        const perek = hebrewRef[2].length === 1 ? `${hebrewRef[2]}'` : hebrewRef[2].split('').join('\"');\n        const pasuk = hebrewRef[3].length === 1 ? `${hebrewRef[3]}'`: hebrewRef[3].split('').join('\"');\n        const cleanedHebrewRef = `${sefer} ${perek}:${pasuk}`;\n        return cleanedHebrewRef;\n    }\n    dictaQuery(args, isQueryStart, wrapper) {\n        function ammendArgsForDicta(standardArgs, lastSeen) {\n            let filters = (standardArgs.applied_filters) ? standardArgs.applied_filters.map(book => {\n                book = book.replace(/\\//g, '.');\n                return book.replace(/ /g, '_');\n            }) : false;\n            return {\n                query: standardArgs.query,\n                from: ('start' in standardArgs) ? lastSeen + 1 : 0,\n                size: standardArgs.size,\n                limitedToBooks: filters,\n                sort: (standardArgs.sort_type === \"relevance\") ? 'pagerank' : 'corpus_order_path',\n                smallUnitsOnly: true\n            };\n        }\n        return new Promise((resolve, reject) => {\n\n            if (this.queryDictaFlag && args.type === \"text\") {\n                if (this.dictaQueryQueue.lastSeen + 1 >= this.dictaQueryQueue.hits.total.getValue() &&\n                    ('start' in args && args['start'] > 0)) {\n                    /* don't make new queries if results are exhausted.\n                     * 'start' is omitted on first query (defaults to 0). On a first query, we'll always want to query.\n                     */\n                    resolve({total: this.dictaQueryQueue.hits.total, hits: []});\n                }\n                else {\n                    const jsonData = this.sortedJSON(ammendArgsForDicta(args, this.dictaQueryQueue.lastSeen));\n                    const cacheKey = \"dictaQuery|\" + jsonData;\n                    const cacheResult = this.cache(cacheKey);\n                    if (cacheResult) {\n                        resolve(cacheResult);\n                        return null;\n                    }\n\n                    wrapper.addQuery($.ajax({\n                        url: `${this.dictaSearchUrl}/search`,\n                        type: 'POST',\n                        dataType: 'json',\n                        contentType: 'application/json; charset=UTF-8',\n                        data: jsonData,\n                        success: data => {\n                            data.total = new SearchTotal({value: data.total});\n                            this.cache(cacheKey, data);\n                            resolve(data);\n                        },\n                        error: reject\n                    }));\n                }\n\n            }\n            else {\n                resolve({total: new SearchTotal(), hits: []});\n            }\n        }).then(x => {\n            if (args.type === \"sheet\") {\n                return null;\n            }\n            let adaptedHits = [];\n            x.hits.forEach(hit => {\n                const bookData = hit.xmlId.split(\".\");\n                const categories = bookData.slice(0, 2);\n                const bookTitle = bookData[2].replace(/_/g, ' ');\n                const bookLoc = bookData.slice(3, 5).join(':');\n                const version = \"Tanach with Ta'amei Hamikra\";\n                adaptedHits.push({\n                    _source: {\n                        type: 'text',\n                        lang: \"he\",\n                        version: version,\n                        path: categories,\n                        ref: `${bookTitle} ${bookLoc}`,\n                        heRef: this.reformatDictaRef(hit.hebrewPath),\n                        pagesheetrank: (hit.pagerank) ? hit.pagerank : 0,\n                    },\n                    highlight: {naive_lemmatizer: [hit.highlight[0].text]},\n                    score: (hit.pagerank) ? hit.pagerank * -1 : 0,\n                    comp_date: -10000 + adaptedHits.length,\n                    _id: `${bookTitle} ${bookLoc} (${version} [he])`,\n                    cameFrom: 'dicta'\n\n                });\n            });\n            this.dictaQueryQueue = {\n                hits: {\n                    total: x.total,\n                    hits: adaptedHits\n                },\n                lastSeen: ('start' in args) ? this.dictaQueryQueue.lastSeen + adaptedHits.length : adaptedHits.length - 1\n\n            }\n        }).catch(x => {\n            console.log(x)\n        });\n    }\n    dictaBooksQuery(args, wrapper) {\n        return new Promise((resolve, reject) => {\n            if (this.dictaCounts === null && args.type === \"text\") {\n                if (this.queryDictaFlag) {\n                    const jsonData = this.sortedJSON({query: args.query, smallUnitsOnly: true})\n                    const cacheKey = \"dictaBooksQuery|\" + jsonData;\n                    const cacheResult = this.cache(cacheKey);\n                    if (cacheResult) {\n                        resolve(cacheResult);\n                        return null;\n                    }\n                    wrapper.addQuery($.ajax({\n                        url: `${this.dictaSearchUrl}/books`,\n                        type: 'POST',\n                        dataType: 'json',\n                        contentType: \"application/json;charset=UTF-8\",\n                        data: jsonData,\n                        timeout: 3000,\n                        success: data => {\n                            this.cache(cacheKey, data);\n                            resolve(data)\n                        },\n                        error: reject\n                    }));\n                }\n                else {\n                    resolve([]);\n                }\n            }\n            else {\n                resolve(null);\n            }\n        }).then(x => {\n            if(x === null)\n                return;\n            let buckets = [];\n            x.forEach(bucket => {\n               buckets.push({\n                   key: bucket['englishBookName'].map(i => i.replace(/_/g, \" \")).join('/'),\n                   doc_count: bucket['count']\n               });\n            });\n            this.dictaCounts = buckets;\n        }, x => {\n            this.queryDictaFlag = false;\n            console.log(x);\n        });\n    }\n    isDictaQuery(args) {\n        return Sefaria.hebrew.isHebrew(args.query) && !args.exact;\n    }\n    sortedJSON(obj) {\n        // Returns JSON with keys sorted consistently, suitable for a cache key\n        return JSON.stringify(obj, Object.keys(obj).sort());\n    }\n    mergeQueries(addAggregations, sortType, filters) {\n        let result = {hits: {}};\n        if(addAggregations) {\n\n            let newBuckets = this.sefariaQueryQueue['aggregations']['path']['buckets'].filter(\n                x => !(RegExp(/^Tanakh\\//).test(x.key)));\n            newBuckets = newBuckets.concat(this.dictaCounts);\n            result.aggregations = {path: {buckets: newBuckets}};\n            this.buckets = newBuckets;\n        }\n        if (!!filters.length) {\n            const expression = new RegExp(`^(${filters.join('|')})(\\/.*|$)`);\n            const accumulatedTotal = this.buckets.reduce((total, currentBook) => {\n                if (expression.test(currentBook.key)) {\n                    total += currentBook.doc_count;\n                }\n                return total\n            }, 0);\n            result.hits.total = new SearchTotal({value: accumulatedTotal});\n        }\n        else {\n            result.hits.total = this.sefariaQueryQueue.hits.total.combine(this.dictaQueryQueue.hits.total);\n        }\n\n        let sefariaHits = (this.queryDictaFlag)\n            ? this.sefariaQueryQueue.hits.hits.filter(i => !(i._source.categories.includes(\"Tanakh\")))\n            : this.sefariaQueryQueue.hits.hits;\n        let dictaHits = this.dictaQueryQueue.hits.hits;\n\n        let finalHits;\n        if (!(dictaHits.length) || !(sefariaHits.length)) /* either or both queues are empty */ {\n            finalHits = dictaHits.concat(sefariaHits).sort((i, j) => i[sortType] - j[sortType]);\n            this.sefariaQueryQueue.hits.hits = [];\n            this.dictaQueryQueue.hits.hits = [];\n        }\n        else {\n            // when sorting by relevance adjust Dicta score's mean and standard deviation to match Sefaria's\n            if (sortType === \"score\"){\n                let sefariaMeanScore = sefariaHits.reduce(\n                    (total, nextValue) => total + nextValue.score / sefariaHits.length, 0\n                );\n                let dictaMeanScore = dictaHits.reduce(\n                    (total, nextValue) => total + nextValue.score / sefariaHits.length, 0\n                );\n\n                let sefariaStd = Math.sqrt(sefariaHits.reduce(\n                    (total, nextValue) => total + Math.pow(nextValue.score - sefariaMeanScore, 2), 0\n                ));\n                let dictaStd = Math.sqrt(dictaHits.reduce(\n                    (total, nextValue) => total + Math.pow(nextValue.score - dictaMeanScore, 2), 0\n                ));\n\n                let factor = (dictaStd !== 0) ?sefariaStd/dictaStd : 1;\n                for (let i=0; i<dictaHits.length; i++) {\n                    dictaHits[i].score = dictaHits[i].score * factor;\n                }\n                dictaMeanScore = dictaHits.reduce(\n                    (total, nextValue) => total + nextValue.score / sefariaHits.length, 0\n                );\n                let delta = sefariaMeanScore - dictaMeanScore;\n                for (let i=0; i < dictaHits.length; i++) {\n                    dictaHits[i].score = dictaHits[i].score + delta;\n                }\n            }\n\n            finalHits = dictaHits.concat(sefariaHits).sort((i, j) => i[sortType] - j[sortType]);\n        }\n\n        result.hits.hits = finalHits;\n        return result;\n    }\n    execute_query(args) {\n        /* args can contain\n         query: query string\n         size: size of result set\n         start: from what result to start\n         type: \"sheet\" or \"text\"\n         applied_filters: filter query by these filters\n         appliedFilterAggTypes: array of same len as applied_filters giving aggType for each filter\n         aggregationsToUpdate\n         field: field to query in elastic_search\n         sort_type: See SearchState.metadataByType for possible sort types\n         exact: if query is exact\n         success: callback on success\n         error: callback on error\n         */\n        if (!args.query) {\n            return;\n        }\n        //console.log(\"*** \", args.query);\n        let isQueryStart = !(args.start);\n        if (isQueryStart) // don't touch these parameters if not a text search\n        {\n            if (args.type === 'text') {\n                this.dictaCounts = null;\n                this.queryDictaFlag = this.isDictaQuery(args);\n                this.sefariaQueryQueue = {hits: {hits: [], total: new SearchTotal(), max_score: 0.0}, lastSeen: -1};\n                this.dictaQueryQueue = {lastSeen: -1, hits: {total: new SearchTotal(), hits: []}};\n                this.queryAborter.abort();\n            }\n        }\n\n        let queryAborter = new HackyQueryAborter();\n        this.queryAborter = queryAborter;\n\n        const updateAggreagations = (args.aggregationsToUpdate.length > 0);\n        if (this.queryDictaFlag) {\n            Promise.all([\n                this.sefariaQuery(args, updateAggreagations, queryAborter),\n                this.dictaQuery(args, updateAggreagations, queryAborter),\n                this.dictaBooksQuery(args, queryAborter)\n            ]).then(() => {\n                if (args.type === \"sheet\") {\n                    this._cacheQuery(args, this.sefariaSheetsResult);\n                    args.success(this.sefariaSheetsResult);\n                }\n                else {\n                    const sortType = (args.sort_type === 'relevance') ? 'score' : 'comp_date';\n                    const mergedQueries = this.mergeQueries(updateAggreagations, sortType, args.applied_filters);\n                    const cacheResult = this.getCachedQuery(args);\n                    if (!cacheResult) {\n                        this._cacheQuery(args, mergedQueries);\n                        args.success(mergedQueries);\n                    }\n                    else {\n                        args.success(cacheResult);\n                    }\n                }\n            }).catch(x => console.log(x));\n        }\n        else {\n            this.sefariaQuery(args, updateAggreagations, queryAborter)\n                .then(() => {\n                    if (args.type === \"sheet\") {\n                        this._cacheQuery(args, this.sefariaSheetsResult);\n                        args.success(this.sefariaSheetsResult);\n                    } else {\n                        this._cacheQuery(args, this.sefariaQueryQueue);\n                        args.success(this.sefariaQueryQueue);\n                    }\n                })\n        }\n\n        return queryAborter;\n    }\n    get_query_object({\n      query,\n      applied_filters,\n      appliedFilterAggTypes,\n      aggregationsToUpdate,\n      size,\n      start,\n      type,\n      field,\n      sort_type,\n      exact\n    }) {\n      const { sortTypeArray, aggregation_field_array } = SearchState.metadataByType[type];\n      const { sort_method, fieldArray, score_missing, direction } = sortTypeArray.find( x => x.type === sort_type );\n      return {\n        type,\n        query,\n        field,\n        source_proj: true,\n        slop: exact ? 0 : 10,\n        start,\n        size,\n        filters: applied_filters.length ? applied_filters : [],\n        filter_fields: appliedFilterAggTypes,\n        aggs: aggregationsToUpdate,\n        sort_method,\n        sort_fields: fieldArray,\n        sort_reverse: direction === \"desc\",\n        sort_score_missing: score_missing,\n      };\n    }\n    mergeTextResultsVersions(hits) {\n      var newHits = [];\n      var newHitsObj = {};  // map ref -> index in newHits\n      const alreadySeenIds = {};  // for some reason there are duplicates in the `hits` array. This needs to be dealth with. This is a patch.\n      for (let hit of hits) {\n        if (alreadySeenIds[hit._id]) { continue; }\n        alreadySeenIds[hit._id] = true;\n        let currRef = hit._source.ref;\n        let newHitsIndex = newHitsObj[currRef];\n        if (typeof newHitsIndex != \"undefined\") {\n          newHits[newHitsIndex].push(hit);\n        } else {\n          newHits.push([hit]);\n          newHitsObj[currRef] = newHits.length - 1;\n        }\n      }\n      newHits = newHits.map(hit_list => {\n        if (hit_list.length === 1) { return hit_list[0]; }\n        const new_hit_list = hit_list.sort((a, b) => a._source.version_priority - b._source.version_priority);\n        new_hit_list[0].duplicates = hit_list.slice(1);\n        return new_hit_list[0];\n      });\n      return newHits;\n    }\n    getCachedQuery(args) {\n        const cacheKey = this._queryCacheKey(args);\n        return this.cache(cacheKey);\n    }\n    _cacheQuery(args, results) {\n        const cacheKey = this._queryCacheKey(args);\n        results = Sefaria.util.clone(results);\n        this.cache(cacheKey, results);\n    }\n    _queryCacheKey(args) {\n        return \"query|\" + this.sortedJSON(args);\n    }\n    buildFilterTree(aggregation_buckets, appliedFilters) {\n        const availableFilters = [];     // List of root level FilterNode objects.\n        const registry = {};        // Mappings of \"/\" separated category path strings to FilterNode objects\n\n        // create combined list of filters with {aggKey, docCount, path}\n        let filters = [\n            ...appliedFilters.map(fkey => ({\n                aggKey: fkey,\n                docCount: 0,\n                path: fkey.split(\"/\")\n            })),\n            ...aggregation_buckets.map(f => ({\n                aggKey: f[\"key\"],\n                docCount: f[\"doc_count\"],\n                path: f[\"key\"].split(\"/\")\n            }))\n        ];\n\n        // Drop results that don't match our TOC.  This is needed for cases where the TOC updates, but the update hasn't gotten to the ES server yet.\n        filters = filters.filter(x => Sefaria._tocOrderLookup[x.aggKey]);\n\n        // sort into search toc tree order\n        filters.sort((a,b) => Sefaria.compareSearchCatPaths(a.aggKey, b.aggKey));\n\n        // Build trees of filters\n        // Keep array of previous entry nodes\n        let previousNodes = [];\n\n        for (let i = 0; i < filters.length; i++) {\n            const f = filters[i];\n\n            let j;  // index of first place where this filter differs from the previous\n            for (j = 0; j < Math.min(previousNodes.length, f.path.length); j++) {\n                if (previousNodes[j].title !== f.path[j]) {\n                    break;\n                }\n            }\n\n            for (let k = j; k < f.path.length; k++) {\n                const node = new FilterNode({\n                        \"title\": f.path[k],\n                        \"aggKey\": f.path.slice(0,k+1).join(\"/\"),\n                        \"heTitle\": Sefaria.hebrewTerm(f.path[k]),\n                        \"docCount\": f.docCount ? f.docCount : 0\n                    }\n                );\n                previousNodes[k] = node;\n                if (k === 0) {\n                    availableFilters.push(node);\n                } else {\n                    previousNodes[k - 1].append(node);\n                }\n                registry[node.aggKey] = node;\n            }\n            previousNodes = previousNodes.slice(0,f.path.length);\n        }\n\n        //sum doc counts\n        availableFilters.forEach(n => n.sumDocs());\n\n        return { availableFilters, registry };\n    }\n\n    applyFilters(registry, appliedFilters) {\n      const orphans = [];\n      appliedFilters.forEach(aggKey => {\n        const node = registry[aggKey];\n        if (node) { node.setSelected(true); }\n        else { orphans.push(aggKey); }\n      });\n      return orphans;\n    }\n    getAppliedSearchFilters(availableFilters) {\n      let appliedFilters = [];\n      let appliedFilterAggTypes = [];\n      //results = results.concat(this.orphanFilters);\n      for (let tempFilter of availableFilters) {\n          const tempApplied = tempFilter.getAppliedFilters();\n          const tempAppliedTypes = tempApplied.map( x => tempFilter.aggType );  // assume all child filters have the same type as their parent\n          appliedFilters = appliedFilters.concat(tempApplied);\n          appliedFilterAggTypes = appliedFilterAggTypes.concat(tempAppliedTypes);\n      }\n      return {\n        appliedFilters,\n        appliedFilterAggTypes,\n      };\n    }\n    buildAndApplyTextFilters(aggregation_buckets, appliedFilters, appliedFilterAggTypes, aggType) {\n      const { availableFilters, registry } = this.buildFilterTree(aggregation_buckets, appliedFilters);\n      const orphans = this.applyFilters(registry, appliedFilters);\n      return { availableFilters, registry, orphans };\n    }\n    buildAndApplySheetFilters(aggregation_buckets, appliedFilters, appliedFilterAggTypes, aggType) {\n      const availableFilters = aggregation_buckets.map( b => {\n        const isHeb = Sefaria.hebrew.isHebrew(b.key);\n        const enTitle = isHeb ? '' : b.key;\n        const heTitle = isHeb ? b.key : (aggType === 'collections' || !Sefaria.terms[b.key] ? '' : Sefaria.terms[b.key].he);\n        const aggKey = enTitle || heTitle;\n        const filterInd = appliedFilters.indexOf(aggKey);\n        const isSelected = filterInd !== -1 && appliedFilterAggTypes[filterInd] === aggType;\n        return new FilterNode(\n          {\n            title: enTitle,\n            heTitle,\n            docCount: b.doc_count,\n            aggKey,\n            aggType,\n            selected: isSelected ? 1 : 0\n          }\n        );\n      });\n      return { availableFilters, registry: {}, orphans: [] };\n    }\n}\n\n\nclass HackyQueryAborter{\n    /*Used to abort multiple ajax queries. Stand-in until AbortController is no longer experimental. At that point\n    * we'll want to replace our ajax queries with fetch*/\n    constructor() {\n        this._queryList = [];\n    }\n    addQuery(ajaxQuery) {\n        this._queryList.push(ajaxQuery);\n    }\n    abort() {\n        this._queryList.map(ajaxQuery => ajaxQuery.abort());\n    }\n}\n\n\nexport default Search;\n","const Strings = {\n  _i18nInterfaceStrings: {\n    \"Sefaria\": \"ספריא\",\n    \"Topics\":\"נושאים\",\n    \"Community\": \"קהילה\",\n    \"Donate\": \"תרומה\",\n    \"Sefaria Notifications\": \"הודעות בספריא\",\n    \"Sefaria: a Living Library of Jewish Texts Online\": \"ספריא: ספריה יהודית דינמית\",\n    \"Recently Viewed\" : \"נצפו לאחרונה\",\n    \"The Sefaria Library\": \"תוכן העניינים של ספריא\",\n    \"Sefaria Search\": \"חיפוש בספריא\",\n    \"Sefaria Account\": \"חשבון בספריא\",\n    \"Notifcations\": \"התראות\",\n    \"New Additions to the Sefaria Library\": \"חידושים בארון הספרים של ספריא\",\n    \"My Notes on Sefaria\": \"ההערות שלי בספריא\",\n    \"Texts & Source Sheets from Torah, Talmud and Sefaria's library of Jewish sources.\": \"טקסטים ודפי מקורות מן התורה, התלמוד וספריית המקורות של ספריא.\",\n    \"Moderator Tools\": \"כלי מנהלים\",\n    \" with \" : \" עם \",\n    \"Connections\" : \"קשרים\",\n    \" & \": \" | \",\n    \"My Source Sheets\" : \"דפי המקורות שלי\",\n    \"Public Source Sheets\":\"דפי מקורות פומביים\",\n    \"Log in\": \"התחברות\",\n    \"Sign up\": \"הרשמה\",\n\n    // Texts Page\n    \"Learn More\": \"לקריאה נוספת\",\n    \"Learning Schedules\": \"לוח לימוד יומי\",\n    \"Teach with Sefaria\": \"מלמדים עם ספריא\",\n    \"Visualizations\": \"תרשימים גרפיים\",\n    \"Torah Tab\": \"תורה טאב (תוסף)\",\n    \"Get the Mobile App\": \"הורידו את היישומון\",\n    \"Access the Jewish library anywhere and anytime with the\": \"בעזרת היישומון תוכלו לגשת לארון הספרים היהודי בכל מקום ובכל זמן.\",\n    \"Sefaria mobile app.\": \"אפליקציית ספריא לנייד.\",\n    \"Stay Connected\": \"הישארו מעודכנים\",\n    \"Get updates on new texts, learning resources, features, and more.\": \"קבלו עדכונים על מקורות חדשים, כלי למידה חדשים ועוד.\",\n    \"Support Sefaria\": \"תמכו בספריא\",\n    \"Sefaria is an open source, nonprofit project. Support us by making a tax-deductible donation.\": \"ספריא היא מאגר פתוח וחינמי. תמכו בנו בעזרת תרומה.\",\n    \"Make a Donation\": \"לתרומה\",\n    \"Join the Conversation\": \"קחו חלק בשיח\" ,\n    \"Explore the Community\": \"לעמוד הקהילה\",\n    \"People around the world use Sefaria to create and share Torah resources. You're invited to add your voice.\": \"לומדים ולומדות מכל רחבי העולם משתמשים בספריא כדי ליצור ולשתף מקורות יהודיים. אנו מזמינים אתכם לקחת חלק בשיח זה.\",\n    \"Create with Sefaria\": \"צרו בעזרת ספריא\",\n    \"Mobile Apps\": \"יישומון לטלפון הנייד\",\n    \"Browse the Library\": \"עיון בספריה\",\n    \"Weekly Torah Portion\": \"פרשת השבוע\",\n    \"All Learning Schedules\": \"לוחות לימוד נוספים\",\n    \"Sponsor A Day of Learning\": \"תרמו יום לימוד בספריא\",\n    \"With your help, we can add more texts and translations to the library, develop new tools for learning, and keep Sefaria accessible for Torah study anytime, anywhere.\": \"בעזרת התרומה שלכם נוכל להוסיף מקורות, תרגומים, לפתח כלים חדשים ללימוד ולשמור על גישה חופשית ללימוד תורה, בכל מקום ובכל זמן.\",\n    \"Sponsor A Day\": \"הקדישו יום לימוד\",\n\n    // Text Category Pages\n    \"All Portions\": \"פרשות השבוע\",\n    \"Popular Texts\": \"מקורות פופולריים\",\n    \"Explore interconnections among texts with our interactive visualizations.\": \"העזרו בתרשימים הגרפיים כדי לגלות קשרים מעניינים בין מקורות.\",\n    \"All Visualizations\": \"תרשימים גרפיים נוספים\",\n    \"Daily Study\": \"לימוד יומי\",\n\n    // Topics and Category Admin tools\n    \"English Short Description for Table of Contents\": \"תיאור קצר עבור עמוד מפתח תוכן העניינים אנגלית\",\n    \"Hebrew Short Description for Table of Contents\": \"תיאור קצר עבור עמוד מפתח תוכן העניינים עברית\",\n    \"Choose a Category\": \"בחר קטגוריה\",\n    \"Main Menu\": \"תפריט ראשי\",\n    \"Saving topic information.\": \"מעדכן נתוני נושא\",\n    \"Processing title changes may take some time.\": \"עדכון השינויים עלול להמשך זמן מה\",\n    \"Add a short description.\": \"הוסף תיאור קצר\",\n    \"Add a description.\": \"הוסף תיאור\",\n    \"Add a title.\": \"הוסף שם כותר\",\n    \"Explore Jewish Texts by Topic\": \"עיון בארון הספרים היהודי לפי נושא\",\n    \"Explore by Topic\": \"לימוד לפי נושאים\",\n    \"About Topics\": \"אודות \\\"נושאים\\\"\",\n    \"Trending Topics\": \"נושאים נפוצים\",\n    \"More\": \"עוד\",\n    \"Less\": \"פחות\",\n    \"All Topics A-Z\": \"כל הנושאים א-ת\",\n    \"Browse or search our complete list of topics.\": \"חיפוש ברשימת הנושאים.\",\n    \"Create a Topic\": \"ליצירת נושא חדש\",\n    \"Edit Topic\": \"עריכת נושא\",\n    \"English Title\": \"כותרת אנגלית\",\n    \"Title\": \"כותרת\",\n    \"English Description\": \"תיאור אנגלית\",\n    \"Hebrew Description\": \"תיאור עברית\",\n    \"Topic Deleted\": \"הנושא נמחק\",\n    \"Topic Editor\": \"עריכת נושאים\",\n    \"Please choose a category.\": \"אנא בחרו קטגוריה\",\n    \"Title must be provided\": \"יש לספק כותרת\",\n    \"Unfortunately, there may have been an error saving this topic information\": \"הודעת שגיאה: נראה כי חלה שגיאה במהלך שמירת הנתונים\",\n    \"Something went wrong. Sorry!\": \"מצטערים, משהו השתבש\",\n\n\n    // Topics Tool\n    \"Search for a Topic.\": \"חפש נושא\",\n    \"Add Topic\": \"הוספת נושא\",\n    \"Create a new topic: \": \"יצירת נושא: \",\n    \"Enter Source Ref (for example: 'Yevamot.62b.9-11' or 'Yevamot 62b:9-11')\": \"הכניסו מראה מקום, לדוגמא שבת פח א:ו\",\n    \"Add sub-category\": \"הוסף קטגוריה\",\n    \"Reorder sources\": \"סַדַּר המקורות\",\n\n\n    // All Topics\n    \"All Topics\": \"כל הנושאים\",\n    \"Reset\": \"לאתחל\",\n    \"Search Topics\": \"חפש נושאים\",\n\n\n    // Community Page\n    \"From the Community: Today on Sefaria\": \"מן הקהילה: היום בספריא\",\n    \"Today on Sefaria\": \"היום בספריא\",\n    \"Who to Follow\": \"משתמשים שכדאי לעקוב אחריהם\",\n    \"Explore Collections\": \"עיינו באסופות\",\n    \"Organizations, communities and individuals around the world curate and share collections of sheets for you to explore.\": \"ארגונים, קהילות ויחידים מרחבי העולם מציגים ומשתפים אסופות של דפי מקורות שתוכלו לגלות.\",\n    \"Recently Published\": \"פורסמו לאחרונה\",\n    \"Make a Sheet\": \"יצירת דף מקורות\",\n    \"Combine sources from our library with your own comments, questions, images, and videos.\": \"השתמשו במקורות מהספריה ושלבו בהם את התגובות, השאלות, התמונות והסרטונים שלכם.\",\n    \"A Living Library of Torah\": \"ספריה יהודית דינמית\",\n\n    // Search\n    \"Results for\": \"תוצאות עבור\",\n    \"Results\": \"תוצאות\",\n    \"Options\": \"אפשרויות\",\n    \"Exact Matches Only\": \"התאמה מדויקת למילות החיפוש\",\n    \"Search Texts\": \"חפש מקורות\",\n    \"Search in this text\": \"חפש בטקסט\",\n\n    // Sheets\n    \"Sheet\": \"דף מקורות\",\n    \"About this Sheet\": \"אודות דף המקורות\",\n    \"Tags\": \"תוויות\",\n    \"Search for a text...\": \"חפש מקור בספריא\",\n    \"Paste a link to an image, video, or audio\": \"הוסף קישור לתמונה, סרטון, או אודיו\",\n    \"Add media\": \"הוסף מדיה\",\n    \"Add an image\": \"הוסף תמונה\",\n    \"Add a source\": \"הוסף מקור\",\n    \"Create a New Sheet\": \"יצירת דף מקורות\",\n    \"Source Sheets\": \"דפי מקורות\",\n    \"Sheets\": \"דפי מקורות\",\n    \"Start a New Source Sheet\": \"התחלת דף מקורות חדש\",\n    \"Untitled Source Sheet\" : \"דף מקורות ללא שם\",\n    \"Untitled\": \"ללא שם\",\n    \"New Source Sheet\" : \"דף מקורות חדש\",\n    \"Name New Sheet\" : \"כותרת לדף חדש\",\n    \"Copy\" : \"העתקה\",\n    \"Edit\": \"עריכה\",\n    \"View in Editor\": \"לתצוגת עריכה\",\n     \"Enter link URL\": \"הכנס קישור\",\n    \"Copied\" : \"הועתק\",\n    \"Copying...\" : \"מעתיק...\",\n    \"Delete\": \"מחיקה\",\n    \"Sorry, there was a problem saving your note.\": \"סליחה, ארעה שגיאה בזמן השמירה\",\n    \"Unfortunately, there was an error saving this note. Please try again or try reloading this page.\": \"ארעה שגיאה בזמן השמירה. אנא נסו שוב או טענו את הדף מחדש\",\n    \"Are you sure you want to delete this note?\": \"האם אתם בטוחים שברצונכם למחוק?\",\n    \"Something went wrong (that's all I know).\":\"משהו השתבש. סליחה\",\n    \"Write a note...\":\"כתבו הערות כאן...\",\n    \"Aa\": \"א\",\n    \"Decrease font size\": \"הקטן גופן\",\n    \"Increase font size\": \"הגדל גופן\",\n    \"this comment\":\"הערה זו\",\n    \"this source\":\"מקור זה\",\n    \"was added to\": \"נוסף ל-\",\n    \"View sheet\": \"מעבר ל-דף המקורות\",\n    \"Please select a source sheet.\": \"אנא בחרו דף מקורות.\",\n    \"New Source Sheet Name:\" : \"כותרת דף מקורות חדש:\",\n    \"Source Sheet by\" : \"דף מקורות מאת\",\n    \"Created with\": 'נוצר עבורך ע\"י',\n    \" hasn't shared any sheets yet.\": \" טרם שיתפ/ה דפי מקורות כלשהם\",\n    \"Loading...\" : \"טוען...\",\n    \"Saving...\" : \"שומר...\",\n    \"Your Source Sheet has unsaved changes. Before leaving the page, click Save to keep your work.\":\n    \"קיימים שינויים בלתי שמורים בדף המקורות. השתמשו בכפתור השמירה לפני עזיבת הדף.\",\n    \"Your Source Sheet has unsaved changes. Please wait for the autosave to finish.\":\n    \"קיימים שינויים בלתי שמורים בדף המקורות. אנא חכו שפעולת השמירה האוטומטית תסתיים.\",\n    \"Are you sure you want to delete this sheet? There is no way to undo this action.\":\n    \"מחיקת דף מקורות היא פעולה בלתי הפיכה. האם אתם בטוחים?\",\n    \"Unfortunately an error has occurred. If you've recently edited text on this page, you may want to copy your recent work out of this page and click reload to ensure your work is properly saved.\":\n    \"לצערנו ארעה שגיאה. אם ערכתם לאחרונה את הדף הנוכחי, ייתכן ותרצו להעתיק את השינויים למקור חיצוני ואז לטעון מחדש את הדף כדי לוודא שהשינויים נשמרו.\",\n    \"Are you sure you want to remove this?\": \"בטוח שברצונך למחוק?\",\n    \"Would you like to save this sheet? You only need to save once, after that changes are saved automatically.\": \"רוצה לשמור את הדף הזה? כל שעליך לעשות הוא לשמור פעם אחת – לאחר מכן השינויים יישמרו באופן אוטומטי.\",\n    \"Like\": \"אהבתי\",\n    \"Unlike\": \"ביטול סימון אהבתי\",\n    \"No one has liked this sheet yet. Will you be the first?\":\n    \"אף אחד עדיין לא אהב את דף המקורות הזה. תרצו להיות ראשונים?\",\n    \"1 Person Likes This Sheet\": \"אדם אחד אהב את דף המקורות\",\n    \" People Like This Sheet\": \" אנשים אהבו את דף המקורות\",\n    \"Tags Saved\": \"תוית נשמרה\",\n    \"Assignments allow you to create a template that your students can fill out on their own.\":\n    \"מטלות מאפשרות ליצור דף בסיס שתלמידים יכולים להשתמש בו כדי למלא וליצור את העבודה שלהם.\",\n    \"Students can complete their assignment at this link:\":\n    \"תלמידים יכולים לבצע את המטלה שלהם בקישור הבא:\",\n    \"Reset text of Hebrew, English or both?\": \"האם לאפס את התוכן של המקור בעברית, אנגלית או הכל?\",\n    \"Any edits you have made to this source will be lost\": \"כל השינויים שנעשו במקור זה יאבדו\",\n    \"Looking up Connections...\" : \"מחפש קישורים...\",\n    \"No connections known for this source.\": \"למקור הזה אין קשרים ידועים\",\n    \"Edit Source title\" : \"עריכת כותרת\",\n    \"Add Source Below\" : \"הוספת מקור מתחת\",\n    \"Add Source\": \"הוספת מקור\",\n    \"Add Comment\": \"הוספת תגובה\",\n    \"Add All Connections\": \"הוספת כל המקורות הקשורים\",\n    \"Reset Source Text\": \"איפוס טקסט מקור\",\n    \"Copy to Sheet\" : \"העתקה לדף מקורות\",\n    \"Change Source Layout/Language\": \"שינוי שפת/עימוד מקור\",\n    \"Move Source Up\": \"הזזת מקור מעלה\",\n    \"Move Source Down\": \"הזזת מקור מטה\",\n    \"Outdent Source\": \"הזחת מקור החוצה\",\n    \"Indent Source\": \"הזחת מקור פנימה\",\n    \"Create New\" : \"יצירת חדש\",\n    \"Close\" : \"סגירה\",\n    \"Reset\": \"איפוס\",\n    \"Views\": \"צפיות\",\n    \"Saves\": \"שמירות\",\n\n    //publish flow:\n    \"Not Published\" : \"לא פורסם\",\n    \"Publish Settings\": \"הגדרות פרסום\",\n    \"Publish Sheet\": \"פרסום דף מקורות\",\n    \"Your sheet is\": \"דף המקורות שלך\",\n    \"published\": \"פורסם\",\n    \"on Sefaria and visible to others through search and topics.\": \".בספריא ומשתמשים אחרים יכולים למצוא אותו בחיפוש ובדפי הנושא\",\n    \"List your sheet on Sefaria for others to discover.\": \".רישום דף המקורות שלך בספריא באופן שמשתמשים אחרים יוכלו למצוא אותו\",\n    \"Summary\": \"תקציר דף המקורות\",\n    \"Write a short description of your sheet...\" : \"תיאור קצר של דף המקורות...\",\n    \"Add a topic...\": \"הוספת נושא...\",\n    \"Publish\": \"פרסום דף המקורות\",\n    \"Unpublish\": \"ביטול\",\n    \"Please add a description and topics to publish your sheet.\": \"יש להוסיף תיאור ונושאים כדי לפרסם את הדף\",\n    \"Please add topics to publish your sheet.\": \"יש להוסיף נושאים כדי לפרסם את הדף\",\n    \"Please add a description to publish your sheet.\": \"יש להוסיף תיאור כדי לפרסם את הדף\",\n    \"The summary description is limited to 280 characters.\": \"תקציר דף המקורות מוגבל ל280 תווים.\",\n    \"People with this link can\": \"משתמשים עם קישור זה יכולים\",\n    \"Publish your sheet on Sefaria for others to discover.\": \"פרסמו את דף המקורות בספריא כדי שאחרים יוכלו ללמוד ממנו.\",\n\n    // Reader Panel\n    \"Search\" : \"חיפוש\",\n    \"Search Dictionary\": \"חיפוש במילון\",\n    \"Search for\": \"חיפוש\",\n    \"Search for:\": \"חיפוש:\",\n    \"Views\": \"צפיות\",\n    \"Search for Texts or Keywords Here\": \"חיפוש טקסט או מילות מפתח\",\n    \"Versions\": \"מהדורות\",\n    \"Version Open\": \"מהדורה פתוחה\",\n    \"About\": \"אודות\",\n    \"Current Version\": \"מהדורה נוכחית\",\n    \"Current Translation\": \"תרגום נוכחי\",\n    \"Select Version\": \"בחירת מהדורה\",\n    \"Select Translation\": \"בחירת תרגום\",\n    \"View in Sidebar\": \"פתיחת תרגום\",\n    'Select': 'בחירה',\n    'Currently Selected': 'נוכחי',\n    \"Merged from\": \"נוצר ממיזוג\",\n    \"Source\" : \"מקור\",\n    \"Sources\": \"מקורות\",\n    \"Digitization\" : \"דיגיטציה\",\n    \"License\" : \"רשיון\",\n    \"Revision History\" : \"היסטורית עריכה\",\n    \"Buy in Print\" : \"לרכישה בדפוס\",\n    \"Buy Now\" : \"רכישה\",\n    \"Read More\": \"קרא עוד\",\n    \"Web Pages\": \"דפי אינטרנט\",\n    \"Members\": \"חברים\",\n    \"Send\": \"שלח\",\n    \"Cancel\": \"בטל\",\n    \"Send a message to \": \"שלח הודעה ל-\",\n    \"Following\": \"נעקבים\",\n    \"Followers\": \"עוקבים\",\n    \"following\": \"נעקבים\",\n    \"followers\": \"עוקבים\",\n    \"Recent\": \"תאריך\",\n    \"Unlisted\": \"חסוי\",\n    \"History\": \"היסטוריה\",\n    \"Digitized by Sefaria\": 'הונגש ועובד לצורה דיגיטלית על ידי ספריא',\n    \"Public Domain\": \"בנחלת הכלל\",\n    \"Copyright: JPS, 1985\": \"זכויות שמורות ל-JPS, 1985\",\n    \"Location: \": \"מיקום: \",\n    \"Translations\": \"תרגומים\",\n    \"Uncategorized\": \"לא מסווג\",\n\n    // Collections\n    \"Collections\": \"אסופות\",\n    \"My Collections\": \"אסופות שלי\",\n    \"Public Collections\": \"אסופות ציבוריות\",\n    \"About Collections\": \"אודות \\\"אסופות\\\"\",\n    \"Collection\": \"אסופה\",\n    \"Collections of sheets are created by Sefaria users and can be privately, shared with friends, or made public on Sefaria.\": \"אסופות הן מקבצים של דפי מקורות שנוצרו על ידי משתמשי האתר. הן ניתנות לשימוש פרטי, לצורך שיתוף עם אחרים או לשימוש ציבורי באתר ספריא.\",\n    \"Sefaria Collections\": \"אסופות של ספריא\",\n    \"Create a Collection\": \"יצירת אסופה\",\n    \"Create a New Collection\": \"יצירת אסופה חדשה\",\n\n    // Collection Page\n    \"Owner\": \"מנהל/ת\",\n    \"Editor\": \"עורך/ה\",\n    \"Editors\": \"עורכים\",\n    \"There are no sheets in this collection yet.\": \"לאסופה זו טרם נוספו דפי מקורות.\",\n    \"You can add sheets to this collection on your profile.\": \"באפשרותך להוסיף דפי מקורות לאסופה הזאת דרך הפרופיל האישי שלך.\",\n    \"Open Profile\": \"לפרופיל האישי\",\n    \"Search the full text of this collection for\": \"באפשרותך לחפש בטקסט המלא של האסופה את\",\n    \"No sheets matching \": \"לא נמצאו דפים מתאימים ל\",\n    \"Pinned Sheet - click to unpin\": \"דף מקורות נעוץ - לחצו להסרה\",\n    \"Pinned Sheet\" : \"דף מקורות נעוץ\",\n    \"Pin Sheet\" : \"נעיצת דף מקורות\",\n    \"can invite & edit settings\": \"יכולים לשלוח הזמנות ולערוך את ההגדרות\",\n    \"can add & remove sheets\": \"יכולים להוסיף ולערוך דפים\",\n    \"Leave Collection\": \"עזיבת האסופה\",\n    \"Invite\": \"שליחת הזמנה\",\n    \"Inviting...\": \"שולח...\",\n    \"Invitation Sent\": \"נשלח\",\n    \"Invited\": \"הוזמן\",\n    \"Resend Invitation\": \"שליחת הזמנה חוזרת\",\n    \"Invitation Resent\": \"ההזמנה החוזרת נשלחה\",\n    \"There was an error sending your invitation.\": \"אירעה שגיאה בשליחת ההזמנה שלך.\",\n    \"Are you sure you want to change your collection role? You won't be able to undo this action unless another owner restores your permissions.\": \"האם ברצונך לשנות את ההרשאה שלך באסופה? פעולה זו היא בלתי הפיכה, ולאחריה רק מנהלים אחרים של האסופה יוכל לשחזר את ההרשאות שלך.\",\n    \"Are you sure you want to leave this collection?\": \"האם ברצונך לעזוב את האסופה?\",\n    \"Are you sure you want to remove this person from this collection?\": \"האם ברצונך להסיר משתמש זה מן האסופה?\",\n    \"Are you sure you want to remove this invitation?\": \"האם ברצונך למחוק הזמנה זו?\",\n    \"There was an error pinning your sheet.\": \"אירעה שגיאה בצירוף דף המקורות.\",\n\n    // Public Collections Page\n    \"There are no public collections yet.\": \"טרם נוצרו אסופות ציבוריות\",\n\n    // Collections in Profile\n    \"You can use collections to organize your sheets or public sheets you like. Collections can be shared privately or made public on Sefaria.\": \"באפשרותך ליצור אסופות כדי לארגן את דפי המקורות שלך או דפי מקורות פתוחים לשימוש שאהבת. את האסופות אפשר לשתף באופן פרטי או לפרסם באופן ציבורי באתר ספריא.\",\n    \" hasn't shared any collections yet.\": \" טרם שיתפ/ה אסופות כלשהם\",\n    \"Create new collection\": \"יצירת אסופה חדשה\",\n    \"Create\": \"יצירה\",\n    \"Done\": \"סיום\",\n    \"Add to Collection\": \"צירוף לאסופה\",\n\n    // Edit Collection page\n    \"Edit Collection\": \"עריכת אסופה\",\n    \"Collection Name\": \"שם האסופה\",\n    \"Website\": \"כתובת אתר\",\n    \"Description\": \"תיאור\",\n    \"Collection Image\": \"תמונת האסופה\",\n    \"Upload Image\": \"העלאת תמונה\",\n    \"Recommended size: 350px x 350px or larger\": 'גודל מומלץ: לפחות 350 פיקסל ע\"ג 350 פיקסל',\n    \"Default Sheet Header\": \"כותרת עמוד ראשונית\",\n    \"Recommended size: 1000px width to fill sheet, smaller images align right\": \"גודל מומלץ: 1000 פיקסל כדי למלא את חלל הדף. גודל קטן יותר יתיישר לימין\",\n    \"List on Sefaria\": \"הצג לכלל משתמשי ספריא\",\n    \"Your collection will appear on the public collections page where others can find it.\": \"האסופה שלך תופיע בדף האסופות הציבוריות ותהיה זמינה לעיון של משתמשות ומשתמשים אחרים.\",\n    \"Delete Collection\": \"מחיקת אסופה\",\n    \"Are you sure you want to delete this collection? This cannot be undone.\": \"האם ברצונך למחוק את האסופה הזו? אין אפשרות לבטל את הפעולה אחר כך.\",\n    \"You have unsaved changes to your collection.\": \"האסופה שלך כוללת שינויים שלא נשמרו.\",\n    \"Images must be smaller than \": \"תמונות חייבות להיות קטנות מ\",\n    \"Unfortunately an error occurred uploading your file.\": \"אירעה שגיאה בהעלאת הקובץ שלך.\",\n    \"Unfortunately an error occurred saving your collection.\": \"אירעה שגיאה בשמירת האסופה שלך.\",\n    \"Unfortunately an error occurred deleting your collection.\": \"אירעה שגיאה במחיקת האסופה שלך.\",\n\n    // Saved / History / Notifications\n    \"Saved\": \"שמורים\",\n    \"Notifications\": \"התראות\",\n    \"Texts and sheets that you read will be available for you to see here.\": \"מקורות ודפי מקורות שקראתם יהיו זמינים עבורכם כאן לעיון חוזר.\",\n    \"Click the bookmark icon on texts or sheets to save them here.\": \"לחצו על סמל הסימניה בתוך מקורות או דפי מקורות כדי לשמור מראי מקומות מסוימים כאן.\",\n    \"New Text\": \"טקסט חדש\",\n    \"sent you a message\": \"שלח/ה לך הודעה\",\n    \"published a new sheet\": \"פרסמ/ה דף מקורות חדש\",\n    \"liked your sheet\": \"שמר/ה את דף המקורות שלך\",\n    \"is now following you\": \"נרשמ/ה לעדכונים ממך\",\n    \"Reply\": \"תשובה\",\n    \"added you to a collection\": \"הוסיפ/ה אותך לאסופה\",\n\n    // Learning Schedules\n    \"Daily Learning\": \"לימוד יומי\",\n    \"Weekly Learning\": \"לימוד שבועי\",\n    \"Since ancient times, the Torah has been divided into sections which are read each week on a set yearly calendar. Following this practice, many other calendars have been created to help communities of learners work through specific texts together.\": \"מימי קדם חולקה התורה לקטעי קריאה שבועיים שנועדו לסיום הספר כולו במשך תקופת זמן של שנה. בעקבות המנהג הזה התפתחו לאורך השנים סדרי לימוד תקופתיים רבים נוספים, ובעזרתם יכולות קהילות וקבוצות של לומדים ללמוד יחד טקסטים שלמים.\",\n\n    //languages\n    \"English\": \"אנגלית\",\n    \"Hebrew\": \"עברית\",\n    \"Yiddish\": \"יידיש\",\n    \"Finnish\": \"פינית\",\n    \"Portuguese\": \"פורטוגזית\",\n    \"Spanish\": \"ספרדית\",\n    \"French\": \"צרפתית\",\n    \"German\": \"גרמנית\",\n    \"Arabic\": \"ערבית\",\n    \"Italian\": \"איטלקית\",\n    \"Polish\": \"פולנית\",\n    \"Russian\": \"רוסית\",\n    \"Esperanto\": \"אספרנטו\",\n    \"Persian\": \"פרסית\",\n    \"Ladino\" : \"לאדינו\",\n\n    \"On\": \"הצג\",\n    \"Off\": \"הסתר\",\n    \"Yes\": \"כן\",\n    \"No\": \"לא\",\n    \"Show Parasha Aliyot\": \"עליות לתורה מוצגות\",\n    \"Hide Parasha Aliyot\": \"עליות לתורה מוסתרות\",\n    \"Language\": \"שפה\",\n    \"Layout\": \"עימוד\",\n    \"Bilingual Layout\" : \"עימוד דו לשוני\",\n    \"Color\": \"צבע\",\n    \"Font Size\" : \"גודל גופן\",\n    \"Aliyot\" : \"עליות לתורה\",\n    \"Taamim and Nikkud\" : \"טעמים וניקוד\",\n    \"Punctuation\" : \"פיסוק\",\n    \"Show Punctuation\": \"הצגת סימני פיסוק\",\n    \"Hide Punctuation\": \"הסתרת סימני פיסוק\",\n    \"Show Vowels and Cantillation\": \"הצג טקסט עם טעמי מקרא וניקוד\",\n    \"Vocalization\": \"טעמים וניקוד\",\n    \"Vowels\": \"ניקוד\",\n    \"Show only vowel points\": \"הצג טקסט עם ניקוד\",\n    \"Show only consonantal text\": \"הצג טקסט עיצורי בלבד\",\n    \"Email Address\" : 'כתובת דוא\"ל',\n    \"Describe the issue...\" : \"טקסט המשוב\",\n    \"Report an issue with the text\" : \"דיווח על בעיה בטקסט\",\n    \"Request translation\" : \"בקשה לתרגום\",\n    \"Go to translations\": \"לרשימת התרגומים\",\n    \"Report a bug\" : \"דיווח על תקלה באתר\",\n    \"Get help\" : \"עזרה\",\n    \"Help\": \"עזרה\",\n    \"Get the Newsletter\": \"הירשמו לקבלת הניוזלטר\",\n    \"Sign up to get updates\": \"הירשמו לקבלת עדכונים\",\n    \"Request a feature\": \"בקשה להוספת אפשרות באתר\",\n    \"Give thanks\": \"תודה\",\n    \"Other\": \"אחר\",\n    \"Please select a feedback type\": \"אנא בחרו סוג משוב\",\n    \"Unfortunately, there was an error sending this feedback. Please try again or try reloading this page.\": \"לצערנו ארעה שגיאה בשליחת המשוב. אנא נסו שוב או רעננו את הדף הנוכחי\",\n    \"Tell us what you think...\" : \"ספרו לנו מה אתם חושבים...\",\n    \"Select Type\" : \"סוג משוב\",\n    \"Added by\" : \"נוסף בידי\",\n    \"Love Learning?\": \"אוהבים ללמוד?\",\n    \"Sign up to get more from Sefaria\" : \"הרשמו כדי לקבל יותר מספריא\",\n    \"Make source sheets\": \"הכינו דפי מקורות\",\n    \"Take notes\": \"שמרו הערות\",\n    \"Save texts\": \"שמרו טקסטים לקריאה חוזרת\",\n    \"Follow your favorite authors\": \"עקבו אחר הסופרים האהובים עליכם\",\n    \"Stay in the know\": \"השארו מעודכנים\",\n    \"Already have an account?\": \"כבר יש לכם חשבון?\",\n    \"Account Settings\": \"הגדרות\",\n    \"Sign in\": \"התחברו\",\n    \"Save\": \"שמירה\",\n    \"Remove\": \"הסרה\",\n    \"Logout\": \"ניתוק\",\n    \"Email was successfully changed!\": 'כתובת הדוא\"ל שונתה בהצלחה!',\n    \"Settings Saved\": \"הגדרות נשמרו\",\n    \"Turning this feature off will permanently delete your reading history.\" : \"כיבוי אפשרות זו תמחק לצמיתות את היסטורית הקריאה שלך.\",\n    \"Filter\": \"סינון\",\n    \"Relevance\": 'רלוונטיות',\n    \"Chronological\": 'כרונולוגי',\n    \"Newest\": \"הכי חדש\",\n    \"This source is connected to \": \"מקור הזה קשור ל-\",\n    \"This topic is connected to \": \"נושא הזה קשור ל-\",\n    \"by\": \"על ידי\",\n    \"based on\": \"ע“פ\",\n    \"research of Dr. Michael Sperling\": \"המחקר של ד\\\"ר מיכאל ספרלינג\",\n    \"Read the Portion\": \"קראו את הפרשה\",\n    \"My Notes\": \"הרשומות שלי\",\n    \"Updates\": \"עדכונים\",\n    \"Preferred Translation\": \"תרגום מועדף\",\n    \"Text Title\": \"כותר לועזי\",\n    \"Hebrew Title\": \"כותר עברי\",\n    \"Text Structure\": \"מבנה טקסט\",\n    \"Category\": \"קטגוריה\",\n    \"Alternate Hebrew Titles\": \"חלופות כותר עבריות\",\n    \"Alternate English Titles\": \"חלופות כותר לועזיות\",\n    \"Optional\": \"אופציונלי\",\n\n    //user stats\n    \"Torah Tracker\" : \"לימוד במספרים\",\n    \"Previous Year\": \"לשנה האחרונה\",\n    \"All Time\": \"כל הזמן\",\n    \"Texts Read\" : \"ספרים שנקראו\",\n    \"Sheets Read\" : \"דפי מקורות שנקראו\",\n    \"Sheets Created\" : \"דפי מקורות שנוצרו\",\n    \"Average Sefaria User\" : \"משתמש ממוצע בספריא\",\n    \"Etc\": \"שאר\",\n\n    // Subscribe & Register\n    \"Please enter a valid email address.\": 'כתובת הדוא\"ל שהוזנה אינה תקינה.',\n    \"Subscribed! Welcome to our list.\": \"הרשמה בוצעה בהצלחה!\",\n    \"Sorry, there was an error.\": \"סליחה, ארעה שגיאה\",\n\n    // Footer\n    \"Connect\": \"צרו קשר\",\n    \"Site Language\": \"שפת האתר\",\n\n    //Profile\n    \"Profile\": \"פרופיל\",\n    \" at \": \" ב-\",\n    \"on Sefaria\": \" בספריא\",\n\n    //New Editor Flow\n    \"Thanks for Trying the New Editor!\": \"תודה שבחרת לנסות את העורך החדש שלנו!\",\n    \"Go to your profile to create a new sheet, or edit an existing sheet, to try out the new experience. After you’ve had a chance to try it out, we would love to hear your feedback. You can reach us at\" : \"כדי להתנסות בחוויית העריכה החדשה, יש להיכנס לפרופיל האישי שלך וליצור דף מקורות חדש או לערוך דף מקורות קיים. נשמח מאוד לקבל ממך משוב אחרי השימוש. אפשר ליצור איתנו קשר בדוא\\\"ל\",\n    \"Back to Profile\": \"חזרה לפרופיל האישי שלך\",\n    \"Go back to old version\": \"חזרה לגרסה הישנה\",\n    \"Request for Feedback\": \"נא למלא משוב\",\n    \"Thank you for trying the new Sefaria editor! We’d love to hear what you thought. Please take a few minutes to give us feedback on your experience.\": \"תודה שניסית את עורך ספריא החדש! נשמח מאוד לשמוע את דעתך עליו. אנו מבקשים ממך להקדיש כמה דקות למילוי משוב על חוויית השימוש שלך.\",\n    \"Did you encounter any issues while using the new editor? For example:\": \"האם נתקלת בבעיות בעת השימוש בעורך החדש? למשל...\",\n    \"Technical problems\": \"בעיות טכניות\",\n    \"Difficulties using the editor\": \"קושי להשתמש בעורך\",\n    \"Missing features\": \"תכונות חסרות\",\n    \"Tell us about it...\": \"ספר/י לנו על כך...\",\n    \"Submit Feedback\": \"לשליחת המשוב\",\n    \"Thank you!\": \"תודה רבה!\",\n    \"You are currently testing the new Sefaria editor.\": \"ברגע זה הינך עושה שימוש בעורך החדש של ספריא\",\n    \"You are currently using the old Sefaria editor.\": \"כעת הינך עושה שימוש בגרסה הישנה של עורך ספריא\",\n    \"Try the new version\": \"להתנסוּת בגרסה החדשה\",\n    \"Your feedback is greatly appreciated. You can now edit your sheets again using the old source sheet editor. If you have any questions or additional feedback you can reach us at\": \"אנחנו מעריכים מאוד את המשוב שלך. כעת באפשרותך לחזור לערוך את הדפים שלך באמצעות עורך המסמכים הישן. לשאלות או למשוב נוסף אפשר לפנות אלינו בדוא\\\"ל:\",\n\n    //TextTableofContents\n    \"Contents\": \"תוכן\",\n    \"Download\": \"הורדה\",\n    \"Table of Contents\": \"תוכן העניינים\",\n    \"Hebrew Versions\": \"בעברית\",\n    \"English Versions\": \"באנגלית\",\n    \"Continue Reading\": \"המשך קריאה\",\n    \"Start Reading\": \"התחלת קריאה\",\n    \"Composed\": \"זמן חיבור\",\n    \"Author\": \"מחבר\",\n    \"Authors\": \"מחברים\",\n\n    //Topics\n    \"Wikipedia\": \"ויקיפדיה\",\n    \"Jewish Encyclopedia\": \"האנציקלופדיה היהודית\",\n    \"National Library of Israel\": \"הספרייה הלאומית\",\n    \"Works on Sefaria\": \"חיבורים וכתבים בספריא\",\n\n    //Module Names\n    \"Download Text\": \"הורדת טקסט\",\n    \"About this Text\" : \"אודות ספר זה\",\n    \"About This Text\" : \"אודות ספר זה\",\n    \"Related Topics\": \"נושאים קשורים\",\n\n    // FilterableList\n    \"Sort by\": \"מיון לפי\",\n\n    //Mobile Nav Header\n    \"Get Help\": \"עזרה\", //already has a similar string here but with different capitalization, maybe fix bug when not right before a launch?\n    \"About Sefaria\": \"אודות ספריא\",\n    \"Saved & History\": \"היסטורית קריאה ושמורים\",\n\n    //Misc\n    \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam arcu felis, molestie sed mauris a, hendrerit vestibulum augue.\" : \"בראיט ולחת צורק מונחף, בגורמי מג׳מש. תרבנך וסתעד לכנו סתשם השמה – לתכי מורגם בורק? לתיג ישבעס\",\n\n    //WebPage\n    'Citing': 'מצטט',\n    'Sites that are listed here use the': 'אתרים המפורטים כאן משתמשים',\n    'Sefaria Linker': 'במרשתת ההפניות',\n\n    //alt tags\n    'Notifications': 'עדכונים',\n    'Bookmarks': 'שמורים',\n    'Toggle Interface Language Menu' : 'פתח תפריט שפת ממשק',\n  },\n\n  _i18nInterfaceStringsWithContext: {\n    \"AddConnectionBox\": {\n      \"Select Type\": \"בחר סוג קישור\",\n      \"None\": \"ללא\",\n      \"Commentary\": \"פירוש\",\n      \"Quotation\": \"ציטוט\",\n      \"Midrash\": \"מדרש\",\n      \"Ein Mishpat / Ner Mitsvah\": \"עין משפט / נר מצווה\",\n      'Mesorat HaShas': 'מסורת הש\"ס',\n      \"Reference\": \"עיון\",\n      \"Related Passage\": \"קשר אחר\",\n    },\n    \"SheetAuthorStatement\": {\n      \"by \": \"\", // by line on sheets in reader, intentionally left blank\n    },\n    \"AboutParashah\": {\n      \"Torah Reading\": \"פרשת השבוע\",\n    },\n    \"ConnectionPanelSection\":{\n      \"Related Texts\": \"מקורות לעיון\",\n      \"Resources\": \"עזרים\",\n      \"Tools\": \"כלים\",\n      \"Share Link\": \"שיתוף קישור\",\n      \"More Options\": \"אפשרויות נוספות\",\n    },\n    \"FollowButton\": {\n      \"Follow\": \"עקבו\",\n      \"Unfollow\": \"הסרת עוקב\",\n      \"Following\": \"עוקב\",\n      \"Follow Back\": \"עקבו בחזרה\",\n    },\n    \"DownloadVersions\":{\n      \"Select Format\": \"בחירת פורמט הורדה\",\n      \"Text (with Tags)\": \"טקסט (עם תיוגים)\",\n      \"Text (without Tags)\": \"טקסט (ללא תיוגים)\",\n      \"Select Version\": \"בחירת מהדורה/תרגום\",\n      \"Merged Version\": \"גרסה משולבת\"\n    },\n    \"FilterableList\": {\n      \"Alphabetical\": \"אלפביתי\",\n      \"Recent\": \"הכי חדש\",\n      \"Views\": \"הכי נצפה\",\n      /*\"Relevance\": 'רלוונטיות', //these 3 are duplicates but it doesnt seem to work without them, why?\n      \"Chronological\": 'כרונולוגי',\n      \"Newest\": \"הכי חדש\",*/\n    },\n    \"Header\": {\n      \"Texts\": \"מקורות\",\n    },\n    \"RecentlyPublished\": {\n      \"Load More\": \"דפי מקורות נוספים\",\n    },\n    \"ResourcesModule\": {\n      \"Resources\": \"כלי עזר\",\n    },\n    \"SearchFilters\": {\n      \"Texts\": \"מקורות\",\n      \"Topics\": \"נושאים\",\n      \"Collections\": \"באסופות\",\n      \"See More\": \"עוד\",\n    },\n    \"CalendarListing\": {\n      \"Tanakh\": \"\",\n      \"Talmud\": \"\"\n    },\n    \"Sheet Share\": {\n      \"View\": \"לצפות\",\n      \"Add\": \"להוסיף\",\n      \"Edit\": \"לערוך\",\n    },\n    \"WebPageList\": {\n      'Author': 'מחבר'\n    }\n  },\n};\n\n\nexport default Strings;\n","var palette = {\n  colors: {\n    darkblue:  \"#133059\",\n    maroon:    \"#733122\",\n    green:     \"#509B70\",\n    slate:     \"#7491B1\",\n    darkorange:\"#C87448\",\n    red:       \"#A9373C\",\n    aqua:      \"#96C2C5\",\n    darkgreen: \"#407145\",\n    yellow:    \"#EAD7A1\",\n    olive:     \"#959280\",\n    /*  old colors */\n    darkteal:  \"#004e5f\",\n    raspberry: \"#7c406f\",\n    /* green:     \"#5d956f\", */\n    paleblue:  \"#9ab8cb\",\n    blue:      \"#4871bf\",\n    orange:    \"#cb6158\",\n    lightpink: \"#c7a7b4\",\n    /* darkblue:  \"#073570\", */\n    darkpink:  \"#ab4e66\",\n    lavender:  \"#7f85a9\",\n    /* yellow:    \"#ccb479\", */\n    purple:    \"#594176\",\n    lightblue: \"#5a99b7\",\n    lightgreen:\"#97b386\",\n    /* red:       \"#802f3e\", */\n    teal:      \"#00827f\",\n    lightbg:   \"#B8D4D3\",\n    tan:       \"#D4896C\"\n\n  }\n};\npalette.categoryColors = {\n  \"American Priors\":              \"var(--priors-darkblue)\",\n  \"Toward Independence\":          \"var(--independence-maroon)\",\n  \"Constituting America\":         \"var(--constituting-green)\",\n  \"Forging these United States\":  \"var(--forging-slate)\",\n  \"The Coming of the Civil War\":  \"var(--coming-war-orange)\",\n  \"Civil War and Reconstruction\": \"var(--civil-war-red)\",\n  \"Commentary\":         \"var(--commentary-blue)\",\n  \"Tanakh\" :            \"var(--tanakh-teal)\",\n  \"Midrash\":            \"var(--midrash-green)\",\n  \"Mishnah\":            \"var(--mishnah-blue)\",\n  \"Talmud\":             \"var(--talmud-gold)\",\n  \"Halakhah\":           \"var(--halakhah-red)\",\n  \"Kabbalah\":           \"var(--kabbalah-purple)\",\n  \"Jewish Thought\":     \"var(--philosophy-purple)\",\n  \"Liturgy\":            \"var(--liturgy-rose)\",\n  \"Tosefta\":            \"var(--taanitic-green)\",\n  \"Chasidut\":           \"var(--chasidut-green)\",\n  \"Musar\":              \"var(--mussar-purple)\",\n  \"Responsa\":           \"var(--responsa-red)\",\n  \"Second Temple\":      \"var(--apocrypha-pink)\",\n  \"Quoting Commentary\": \"var(--responsa-red)\",\n  \"Sheets\":             \"var(--sefaria-blue)\",\n  \"Sheet\":              \"var(--sefaria-blue)\",\n  \"Targum\":             \"var(--miscelaneous-green)\",\n  \"Modern Commentary\":  \"var(--modern-works-blue)\",\n  \"Reference\":          \"var(--reference-orange)\",\n  \"System\":             \"var(--sefaria-blue)\",\n  \"Static\":             \"linear-gradient(90deg, #00505E 0% 10%, #5698B4 10% 20%, #CCB37C 20% 30%, #5B9370 30% 40%, #823241 40% 50%, #5A4474 50% 60%, #AD4F66 60% 70%, #7285A6 70% 80%, #00807E 80% 90%, #4872B3 90% 100%)\"\n};\npalette.categoryColor = function(cat) {\n  if (cat in palette.categoryColors) {\n    return palette.categoryColors[cat];\n  }\n\n  // For unknown categories, map the string a color (random, but stable)\n  const colors = Object.values(palette.colors);\n  let idx = 0;\n  cat = typeof cat == \"string\" ? cat : \"\";\n  cat.split(\"\").map(letter => {idx += letter.charCodeAt(0);});\n  idx = idx % colors.length;\n\n  return colors[idx];\n};\n\nexport default palette;\n","var ga;\nlet tracker, trackerName;\nif (typeof window !== 'undefined' && typeof window.ga === \"function\" && typeof window.ga.getAll == \"function\" && window.ga.getAll().length > 0) {\n  ga = window.ga;\n  tracker = ga.getAll()[0];\n  trackerName = tracker.get(\"name\"); // Google Tag Manager assigns a Tracker Name\n  window.onerror = function(msg, url, lineNumber) {\n      ga(trackerName + \".send\", 'event', 'Javascript Errors',  msg, url + ':' + lineNumber);\n  };\n  ga(trackerName + '.require', 'ec');\n} else {\n  ga = function() {}; // Fail gracefully if we reach one of these methods server side or when GA doesn't load properly\n  ga._mock = true;\n  trackerName = \"mock\";\n}\nvar SET = trackerName + \".set\";\nvar SEND = trackerName + \".send\";\n\n\nclass Track {\n    // Helper functions for event tracking (with Google Analytics and Mixpanel)\n    static event(category, action, label, value, options) {\n        // https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference#send\n        ga(SEND, 'event', category, action, label, value, options);\n        console.log(SEND, 'event', category, action, label, value, options);\n        if (ga._mock && value && value.hitCallback) {\n          // When Google Analytics isn't being used, trigger hitCallback immediately.\n          value.hitCallback();\n          // Unsure why we have param mismatch... what we call value here is treated as options.\n          // A previous attempt to insert `null` for value to put `options` in the right place broke tracking.\n        }\n        else if (value && value.hitCallback) {\n            // Creates a timeout to call `hitCallback` after one second (in case of no return from ga).\n            setTimeout(value.hitCallback, 1000)\n        }\n    }\n    static promoView(id, position) {\n        // Promo details provided in a promoFieldObject. Can add name, and creative if we desire.\n        ga(trackerName + '.ec:addPromo', {\n          'id': id,\n          'name': id,\n          'position': position\n        });\n        ga(SEND, 'event', 'Internal Promotions', 'view', id, { nonInteraction: true });\n    }\n\n    static promoClick(id, position) {\n        // Identify the promotion that was clicked.\n        ga(trackerName + '.ec:addPromo', {\n          'id': id,\n          'name': id,\n          'position': position\n        });\n\n        // Send the promo_click action with an event.\n        ga(trackerName + '.ec:setAction', 'promo_click');\n        ga(SEND, 'event', 'Internal Promotions', 'click', id);\n    }\n\n    static pageview(url) {\n        ga(SET, 'page', url);\n        ga(SEND, 'pageview');\n    }\n    static setPrimaryCategory(category_name) {\n        ga(SET, 'contentGroup1', category_name);\n    }\n    static setSecondaryCategory(category_name) {\n        ga(SET, 'contentGroup2', category_name);\n    }\n    static setContentLanguage(language) {\n        ga(SET, 'contentGroup5', language);\n    }\n    static setNumberOfPanels(val) {\n        ga(SET, 'dimension1', val);\n    }\n    static setBookName(val) {\n        ga(SET, 'dimension2', val);\n        ga(SET, 'contentGroup3', val);\n    }\n    static setRef(val) {\n        ga(SET, 'dimension3', val);\n    }\n    static setVersionTitle(val) {\n        ga(SET, 'dimension4', val);\n    }\n    static setPageType(val) {\n        ga(SET, 'dimension5', val);\n    }\n    static setSidebars(val) {\n        ga(SET, 'dimension6', val);\n    }\n    static setUserLoggedIn(bool) {\n        ga(SET, 'dimension7', bool? \"Logged In\": \"Logged Out\");\n    }\n    static setUserID(val) {\n        var sval = String(val);\n        ga(SET, 'userId', sval);\n        ga(SET, 'dimension10', sval);\n    }\n    static setUserData(loggedIn, analytics_uid) {\n        this.setUserLoggedIn(loggedIn);\n        if (analytics_uid) this.setUserID(analytics_uid);\n    }\n    static sheets(action, label) {\n        this.event(\"Sheets\", action, label);\n    }\n    static uiFeedback(component, likeStatus) {\n        this.event(\"UI\", component, likeStatus);\n    }\n    static exploreUrl(url) {\n        this.event(\"Explorer\", \"Open\", url);\n        this.pageview(url);\n    }\n    static exploreBook(book) {\n        this.event(\"Explorer\", \"Book\", book);\n    }\n    static exploreBrush(book) {\n        this.event(\"Explorer\", \"Brush\", book);\n    }\n    static setInterfaceLanguage(origin, language){\n        // Tracks a user setting their interface langauge, which can be done either account settings or footer\n        this.event(\"Settings\", origin, language);\n    }\n}\n\nexport default Track;\n","import Sefaria from './sefaria';\nconst GERESH = '\\u05F3';\nconst GERSHAYIM = '\\u05F4';\nclass Hebrew {\n  static decodeHebrewNumeral(h) {\n    // Takes a string representing a Hebrew numeral and returns it integer value.\n    var values = this.hebrewNumerals;\n\n    if (h === values[15] || h === values[16]) {\n      return values[h];\n    }\n\n    var n = 0;\n    for (let i = 0; i < h.length; i++) {\n      n += values[h.charAt(i)];\n    }\n\n    return n;\n  }\n  \n  /**\n   * Encodes an integer \"Daf\" and returns a string encoding it as a Hebrew numeral.\n   * @param {number} n - The integer\n   * @returns {number[]} - Hebrew numeral\n   */\n  static breakIntMagnitudes(n, start=null) {\n    /* Accepts an integer and an optional integer (multiple of 10) for at what order of\n\tmagnitude to start breaking apart the integer.  If no option \"start\" is provided,\n\tfunction will determine the size of the input integer and start that the largest order\n\tof magnitude.\n\tReturns a big-endian list of the various orders of magnitude, by 10s, broken apart.\n\n\tbreakIntMagnitudes(1129, 100)\n\t[1100, 20, 9]\n\n\tbreakIntMagnitudes(2130)\n\t[2000, 100, 30, 0]\n\n\tbreakIntMagnitudes(15000)\n\t[10000, 5000, 0, 0, 0]\n     */\n    if (!!start) {\n      if (!(start % 10 === 0 || start === 1)) {\n        throw new TypeError(`Argument 'start' must be 1 or divisible by 10, ${start} provided.`);\n      }\n    } else {\n      start = Math.pow(10, Math.floor(Math.log10(n)));\n    }\n\n    if (start === 1) {\n      return [n];\n    } else {\n      const thisIntMagnitude = Math.floor(n / start) * start;\n      const nextIntMagnitude = this.breakIntMagnitudes(n - Math.floor(n / start) * start, start = Math.floor(start / 10));\n      return [thisIntMagnitude].concat(nextIntMagnitude);\n    }\n  }\n  static getChunks (list, chunkSize) {\n    return list.reduce((all, one, i) => {\n      const ch = Math.floor(i/chunkSize);\n      all[ch] = [].concat((all[ch]||[]), one);\n      return all\n    }, [])\n  }\n  static sanitize (inputString, punctuation=true) {\n    const replacementPairs = [\n        [/\\u05d9\\u05d4/g, '\\u05d8\\u05d5'], //15\n        [/\\u05d9\\u05d5/g, '\\u05d8\\u05d6'], //16\n        [/\\u05e8\\u05e2\\u05d4/g, '\\u05e2\\u05e8\\u05d4'], //275\n        [/\\u05e8\\u05e2\\u05d1/g, '\\u05e2\\u05e8\\u05d1'], //272\n        [/\\u05e8\\u05e2/g, '\\u05e2\\u05e8'], //270\n    ];\n\n    replacementPairs.forEach(function(pair) {\n        inputString = inputString.replace(pair[0], pair[1]);\n    });\n\n    if (punctuation) {\n        // add gershayim at the end if longer than one character\n        if (inputString.length > 1) {\n            // if a geresh is not one of the last two items in the string\n            if (this.right(inputString, 2).indexOf(GERESH) < 0) {\n                inputString = inputString.substr(0, inputString.length - 1) + GERSHAYIM + this.right(inputString, 1);\n            }\n        } else {\n            inputString += GERESH;\n        }\n    }\n\n    return inputString;\n  };\n  static right(string, numChars) {\n    'use strict';\n    return string.slice(string.length - numChars);\n  };\n  static encodeLargeHebrewNumeral(n, punctuation=true) {\n    // Break into magnitudes, then break into thousands buckets, big-endian\n    let ret = this.breakIntMagnitudes(n).reverse();\n    ret = this.getChunks(ret, 3);\n\n    // Eliminate the orders of magnitude in preparation for being encoded\n    ret = ret.map((arr, index) => {\n       const sum = arr.reduce(function(a, b){\n          return a + b;\n      }, 0);\n      return parseInt(sum * Math.pow(10, -3 * index));\n    });\n\n    // encode and join together, separating thousands with geresh\n    ret = ret.map(x => this.encodeHebrewNumeral(x));\n    ret = ret.reverse().join(GERESH);\n    ret = this.sanitize(ret, punctuation);\n    return ret;\n  }\n\n  static encodeHebrewNumeral(n, punctuation=true) {\n    n = parseInt(n);\n    if (n >= 1300) {\n      return this.encodeLargeHebrewNumeral(n, punctuation=punctuation);\n    }\n\n    const values = this.hebrewNumerals;\n\n    let heb = \"\";\n    if (n >= 100) {\n      const hundreds = n - (n % 100);\n      heb += values[hundreds];\n      n -= hundreds;\n    }\n    if (n === 15 || n === 16) {\n      // Catch 15/16 no matter what the hundreds column says\n      heb += values[n];\n    } else {\n      if (n >= 10) {\n        const tens = n - (n % 10);\n        heb += values[tens];\n        n -= tens;\n      }\n      if (n > 0) {\n        if (!values[n]) {\n            return undefined\n        }\n        heb += values[n];\n      }\n    }\n    return heb;\n  }\n  \n  /**\n   * Encodes an English \"Daf\" (2 sided page) ref address string into a corresponding Hebrew one.\n   * @param {string} daf - The English daf string\n   * @param {string} form - Whether to use colon or letters\n   * @returns {string} - Hebrew representation\n   */\n  static encodeHebrewDaf(daf, form) {\n    // Returns Hebrew daf strings from \"32b\"\n    form = form || \"short\";\n    const n = parseInt(daf.slice(0,-1));\n    let a = daf.slice(-1);\n    if (form === \"short\") {\n      a = {a: \".\", b: \":\"}[a];\n      return this.encodeHebrewNumeral(n) + a;\n    }\n    else if (form === \"long\"){\n      a = {a: 1, b: 2}[a];\n      return this.encodeHebrewNumeral(n) + \" \" + this.encodeHebrewNumeral(a);\n    }\n  }\n\n  /**\n   * Encodes an English \"Folio\" (4 sided daf) ref address string into a corresponding Hebrew one.\n   * @param {string} daf - The English folio string\n   * @returns {string} - Hebrew representation\n   */\n  static encodeHebrewFolio(daf) {\n    const n = parseInt(daf.slice(0,-1));\n    let a = {a: \"א\", b: \"ב\", c: \"ג\", d: \"ד\"}[daf.slice(-1)];\n    return this.encodeHebrewNumeral(n) + \",\" + a;\n  }\n  static getNikkudRegex(rawString) {\n    // given a Hebrew string, return regex that allows for arbitrary nikkud in between letters\n    return rawString.stripNikkud().split(\"\").join(\"[\\u0591-\\u05C7]*\");\n  }\n  static isHebrew(text) {\n    // Returns true if text is (mostly) Hebrew\n    // Examines up to the first 200 characters, ignoring html tags, punctuation and numbers\n    text = text.stripHtml().stripNikkud();\n    let heCount = 0;\n    let enCount = 0;\n    const punctuationRE = /[0-9 .,'\"?!;:\\-=@#$%^&*()/<>]/;\n\n    for (let i = 0; i < Math.min(200, text.length); i++) {\n      if (punctuationRE.test(text[i])) { continue; }\n      if ((text.charCodeAt(i) > 0x590) && (text.charCodeAt(i) < 0x5FF)) {\n        heCount++;\n      } else {\n        enCount++;\n      }\n    }\n    return (heCount > enCount);\n  }\n  static containsHebrew(text) {\n    // Returns true if there are any Hebrew characters in text\n    for (let i = 0; i < text.length; i++) {\n      if ((text.charCodeAt(i) > 0x590) && (text.charCodeAt(i) < 0x5FF)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  static containsEnglish(text) {\n    // Returns true if there are any English characters in text\n    return !!(text.match(/[a-zA-Z]/));\n  }\n\n  static hebrewPlural(s) {\n    const known = {\n      \"Daf\":      \"Dappim\",\n      \"Mitzvah\":  \"Mitzvot\",\n      \"Mitsva\":   \"Mitzvot\",\n      \"Mesechet\": \"Mesechtot\",\n      \"Perek\":    \"Perokim\",\n      \"Siman\":    \"Simanim\",\n      \"Seif\":     \"Seifim\",\n      \"Se'if\":    \"Se'ifim\",\n      \"Mishnah\":  \"Mishnayot\",\n      \"Mishna\":   \"Mishnayot\",\n      \"Chelek\":   \"Chelekim\",\n      \"Parasha\":  \"Parshiot\",\n      \"Parsha\":   \"Parshiot\",\n      \"Pasuk\":    \"Psukim\",\n      \"Midrash\":  \"Midrashim\",\n      \"Aliyah\":   \"Aliyot\"\n    };\n\n    return (s in known ? known[s] : s + \"s\");\n  }\n\n  /**\n   * Takes an integer representing a database addressable location and converts it into the appropriate 2 sided Talmud page address. \n   * For Reverse function see below dafToInt()\n   * @param {number} i - The integer physical location\n   * @returns {string} The Daf X[a/b] notation, e.g. Daf 15b\n   */\n  static intToDaf(i) {\n    // Base 0 int -> daf\n    // e.g. 2 -> \"2a\"\n    i += 1;\n    const daf = Math.ceil(i/2);\n    return daf + (i%2 ? \"a\" : \"b\");\n  }\n  \n  /**\n   * Takes a Talmud daf string and turns it into the correct db addressable physical location for that text. The reverse of the above intToDaf()\n   * @param {string} daf - The input string\n   * @returns {number} The actual integer location of the text\n   */\n  static dafToInt(daf) {\n    var amud = daf.slice(-1);\n    var i = parseInt(daf.slice(0, -1)) - 1;\n    i = amud == \"a\" ? i * 2 : i*2 +1;\n    return i;\n  }\n  \n  /**\n   * Takes an integer representing a database addressable location and converts it into the appropriate 4 sided Jerusalem Talmud like manuscript page address\n   * @param {number} i - The integer physical location\n   * @returns {string} The Daf X[a-d] notation, e.g. Daf 4c\n   */\n  static intToFolio(i) {\n    i += 1;\n    const daf = Math.ceil(i/4);\n    const mod = i%4;\n    return daf + (mod === 1 ? \"a\" : mod === 2 ? \"b\" : mod === 3 ? \"c\" : \"d\");\n  }\n  \n}\n\nHebrew.hebrewNumerals = {\n  \"\\u05D0\": 1,\n  \"\\u05D1\": 2,\n  \"\\u05D2\": 3,\n  \"\\u05D3\": 4,\n  \"\\u05D4\": 5,\n  \"\\u05D5\": 6,\n  \"\\u05D6\": 7,\n  \"\\u05D7\": 8,\n  \"\\u05D8\": 9,\n  \"\\u05D9\": 10,\n  \"\\u05D8\\u05D5\": 15,\n  \"\\u05D8\\u05D6\": 16,\n  \"\\u05DB\": 20,\n  \"\\u05DC\": 30,\n  \"\\u05DE\": 40,\n  \"\\u05E0\": 50,\n  \"\\u05E1\": 60,\n  \"\\u05E2\": 70,\n  \"\\u05E4\": 80,\n  \"\\u05E6\": 90,\n  \"\\u05E7\": 100,\n  \"\\u05E8\": 200,\n  \"\\u05E9\": 300,\n  \"\\u05EA\": 400,\n  \"\\u05EA\\u05E7\": 500,\n  \"\\u05EA\\u05E8\": 600,\n  \"\\u05EA\\u05E9\": 700,\n  \"\\u05EA\\u05EA\": 800,\n  1: \"\\u05D0\",\n  2: \"\\u05D1\",\n  3: \"\\u05D2\",\n  4: \"\\u05D3\",\n  5: \"\\u05D4\",\n  6: \"\\u05D5\",\n  7: \"\\u05D6\",\n  8: \"\\u05D7\",\n  9: \"\\u05D8\",\n  10: \"\\u05D9\",\n  15: \"\\u05D8\\u05D5\",\n  16: \"\\u05D8\\u05D6\",\n  20: \"\\u05DB\",\n  30: \"\\u05DC\",\n  40: \"\\u05DE\",\n  50: \"\\u05E0\",\n  60: \"\\u05E1\",\n  70: \"\\u05E2\",\n  80: \"\\u05E4\",\n  90: \"\\u05E6\",\n  100: \"\\u05E7\",\n  200: \"\\u05E8\",\n  300: \"\\u05E9\",\n  400: \"\\u05EA\",\n  500: \"\\u05EA\\u05E7\",\n  600: \"\\u05EA\\u05E8\",\n  700: \"\\u05EA\\u05E9\",\n  800: \"\\u05EA\\u05EA\",\n  900: \"\\u05EA\\u05EA\\u05E7\",\n  1000: \"\\u05EA\\u05EA\\u05E8\",\n  1100: \"\\u05EA\\u05EA\\u05E9\",\n  1200: \"\\u05EA\\u05EA\\u05EA\"\n};\n\nexport default Hebrew;\n","import VersionPreferences from \"./VersionPreferences\";\n\nvar extend     = require('extend'),\n    param      = require('querystring').stringify;\nimport Search from './search';\nimport Strings from './strings';\nimport palette from './palette';\nimport Track from './track';\nimport Hebrew from './hebrew';\nimport Util from './util';\nimport $ from './sefariaJquery';\nimport Cookies from 'js-cookie';\n\n\nlet Sefaria = Sefaria || {\n  _dataLoaded: false,\n  _inBrowser: (typeof document !== \"undefined\"),\n  toc: [],\n  books: [],\n  booksDict: {},\n  last_place: [],\n  apiHost: \"\" // Defaults to localhost, override to talk another server\n};\n\nif (typeof window !== 'undefined') {\n    window.Sefaria = Sefaria; // allow access to `Sefaria` from console\n}\n\nSefaria = extend(Sefaria, {\n  _parseRef: {}, // cache for results of local ref parsing\n  parseRef: function(q) {\n  // Client side ref parsing without depending on book index data.\n  // Does depend on Sefaria.booksDict.\n  // One of the oldest functions in Sefaria! But should be intelligently merged into Sefaria.ref()\n      q = q || \"\";\n      q = decodeURIComponent(q);\n      q = q.replace(/_/g, \" \").replace(/[.:]/g, \" \").replace(/ +/, \" \");\n      q = q.trim().toFirstCapital();\n      if (q in Sefaria._parseRef) { return Sefaria._parseRef[q]; }\n\n      const response = {book: false,\n                      index: false,\n                      sections: [],\n                      toSections: [],\n                      ref: \"\"};\n      if (!q) {\n          Sefaria._parseRef[q] = response;\n          return response;\n      }\n\n      const toSplit = q.split(\"-\");\n      const first   = toSplit[0];\n\n      let book, index, nums;\n      for (let i = first.length; i >= 0; i--) {\n          book   = first.slice(0, i);\n          if (Sefaria.virtualBooks.includes(book)) {\n              // todo: This assumes that this is a depth one integer indexed node\n              const numberMatch = first.match(/([\\d ]+)$/);\n              if (numberMatch) {\n                  nums = String(+numberMatch[0]);\n                  book = first.slice(0, numberMatch.index)\n              } else {\n                  book = first;\n              }\n              break;\n          }\n          if (book in Sefaria.booksDict || book === \"Sheet\") {\n              const remainder = first.slice(i);\n              if (remainder && remainder[0] !== \" \") {\n                continue; // book name must be followed by a space, Jobs != Job\n              }\n              nums = remainder.slice(1);\n              break;\n          }\n      }\n      // Get the root index name. (For complex works, this may be different than `book`)\n      for (let i = book.length; i >= 0; i--) {\n          index = book.slice(0,i);\n          if (this.index(index)) { break; }\n      }\n      if (!book) {\n          Sefaria._parseRef[q] = {\"error\": \"Unknown book.\"};\n          return Sefaria._parseRef[q];\n      }\n\n      if (nums && !nums.match(/\\d+[ab]?( \\d+)*$/)) {\n          Sefaria._parseRef[q] = {\"error\": \"Bad section string.\"};\n          console.log(Sefaria._parseRef[q]);\n          return Sefaria._parseRef[q];\n      }\n\n      response.index      = index;\n      response.book       = book;\n      response.sections   = nums ? nums.split(\" \") : [];\n      response.toSections = nums ? nums.split(\" \") : [];\n      response.ref        = q;\n\n      // Parse range end (if any)\n      if (toSplit.length === 2) {\n          const toSections = toSplit[1].replace(/[.:]/g, \" \").split(\" \");\n          const diff = response.sections.length - toSections.length;\n          for (let i = diff; i < toSections.length + diff; i++) {\n              response.toSections[i] = toSections[i-diff];\n          }\n      }\n\n      Sefaria._parseRef[q] = response;\n      return response;\n  },\n  makeRef: function(q) {\n      // Returns a string ref corresponding to the parsed ref `q` (like Ref.url() in Python)\n      if (!(q.book && q.sections && q.toSections)) {\n          return {\"error\": \"Bad input.\"};\n      }\n      let ref = q.book.replace(/ /g, \"_\");\n      ref = encodeURIComponent(ref);\n\n      if (q.sections.length)\n          ref += \".\" + q.sections.join(\".\");\n\n      if (!q.sections.compare(q.toSections)) {\n          let i;\n          for (i = 0; i < q.toSections.length; i++)\n              if (q.sections[i] !== q.toSections[i]) break;\n          ref += \"-\" + q.toSections.slice(i).join(\".\");\n      }\n\n      return ref;\n  },\n  normRef: function(ref) {\n      // Returns a string of the URL normalized form of `ref` (using _ for spaces and . for section seprator).\n      // `ref` may be a string, or an array of strings. If ref is an array of strings, it is passed to normRefList.\n      if (ref instanceof Array) {\n        return Sefaria.normRefList(ref);\n      }\n      const norm = Sefaria.makeRef(Sefaria.parseRef(ref));\n      if (typeof norm === \"object\" && \"error\" in norm) {\n          // If the ref doesn't parse, just replace spaces with undescores.\n          return typeof ref === \"string\" ? ref.replace(/ /g, \"_\") : ref;\n      }\n      return norm;\n  },\n  humanRef: function(ref) {\n      // Returns a string of the normalized form of `ref`.\n      // `ref` may be a string, or an array of strings. If ref is an array of strings, it is passed to normRefList.\n      ref = Sefaria.normRef(ref);\n      const pRef = Sefaria.parseRef(ref);\n      if (pRef.error) {return ref}\n      if (pRef.sections.length === 0) { return pRef.book; }\n      const book = pRef.book + \" \";\n      const hRef = pRef.ref.replace(/ /g, \":\");\n      return book + hRef.slice(book.length);\n  },\n  isRef: function(ref) {\n    // Returns true if `ref` appears to be a ref relative to known books in Sefaria.books\n    const q = Sefaria.parseRef(ref);\n    return (\"book\" in q && q.book);\n  },\n  normRefList: function(refs) {\n    // Returns a single string ref corresponding the range expressed in the list of `refs`\n    // e.g. [\"Genesis 1:4\", \"Genesis 1:5\", \"Genesis 1:6\"] -> \"Genesis 1:4-6\"\n    if (refs.length === 1) {\n      return refs[0];\n    }\n    const pRef = Sefaria.parseRef(refs[0]);\n    const pRefEnd = Sefaria.parseRef(refs[refs.length-1]);\n    if (pRef.book !== pRefEnd.book) {\n      return refs[0]; // We don't handle ranges over multiple nodes of complex texts\n    }\n    const nRef = Sefaria.util.clone(pRef);\n    nRef.toSections = pRefEnd.toSections;\n    return Sefaria.makeRef(nRef);\n  },\n  joinRefList: function(refs, lang){\n    // Returns a string Ref in `lang` that corresponds to the range of refs in `refs`\n    // Hebrew results depend on `refs` being available in the refs cache.\n      //only use for display as it doesn't rely on any ref parsing!\n      //since this is just string manipulation it works language agnostically.\n      //does not work well in cases like Genesis 1:10, Genesis 1:15 (will return Genesis 1:10-5). Needs fixing\n      //Deuteronomy 11:32-2:1 instead of Deuteronomy 11:32-12:1\n      const refStrAttr = {\n          \"he\" : \"heRef\",\n          \"en\": \"ref\"\n      }[lang];\n      if(!refs.length){ return null ;}\n      let start, end;\n      if (refs[0].indexOf(\"-\") != -1) { // did we get a ranged ref for some reason inside the arguemnts\n          let startSplit = Sefaria.splitRangingRef(refs[0])\n          start = Sefaria.getRefFromCache(startSplit[0]);\n      }else{\n          start = Sefaria.getRefFromCache(refs[0]);\n      }\n      if (!start) { // We don't have this ref in cache, fall back to normRefList and sorry no Hebrew\n        return Sefaria.humanRef(Sefaria.normRefList(refs));\n      }\n      start = start[refStrAttr]\n      if (refs[refs.length - 1].indexOf(\"-\") != -1) {\n          let endSplit = Sefaria.splitRangingRef(refs[refs.length - 1]);\n          end = Sefaria.getRefFromCache(endSplit[endSplit.length -1])[refStrAttr];\n      }else{\n          end = Sefaria.getRefFromCache(refs[refs.length - 1])[refStrAttr];\n      }\n       //deal with case where this doesnt exist in cache with getName or a new function o combine refs from server side\n\n      //TODO handle ranged refs as input\n      if(start == end){\n          return start;\n      }\n      //break down refs into textual part and \"numeric \"address parts, the comparison of the numeric parts has to be atomic and not char by char\n      const lastSpaceStart = start.lastIndexOf(\" \");\n      const namedPartStart =  start.substr(0, lastSpaceStart);\n      const addressPartStart = start.substr(lastSpaceStart + 1).split(\":\");\n      const lastSpaceEnd = end.lastIndexOf(\" \");\n      const namedPartEnd =  end.substr(0, lastSpaceEnd);\n      const addressPartEnd = end.substr(lastSpaceEnd + 1).split(\":\");\n      if(namedPartStart != namedPartEnd){\n          //the string part is different already, so the numeric parts will be for sure separated correctly.\n          //works mostly for ranged complex text refs\n          const similarpart = Sefaria.util.commonSubstring(start, end);\n          const startDiff = start.substring(similarpart.length, start.length);\n          const endDiff = end.substring(similarpart.length, end.length);\n          return `${similarpart}${startDiff}-${endDiff}`;\n      }else{\n          let similaraddrs = []\n          const addrLength = Math.min(addressPartStart.length, addressPartEnd.length);\n          let index = 0;\n          while(index<addrLength && addressPartStart[index] === addressPartEnd[index]){\n              similaraddrs.push(addressPartStart[index]);\n              index++;\n          }\n          const addrStr = similaraddrs.join(\":\")+(index == 0? \"\" : \":\")+addressPartStart.slice(index).join(\":\")+\"-\"+addressPartEnd.slice(index).join(\":\");\n          return `${namedPartStart} ${addrStr}`\n      }\n  },\n  refContains: function(ref1, ref2) {\n    // Returns true is `ref1` contains `ref2`\n    const oRef1 = Sefaria.parseRef(ref1);\n    const oRef2 = Sefaria.parseRef(ref2);\n    //need to convert to ints, add ancestors for complex and copy logic from server\n\n    if (\"error\" in oRef1 || \"error\" in oRef2) { return null; }\n\n    //We need numerical representations of the sections, and not to trip up on talmud sections\n    if (oRef2.index !== oRef2.index || oRef1.book !== oRef2.book) { return false; }\n    const [oRef1sections, oRef1toSections, oRef2sections, oRef2toSections] = [oRef1.sections, oRef1.toSections, oRef2.sections, oRef2.toSections].map(arr =>\n        arr.map(x => x.match(/\\d+[ab]/) ? Sefaria.hebrew.dafToInt(x) : parseInt(x))\n    )\n\n    const sectionsLen = Math.min(oRef1sections.length, oRef2sections.length);\n    //duplicated from server side logic to finally fix\n    for (let i = 0; i < sectionsLen; i++) {\n      if (oRef2toSections[i] > oRef1toSections[i]) {\n        return false;\n      }\n      if (oRef2toSections[i] < oRef1toSections[i]) {\n        break;\n      }\n    }\n    for (let i = 0; i < sectionsLen; i++) {\n      if (oRef2sections[i] < oRef1sections[i]) {\n        return false;\n      }\n      if (oRef2sections[i] > oRef1sections[i]) {\n        break;\n      }\n    }\n    return true;\n  },\n  refCategories: function(ref) {\n    // Returns the text categories for `ref`\n    let pRef = Sefaria.parseRef(ref);\n    if (\"error\" in pRef) { return []; }\n    let index = Sefaria.index(pRef.index);\n    return index && index.categories ? index.categories : [];\n  },\n  sectionRef: function(ref) {\n    // Returns the section level ref for `ref` or null if no data is available\n    const oref = this.getRefFromCache(ref);\n    return oref ? oref.sectionRef : null;\n  },\n  splitSpanningRefNaive: function(ref){\n      if (ref.indexOf(\"-\") == -1) { return ref; }\n      return ref.split(\"-\");\n  },\n  splitRangingRef: function(ref) {\n    // Returns an array of segment level refs which correspond to the ranging `ref`\n    // e.g. \"Genesis 1:1-2\" -> [\"Genesis 1:1\", \"Genesis 1:2\"]\n    if (!ref || typeof ref === \"object\" || typeof ref === \"undefined\") { debugger; }\n\n    if (ref.indexOf(\"-\") == -1) { return [ref]; }\n\n    const oRef     = Sefaria.parseRef(ref);\n    const isDepth1 = oRef.sections.length === 1;\n    const textData = Sefaria.getTextFromCache(ref);\n    if (textData) {\n        return Sefaria.makeSegments(textData).map(segment => segment.ref);\n    } else if (!isDepth1 && oRef.sections[oRef.sections.length - 2] !== oRef.toSections[oRef.sections.length - 2]) {\n      // TODO handle spanning refs when no text data is available to answer how many segments are in each section.\n      // e.g., in \"Shabbat 2a:5-2b:8\", what is the last segment of Shabbat 2a?\n      // For now, just return the split of the first non-spanning ref.\n      const newRef = Sefaria.util.clone(oRef);\n      newRef.toSections = newRef.sections;\n      return Sefaria.splitRangingRef(this.humanRef(this.makeRef(newRef)));\n\n    } else {\n      const refs  = [];\n      const start = oRef.sections[oRef.sections.length-1];\n      const end   = oRef.toSections[oRef.sections.length-1];\n      for (let i = parseInt(start); i <= parseInt(end); i++) {\n        const newRef = Sefaria.util.clone(oRef);\n        newRef.sections[oRef.sections.length-1] = i;\n        newRef.toSections[oRef.sections.length-1] = i;\n        refs.push(this.humanRef(this.makeRef(newRef)));\n      }\n      return refs;\n    }\n  },\n    /**\n     * Helps the BookPage toc translate the given integer to the correctly formatted display string for the section given the varying address types. \n     * @param {string} addressType - The address type of the schema being requested\n     * @param {number} i - The numeric section string from the database\n     * @param {number} offset - If needed, an offest to allow section addresses that do not start counting with 0\n     * @returns {[string,string]} Section string in both languages. \n     */  \n  getSectionStringByAddressType: function(addressType, i, offset=0) {\n    let section = i + offset;\n    let enSection, heSection;\n    if (addressType === 'Talmud') {\n      enSection = Sefaria.hebrew.intToDaf(section);\n      heSection = Sefaria.hebrew.encodeHebrewDaf(enSection);\n    } else if (addressType === \"Year\") {\n      enSection = section + 1241;  \n      heSection = Sefaria.hebrew.encodeHebrewNumeral(section+1);\n      heSection = heSection.slice(0,-1) + '\"' + heSection.slice(-1);\n    } else if (addressType === \"Folio\") {\n      enSection = Sefaria.hebrew.intToFolio(section);  \n      heSection = Sefaria.hebrew.encodeHebrewFolio(enSection);\n    } else {\n      enSection = section + 1;\n      heSection = Sefaria.hebrew.encodeHebrewNumeral(section + 1);\n    }\n  return [enSection, heSection];\n  },\n  titlesInText: function(text) {\n    // Returns an array of the known book titles that appear in text.\n    return Sefaria.books.filter(function(title) {\n        return (text.indexOf(title) > -1);\n    });\n  },\n  _eras:  [\"GN\", \"RI\", \"AH\", \"CO\"],\n  makeRefRe: function(titles) {\n    // Construct and store a Regular Expression for matching citations\n    // based on known books, or a list of titles explicitly passed\n    titles = titles || Sefaria.books;\n    const books = \"(\" + titles.map(RegExp.escape).join(\"|\")+ \")\";\n    const refReStr = books + \" (\\\\d+[ab]?)(?:[:., ]+)?(\\\\d+)?(?:(?:[\\\\-–])?(\\\\d+[ab]?)?(?:[:., ]+)?(\\\\d+)?)?\";\n    return new RegExp(refReStr, \"gi\");\n  },\n  wrapRefLinks: function(text) {\n      if (typeof text !== \"string\" ||\n          text.indexOf(\"data-ref\") !== -1) {\n          return text;\n      }\n      const titles = Sefaria.titlesInText(text);\n      if (titles.length === 0) {\n          return text;\n      }\n      const refRe    = Sefaria.makeRefRe(titles);\n      const replacer = function(match, p1, p2, p3, p4, p5) {\n          // p1: Book\n          // p2: From section\n          // p3: From segment\n          // p4: To section\n          // p5: To segment\n          let uref, nref, r;\n\n          uref = p1 + \".\" + p2;\n          nref = p1 + \" \" + p2;\n          if (p3) {\n              uref += \".\" + p3;\n              nref += \":\" + p3;\n          }\n          if (p4) {\n              uref += \"-\" + p4;\n              nref += \"-\" + p4;\n          }\n          if (p5) {\n              uref += \".\" + p5;\n              nref += \":\" + p5;\n          }\n          r = '<span class=\"refLink\" data-ref=\"' + uref + '\">' + nref + '</span>';\n          if (match.slice(-1)[0] === \" \") {\n              r = r + \" \";\n          }\n          return r;\n      };\n      return text.replace(refRe, replacer);\n  },\n  _texts: {},  // cache for data from /api/texts/\n  _refmap: {}, // Mapping of simple ref/context keys to the (potentially) versioned key for that ref in _texts.\n  _complete_text_settings: function(s = null) {\n    let settings = s || {};\n    settings = {\n      commentary: settings.commentary || 0,\n      context:    settings.context    || 0,\n      pad:        settings.pad        || 0,\n      enVersion:  settings.enVersion  || null,\n      heVersion:  settings.heVersion  || null,\n      multiple:   settings.multiple   || 0,\n      stripItags: settings.stripItags || 0,\n      wrapLinks:  (\"wrapLinks\" in settings) ? settings.wrapLinks : 1,\n      wrapNamedEntities: (\"wrapNamedEntities\" in settings) ? settings.wrapNamedEntities : 1,\n      translationLanguagePreference: settings.translationLanguagePreference || null,\n      versionPref: settings.versionPref || null,\n      firstAvailableRef: (\"firstAvailableRef\" in settings) ? settings.firstAvailableRef : 1,\n      fallbackOnDefaultVersion: (\"fallbackOnDefaultVersion\" in settings) ? settings.fallbackOnDefaultVersion : 1,\n    };\n    if (settings.versionPref) {\n      // for every lang/vtitle pair in versionPref, update corresponding version url param if it doesn't already exist\n      for (let [vlang, vtitle] of Object.entries(settings.versionPref)) {\n        const versionPrefKey = `${vlang}Version`;\n        if (!settings[versionPrefKey]) {\n          settings[versionPrefKey] = vtitle;\n        }\n      }\n    }\n    return settings;\n  },\n  getTextFromCache: function(ref, settings) {\n    settings = this._complete_text_settings(settings);\n    const key = this._textKey(ref, settings);\n\n    if (key in this._texts) {\n        return this._getOrBuildTextData(key, settings);\n    }\n    return null;\n  },\n  getText: function(ref, settings) {\n    // returns a promise\n    settings = this._complete_text_settings(settings);\n\n    const data = this.getTextFromCache(ref, settings);\n    if (data && !(\"updateFromAPI\" in data)) {return Promise.resolve(data);}\n\n    return this._ApiPromise(Sefaria.apiHost + this._textUrl(ref, settings))\n        .then(d => {\n            //swap out original versions from the server with the ones that Sefaria client side has sorted and updated with some fields.\n            // This happens before saving the text to cache so that both caches are consistent\n            if(d?.versions?.length){\n                let versions = Sefaria._saveVersions(d.sectionRef, d.versions);\n                d.versions = Sefaria._makeVersions(versions, false);\n            }\n            Sefaria._saveText(d, settings);\n            return d;\n        });\n  },\n  _bulkTexts: {},\n  getBulkText: function(refs, asSizedString=false, minChar=null, maxChar=null, transLangPref=null) {\n    if (refs.length === 0) { return Promise.resolve({}); }\n\n    const MAX_URL_LENGTH = 3800;\n    const hostStr = `${Sefaria.apiHost}/api/bulktext/`;\n\n    let paramStr = '';\n    for (let [paramKey, paramVal] of Object.entries({asSizedString, minChar, maxChar, transLangPref})) {\n      paramStr = !!paramVal ? paramStr + `&${paramKey}=${paramVal}` : paramStr;\n    }\n    paramStr = paramStr.replace(/&/,'?');\n\n    // Split into multiple requests if URL length goes above limit\n    let refStrs = [\"\"];\n    refs.map(ref => {\n      let last = refStrs[refStrs.length-1];\n      if (encodeURI(`${hostStr}${last}|${ref}${paramStr}`).length > MAX_URL_LENGTH) {\n        refStrs.push(ref)\n      } else {\n        refStrs[refStrs.length-1] += last.length ? `|${ref}` : ref;\n      }\n    });\n\n    let promises = refStrs.map(refStr => this._cachedApiPromise({\n      url: `${hostStr}${refStr}${paramStr}`,\n      key: refStr + paramStr,\n      store: this._bulkTexts\n    }));\n\n    return Promise.all(promises).then(results => Object.assign({}, ...results));\n  },\n  makeParamsStringForAPIV3: function(language, versionTitle) {\n    if (versionTitle) {\n        return `${language}|${versionTitle}`;\n    } else if (language) {\n        return language;\n    }\n  },\n  makeUrlForAPIV3Text: function(ref, requiredVersions, mergeText) {\n    const host = Sefaria.apiHost;\n    const endPoint = '/api/v3/texts/';\n    const versions = requiredVersions.map(obj =>\n        Sefaria.makeParamsStringForAPIV3(obj.language, obj.versionTitle)\n    );\n    const url = `${host}${endPoint}${ref}?version=${versions.join('&version=')}&fill_in_missing_segments=${mergeText}`;\n    return url;\n  },\n  getTextsFromAPIV3: async function(ref, requiredVersions, mergeText) {\n    // ref is segment ref or bottom level section ref\n    // requiredVersions is array of objects that can have language and versionTitle\n    const url = Sefaria.makeUrlForAPIV3Text(ref, requiredVersions, mergeText);\n    //TODO here's the place for getting it from cache\n    const apiObject = await Sefaria._ApiPromise(url);\n    //TODO here's the place for all changes we want to add, and saving in cache\n    return apiObject;\n  },\n  getAllTranslationsWithText: async function(ref) {\n    let returnObj = await Sefaria.getTextsFromAPIV3(ref, [{language: 'translation', versionTitle: 'all'}], false);\n    return Sefaria._sortVersionsIntoBuckets(returnObj.versions);\n  },\n  _bulkSheets: {},\n  getBulkSheets: function(sheetIds) {\n    if (sheetIds.length === 0) { return Promise.resolve({}); }\n    const idStr = sheetIds.join(\"|\");\n    return this._cachedApiPromise({\n      url: `${Sefaria.apiHost}/api/v2/sheets/bulk/${idStr}`,\n      key: idStr,\n      store: this._bulkSheets\n    });\n  },\n  text: function(ref, settings = null, cb = null) {\n    // To be deprecated in favor of `getText`\n    if (!ref || typeof ref === \"object\" || typeof ref === \"undefined\") { debugger; }\n    settings = this._complete_text_settings(settings);\n    const key = this._textKey(ref, settings);\n    if (!cb) {\n      return this._getOrBuildTextData(key, settings);\n    }\n    if (key in this._texts && !(\"updateFromAPI\" in this._texts[key])) {\n      const data = this._getOrBuildTextData(key, settings);\n      cb(data);\n      return data;\n    }\n    this._api(Sefaria.apiHost + this._textUrl(ref, settings), function(data) {\n        //save versions and then text so both caches have updated versions\n        if(data?.versions?.length){\n            let versions = this._saveVersions(data.sectionRef, data.versions);\n            data.versions = this._makeVersions(versions, false);\n        }\n        this._saveText(data, settings);\n        cb(data);\n    }.bind(this));\n    return null;\n  },\n  ISOMap: {\n    \"ar\": {\"name\": \"Arabic\", \"nativeName\": \"عربى\", \"showTranslations\": 1, \"title\": \"نصوص يهودية بالعربية\"},\n    \"de\": {\"name\": \"German\", \"nativeName\": \"Deutsch\", \"showTranslations\": 1, \"title\": \"Jüdische Texte in Deutscher Sprache\"},\n    \"en\": {\"name\": \"English\", \"nativeName\": \"English\", \"showTranslations\": 1, \"title\": \"Jewish Texts in English\"},\n    \"eo\": {\"name\": \"Esperanto\", \"nativeName\": \"Esperanto\", \"showTranslations\": 1, \"title\": \"Judaj Tekstoj en Esperanto\"},\n    \"es\": {\"name\": \"Spanish\", \"nativeName\": \"Español\", \"showTranslations\": 1, \"title\": \"Textos Judíos en Español\"},\n    \"fa\": {\"name\": \"Persian\", \"nativeName\": \"فارسی\", \"showTranslations\": 1, \"title\": \"متون یهودی به زبان فارسی\"},\n    \"fi\": {\"name\": \"Finnish\", \"nativeName\": \"suomen kieli\", \"showTranslations\": 1, \"title\": \"Juutalaiset tekstit suomeksi\"},\n    \"fr\": {\"name\": \"French\", \"nativeName\": \"Français\", \"showTranslations\": 1, \"title\": \"Textes juifs en français\"},\n    \"he\": {\"name\": \"Hebrew\", \"nativeName\": \"עברית\", \"showTranslations\": 0, \"title\": \"ספריה בעברית\"},\n    \"it\": {\"name\": \"Italian\", \"nativeName\": \"Italiano\", \"showTranslations\": 1, \"title\": \"Testi ebraici in italiano\"},\n    \"lad\": {\"name\": \"Ladino\", \"nativeName\": \"Judeo-español\", \"showTranslations\": 0},\n    \"pl\": {\"name\": \"Polish\", \"nativeName\": \"Polski\", \"showTranslations\": 1, \"title\": \"Teksty żydowskie w języku polskim\"},\n    \"pt\": {\"name\": \"Portuguese\", \"nativeName\": \"Português\", \"showTranslations\": 1, \"title\": \"Textos judaicos em portugues\"},\n    \"ru\": {\"name\": \"Russian\", \"nativeName\": \"Pусский\", \"showTranslations\": 1, \"title\": \"Еврейские тексты на русском языке\"},\n    \"yi\": {\"name\": \"Yiddish\", \"nativeName\": \"יידיש\", \"showTranslations\": 1, \"title\": \"יידישע טעקסטן אויף יידיש\"},\n    \"jrb\": {\"name\": \"Judeo-Arabic\", \"nativeName\": \"Arabia Yehudia\", \"showTranslations\": 0},  // nativeName in English because hard to determine correct native name\n  },\n  translateISOLanguageCode(code, native = false) {\n    //takes two-letter ISO 639.2 code and returns full language name\n    const lookupVar = native ? \"nativeName\" : \"name\";\n    return Sefaria.ISOMap?.[code.toLowerCase()]?.[lookupVar] || code;\n  },\n  getHebrewTitle: function(slug) {\n    return Sefaria.ISOMap[slug] ? Sefaria.ISOMap[slug][\"title\"] ?  Sefaria.ISOMap[slug][\"title\"] : \"Jewish Texts in \" + Sefaria.ISOMap[slug][\"name\"] : \"Jewish texts in \" + slug ;\n  },\n  _versions: {},\n  _translateVersions: {},\n  getVersionFromCache: function(ref,  byLang, filter, excludeFilter){\n     let versions = this._cachedApi(ref, this._versions, []);\n     return this._makeVersions(versions, byLang)\n  },\n  getVersions: async function(ref) {\n    /**\n     * Gets versions from cache or API\n     * @ref {string} ref\n     * @returns {string: [versions]} Versions by language\n     */\n    let versionsInCache = ref in this._versions;\n    if(!versionsInCache) {\n        const url = Sefaria.apiHost + \"/api/texts/versions/\" + Sefaria.normRef(ref);\n        await this._ApiPromise(url).then(d => {\n            this._saveVersions(ref, d);\n        });\n    }\n    return Promise.resolve(this._versions[ref]);\n  },\n  _portals: {},\n  getPortal: async function(portalSlug) {\n      const cachedPortal = Sefaria._portals[portalSlug];\n      if (cachedPortal) {\n          return cachedPortal;\n      }\n      const response = await this._ApiPromise(`${Sefaria.apiHost}/api/portals/${portalSlug}`);\n      Sefaria._portals[portalSlug] = response;\n      return response;\n  },\n  subscribeSefariaNewsletter: async function(firstName, lastName, email, educatorCheck) {\n    const response = await fetch(`/api/subscribe/${email}`,\n        {\n            method: \"POST\",\n            mode: 'same-origin',\n            headers: {\n                'Content-Type': 'application/json',\n                'X-CSRFToken': Cookies.get('csrftoken'),\n            },\n            credentials: 'same-origin',\n            body: JSON.stringify({\n                language: Sefaria.interfaceLang === \"hebrew\" ? \"he\" : \"en\",\n                educator: educatorCheck,\n                firstName: firstName,\n                lastName: lastName\n            })\n        }\n    );\n    if (!response.ok) { throw \"error\"; }\n    const json = await response.json();\n    if (json.error) { throw json; }\n    return json;\n  },\n  subscribeSteinsaltzNewsletter: async function(firstName, lastName, email) {\n      const response = await fetch(`/api/subscribe/steinsaltz/${email}`,\n          {\n              method: \"POST\",\n              mode: 'same-origin',\n              headers: {\n                  'Content-Type': 'application/json',\n                  'X-CSRFToken': Cookies.get('csrftoken'),\n              },\n              credentials: 'same-origin',\n              body: JSON.stringify({firstName, lastName}),\n          }\n      );\n      if (!response.ok) { throw \"error\"; }\n      const json = await response.json();\n      if (json.error) { throw json; }\n      return json;\n  },\n  subscribeSefariaAndSteinsaltzNewsletter: async function(firstName, lastName, email, educatorCheck) {\n      const responses = await Promise.all([\n          Sefaria.subscribeSefariaNewsletter(firstName, lastName, email, educatorCheck),\n          Sefaria.subscribeSteinsaltzNewsletter(firstName, lastName, email),\n      ]);\n      return {status: \"ok\"};\n  },\n  filterVersionsObjByLangs: function(versionsObj, langs, includeFilter) {\n      /**\n       * @versionsObj {object} whode keys are language codes ('he', 'en' etc.) and values are version objects (like the object that getVersions returns)\n       * @langs {array} of string of language codes\n       * @includeFilter {boolean} true for returning the language in the langs param, false for returning other languages\n       */\n    return Object.keys(versionsObj)\n        .filter(lang => {\n            return includeFilter === langs.includes(lang);\n        })\n        .reduce((obj, lang) => {\n            obj[lang] = versionsObj[lang];\n            return obj;\n          }, {});\n  },\n  filterVersionsArrayByAttr: function(versionsArray, filterObj) {\n      /**\n       * @versionsArray {array} of version objects\n       * @filterObj {object} keys are attribute of version objects and values are their values\n       * returns an array of versions from versionsArray that has all the attributes and their values as in filterObj\n       */\n    return versionsArray.filter(version => {\n        return Object.keys(filterObj).every(key => version?.[key] === filterObj[key])\n    });\n  },\n  getSourceVersions: async function(ref) {\n    /**\n     * Gets Hebrew versions only\n     * @ref {string} ref\n     * @returns {string: [versions]} Versions by language\n     */\n    return Sefaria.getVersions(ref).then(versions => {\n        return Sefaria.filterVersionsObjByLangs(versions, ['he'], true);\n    });\n  },\n  getTranslations: async function(ref) {\n    /**\n     * Gets all versions except Hebrew versions that have isSource true\n     * @ref {string} ref\n     * @returns {string: [versions]} Versions by language\n     */\n    return Sefaria.getVersions(ref).then(result => {\n        let versions = Sefaria.filterVersionsObjByLangs(result, ['he'], false);\n        let heVersions = Sefaria.filterVersionsArrayByAttr(result?.he || [], {isSource: false});\n        if (heVersions.length) {\n            versions.he = heVersions;\n        }\n        return versions;\n    });\n  },\n  _makeVersions: function(versions, byLang){\n    return byLang ? versions : Object.values(versions).flat();\n  },\n  _saveVersions: function(ref, versions){\n      for (let v of versions) {\n        Sefaria._translateVersions[Sefaria.getTranslateVersionsKey(v.versionTitle, v.language)] = {\n          en: v.versionTitle,\n          he: !!v.versionTitleInHebrew ? v.versionTitleInHebrew : v.versionTitle,\n        };\n      }\n      this._versions[ref] = this._sortVersionsIntoBuckets(versions);\n      return this._versions[ref];\n  },\n  _sortVersionsIntoBuckets: function(versions){\n      let versionStore = {};\n      //let generalCount = 0;\n      for (let v of versions) {\n        //generalCount++;\n        const matches = v.versionTitle.match(new RegExp(\"\\\\[([a-z]{2,3})\\\\]$\")); // two-letter ISO language code\n        const lang = matches ? matches[1] : v.language;\n        v.actualLanguage = lang; //add actual language onto the object. Hopefully its then available always.\n        //Sort each language into its own bucket\n        versionStore[lang] = !!versionStore[lang] ? versionStore[lang].concat(v)  :  [v];\n      }\n      return versionStore;\n  },\n  transformVersionObjectsToByActualLanguageKeys(versionObjects){\n    //not related to above, used to turn curent version object in client code into an object mapped by the real language vs just \"he/\"en\n    return Object.entries(versionObjects)\n          .filter(([lang, v]) => !!v)\n          .reduce((obj, [lang, version]) => {\n              if(version?.merged){ //this would be the best guess of the merged language's version currently\n                  obj[lang] = version;\n              }else if (version?.actualLanguage){\n                 obj[version.actualLanguage] = version;\n              }\n            return obj;\n          }, {});\n  },\n  getTranslateVersionsKey: (vTitle, lang) => `${vTitle}|${lang}`,\n  deconstructVersionsKey: (versionsKey) => versionsKey.split('|'),\n  setVersionPreference(sref, vtitle, lang) {\n    if (lang !== 'en') { return; }  // Currently only tracking preferences for translations\n    const title = Sefaria.parseRef(sref).index\n    const corpus = Sefaria.index(title).corpus;\n    Sefaria.versionPreferences = Sefaria.versionPreferences.update(corpus, vtitle, lang);\n\n    Sefaria.track.event(\"Reader\", \"Set Version Preference\", `${corpus}|${vtitle}|${lang}`);\n    Sefaria.editProfileAPI({version_preferences_by_corpus: {[corpus]: {[lang]: vtitle}}})\n  },\n  getLicenseMap: function() {\n    const licenseMap = {\n      \"Public Domain\": \"https://en.wikipedia.org/wiki/Public_domain\",\n      \"CC0\": \"https://creativecommons.org/publicdomain/zero/1.0/\",\n      \"CC-BY\": \"https://creativecommons.org/licenses/by/3.0/\",\n      \"CC-BY-SA\": \"https://creativecommons.org/licenses/by-sa/3.0/\",\n      \"CC-BY-NC\": \"https://creativecommons.org/licenses/by-nc/4.0/\"\n    }\n    return licenseMap;\n  },\n  _textUrl: function(ref, settings) {\n    // copy the parts of settings that are used as parameters, but not other\n    const params = param({\n      commentary: settings.commentary,\n      context:    settings.context,\n      pad:        settings.pad,\n      wrapLinks:  settings.wrapLinks,\n      wrapNamedEntities: settings.wrapNamedEntities,\n      multiple:   settings.multiple,\n      stripItags: settings.stripItags,\n      transLangPref: settings.translationLanguagePreference,\n      firstAvailableRef: settings.firstAvailableRef,\n      fallbackOnDefaultVersion: settings.fallbackOnDefaultVersion,\n    });\n    let url = \"/api/texts/\" + Sefaria.normRef(ref);\n    if (settings.enVersion) { url += \"&ven=\" + encodeURIComponent(settings.enVersion.replace(/ /g,\"_\")); }\n    if (settings.heVersion) { url += \"&vhe=\" + encodeURIComponent(settings.heVersion.replace(/ /g,\"_\")); }\n\n    url += \"&\" + params;\n    return url.replace(\"&\",\"?\"); // make sure first param has a '?'\n  },\n  _textKey: function(ref, settings) {\n    // Returns a string used as a key for the cache object of `ref` given `settings`.\n    if (!ref) { debugger; }\n    var key = ref.toLowerCase();\n    if (settings) {\n      if (settings.enVersion) { key += \"&ven=\" + settings.enVersion; }\n      if (settings.heVersion) { key += \"&vhe=\" + settings.heVersion; }\n      if (settings.translationLanguagePreference) { key += \"&transLangPref=\" + settings.translationLanguagePreference}\n      if (settings.fallbackOnDefaultVersion) { key += \"|FALLBACK_ON_DEFAULT_VERSION\"; }\n      key = settings.context ? key + \"|CONTEXT\" : key;\n    }\n    return key;\n  },\n  _refKey: function(ref, settings) {\n    // Returns the key for this ref without any version/language elements\n    if (!ref) { debugger; }\n    var key = ref.toLowerCase();\n    if (settings) {\n      key = settings.context ? key + \"|CONTEXT\" : key;\n    }\n    return key;\n  },\n  _getOrBuildTextData: function(key, settings) {\n    let cached = this._texts[key];\n    if (!cached || !cached.buildable) { return cached; }\n\n    // clone the segment, add text from the section ref\n    const segmentData  = Sefaria.util.clone(this._texts[this._textKey(cached.ref, extend(settings, {context: 0}))]);\n    const contextData  =  this._texts[this._textKey(cached.sectionRef, extend(settings, {context: 0}))]\n                       || this._texts[this._textKey(cached.sectionRef, extend(settings, {context: 1}))];\n\n    segmentData.text = contextData.text;\n    segmentData.he   = contextData.he;\n    return segmentData;\n  // Should we be saving the built data?\n\n  },\n  _saveText: function(data, settings) {\n    if (Array.isArray(data)) {\n      data.map(d => this._saveText(d, settings));\n      return;\n    }\n    if (!data || \"error\" in data) {\n      return;\n    }\n    settings         = settings || {};\n    const key          = this._textKey(data.ref, settings);\n    this._texts[key] = data;\n    //console.log(\"Saving\", key);\n    const refkey           = this._refKey(data.ref, settings);\n    this._refmap[refkey] = key;\n\n    const isSectionLevel = (data.sections.length !== data.sectionNames.length);\n    if (isSectionLevel && !data.isSpanning) {\n      // Save data in buckets for each segment\n      this._splitTextSection(data, settings);\n    }\n\n    if (settings.context) {\n      // Save a copy of the data at section level with & without context flag\n      let newData         = Sefaria.util.clone(data);\n      newData.ref         = data.sectionRef;\n      newData.heRef       = data.heSectionRef;\n      if (!isSectionLevel) {\n        newData.sections    = data.sections.slice(0,-1);\n        newData.toSections  = data.toSections.slice(0,-1);\n      }\n      const newSettings   = Sefaria.util.clone(settings);\n      // Note: data for section level refs is identical when called with or without context,\n      // but both are saved in cache for code paths that may always call with or without context.\n      if (!isSectionLevel) {\n        // Segment level ref with context, save section level marked with context\n        this._saveText(newData, newSettings);\n      }\n      // Any level ref with context, save section level marked without context\n      newSettings.context = 0;\n      this._saveText(newData, newSettings);\n    }\n\n    if (data.isSpanning) {\n      const spanningContextSettings = Sefaria.util.clone(settings);\n      spanningContextSettings.context = 1;\n\n      for (let i = 0; i < data.spanningRefs.length; i++) {\n        // For spanning refs, request each section ref to prime cache.\n        // console.log(\"calling spanning prefetch \" + data.spanningRefs[i])\n        Sefaria.getText(data.spanningRefs[i], spanningContextSettings)\n      }\n    }\n  },\n  _get_offsets: function (data, length=1) {\n    let offsets = data?.index_offsets_by_depth?.[data.textDepth] || Array(length).fill(0);\n    offsets = (typeof(offsets) === 'number') ? [offsets] : offsets.flat();\n    return offsets;\n  },\n  _splitTextSection: function(data, settings) {\n    // Takes data for a section level text and populates cache with segment levels.\n    // Don't do this for Refs above section level, like \"Rashi on Genesis 1\",\n    // since it's impossible to correctly derive next & prev.\n\n    // No splits needed for segments\n    if (data.textDepth === data.sections.length) {\n        return;\n    }\n    const isSuperSection = data.textDepth == data.sections.length + 2;\n\n    settings = settings || {};\n    let en = typeof data.text === \"string\" ? [data.text] : data.text;\n    let he = typeof data.he === \"string\" ? [data.he] : data.he;\n    // Pad the shorter array to make stepping through them easier.\n    const length = Math.max(en.length, he.length);\n    en = en.pad(length, \"\");\n    he = he.pad(length, \"\");\n\n    const delim = data.ref === data.book ? \" \" : \":\";\n    const offset = this._get_offsets(data);\n    const start = data.textDepth === data.sections.length ? data.sections[data.textDepth-1] : 1+offset[0];\n\n    let prev = Array(length);\n    let next = Array(length);\n    if (isSuperSection) {\n      // For supersections, correctly set next and prev on each section to skip empty content\n      let hasContent = Array(length);\n      for (let i = 0; i < length; i++) {\n        hasContent[i] = (!!en[i].length || !!he[i].length);\n      }\n      prev[0]  = data.prev;\n      for (let i = 1; i < length; i++) {\n        prev[i] = hasContent[i-1] ? data.ref + delim + (i-1+start) : prev[i-1];\n      }\n      next[length-1]  = data.next;\n      for (let i = length-2; i >= 0; i--) {\n        next[i] = hasContent[i+1] ? data.ref + delim + (i+1+start) : next[i+1];\n      }\n    }\n    for (let i = 0; i < length; i++) {\n      const ref          = data.ref + delim + (i+start);\n      const segment_data = Sefaria.util.clone(data);\n      const sectionRef =isSuperSection ? data.ref + delim + (i+1): data.sectionRef\n      extend(segment_data, {\n        ref: ref,\n        heRef: data.heRef + delim + Sefaria.hebrew.encodeHebrewNumeral(i+start),\n        text: en[i],\n        he: he[i],\n        sections: data.sections.concat(i+1),\n        toSections: data.sections.concat(i+1),\n        sectionRef: sectionRef,\n        next: isSuperSection ? next[i] : data.next,\n        prev: isSuperSection ? prev[i] : data.prev,\n        nextSegment: i+start === length ? data.next + delim + 1 : data.ref + delim + (i+start+1),\n        prevSegment: i+start === 1      ? null : data.ref + delim + (i+start-1)\n      });\n      const context_settings = {};\n      if (settings.enVersion) { context_settings.enVersion = settings.enVersion; }\n      if (settings.heVersion) { context_settings.heVersion = settings.heVersion; }\n\n      this._saveText(segment_data, context_settings);\n\n      context_settings.context = 1;\n      const contextKey = this._textKey(ref, context_settings);\n      this._texts[contextKey] = {buildable: \"Add Context\", ref: ref, sectionRef: sectionRef, updateFromAPI:data.updateFromAPI};\n\n      const refkey           = this._refKey(ref, context_settings);\n      this._refmap[refkey] = contextKey;\n    }\n  },\n    /*  Not used?\n  _splitSpanningText: function(data) {\n    // Returns an array of section level data, corresponding to spanning `data`.\n    // Assumes `data` includes context.\n    var sections = [];\n    var en = data.text;\n    var he = data.he;\n    var length = Math.max(en.length, he.length);\n    en = en.pad(length, []);\n    he = he.pad(length, []);\n    var length = Math.max(data.text.length, data.he.length);\n    for (var i = 0; i < length; i++) {\n      var section        = Sefaria.util.clone(data);\n      section.text       = en[i];\n      section.he         = he[i];\n    }\n  },\n     */\n\n    /* not used?\n  _wrapRefs: function(data) {\n    // Wraps citations found in text of data\n    if (!data.text) { return data; }\n    if (typeof data.text === \"string\") {\n      data.text = Sefaria.wrapRefLinks(data.text);\n    } else {\n      data.text = data.text.map(Sefaria.wrapRefLinks);\n    }\n    return data;\n  }, */\n  _index: {}, // Cache for text index records\n   index: function(text, index) {\n    if (!index) {\n      return this._index[text];\n    } else if (text in this._index){\n      this._index[text] = extend(this._index[text], index);\n    } else {\n      this._index[text] = index;\n    }\n  },\n  _shape: {}, // Cache for shape records\n  getShape: function(title) {\n    return this._cachedApiPromise({\n        url:   this.apiHost + \"/api/shape/\" + title,\n        key:   title,\n        store: this._shape\n    });\n  },\n  _tocOrderLookup: {},\n  _cacheFromToc: function(tocBranch, parentsPath = \"\", parentsOrders = [], rewrittenFrom = \"\", rewrittenTo = \"\") {\n    // Cache:\n    // - Index Data\n    // - Search TOC order\n    for (let i = 0; i < tocBranch.length; i++) {\n      let thisOrder = parentsOrders.concat([i]) ;\n      let thisPath =  (parentsPath ? parentsPath + \"/\" : \"\") + (\"category\" in tocBranch[i] ? tocBranch[i].category : tocBranch[i].title);\n\n      if (tocBranch[i].searchRoot) {\n          rewrittenFrom = thisPath;\n          rewrittenTo = tocBranch[i].searchRoot + \"/\" + tocBranch[i].category;\n          thisOrder = [100].concat(thisOrder);\n          Sefaria._tocOrderLookup[rewrittenTo] = thisOrder;\n      } else if (rewrittenFrom) {\n          const new_path = thisPath.replace(RegExp(\"^\" + rewrittenFrom), rewrittenTo);\n          Sefaria._tocOrderLookup[new_path] = thisOrder;\n      } else {\n          Sefaria._tocOrderLookup[thisPath] = thisOrder;\n      }\n\n      if (\"category\" in tocBranch[i]) {\n          Sefaria._translateTerms[tocBranch[i].category] = {\"en\": tocBranch[i].category, \"he\": tocBranch[i].heCategory};\n          if (tocBranch[i].contents) {\n              Sefaria._cacheFromToc(tocBranch[i].contents, thisPath, thisOrder, rewrittenFrom,  rewrittenTo)\n          }\n      } else {\n          Sefaria.index(tocBranch[i].title, tocBranch[i]);\n      }\n    }\n  },\n  compareSearchCatPaths: function(a,b) {\n      // Given two paths, sort according to the cached numeric arrays of their locations in the toc\n      const aPath = Sefaria._tocOrderLookup[a];\n      const bPath = Sefaria._tocOrderLookup[b];\n\n      if (!(Array.isArray(aPath) && Array.isArray(bPath))) {\n          console.log(`Failed to compare paths: ${a} and ${b}`);\n          return 0;\n      }\n\n      // Favor the earliest lesser number\n      for (let i = 0; i < Math.min(aPath.length, bPath.length); i++) {\n          if (aPath[i] === bPath[i]) { continue; }\n          return aPath[i] < bPath[i] ? -1 : 1;\n      }\n\n      // Otherwise, favor the one higher in the toc\n      return aPath.length < bPath.length ? -1 : 1;\n  },\n\n  _indexDetails: {},\n  getIndexDetailsFromCache: function(title){\n    return this._cachedApi(title, this._indexDetails, null);\n  },\n  getIndexDetails: function(title) {\n    return this._cachedApiPromise({\n        url:   Sefaria.apiHost + \"/api/v2/index/\" + title + \"?with_content_counts=1&with_related_topics=1\",\n        key:   title,\n        store: this._indexDetails\n    });\n  },\n  titleIsTorah: function(title){\n      let torah_re = /^(Genesis|Exodus|Leviticus|Numbers|Deuteronomy)/;\n      return torah_re.test(title)\n  },\n  postSegment: function(ref, versionTitle, language, text, success, error) {\n    if (!versionTitle || !language) { return; }\n    this.getName(ref, true)\n        .then(data => {\n            if (!data.is_segment) { return; }\n            var d = {json: JSON.stringify({\n                versionTitle: versionTitle,\n                language: language,\n                text: text\n              })};\n            $.ajax({\n              dataType: \"json\",\n              url: Sefaria.apiHost + \"/api/texts/\" + data.url,\n              data: d,\n              type: \"POST\",\n              // Clear cache with a sledgehammer.  May need more subtlety down the road.\n              success: function(d) {\n                  this._texts = {};\n                  this._refmap = {};\n                  success(d);\n                }.bind(this),\n              error: error\n            }, error);\n    });\n  },\n  isFullSegmentImage: function(text) {\n    /**\n     * Is `text` a segment with only an image\n     * To distinguish from inline images\n     * Returns `true` if yes.\n     */\n    const pattern = /^\\s*<img\\b[^>]*>\\s*$/i;\n    return pattern.test(text);\n  },\n  getRefFromCache: function(ref) {\n    if (!ref) return null;\n    const versionedKey = this._refmap[this._refKey(ref)] || this._refmap[this._refKey(ref, {context:1})];\n    if (versionedKey) { return this._getOrBuildTextData(versionedKey); }\n    return null;\n  },\n  getRef: function(ref) {\n    // Returns Promise for parsed ref info\n    if (!ref) { return Promise.reject(new Error(\"No Ref!\")); }\n\n    const r = this.getRefFromCache(ref);\n    if (r) return Promise.resolve(r);\n\n    // To avoid an extra API call, first look for any open API calls to this ref (regardless of params)\n    // todo: Ugly.  Breaks abstraction.\n    const urlPattern = \"/api/texts/\" + this.normRef(ref);\n    const openApiCalls = Object.keys(this._ajaxObjects);\n    for (let i = 0; i < openApiCalls.length; i++) {\n      if (openApiCalls[i].startsWith(urlPattern)) {\n        return this._ajaxObjects[openApiCalls[i]];\n      }\n    }\n\n    // If no open calls found, call the texts API.\n    // Called with context:1 because this is our most common mode, maximize change of saving an API Call\n    return Sefaria.getText(ref, {context: 1});\n  },\n  ref: function(ref, callback) {\n      if (callback) {\n          throw new Error(\"Use of Sefaria.ref() with a callback has been deprecated in favor of Sefaria.getRef()\");\n      }\n      return ref ? this.getRefFromCache(ref) : null;\n  },\n  openTransBannerApplies: (book, textLanguage) => {\n      /**\n       * Should we display OpenTransBanner?\n       * Return `true` if `book`s corpus is Tanakh, Mishnah or Bavli AND textLanguage isn't Hebrew\n       */\n      const applicableCorpora = [\"Tanakh\", \"Mishnah\", \"Bavli\"];\n      const currCorpus = Sefaria.index(book)?.corpus;\n      return textLanguage !== \"hebrew\" && applicableCorpora.indexOf(currCorpus) !== -1;\n  },\n  _lookups: {},\n\n  // getName w/ refOnly true should work as a replacement for parseRef - it uses a callback rather than return value.  Besides that - same data.\n  getName: function(name, refOnly = false, limit = undefined) {\n    const trimmed_name = name.trim();\n    let params = {};\n    if (refOnly) { params[\"ref_only\"] = 1; }\n    if (limit != undefined) { params[\"limit\"] = limit; }\n    let queryString = Object.keys(params).map(key => key + '=' + params[key]).join('&');\n    queryString = (queryString ? \"?\" + queryString : \"\");\n    return this._cachedApiPromise({\n        url:   this.apiHost + \"/api/name/\" + encodeURIComponent(trimmed_name) + queryString,\n        key:   trimmed_name + queryString,\n        store: this._lookups\n    });\n  },\n  _lexiconCompletions: {},\n  lexiconCompletion: function(word, lexicon, callback) {\n      word = word.trim();\n      var key = lexicon ? word + \"/\" + lexicon : word;\n      if (key in this._lexiconCompletions) {\n          callback(this._lexiconCompletions[key]);\n          return null;\n      }\n      return $.ajax({\n          dataType: \"json\",\n          url: Sefaria.apiHost + \"/api/words/completion/\" + word + (lexicon ? \"/\" + lexicon : \"\"),\n          success: function(data) {\n              this._lexiconCompletions[key] = data;\n              callback(data);\n          }.bind(this)\n      });\n  },\n  _topicCompletions: {},\n  getTopicCompletions: function (word, callback) {\n       return this._cachedApiPromise({\n          url: `${Sefaria.apiHost}/api/topic/completion/${word}`, key: word,\n          store: Sefaria._topicCompletions,\n          processor: callback\n      });   // this API is used instead of api/name because when we want all topics. api/name only gets topics with a minimum amount of sources\n  },\n  _lexiconLookups: {},\n  getLexiconWords: function(words, ref) {\n    // Returns Promise which resolve to a list of lexicon entries for the given words\n    ref = typeof ref !== \"undefined\" ? ref : null;\n    words = typeof words !== \"undefined\" ? words : \"\";\n    if (words.length <= 0) { return Promise.resolve([]); }\n    words = words.normalize(\"NFC\"); //make sure we normalize any errant unicode (vowels and diacritics that may appear to be equal but the underlying characters are out of order or different.\n    const key = ref ? words + \"|\" + ref : words;\n    let url = Sefaria.apiHost + \"/api/words/\" + encodeURIComponent(words)+\"?always_consonants=1&never_split=1\" + (ref?(\"&lookup_ref=\"+encodeURIComponent(ref)):\"\");\n    return this._cachedApiPromise({url, key, store: this._lexiconLookups});\n  },\n  _links: {},\n  getLinks: function(ref) {\n    // When there is an error in the returned data, this calls `reject` rather than returning empty.\n    return new Promise((resolve, reject) => {\n        ref = Sefaria.humanRef(ref);\n        if (ref in this._links) {\n            resolve(this._links[ref]);\n        } else {\n            let url = Sefaria.apiHost + \"/api/links/\" + ref + \"?with_text=0\";\n            let p = this._ApiPromise(url)\n                .then(data => {\n                    if (\"error\" in data) reject(data);\n                    this._saveLinkData(ref, data);\n                    return data;\n                });\n            resolve(p);\n        }\n    });\n  },\n  getLinksFromCache: function(ref) {\n    ref = Sefaria.humanRef(ref);\n    return ref in this._links ? this._links[ref] : [];\n  },\n  _saveLinkData: function(ref, data) {\n    ref = Sefaria.humanRef(ref);\n    const l = this._saveLinksByRef(data);\n    this._links[ref] = data;\n    this._cacheIndexFromLinks(data);\n    this._cacheTranslationsOfEssays(data);\n    return l;\n  },\n  _cacheTranslationsOfEssays: function(links) {\n    for (let link of links) {\n      if (link.type !== \"essay\") { continue; }\n      Sefaria._translateTerms[link.displayedText.en] = link.displayedText;\n    }\n  },\n  _cacheIndexFromLinks: function(links) {\n    // Cache partial index information (title, Hebrew title, categories) found in link data.\n    for (let i=0; i < links.length; i++) {\n      if ((\"collectiveTitle\" in links[i]) && this.index(links[i].collectiveTitle[\"en\"])) {\n          continue;\n      }\n      const index = {\n        title:      links[i].collectiveTitle[\"en\"],\n        heTitle:    links[i].collectiveTitle[\"he\"],\n        categories: [links[i].category],\n      };\n      this.index(links[i].collectiveTitle[\"en\"], index);\n    }\n  },\n  _saveLinksByRef: function(data) {\n    return this._saveItemsByRef(data, this._links);\n  },\n  _saveItemsByRef: function(data, store) {\n    // For a set of items from the API, save each set split by the specific ref the items points to.\n    // E.g, API is called on \"Genesis 1\", this function also stores the data in buckets like \"Genesis 1:1\", \"Genesis 1:2\" etc.\n    var splitItems = {}; // Aggregate links by anchorRef\n    for (var i = 0; i < data.length; i++) {\n      var ref = data[i].anchorRef;\n      if (!ref) {\n        console.log(\"_saveItemsByRef encountered an item without a ref field:\");\n        console.log(data[i]);\n        continue;\n      }\n      var refs = \"anchorRefExpanded\" in data[i] ? data[i].anchorRefExpanded : Sefaria.splitRangingRef(ref);\n      for (var j = 0; j < refs.length; j++) {\n        ref = refs[j];\n        if (ref in splitItems) {\n          splitItems[ref].push(data[i]);\n        } else {\n          splitItems[ref] = [data[i]];\n        }\n      }\n    }\n    for (var ref in splitItems) {\n      if (splitItems.hasOwnProperty(ref)) {\n        if (!(ref in store) || store[ref].length <= splitItems[ref].length) {\n          // Don't overwrite the cache if it already contains more items than the new list.\n          // Due to range logic, if cache was populated with \"Genesis 1\", a call for \"Genesis 1:2-4\" could yeild\n          // a smaller list of results for \"Genesis 1:4\" than was already present.\n          store[ref] = splitItems[ref];\n        }\n      }\n    }\n    return splitItems;\n  },\n  linksLoaded: function(ref) {\n    // Returns true if link data has been loaded for `ref`.\n    if (typeof ref === \"string\") {\n      return ref in this._links;\n    } else {\n      for (let i = 0; i < ref.length; i++) {\n        if (!this.linksLoaded(ref[i])) { return false; }\n      }\n      return true;\n    }\n  },\n  linkCount: function(ref, filter) {\n    // Returns the number links available for `ref` filtered by `filter`, an array of strings.\n    if (!(ref in this._links)) { return 0; }\n    let links = this._links[ref];\n    links = filter ? this._filterLinks(links, filter) : links;\n    return links.length;\n  },\n  _filterLinks: function(links, filter) {\n    // Filters array `links` for only those that match array `filter`.\n    // If `filter` ends with \"|Quoting\" return Quoting Commentary only,\n    // otherwise commentary `filters` will return only links with type `commentary`\n    if (filter.length == 0) { return links; }\n\n    var filterAndSuffix = filter[0].split(\"|\");\n    filter              = [filterAndSuffix[0]];\n    var isQuoting       = filterAndSuffix.length == 2 && filterAndSuffix[1] == \"Quoting\";\n    var isEssay         = filterAndSuffix.length == 2 && filterAndSuffix[1] == \"Essay\";\n    var index           = Sefaria.index(filter);\n    var isCommentary    = index && !isQuoting &&\n                            (index.categories[0] == \"Commentary\" || index.primary_category == \"Commentary\");\n\n    return links.filter(function(link){\n      if (isCommentary && link.category !== \"Commentary\") { return false; }\n      if (isQuoting && link.category !== \"Quoting Commentary\") { return false; }\n      if (isEssay) { return link.type === \"essay\" && Sefaria.util.inArray(link.displayedText[\"en\"], filter) !== -1; }\n\n      return (Sefaria.util.inArray(link.category, filter) !== -1 ||\n              Sefaria.util.inArray(link[\"collectiveTitle\"][\"en\"], filter) !== -1 );\n    });\n  },\n  _filterSheetFromLinks: function(links, sheetID) {\n    links = links.filter(link => !link.isSheet || link.id !== sheetID );\n    return links;\n  },\n  _dedupeLinks: function(links) {\n    const key = (link) => [link.anchorRef, link.sourceRef, link.type].join(\"|\");\n    let dedupedLinks = {};\n    links.map((link) => {dedupedLinks[key(link)] = link});\n    return Object.values(dedupedLinks);\n  },\n  hasEssayLinks: function(ref) {\n      let links = [];\n      ref.map(function(r) {\n          const newlinks = Sefaria.getLinksFromCache(r);\n          links = links.concat(newlinks);\n      });\n      links = links.filter(l => l[\"type\"] === \"essay\");\n      return links.length > 0;\n  },\n  essayLinks: function(ref, versions) {\n    let links = [];\n    ref.map(function(r) {\n      const newlinks = Sefaria.getLinksFromCache(r);\n      links = links.concat(newlinks);\n    });\n    links = this._dedupeLinks(links); // by aggregating links to each ref above, we can get duplicates of links to spanning refs\n    let essayLinks = [];\n    for (let i=0; i<links.length; i++) {\n      if (links[i][\"type\"] === \"essay\" && \"displayedText\" in links[i]) {\n        const linkLang = links[i][\"anchorVersion\"][\"language\"];\n        const currVersionTitle = versions[linkLang] ? versions[linkLang][\"versionTitle\"] : \"NONE\";\n        const linkVersionTitle = links[i][\"anchorVersion\"][\"title\"];\n        if (linkVersionTitle === \"ALL\" || (linkVersionTitle !== \"NONE\" && currVersionTitle === linkVersionTitle)) {\n          essayLinks.push(links[i]);\n        }\n      }\n    }\n    return essayLinks.sort((a, b) => Sefaria.refContains(a[\"sourceRef\"], b[\"sourceRef\"]));\n  }\n  ,\n  _linkSummaries: {},\n  linkSummary: function(ref, excludedSheet) {\n    // Returns an ordered array summarizing the link counts by category and text\n    // Takes either a single string `ref` or an array of refs strings.\n    // If `excludedSheet` is present, exclude links to that sheet ID.\n    const categoryOrderOverrides = {\n        \"Tanakh\": [\n            \"Talmud\",\n            \"Midrash\",\n            \"Halakhah\",\n        ],\n        \"Mishnah\": [\n            \"Tanakh\",\n            \"Mishnah\",\n            \"Talmud\",\n        ],\n        \"Talmud\": [\n            \"Tanakh\",\n            \"Talmud\",\n            \"Halakhah\",\n        ],\n        \"Midrash\": [\n            \"Tanakh\",\n            \"Talmud\",\n            \"Midrash\",\n        ],\n        \"Halakhah\": [\n            \"Tanakh\",\n            \"Talmud\",\n            \"Halakhah\",\n        ],\n        \"Kabbalah\": [\n            \"Tanakh\",\n            \"Talmud\",\n            \"Kabbalah\"\n        ],\n        \"Liturgy\": [\n            \"Tanakh\",\n            \"Talmud\",\n            \"Liturgy\",\n        ],\n        \"Jewish Thought\": [\n            \"Tanakh\",\n            \"Talmud\",\n            \"Jewish Thought\"\n        ],\n        \"Tosefta\": [\n            \"Tanakh\",\n            \"Mishnah\",\n            \"Talmud\",\n        ],\n        \"Chasidut\": [\n            \"Tanakh\",\n            \"Talmud\",\n            \"Midrash\",\n        ],\n        \"Musar\": [\n            \"Tanakh\",\n            \"Talmud\",\n            \"Musar\",\n        ],\n        \"Responsa\": [\n            \"Tanakh\",\n            \"Talmud\",\n            \"Halakhah\",\n        ],\n        \"Second Temple\": [\n\n        ],\n        \"Reference\": [\n\n        ],\n    };\n    const oref          = (typeof ref == \"string\") ? Sefaria.ref(ref) : Sefaria.ref(ref[0]);\n    const categoryOverridesForRef = (oref && oref.hasOwnProperty(\"primary_category\")) ?  ((categoryOrderOverrides.hasOwnProperty(oref.primary_category)) ? categoryOrderOverrides[oref.primary_category] : null) : null;\n    let links = [];\n    if (!this.linksLoaded(ref)) { return []; }\n    const normRef = Sefaria.humanRef(ref);\n    const cacheKey = normRef + \"/\" + excludedSheet;\n    if (cacheKey in this._linkSummaries) { return this._linkSummaries[cacheKey]; }\n    if (typeof ref == \"string\") {\n      links = this.getLinksFromCache(ref);\n    } else {\n      links = [];\n      ref.map(function(r) {\n        const newlinks = Sefaria.getLinksFromCache(r);\n        links = links.concat(newlinks);\n      });\n      links = this._dedupeLinks(links); // by aggregating links to each ref above, we can get duplicates of links to spanning refs\n    }\n\n    links = excludedSheet ? this._filterSheetFromLinks(links, excludedSheet) : links;\n\n    const summary = {};\n    for (let i = 0; i < links.length; i++) {\n      const link = links[i];\n      if (link[\"type\"] === \"essay\") {\n        continue;\n      }\n      // Count Category\n      if (link.category in summary) {\n        summary[link.category].count += 1;\n        summary[link.category].hasEnglish = summary[link.category].hasEnglish || link.sourceHasEn;\n\n      } else {\n        summary[link.category] = {count: 1, books: {}, hasEnglish: link.sourceHasEn};\n      }\n      const category = summary[link.category];\n      // Count Book\n      if (link[\"collectiveTitle\"][\"en\"] in category.books) {\n        category.books[link[\"collectiveTitle\"][\"en\"]].count += 1;\n        category.books[link[\"collectiveTitle\"][\"en\"]].hasEnglish = category.books[link[\"collectiveTitle\"][\"en\"]].hasEnglish || link.sourceHasEn;\n        category.books[link[\"collectiveTitle\"][\"en\"]].categoryList = Sefaria.index(link[\"index_title\"]).categories\n      } else {\n        category.books[link[\"collectiveTitle\"][\"en\"]] = {count: 1, hasEnglish: link.sourceHasEn};\n        category.books[link[\"collectiveTitle\"][\"en\"]].categoryList = Sefaria.index(link[\"index_title\"]).categories\n      }\n    }\n    // Add Zero counts for every commentator in this section not already in list\n    const baseRef    = typeof ref == \"string\" ? ref : ref[0]; // TODO handle refs spanning sections\n    const oRef       = Sefaria.getRefFromCache(baseRef);\n    const sectionRef = oRef ? oRef.sectionRef : baseRef;\n    if (ref !== sectionRef) {\n      const sectionLinks = Sefaria.getLinksFromCache(sectionRef);\n      for (let i = 0; i < sectionLinks.length; i++) {\n        const l = sectionLinks[i];\n        if (l.category === \"Commentary\") {\n          if (!(\"Commentary\" in summary)) {\n            summary[\"Commentary\"] = {count: 0, books: {}};\n          }\n          if (!(l[\"collectiveTitle\"][\"en\"] in summary[\"Commentary\"].books)) {\n            summary[\"Commentary\"].books[l[\"collectiveTitle\"][\"en\"]] = {count: 0};\n            summary[\"Commentary\"].books[l[\"collectiveTitle\"][\"en\"]].categoryList = Sefaria.index(l[\"index_title\"]).categories\n          }\n        }\n      }\n    }\n    // Convert object into ordered list\n    const summaryList = Object.keys(summary).map(function(category) {\n      const categoryData = summary[category];\n      categoryData.category = category;\n      categoryData.books = Object.keys(categoryData.books).map(function(book) {\n        const bookData = categoryData.books[book];\n        const index      = Sefaria.index(book);\n        bookData.book     = index.title;\n        bookData.heBook   = index.heTitle;\n        bookData.category = category;\n        bookData.enShortDesc = index.enShortDesc || index.enDesc;\n        bookData.heShortDesc = index.heShortDesc;\n        bookData.categoryList = index.categories[0] == ['Commentary'] ? bookData.categoryList : index.categories;\n        if (bookData.categoryList == \"Quoting Commentary\") {\n            debugger;\n                }\n        else {\n            bookData.categoryListNew = []\n            for (let i = 0; i < bookData.categoryList.length; i++) {\n                if (bookData.categoryList[i] === bookData.book || bookData.book.split(\" \")[0] === bookData.categoryList[i] || bookData.book.split(\" \")[0] === bookData.categoryList[i].split(\" \")[0]) {\n                    break;\n                } else {\n                  bookData.categoryListNew.push(bookData.categoryList[i]);\n                }\n            }\n            bookData.categoryList = bookData.categoryListNew\n            // bookData.enShortDesc = Sefaria.tocItemsByCategories(bookData.categoryList).map((e)=>(e.category || e.title === bookData.book ? e.enShortDesc: null))\n        }\n        if (bookData.categoryList && !bookData.enShortDesc) {\n            const desc = Sefaria.getDescriptionDict(bookData.book, bookData.categoryList)\n            if (desc) {\n                bookData.enShortDesc = desc[0] || null;\n                bookData.heShortDesc = desc[1] || null;\n            }\n        }\n\n        return bookData;\n      });\n      // Sort the books in the category\n      const cat = oRef ? oRef[\"categories\"][0] : null;\n      categoryData.books.sort(Sefaria.linkSummaryBookSort.bind(null, cat));\n\n      return categoryData;\n    });\n    // Sort the categories\n    const categoryOrder = Sefaria.toc.map(function(cat) { return cat.category; });\n    categoryOrder.splice(0, 0, \"Commentary\"); // Always show Commentary First\n    categoryOrder.splice(2, 0, \"Targum\");     // Show Targum after Tanakh (Or Tanakh's original location)\n    if (categoryOverridesForRef && categoryOverridesForRef.length >1){ //if we have been passed the \"top connection categories\" for this ref's categroy, preference them\n        categoryOrder.splice(1, 0, ...categoryOverridesForRef);\n    }\n    summaryList.sort(function(a, b) {\n      let orderA = categoryOrder.indexOf(a.category);\n      let orderB = categoryOrder.indexOf(b.category);\n      orderA = orderA === -1 ? categoryOrder.length : orderA;\n      orderB = orderB === -1 ? categoryOrder.length : orderB;\n      return orderA - orderB;\n    });\n    Sefaria._linkSummaries[cacheKey] = summaryList;\n    return summaryList;\n  },\n  linkSummaryBookSort: function(category, a, b, byHebrew) {\n    // Sorter for links in a link summary, included a hard coded list of top spots by category\n    // First sort by predefined \"top\"\n    const hebrewTopByCategory = {\n      \"Tanakh\": [\"Rashi\", \"Ibn Ezra\", \"Ramban\", \"Sforno\"],\n      \"Talmud\": [\"Rashi\", \"Tosafot\"],\n      \"Mishnah\": [\"Bartenura\", \"Rambam\", \"Ikar Tosafot Yom Tov\", \"Yachin\", \"Boaz\"]\n    };\n    const englishTopByCategory = {\n      \"Tanakh\": [\"Rashi\", \"Ibn Ezra\", \"Ramban\", \"Sforno\"],\n      \"Talmud\": [\"Rashi\", \"Tosafot\"],\n      \"Mishnah\": [\"Bartenura\", \"English Explanation of Mishnah\", \"Rambam\", \"Ikar Tosafot Yom Tov\", \"Yachin\", \"Boaz\"]\n    };\n    const top = (byHebrew ? hebrewTopByCategory[category] : englishTopByCategory[category]) || [];\n    let aTop = top.indexOf(a.book);\n    let bTop = top.indexOf(b.book);\n    if (aTop !== -1 || bTop !== -1) {\n      aTop = aTop === -1 ? 999 : aTop;\n      bTop = bTop === -1 ? 999 : bTop;\n      return aTop < bTop ? -1 : 1;\n    }\n    // Then sort alphabetically\n    if (byHebrew) {\n      return a.heBook > b.heBook ? 1 : -1;\n    }\n    return a.book > b.book ? 1 : -1;\n  },\n  linkSummaryBookSortHebrew: function(category, a, b) {\n    return Sefaria.linkSummaryBookSort(category, a, b, true);\n  },\n  commentarySectionRef: function(commentator, baseRef) {\n    // Given a commentator name and a baseRef, return a ref to the commentary which spans the entire baseRef\n    // E.g. (\"Rashi\", \"Genesis 3\") -> \"Rashi on Genesis 3\"\n    // Even though most commentaries have a 1:1 structural match to basetexts, this is not alway so.\n    // Works by examining links available on baseRef, returns null if no links are in cache.\n    if (commentator == \"Abarbanel\") {\n      return null; // This text is too giant, optimizing up to section level is too slow. TODO: generalize.\n    }\n    var links = Sefaria.getLinksFromCache(baseRef);\n    links = Sefaria._filterLinks(links, [commentator]);\n    if (!links || !links.length || links[0].isSheet) { return null; }\n\n    var pRefs = links.map(link => Sefaria.parseRef(link.sourceRef));\n    if (pRefs.some(pRef => \"error\" in pRef)) { return null; } // Give up on bad refs\n\n    var books = pRefs.map(pRef => pRef.book).unique();\n    if (books.length > 1) { return null; } // Can't handle multiple index titles or schemaNodes\n\n    try {\n      var startSections = pRefs.map(pRef => pRef.sections[0]);\n      var endSections   = pRefs.map(pRef => pRef.toSections[0]);\n    } catch(e) {\n      return null;\n    }\n\n    const sorter = (a, b) => {\n      return a.match(/\\d+[ab]/) ?\n        Sefaria.hebrew.dafToInt(a) - Sefaria.hebrew.dafToInt(b)\n        : parseInt(a) - parseInt(b);\n    };\n\n    var commentaryRef = {\n      book: books[0],\n      sections: startSections.sort(sorter).slice(0,1),\n      toSections: endSections.sort(sorter).reverse().slice(0,1)\n    };\n    var ref = Sefaria.humanRef(Sefaria.makeRef(commentaryRef));\n\n    return ref;\n  },\n    _descDict: {}, // cache for the description dictionary\n      getDescriptions: function(keyName, categoryList) {\n      const catlist = Sefaria.tocItemsByCategories(categoryList)\n        let catmap = catlist.map((e) => [e.category || e.title, e.enShortDesc, e.heShortDesc])\n        let d = {}\n        catmap.map((e) => {\n            // return array of key: name of \"book\" value: list of both descriptions\n            if (e) {\n                d[e[0]]=[e[1], e[2]]\n            }\n            // special case for commentators that the book name is \"on\" eg. \"Ramban on Genesis\"\n            if (e[0].includes(\"on\")) {\n                d[e[0].split(\" on\")[0]] = [e[1], e[2]]\n            }\n        })\n        let descs = d[keyName] || d[Sefaria.index(keyName).collectiveTitle] || d[keyName.split(\" on\")[0]];\n        let enShortDesc = descs && descs[0]? descs[0]: null;\n        let heShortDesc = descs && descs[1]? descs[1]: null;\n        return [enShortDesc, heShortDesc];\n  },\n    getDescriptionDict: function(keyName, categoryList){\n        let desc = this._cachedApi([keyName, categoryList], this._descDict, null);\n        if (Object.keys(this._descDict).length === 0){\n            //Init of the Dict with the Category level descriptions\n            Sefaria.toc.map(e=> {this._descDict[[e.category, []]] = [e.enShortDesc, e.heShortDesc]})\n\n            // special case of a category in sidebar that is a sub cat on the navigation toc pages\n            if (Sefaria._siteSettings[\"TORAH_SPECIFIC\"]) {\n                // todo: get this data out of code (into db?)\n                this._descDict[[\"Commentary\", []]] = [\"Interpretations and discussions surrounding Jewish texts, ranging from early medieval to contemporary.\", \"פירושים ודיונים סביב טקסטים תורניים, מימי הביניים ועד ימינו.\"]\n                this._descDict[[\"Quoting Commentary\", []]] = [\"References to this source within commentaries on other texts in the wider library.\", \"התייחסויות אל המקור הנוכחי במפרשים משניים.\"]\n                this._descDict[[\"Targum\", []]] = this.getDescriptions(\"Targum\", [\"Tanakh\"]);\n            }\n        }\n        if (!desc && categoryList.length !== 0) {\n            desc = this.getDescriptions(keyName, categoryList)\n            this._descDict[[keyName, categoryList]] = desc\n        }\n        if (desc) {\n            return [desc[0], desc[1]]\n        }\n        else\n        {\n            return [null, null];\n        }\n    },\n\n    _notes: {},\n  notes: function(ref, callback) {\n    var notes = null;\n    if (typeof ref == \"string\") {\n      if (ref in this._notes) {\n        notes = this._notes[ref];\n      }\n    } else {\n      var notes = [];\n      ref.map(function(r) {\n        var newNotes = Sefaria.notes(r);\n        notes = newNotes ? notes.concat(newNotes) : notes;\n      });\n    }\n    if (notes) {\n      if (callback) { callback(notes); }\n    } else {\n      Sefaria.related(ref, function(data) {\n        if (callback) { callback(data.notes); }\n      });\n    }\n    return notes;\n  },\n  _saveNoteData: function(ref, data) {\n    return this._saveItemsByRef(data, this._notes);\n  },\n  _privateNotes: {},\n  privateNotes: function(refs, callback) {\n    // Returns an array of private notes for `refs` (a string or array or strings)\n    // or `null` if notes have not yet been loaded.\n    if(!Sefaria._uid) return;\n    var notes = null;\n    if (typeof refs == \"string\") {\n      if (refs in this._privateNotes) {\n        notes = this._privateNotes[refs];\n      }\n      refs = [refs] // Stanfardize type to simplify processing below\n    } else {\n      var notesByRef = refs.map(function(ref) {\n        return Sefaria._privateNotes[ref];\n      });\n      if (notesByRef.some(function(e) { return !e })) {\n        // If any ref in `refs` returned `null`, treat the whole thing as not yet loaded, call the API.\n        notes = null;\n      } else {\n        notes = [];\n        notesByRef.map(function(n) { notes = notes.concat(n); });\n      }\n    }\n\n    if (notes) {\n      if (callback) { callback(notes); }\n    } else {\n      var aggregateCallback = function() {\n        // Check if all refs have loaded, call callback if so\n       if (Sefaria.privateNotesLoaded(refs) && callback) {\n        callback(Sefaria.privateNotes(refs));\n       }\n      };\n      refs.map(function(ref) {\n       if (ref in Sefaria._privateNotes) { return; } // Only make API calls for unloaded refs\n       var url = Sefaria.apiHost + \"/api/notes/\" + Sefaria.normRef(ref) + \"?private=1\";\n       this._api(url, function(data) {\n          if (\"error\" in data) {\n            return;\n          }\n          this._savePrivateNoteData(ref, data);\n          aggregateCallback(data);\n        }.bind(this));\n      }.bind(this));\n    }\n    return notes;\n  },\n  privateNotesLoaded: function(refs) {\n    // Returns true if private notes have been loaded for every ref in `refs.\n    refs.map(function(ref) {\n      if (!(ref in Sefaria._privateNotes)) {\n        return false;\n      }\n    });\n    return true;\n  },\n  addPrivateNote: function(note) {\n    // Add a single private note to the cache of private notes.\n    var notes = this.privateNotes(note[\"anchorRef\"]) || [];\n    notes = [note].concat(notes);\n    this._saveItemsByRef(notes, this._privateNotes);\n  },\n  clearPrivateNotes: function() {\n    this._privateNotes = {};\n    this._allPrivateNotes = null;\n  },\n  _allPrivateNotes: null,\n  allPrivateNotes: function(callback) {\n    if (!callback)  { return this._allPrivateNotes; }\n\n    if (this._allPrivateNotes) {\n      callback(this._allPrivateNotes);\n    } else {\n      const url = Sefaria.apiHost + \"/api/notes/all?private=1\";\n      this._api(url, (data) => {\n        if (\"error\" in data) {\n          return;\n        }\n        this._savePrivateNoteData(null, data);\n        this._allPrivateNotes = data;\n        callback(data);\n      });\n    }\n    return this._allPrivateNotes;\n  },\n  _savePrivateNoteData: function(ref, data) {\n    return this._saveItemsByRef(data, this._privateNotes);\n  },\n  notesTotalCount: function(refs) {\n    // Returns the total number of private and public notes on `refs` without double counting my public notes.\n    var notes = Sefaria.notes(refs) || [];\n    if (Sefaria._uid) {\n      var myNotes  = Sefaria.privateNotes(refs) || [];\n      notes = notes.filter(function(note) { return note.owner !== Sefaria._uid }).concat(myNotes);\n    }\n    return notes.length;\n  },\n  deleteNote: function(noteId) {\n    return new Promise((resolve, reject) => {\n      $.ajax({\n        type: \"delete\",\n        url: `/api/notes/${noteId}`,\n        success: () => {\n          Sefaria.clearPrivateNotes();\n          Sefaria.track.event(\"Tools\", \"Delete Note\", noteId);\n          resolve();\n        },\n        error: reject\n      });\n    });\n  },\n\n\n_media: {},\n  mediaByRef: function(refs) {\n    refs = typeof refs == \"string\" ? Sefaria.splitRangingRef(refs) : refs.slice();\n    var ref = Sefaria.normRefList(refs);\n\n    var media = [];\n    refs.map(r => {\n      if (this._media[r]) { media = media.concat(this._media[r]); }\n    }, this);\n\treturn media;\n  },\n\n\n  _webpages: {},\n  _processedWebpages: {},\n  webPagesByRef: function(refs) {\n    refs = typeof refs == \"string\" ? Sefaria.splitRangingRef(refs) : refs.slice();\n    var ref = Sefaria.normRefList(refs);\n    if (ref in this._processedWebpages) { return this._processedWebpages[ref]; }\n\n    var webpages = [];\n    refs.map(r => {\n      if (this._webpages[r]) { webpages = webpages.concat(this._webpages[r]); }\n    }, this);\n\n    webpages.map(page => page.isHebrew = Sefaria.hebrew.isHebrew(page.title));\n\n    webpages = webpages.sort((a, b) => {\n      // Sort first by page language matching interface language\n      if (a.isHebrew !== b.isHebrew) { return (b.isHebrew ? -1 : 1) * (Sefaria.interfaceLang === \"hebrew\" ? -1 : 1); }\n\n      // Second, sort by how many anchorRefExpanded refs there are.  Intuition: Genesis 1:2 should come before Genesis 1:2-5, which in turn should come before Genesis 1\n      var aNumAnchorRefs, bNumAnchorRefs;\n      [aNumAnchorRefs, bNumAnchorRefs] = [a, b].map(page => page.anchorRefExpanded.length);\n      if (aNumAnchorRefs !== bNumAnchorRefs) {  return (aNumAnchorRefs - bNumAnchorRefs); }\n\n      // Genesis 2 should come before Genesis 1-3\n      var aIsRange, bIsRange;\n      [aIsRange, bIsRange] = [a, b].map(page => page.anchorRef.indexOf(\"-\") !== -1);\n      if (aIsRange !== bIsRange) { return bIsRange ? -1 : 1; }\n\n      return (a.linkerHits > b.linkerHits) ? -1 : 1;\n    });\n    this._processedWebpages[ref] = webpages;\n    return webpages;\n  },\n  _refTopicLinks: {},\n  _saveTopicByRef: function(ref, data) {\n    ref = Sefaria.humanRef(ref);\n    const split = this._saveItemsByRef(data, this._refTopicLinks);\n    this._refTopicLinks[ref] = data;\n    return split;\n  },\n  topicsByRef: function(refs) {\n    refs = typeof refs == \"string\" ? Sefaria.splitRangingRef(refs) : refs.slice();\n    const topicsObj = {};\n    let resultLoaded = false;  // _refTopicLinks will have an empty array for ref if ref's topics were loaded\n    for (let r of refs) {\n      const tempTopicList = this._refTopicLinks[r];\n      if (!tempTopicList) { continue; }\n      resultLoaded = true;\n      for (let tempTopic of tempTopicList) {\n        if (!topicsObj[tempTopic.topic]) {\n          tempTopic.order = tempTopic.order || {};\n          tempTopic.dataSources = {};\n          topicsObj[tempTopic.topic] = tempTopic;\n        }\n        // aggregate dataSources for display in tooltip\n        topicsObj[tempTopic.topic].dataSources[tempTopic.dataSource.slug] = tempTopic.dataSource;\n      }\n    }\n    if (!resultLoaded) { return null ;}\n    return Object.values(topicsObj).sort((a, b) => b.order.pr - a.order.pr);\n  },\n  topicsByRefCount: function(refs) {\n    const topics = Sefaria.topicsByRef(refs);\n    return topics && topics.length;\n  },\n  _related: {},\n  related: function(ref, callback) {\n    // Single API to bundle public links, sheets, and notes by ref.\n    // `ref` may be either a string or an array of consecutive ref strings.\n    ref = Sefaria.humanRef(ref);\n    if (!callback) {\n      return this._related[ref] || null;\n    }\n    if (ref in this._related) {\n      callback(this._related[ref]);\n    } else {\n       this.relatedApi(ref, callback);\n    }\n  },\n  _manuscripts: {},\n  manuscriptsByRef: function(refs) {\n    refs = typeof refs === \"string\" ? Sefaria.splitRangingRef(refs) : refs.slice();\n    let manuscriptPages = [];\n    refs.forEach(r => {\n      if (this._manuscripts[r]) {\n        manuscriptPages = manuscriptPages.concat(this._manuscripts[r]);\n      }\n    })\n    return manuscriptPages\n  },\n  relatedApi: function(ref, callback) {\n    var url = Sefaria.apiHost + \"/api/related/\" + Sefaria.normRef(ref) + \"?with_sheet_links=1\";\n    return this._api(url, data => {\n      if (\"error\" in data) {\n        return;\n      }\n      var originalData = Sefaria.util.clone(data);\n\n      // Save link, note, and sheet data, and retain the split data from each of these saves\n      var split_data = {\n          links: this._saveLinkData(ref, data.links),\n          notes: this._saveNoteData(ref, data.notes),\n          sheets: this.sheets._saveSheetsByRefData(ref, data.sheets),\n          webpages: this._saveItemsByRef(data.webpages, this._webpages),\n          topics: this._saveTopicByRef(ref, data.topics || []),\n\t\t      media: this._saveItemsByRef(data.media, this._media),\n          manuscripts: this._saveItemsByRef(data.manuscripts, this._manuscripts)\n      };\n\n       // Build split related data from individual split data arrays\n      [\"links\", \"notes\", \"sheets\", \"webpages\", \"media\"].forEach(obj_type => {\n        for (var ref in split_data[obj_type]) {\n          if (split_data[obj_type].hasOwnProperty(ref)) {\n            if (!(ref in this._related)) {\n                this._related[ref] = {links: [], notes: [], sheets: [], webpages: [], media: [], topics: []};\n            }\n            this._related[ref][obj_type] = split_data[obj_type][ref];\n          }\n        }\n      }, this);\n\n\n      // Save the original data after the split data - lest a split version overwrite it.\n      this._related[ref] = originalData;\n\n      callback(data);\n    });\n  },\n  _relatedPrivate: {},\n  relatedPrivate: function(ref, callback) {\n    // Single API to bundle private user sheets and notes by ref.\n    // `ref` may be either a string or an array of consecutive ref strings.\n    // Separated from public content so that public content can be cached\n    ref = Sefaria.humanRef(ref);\n    if (!callback) {\n      return this._relatedPrivate[ref] || null;\n    }\n    if (ref in this._relatedPrivate) {\n      callback(this._relatedPrivate[ref]);\n    } else {\n       var url = Sefaria.apiHost + \"/api/related/\" + Sefaria.normRef(ref) + \"?private=1\";\n       this._api(url, function(data) {\n          if (\"error\" in data) {\n            return;\n          }\n          var originalData = Sefaria.util.clone(data);\n\n          // Save link, note, and sheet data, and retain the split data from each of these saves\n          var split_data = {\n              notes: this._savePrivateNoteData(ref, data.notes),\n              sheets: this.sheets._saveUserSheetsByRefData(ref, data.sheets)\n          };\n\n          // If ref is a range or section, mark the cache as empty for any subref we didn't encouter.\n          let potentialEmptyRefs = Sefaria.splitRangingRef(ref);\n          potentialEmptyRefs.forEach(eref => {\n            split_data[\"notes\"][eref] = eref in split_data[\"notes\"] ? split_data[\"notes\"][eref] : [];\n            this._privateNotes[eref] = eref in this._privateNotes ? this._privateNotes[eref] : [];\n          });\n          potentialEmptyRefs.forEach(eref => {\n            split_data[\"sheets\"][eref] = eref in split_data[\"sheets\"] ? split_data[\"sheets\"][eref] : [];\n            this.sheets._userSheetsByRef[eref] = eref in this.sheets._userSheetsByRef ? this.sheets._userSheetsByRef[eref] : [];\n          });\n\n           // Build split related data from individual split data arrays\n          [\"notes\", \"sheets\"].forEach(function(obj_type) {\n            for (var ref in split_data[obj_type]) {\n              if (split_data[obj_type].hasOwnProperty(ref)) {\n                if (!(ref in this._relatedPrivate)) {\n                    this._relatedPrivate[ref] = {notes: [], sheets: []};\n                }\n                this._relatedPrivate[ref][obj_type] = split_data[obj_type][ref];\n              }\n            }\n          }, this);\n\n           // Save the original data after the split data - lest a split version overwrite it.\n          this._relatedPrivate[ref] = originalData;\n\n          callback(data);\n\n        }.bind(this));\n    }\n  },\n  clearLinks: function() {\n    this._related = {};\n    this._links = {};\n    this._linkSummaries = {};\n  },\n  removeLink: function(_id) {\n\n  },\n  isACaseVariant: function(query, data) {\n    // Check if query is just an improper capitalization of something that otherwise would be a ref\n    // query: string\n    // data: dictionary, as returned by /api/name\n    return (!(data[\"is_ref\"]) &&\n          data[\"completions\"] &&\n          data[\"completions\"].length &&\n          data[\"completions\"][0] != query &&\n          data[\"completions\"][0].toLowerCase().replace('״','\"') == query.slice(0, data[\"completions\"][0].length).toLowerCase().replace('״','\"') &&\n          data[\"completions\"][0] != query.slice(0, data[\"completions\"][0].length))\n  },\n  repairCaseVariant: function(query, data) {\n    if (Sefaria.isACaseVariant(query, data)) {\n        const completionArray = data[\"completion_objects\"].map(x => x.title);\n        let normalizedQuery = query.toLowerCase();\n        let bestMatch = \"\";\n        let bestMatchLength = 0;\n\n        completionArray.forEach((completion) => {\n            let normalizedCompletion = completion.toLowerCase();\n            if (normalizedQuery.includes(normalizedCompletion) && normalizedCompletion.length > bestMatchLength) {\n                bestMatch = completion;\n                bestMatchLength = completion.length;\n            }\n        });\n        return bestMatch + query.slice(bestMatch.length);\n    }\n    return query;\n  },\n  repairGershayimVariant: function(query, data) {\n    if (!data[\"is_ref\"] && data.completions && !data.completions.includes(query)) {\n        function normalize_gershayim(string) {\n            return string.replace('״', '\"');\n        }\n        const normalized_query = normalize_gershayim(query);\n        for (let c of data.completions) {\n            if (normalize_gershayim(c) === normalized_query) {\n                return c;\n            }\n        }\n    }\n    return query;\n  },\n  makeSegments: function(data, withContext, sheets=false) {\n    // Returns a flat list of annotated segment objects,\n    // derived from the walking the text in data\n    if (!data || \"error\" in data) { return []; }\n    var segments  = [];\n    var highlight = data.sections.length === data.textDepth;\n    var wrapEn = (typeof data.text == \"string\");\n    var wrapHe = (typeof data.he == \"string\");\n    var en = wrapEn ? [data.text] : data.text;\n    var he = wrapHe ? [data.he] : data.he;\n    var topLength = Math.max(en.length, he.length);\n    en = en.pad(topLength, \"\");\n    he = he.pad(topLength, \"\");\n\n    const index_offsets_by_depth = this._get_offsets(data, topLength);\n    var start = (data.textDepth == data.sections.length && !withContext ?\n                  data.sections.slice(-1)[0] : 1+index_offsets_by_depth[0]);\n    if (!data.isSpanning) {\n      for (var i = 0; i < topLength; i++) {\n        var number = i+start;\n        var delim  = data.textDepth == 1 ? \" \" : \":\";\n        var ref = data.sectionRef + delim + number;\n        segments.push({\n          ref: ref,\n          en: en[i],\n          he: he[i],\n          number: number,\n          highlight: highlight && number >= data.sections.slice(-1)[0] && number <= data.toSections.slice(-1)[0],\n          alt: (\"alts\" in data && i < data.alts.length) ? data.alts[i] : null\n        });\n      }\n    } else {\n      for (var n = 0; n < topLength; n++) {\n        var en2 = typeof en[n] == \"string\" ? [en[n]] : en[n];\n        var he2 = typeof he[n] == \"string\" ? [he[n]] : he[n];\n        var length = Math.max(en2.length, he2.length);\n        en2 = en2.pad(length, \"\");\n        he2 = he2.pad(length, \"\");\n        var baseRef     = data.book;\n        var baseSection = data.sections.slice(0,-2).join(\":\");\n        var delim       = baseSection ? \":\" : \" \";\n        var baseRef     = baseSection ? baseRef + \" \" + baseSection : baseRef;\n\n        start = (n == 0 ? start : 1+index_offsets_by_depth[n]);\n        for (var i = 0; i < length; i++) {\n          var startSection = data.sections.slice(-2)[0];\n          var section = typeof startSection == \"string\" ?\n                        Sefaria.hebrew.intToDaf(n+Sefaria.hebrew.dafToInt(startSection))\n                        : n + startSection;\n          var number  = i + start;\n          var ref = baseRef + delim + section + \":\" + number;\n          segments.push({\n            ref: ref,\n            en: en2[i],\n            he: he2[i],\n            number: number,\n            highlight: highlight &&\n                        ((n == 0 && number >= data.sections.slice(-1)[0]) ||\n                         (n == topLength-1 && number <= data.toSections.slice(-1)[0]) ||\n                         (n > 0 && n < topLength -1)),\n            alt: (\"alts\" in data && n < data.alts.length && i < data.alts[n].length) ? data.alts[n][i] : null\n          });\n        }\n      }\n    }\n    return segments;\n  },\n  stripImagesFromSegments: function(segments) {\n      // Used by sheets editors.  Sefaria.makeSegments creates a list of segments and this function handles the images.\n      return segments.map(x => {\n          x.he = Sefaria.util.stripImgs(x.he);\n          x.en = Sefaria.util.stripImgs(x.en);\n          return x;\n      })\n  },\n  sectionString: function(ref) {\n    // Returns a pair of nice strings (en, he) of the sections indicated in ref. e.g.,\n    // \"Genesis 4\" -> \"Chapter 4\", \"Guide for the Perplexed, Introduction\" - > \"Introduction\"\n    var data = this.getRefFromCache(ref);\n    var result = {\n          en: {named: \"\", numbered: \"\"},\n          he: {named: \"\", numbered: \"\"}\n        };\n    if (!data) { return result; }\n\n    // English\n    var sections = ref.slice(data.indexTitle.length+1);\n    var name = data.sectionNames.length > 1 ? data.sectionNames[0] + \" \" : \"\";\n    if (data.isComplex) {\n      var numberedSections = data.ref.slice(data.book.length+1);\n      if (numberedSections) {\n        var namedSections    = sections.slice(0, -(numberedSections.length+1));\n        var string           = (namedSections ? namedSections + \", \" : \"\") + name +  numberedSections;\n      } else {\n        var string = sections;\n      }\n    } else {\n      var string = name + sections;\n    }\n    result.en.named    = string;\n    result.en.numbered = sections;\n\n    // Hebrew\n    var sections = data.heRef.slice(data.heIndexTitle.length+1);\n    var name = \"\"; // missing he section names // data.sectionNames.length > 1 ? \" \" + data.sectionNames[0] : \"\";\n    if (data.isComplex) {\n      var numberedSections = data.heRef.slice(data.heTitle.length+1);\n      if (numberedSections) {\n        var namedSections    = sections.slice(0, -(numberedSections.length+1));\n        var string           = (namedSections ? namedSections + \", \" : \"\") + name + \" \" + numberedSections;\n      } else {\n        string = sections;\n      }\n\n    } else {\n      var string = name + sections;\n    }\n    result.he.named    = string;\n    result.he.numbered = sections;\n\n    return result;\n  },\n  commentaryList: function(title, toc) {\n    var title = arguments.length == 0 || arguments[0] === undefined ? null : arguments[0];\n    /** Returns the list of commentaries for 'title' which are found in Sefaria.toc **/\n    var toc = arguments.length <= 1 || arguments[1] === undefined ? Sefaria.util.clone(Sefaria.toc) : arguments[1];\n    if (title != null){\n        var index = this.index(title); //TODO: a little bit redundant to do on every recursion\n        if (!index) { return []; }\n        title = index.title;\n    }\n    var results = [];\n    for (var i=0; i < toc.length; i++) {\n        var curTocElem = toc[i];\n        if (curTocElem.title) { //this is a book\n            if(curTocElem.dependence == 'Commentary'){\n                if((title && curTocElem.base_text_titles && (title in curTocElem.refs_to_base_texts)) || (title == null)){\n                    results.push(curTocElem);\n                }\n            }\n        } else if (curTocElem.contents) { //this is still a category and might have books under it\n          results = results.concat(Sefaria.commentaryList(title, curTocElem.contents));\n        }\n    }\n    return results;\n  },\n  tocObjectByCategories: function(cats) {\n    // Returns the TOC entry that corresponds to list of categories `cats`\n    let found, item;\n    let list = Sefaria.toc;\n    for (let i = 0; i < cats.length; i++) {\n      found = false;\n      item = null;\n      for (let k = 0; k < list.length; k++) {\n        if (list[k].category === cats[i]) {\n          item = list[k];\n          list = item.contents || [];\n          found = true;\n          break;\n        }\n      }\n      if (!found) { return null; }\n    }\n    return item;\n  },\n  tocItemsByCategories: function(cats) {\n    // Returns the TOC items that correspond to the list of categories 'cats'\n    const object = Sefaria.tocObjectByCategories(cats);\n    return object ? Sefaria.util.clone(object.contents) : [];\n  },\n  categoryAttribution: function(categories) {\n    var attributions = [\n      {\n        categories: [\"Talmud\", \"Bavli\"],\n        english: \"The William Davidson Talmud\",\n        hebrew: \"תלמוד מהדורת ויליאם דוידסון\",\n        englishAsEdition: \"The William Davidson Edition\",\n        hebrewAsEdition: \"מהדורת ויליאם דוידסון\",\n        link: \"/william-davidson-talmud\"\n      }\n    ];\n    var attribution = null;\n    for (var i = 0; i < attributions.length; i++) {\n      if (categories.length >= attributions[i].categories.length &&\n        attributions[i].categories.compare(categories.slice(0, attributions[i].categories.length))) {\n        attribution = attributions[i];\n        break;\n      }\n    }\n    return attribution;\n  },\n  getPassages: function(refs) {\n    // refs: list of ref strings\n    // resolves to dictionary mapping ref to sugya ref\n    return this._ApiPromise(Sefaria.apiHost + \"/api/passages/\" + refs.join(\"|\"));\n  },\n  areVersionsEqual(v1, v2) {\n    // v1, v2 are `currVersions` objects stored like {en: ven, he: vhe}\n    return v1.en == v2.en && v1.he == v2.he;\n  },\n  getSavedItem: ({ ref, versions }) => {\n    return Sefaria.saved.items.find(s => s.ref === ref && Sefaria.areVersionsEqual(s.versions, versions));\n  },\n  removeSavedItem: ({ ref, versions }) => {\n    Sefaria.saved.items = Sefaria.saved.items.filter(x => !(x.ref === ref && Sefaria.areVersionsEqual(versions, x.versions)));\n  },\n  toggleSavedItem: ({ ref, versions, sheet_owner, sheet_title }) => {\n    return new Promise((resolve, reject) => {\n      const action = !!Sefaria.getSavedItem({ ref, versions }) ? \"delete_saved\" : \"add_saved\";\n      const savedItem = { ref, versions, time_stamp: Sefaria.util.epoch_time(), action, sheet_owner, sheet_title };\n      if (Sefaria._uid) {\n        $.post(`${Sefaria.apiHost}/api/profile/sync?no_return=1`,\n          { user_history: JSON.stringify([savedItem]), client: 'web' }\n        ).done(response => {\n          if (!!response['error']) {\n            reject(response['error'])\n          } else {\n            if (action === \"add_saved\" && !!response.created && response.created.length > 0) {\n              Sefaria.saved.items = response.created.concat(Sefaria.saved.items);\n            } else {\n              // delete\n              Sefaria.removeSavedItem({ ref, versions });\n            }\n            resolve(response);\n          }\n        }).fail((jqXHR, textStatus, errorThrown) => {\n          reject(errorThrown);\n        })\n      } else {\n        reject('notSignedIn');\n      }\n    });\n  },\n  editProfileAPI: (partialProfile) => {\n    const data = {json: JSON.stringify(partialProfile)};\n    return new Promise((resolve, reject) => {\n      $.post(`${Sefaria.apiHost}/api/profile`, data, resolve);\n    });\n  },\n  followAPI: (slug, ftype) => {\n    return Sefaria._ApiPromise(Sefaria.apiHost + `/api/profile/${slug}/${ftype}`);\n  },\n  messageAPI: (uid, message) => {\n    const data = {json: JSON.stringify({recipient: uid, message: message.escapeHtml()})};\n    return new Promise((resolve, reject) => {\n      $.post(`${Sefaria.apiHost}/api/messages`, data, resolve);\n    });\n  },\n  chatMessageAPI: (roomId, senderId, timestamp, messageContent) => {\n    const data = {json: JSON.stringify({roomId: roomId, senderId: senderId, timestamp, messageContent})};\n    return new Promise((resolve, reject) => {\n      $.post(`${Sefaria.apiHost}/api/chat-messages`, data, resolve);\n    })\n  },\n  getChatMessagesAPI: (roomId) => {\n    return Sefaria._ApiPromise(Sefaria.apiHost + `/api/chat-messages/?room_id=${roomId}`);\n  },\n  getRefSavedHistory: tref => {\n    return Sefaria._ApiPromise(Sefaria.apiHost + `/api/user_history/saved?tref=${tref}`);\n  },\n  _profiles: {},\n  profileAPI: slug => {\n    return Sefaria._cachedApiPromise({\n      url:   Sefaria.apiHost + \"/api/profile/\" + slug,\n      key:   slug,\n      store: Sefaria._profiles\n    });\n  },\n  userHistory: {loaded: false, items: []},\n  saveUserHistory: function(history_item) {\n    // history_item contains:\n    // `ref`, `book`, `versions`, `sheet_title`, `sheet_owner``\n    // optionally: `secondary`, `he_ref`, `language`\n    if(!Sefaria.is_history_enabled || !history_item) {\n        return;\n    }\n    const history_item_array = Array.isArray(history_item) ? history_item : [history_item];\n    for (let h of history_item_array) {\n      h.time_stamp = Sefaria.util.epoch_time();\n    }\n    if (Sefaria._uid) {\n        $.post(Sefaria.apiHost + \"/api/profile/sync?no_return=1&annotate=1\",\n              {user_history: JSON.stringify(history_item_array)},\n              data => {\n                // Insert new items to beginning of history\n                Sefaria.userHistory.items = data.created.concat(Sefaria.userHistory.items);\n              } );\n    } else {\n      // we need to get the heRef for each history item\n      Promise.all(history_item_array.filter(x=>!x.secondary).map(h => new Promise((resolve, reject) => {\n        Sefaria.getRef(h.ref).then(oref => {\n          h.he_ref = oref.heRef;\n          resolve(h);\n        });\n      }))).then(new_hist_array => {\n        const cookie = Sefaria._inBrowser ? $.cookie : Sefaria.util.cookie;\n        const user_history_cookie = cookie(\"user_history\");\n        const user_history = !!user_history_cookie ? JSON.parse(user_history_cookie) : [];\n        cookie(\"user_history\", JSON.stringify(new_hist_array.concat(user_history)), {path: \"/\"});\n        Sefaria.userHistory.items = new_hist_array.concat(user_history);\n\n        //console.log(\"saving history cookie\", new_hist_array);\n        if (Sefaria._inBrowser) {\n          // check if we've reached the cookie size limit\n          const cookie_hist = JSON.parse(cookie(\"user_history\"));\n          if (cookie_hist.length < (user_history.length + new_hist_array.length)) {\n            // save failed silently. resave by popping old history\n            if (new_hist_array.length < user_history.length) {\n              new_hist_array = new_hist_array.concat(user_history.slice(0, -new_hist_array.length));\n            }\n            cookie(\"user_history\", JSON.stringify(new_hist_array), {path: \"/\"});\n          }\n        }\n      });\n    }\n    Sefaria.last_place = history_item_array.filter(x=>!x.secondary).concat(Sefaria.last_place);  // while technically we should remove dup. books, this list is only used on client\n  },\n    isNewVisitor: () => {\n        return (\n            (\"isNewVisitor\" in sessionStorage &&\n                JSON.parse(sessionStorage.getItem(\"isNewVisitor\"))) ||\n            (!(\"isNewVisitor\" in sessionStorage) && !(\"isReturningVisitor\" in localStorage))\n        );\n    },\n    isReturningVisitor: () => {\n        return (\n            !Sefaria.isNewVisitor() &&\n            \"isReturningVisitor\" in localStorage &&\n            JSON.parse(localStorage.getItem(\"isReturningVisitor\"))\n        );\n    },\n    markUserAsNewVisitor: () => {\n        sessionStorage.setItem(\"isNewVisitor\", \"true\");\n        // Setting this at this time will make the current new visitor a returning one once their session is cleared\n        localStorage.setItem(\"isReturningVisitor\", \"true\");\n    },\n    markUserAsReturningVisitor: () => {\n      sessionStorage.setItem(\"isNewVisitor\", \"false\");\n      localStorage.setItem(\"isReturningVisitor\", \"true\");\n    },\n  uploadProfilePhoto: (formData) => {\n    return new Promise((resolve, reject) => {\n      if (Sefaria._uid) {\n        $.ajax({\n          url: Sefaria.apiHost + \"/api/profile/upload-photo\",\n          type: 'post',\n          data: formData,\n          contentType: false,\n          processData: false,\n          success: function(data) {\n            resolve(data);\n          },\n          error: function(e) {\n            console.log(\"photo upload ERROR\", e);\n            reject(e);\n          }\n        });\n      }\n    })\n  },\n  lastPlaceForText: function(title) {\n    // Return the most recently visited item for text `title` or undefined if `title` is not present in last_place.\n    return Sefaria.last_place.find(x => x.book === title);\n  },\n  _topicList: null,\n  topicList: function(callback) {\n    // Returns promise for all topics list.\n    if (this._topicList) { return Promise.resolve(this._topicList); }\n    return this._ApiPromise(Sefaria.apiHost + \"/api/topics?limit=0\")\n        .then(d => {\n          for (let topic of d) {\n            topic.normTitles = topic.titles.map(title => title.text.toLowerCase());\n          }\n          this._topicList = d;\n          return d;\n        });\n  },\n  sortTopicsCompareFn: function(a, b) {\n    // a compare function that is useful for sorting topics\n    // Don't use display order intended for top level a category level. Bandaid for unclear semantics on displayOrder.\n    const [aDisplayOrder, bDisplayOrder] = [a, b].map(x => Sefaria.isTopicTopLevel(x.slug) ? 10000 : x.displayOrder);\n\n    // Sort alphabetically according to interface lang in absense of display order\n    if (aDisplayOrder === bDisplayOrder) {\n      const stripInitialPunctuation = str => str.replace(/^[\"#]/, \"\");\n      const [aAlpha, bAlpha] = [a, b].map(x => {\n        if (Sefaria.interfaceLang === \"hebrew\") {\n          return (x.he.length) ?\n            stripInitialPunctuation(x.he) :\n           \"תתת\" + stripInitialPunctuation(x.en);\n        } else {\n          return (x.en.length) ?\n            stripInitialPunctuation(x.en) :\n            stripInitialPunctuation(x.he)\n        }\n      });\n\n      return aAlpha < bAlpha ? -1 : 1;\n    }\n\n    return aDisplayOrder - bDisplayOrder;\n\n  },\n  _tableOfContentsDedications: {},\n    _strapiContent: null,\n  _inAppAds: null,\n  _stories: {\n    stories: [],\n    page: 0\n  },\n  _parashaNextRead: {},\n  getParashaNextRead: function(parasha) {\n    return this._cachedApiPromise({\n      url:   `${this.apiHost}/api/calendars/next-read/${parasha}`,\n      key:   parasha,\n      store: this._parashaNextRead,\n    });\n  },\n  _bookSearchPathFilter: {},\n  bookSearchPathFilterAPI: title => {\n    return Sefaria._cachedApiPromise({\n      url:   Sefaria.apiHost + \"/api/search-path-filter/\" + title,\n      key:   title,\n      store: Sefaria._bookSearchPathFilter\n    });\n  },\n  _topics: {},\n  _topicPageSize: 70, // how many sources should show when incrementally loading sources\n  _CAT_REF_LINK_TYPE_FILTER_MAP: {\n    'authors': ['popular-writing-of'],\n  },\n  getTopic: function(slug, {annotated=true, with_html=false}={}) {\n    const cat = Sefaria.topicTocCategory(slug);\n    let ref_link_type_filters = ['about', 'popular-writing-of']\n    // overwrite ref_link_type_filters with predefined list. currently used to hide \"Sources\" and \"Sheets\" on author pages.\n    if (!!cat && !!Sefaria._CAT_REF_LINK_TYPE_FILTER_MAP[cat.slug]) {\n      ref_link_type_filters = Sefaria._CAT_REF_LINK_TYPE_FILTER_MAP[cat.slug];\n    }\n    const a = 0 + annotated;\n    const url = `${this.apiHost}/api/v2/topics/${slug}?annotate_time_period=1&ref_link_type_filters=${ref_link_type_filters.join('|')}&with_html=${0 + with_html}&with_links=${a}&annotate_links=${a}&with_refs=${a}&group_related=${a}&with_indexes=${a}`;\n    const key = this._getTopicCacheKey(slug, {annotated, with_html});\n    return this._cachedApiPromise({\n      url,\n      key,\n      store: this._topics,\n      processor: this.processTopicsData,\n    });\n  },\n  _getTopicCacheKey: function(slug, {annotated=true, with_html=false}={}) {\n      return slug + (annotated ? \"-a\" : \"\") + (with_html ? \"-h\" : \"\");\n  },\n  processTopicsData: function(data) {\n    if (!data) { return null; }\n    if (!data.refs) { return data; }\n    const tabs = {};\n    for (let [linkTypeSlug, linkTypeObj] of Object.entries(data.refs)) {\n      for (let refObj of linkTypeObj.refs) {\n        let tabKey = linkTypeSlug;\n        if (tabKey === 'about') {\n          tabKey = refObj.is_sheet ? 'sheets' : 'sources';\n        }\n        if (!tabs[tabKey]) {\n          let { title } = linkTypeObj;\n          if (tabKey === 'sheets') {\n            title = {en: 'Sheets', he: Sefaria._('Sheets')};\n          }\n          if (tabKey === 'sources') {\n            title = {en: 'Sources', he: Sefaria._('Sources')};\n          }\n          tabs[tabKey] = {\n            refMap: {},\n            title,\n            shouldDisplay: linkTypeObj.shouldDisplay,\n          };\n        }\n        const ref = refObj.is_sheet ? parseInt(refObj.ref.replace('Sheet ', '')) : refObj.ref;\n        if (refObj.order) {\n            refObj.order = {...refObj.order, availableLangs: refObj?.order?.availableLangs || [],\n                                numDatasource: refObj?.order?.numDatasource || 1,\n                                tfidf: refObj?.order?.tfidf || 0,\n                                pr: refObj?.order?.pr || 0,\n                                curatedPrimacy: {he: refObj?.order?.curatedPrimacy?.he || 0, en: refObj?.order?.curatedPrimacy?.en || 0}}}\n        tabs[tabKey].refMap[refObj.ref] = {ref, order: refObj.order, dataSources: refObj.dataSources, descriptions: refObj.descriptions};\n      }\n    }\n    for (let tabObj of Object.values(tabs)) {\n      tabObj.refs = Object.values(tabObj.refMap);\n      delete tabObj.refMap;\n    }\n    data.tabs = tabs;\n    return data;\n  },\n  getTopicFromCache: function(slug, {annotated=true, with_html=false}={}) {\n      const key = this._getTopicCacheKey(slug, {annotated, with_html});\n      return this._topics[key];\n  },\n  _topicSlugsToTitles: null,\n  slugsToTitles: function() {\n    //initializes _topicSlugsToTitles for Topic Editor tool and adds necessary \"Choose a Category\" and \"Main Menu\" for\n    //proper use of the Topic Editor tool\n    if (!Sefaria._topicSlugsToTitles) { this._topicSlugsToTitles = Sefaria.topic_toc.reduce(Sefaria._initTopicTocSlugToTitleReducer, {});}\n    return Sefaria._topicSlugsToTitles;\n  },\n  _topicTocPages: null,\n  _initTopicTocPages: function() {\n    this._topicTocPages = this.topic_toc.reduce(this._initTopicTocReducer, {});\n    this._topicTocPages[this._topicTocPageKey()] = this.topic_toc.map(({children, ...goodstuff}) => goodstuff);\n  },\n  _initTopicTocReducer: function(a,c) {\n    if (!c.children) { return a; }\n    a[Sefaria._topicTocPageKey(c.slug)] = c.children;\n    for (let sub_c of c.children) {\n      Sefaria._initTopicTocReducer(a, sub_c);\n    }\n    return a;\n  },\n  _initTopicTocSlugToTitleReducer: function(a,c) {\n    if (!c.children) { return a; }\n    a[c.slug] = {\"en\": c.en, \"he\": c.he};\n    for (let sub_c of c.children) {\n      Sefaria._initTopicTocSlugToTitleReducer(a, sub_c);\n    }\n    return a;\n  },\n  _topicTocCategory: null,\n  _initTopicTocCategory: function() {\n    this._topicTocCategory = this.topic_toc.reduce(this._initTopicTocCategoryReducer, {});\n  },\n  _initTopicTocCategoryReducer: function(a,c) {\n    if (!c.children) {\n      a[c.slug] = c.parent;\n      return a;\n    }\n    for (let sub_c of c.children) {\n      sub_c.parent = { en: c.en, he: c.he, slug: c.slug };\n      Sefaria._initTopicTocCategoryReducer(a, sub_c);\n    }\n    return a;\n  },\n  _topicTocPageKey: slug => \"_\" + slug,\n  topicTocPage: function(parent) {\n    const key = this._topicTocPageKey(parent);\n    if (!this._topicTocPages) {\n        this._initTopicTocPages()\n    }\n    return this._topicTocPages[key]\n  },\n  topicTocCategory: function(slug) {\n    // return category english and hebrew for slug\n    if (!this._topicTocCategory) { this._initTopicTocCategory(); }\n    return this._topicTocCategory[slug];\n  },\n  _topicTocCategoryTitles: null,\n  _initTopicTocCategoryTitles: function() {\n    this._topicTocCategoryTitles = this.topic_toc.reduce(this._initTopicTocCategoryTitlesReducer, {});\n  },\n  _initTopicTocCategoryTitlesReducer: function(a,c) {\n    if (!c.children) {\n      return a;\n    }\n    a[c.slug] = {en: c.en, he: c.he};\n\n    for (let sub_c of c.children) {\n      Sefaria._initTopicTocCategoryReducer(a, sub_c);\n    }\n    return a;\n  },\n  topicTocCategoryTitle: function(slug) {\n    // returns english and hebrew titles for the topic category named by `slug``\n    if (!this._topicTocCategoryTitles) { this._initTopicTocCategoryTitles(); }\n    return this._topicTocCategoryTitles[slug];\n  },\n  isTopicTopLevel: function(slug) {\n    // returns true is `slug` is part of the top level of topic toc\n    return Sefaria.topic_toc.filter(x => x.slug == slug).length > 0;\n  },\n  sheets: {\n    _loadSheetByID: {},\n    loadSheetByID: function(id, callback, reset) {\n      if (reset) {\n        delete this._loadSheetByID[id];\n      }\n      const sheet = this._loadSheetByID[id];\n      if (sheet) {\n        if (callback) { callback(sheet); }\n      } else if (callback) {\n        const url = \"/api/sheets/\" + id +\"?more_data=1\";\n         $.getJSON(url, data => {\n            if (\"error\" in data) {\n                console.log(data[\"error\"])\n            }\n            this._loadSheetByID[id] = data;\n            callback(data);\n            callback(data);\n          });\n        }\n      return sheet;\n    },\n    deleteSheetById: function(id) {\n      return Sefaria._ApiPromise(`/api/sheets/${id}/delete`);\n    },\n    _userSheets: {},\n    userSheets: function(uid, callback, sortBy=\"date\", offset=0, numberToRetrieve=0) {\n      // Returns a list of source sheets belonging to `uid`\n      // Only a user logged in as `uid` will get private data from this API.\n      // Otherwise, only public data will be returned\n      const key = uid+\"|\"+sortBy+offset+numberToRetrieve;\n      const sheets = this._userSheets[key];\n      if (sheets) {\n        if (callback) { callback(sheets); }\n      } else {\n        const url = Sefaria.apiHost + \"/api/sheets/user/\" + uid + \"/\" + sortBy + \"/\" + numberToRetrieve + \"/\" + offset;\n        Sefaria._ApiPromise(url).then(data => {\n          this._userSheets[key] = data.sheets;\n          if (callback) { callback(data.sheets); }\n        });\n      }\n      return sheets;\n    },\n    updateUserSheets: function(sheet, uid, update=true, updateInPlace=false){\n      for (const key in this._userSheets) {\n        if (key.startsWith(uid.toString()+\"|\")){\n          if (update) {\n            const sheetIndex = this._userSheets[key].findIndex(item => item.id === sheet.id);\n            if (key.includes(\"date\") && !updateInPlace) { //add to front because we sorted by date\n              this._userSheets[key].splice(sheetIndex, 1);\n              this._userSheets[key].unshift(sheet);\n            } else if (updateInPlace) {\n              this._userSheets[key][sheetIndex] = sheet;\n            } else {\n              this._userSheets[key].unshift(sheet);\n            }\n          } else {\n            this._userSheets[key].push(sheet);\n          }\n        }\n      }\n    },\n    clearUserSheets: function(uid) {\n      this._userSheets  = Object.keys(this._userSheets)\n      .filter(key => !key.startsWith(uid.toString()))\n      .reduce((obj, key) => {\n        return {\n          ...obj,\n          [key]: this._userSheets[key]\n        };\n      }, {});\n    },\n    _publicSheets: {},\n    publicSheets: function(offset, limit, options, skipCache, callback) {\n      // Returns a list of public sheets\n      offset = offset || 0;\n      limit = limit || 30;\n      options = options || {};\n\n      const params = param(options);\n      const path = limit+\"/\"+offset + (params ? \"?\" + params : \"\");\n\n      const sheets = this._publicSheets[path];\n      if (sheets && !skipCache) {\n        if (callback) { callback(sheets); }\n      } else {\n        const url = Sefaria.apiHost + \"/api/sheets/all-sheets/\" + path\n\n        Sefaria._api(url, function(data) {\n          this._publicSheets[path] = data.sheets;\n          if (callback) { callback(data.sheets); }\n        }.bind(this));\n      }\n      return sheets;\n    },\n    _sheetsByRef: {},\n    sheetsByRef: function(ref, cb) {\n      // Returns a list of public sheets that include `ref`.\n      var sheets = null;\n      if (typeof ref == \"string\") {\n        if (ref in this._sheetsByRef) {\n          sheets = this._sheetsByRef[ref];\n        }\n      } else {\n        var sheets = [];\n        ref.map(function(r) {\n          var newSheets = Sefaria.sheets.sheetsByRef(r);\n          if (newSheets) {\n            sheets = sheets.concat(newSheets);\n          }\n        });\n        // sheets anchored to spanning refs may cause duplicates\n        var seen = {};\n        var deduped = [];\n        sheets.map(sheet => {\n          if (!seen[sheet.id]) { deduped.push(sheet); }\n          seen[sheet.id] = true;\n        });\n        sheets = deduped;\n      }\n      if (sheets) {\n        if (cb) { cb(sheets); }\n      } else {\n        Sefaria.related(ref, function(data) {\n          if (cb) { cb(data.sheets); }\n        });\n      }\n      return sheets;\n    },\n    _saveSheetsByRefData: function(ref, data) {\n      this._sheetsByRef[ref] = data;\n      return Sefaria._saveItemsByRef(data, this._sheetsByRef);\n    },\n    _userSheetsByRef: {},\n    userSheetsByRef: function(ref, cb) {\n      // Returns a list of public sheets that include `ref`.\n      var sheets = null;\n      if (typeof ref == \"string\") {\n        if (ref in this._userSheetsByRef) {\n          sheets = this._userSheetsByRef[ref];\n        }\n      } else {\n        var sheets = [];\n        ref.map(function(r) {\n          var newSheets = Sefaria.sheets.userSheetsByRef(r);\n          if (newSheets) {\n            sheets = sheets.concat(newSheets);\n          }\n        });\n      }\n      if (sheets) {\n        if (cb) { cb(sheets); }\n      } else {\n        Sefaria.relatedPrivate(ref, function(data) {\n          if (cb) { cb(data.sheets); }\n        });\n      }\n      return sheets;\n    },\n    _saveUserSheetsByRefData: function(ref, data) {\n      this._userSheetsByRef[ref] = data;\n      return Sefaria._saveItemsByRef(data, this._userSheetsByRef);\n    },\n    sheetsTotalCount: function(refs) {\n      // Returns the total number of private and public sheets on `refs` without double counting my public sheets.\n      var sheets = Sefaria.sheets.sheetsByRef(refs) || [];\n      if (Sefaria._uid) {\n        var mySheets = Sefaria.sheets.userSheetsByRef(refs) || [];\n        sheets = sheets.filter(function(sheet) { return sheet.owner !== Sefaria._uid }).concat(mySheets);\n      }\n      return sheets.length;\n    },\n    extractIdFromSheetRef: function (ref) {\n      return typeof ref === \"string\" ? parseInt(ref.split(\" \")[1]) : parseInt(ref[0].split(\" \")[1]);\n    }\n  },\n  _translations: {},\n  getTranslation: function(key) {\n    const url = Sefaria.apiHost + \"/api/texts/translations/\" + key;\n    const store = this._translations;\n    return this._cachedApiPromise({url, key, store})\n  },\n  _collections: {},\n  getCollection: function(key) {\n      const url = Sefaria.apiHost + \"/api/collections/\" + encodeURIComponent(key);\n      const store = this._collections;\n      return this._cachedApiPromise({url, key, store});\n  },\n  getCollectionFromCache: function(key) {\n    return Sefaria._collections[key];\n  },\n  _collectionsList: {},\n  getCollectionsList: function() {\n      return this._cachedApiPromise({\n        url: Sefaria.apiHost + \"/api/collections\",\n        key: \"list\",\n        store: Sefaria._collectionsList\n      });\n  },\n  getCollectionsListFromCache() {\n    return Sefaria._collectionsList.list;\n  },\n  _userCollections: {},\n  getUserCollections: function(uid) {\n    return this._cachedApiPromise({\n      url: `${Sefaria.apiHost}/api/collections/user-collections/${uid}`,\n      key: uid,\n      store: Sefaria._userCollections\n    });\n  },\n  getUserCollectionsFromCache(uid) {\n    return Sefaria._userCollections[uid];\n  },\n  _userCollectionsForSheet: {},\n  getUserCollectionsForSheet: function(sheetID) {\n    return this._cachedApiPromise({\n      url: `${Sefaria.apiHost}/api/collections/for-sheet/${sheetID}`,\n      key: sheetID,\n      store: Sefaria._userCollectionsForSheet\n    });\n  },\n  getUserCollectionsForSheetFromCache(sheetID) {\n    return Sefaria._userCollectionsForSheet[sheetID];\n  },\n  getBackgroundData() {\n    return Sefaria._ApiPromise(\"/api/background-data?locale=\" + Sefaria.interfaceLang)\n      .then(data => { Sefaria = extend(Sefaria, data); });\n  },\n  calendarRef: function(calendarTitle) {\n    const cal = Sefaria.calendars.filter(cal => cal.title.en === calendarTitle);\n    return cal.length ? cal[0].ref : null;\n  },\n  _translateTerms: {},\n  _cacheHebrewTerms: function(terms) {\n      Sefaria._translateTerms = extend(terms, Sefaria._translateTerms);\n  },\n  hebrewTerm: function(name) {\n    // Returns a string translating `name` into Hebrew.\n    const categories = {\n      \"Quoting Commentary\":   \"פרשנות מצטטת\",\n      \"Modern Commentary\":    \"פרשנות מודרנית\",\n      \"Sheets\":               \"דפי מקורות\",\n      \"Notes\":                \"הערות\",\n      \"Community\":            \"קהילה\"\n    };\n    if (name in Sefaria._translateTerms) {\n        return Sefaria._translateTerms[name][\"he\"];\n    } else if (Sefaria._translateVersions[Sefaria.getTranslateVersionsKey(name, 'en')]) {\n        return Sefaria._translateVersions[Sefaria.getTranslateVersionsKey(name, 'en')][\"he\"];\n    } else if (Sefaria._translateVersions[Sefaria.getTranslateVersionsKey(name, 'he')]) {\n        return Sefaria._translateVersions[Sefaria.getTranslateVersionsKey(name, 'he')][\"he\"];\n    } else if (name in categories) {\n        return  categories[name];\n    } else if (Sefaria.index(name)) {\n        return Sefaria.index(name).heTitle;\n    } else {\n        return name;\n    }\n  },\n  hebrewTranslation: function(inputStr, context = null){\n    let translatedString;\n    if (context && context in Sefaria._i18nInterfaceStringsWithContext){\n      translatedString = Sefaria._getStringCaseInsensitive(Sefaria._i18nInterfaceStringsWithContext[context], inputStr);\n      if (translatedString !== null) return translatedString;\n    }\n    if ((translatedString = Sefaria._getStringCaseInsensitive(Sefaria._i18nInterfaceStrings, inputStr)) !== null ) {\n      return translatedString;\n    }\n    if ((translatedString = Sefaria.hebrewTerm(inputStr)) != inputStr) {\n      return translatedString;\n    }\n    if (inputStr.indexOf(\" | \") !== -1) {\n      var inputStrs = inputStr.split(\" | \");\n      return Sefaria._(inputStrs[0])+ \" | \" + Sefaria._(inputStrs[1]);\n    } else {\n      //console.warn(\"Missing Hebrew translation for: \" + inputStr);\n      return inputStr;\n    }\n  },\n  translation: function(language, inputStr, context=null){\n      const translationMatrix = {\n          \"he\": Sefaria.hebrewTranslation\n      };\n      try {\n          return translationMatrix[language.slice(0,2)](inputStr, context);\n      }catch (e){\n          console.warn(\"No transaltion available for \" + language)\n          return inputStr;\n      }\n  },\n  _: function(inputStr, context=null){\n    if(Sefaria.interfaceLang != \"english\"){\n      return Sefaria.translation(Sefaria.interfaceLang, inputStr, context);\n    } else {\n      return inputStr;\n    }\n  },\n  _v: function(langOptions){\n    /* Takes an object {en: \"something\", he: \"משהו\"}\n     * and returns the correct one according to interface language\n     * Convenience method for when there are two data variables in an object one wishes to return\n     * according to interface, in places where HTML is not allowed (inside <options> tag for ex.\n    */\n    const lang = Sefaria.interfaceLang.slice(0,2);\n    return langOptions[lang] ? langOptions[lang] : \"\";\n  },\n  _r: function (inputRef) {\n    const oref = Sefaria.getRefFromCache(inputRef);\n    if (!oref) { return inputRef; }\n    return Sefaria.interfaceLang != \"english\" ? oref.heRef : oref.ref;\n  },\n  _getStringCaseInsensitive: function (store, inputStr){\n    if(inputStr in store){\n        return store[inputStr];\n    }else if(inputStr.toLowerCase() in store){\n        return store[inputStr.toLowerCase()];\n    }else return null;\n\n    //return inputStr in store ? store[inputStr] : (inputStr.toLowerCase() in store ? store[inputStr.toLowerCase()]\n      // : null);\n  },\n  _cacheSiteInterfaceStrings: function() {\n    // Ensure that names set in Site Settings are available for translation in JS.\n    if (!Sefaria._siteSettings) { return; }\n    [\"SITE_NAME\", \"LIBRARY_NAME\"].map(key => {\n      Sefaria._i18nInterfaceStrings[Sefaria._siteSettings[key][\"en\"]] = Sefaria._siteSettings[key][\"he\"];\n    });\n  },\n  _makeBooksDict: function() {\n    // Transform books array into a dictionary for quick lookup\n    // Which is worse: the cycles wasted in computing this on the client\n    // or the bandwidth wasted in letting the server computer once and transmitting the same data twice in different form?\n    this.booksDict = {};\n    for (let i = 0; i < this.books.length; i++) {\n      this.booksDict[this.books[i]] = 1;\n    }\n  },\n  _ajaxObjects: {},   // These are jqXHR objects, which implement the Promise interface\n  _api: function(url, callback) {\n    // Manage API calls and callbacks to prevent duplicate calls\n    // This method will be deprecated, in favor of _ApiPromise\n    //\n    if (url in this._ajaxObjects) {\n      return this._ajaxObjects[url].then(callback);\n    }\n    return this._ApiPromise(url).then(callback);\n  },\n  _ApiPromise: function(url) {\n    // Uses same _ajaxObjects as _api\n    // Use built in Promise logic to handle multiple .then()s\n    if (url in this._ajaxObjects) {\n      return this._ajaxObjects[url];\n    }\n    this._ajaxObjects[url] = $.getJSON(url).always(_ => {delete this._ajaxObjects[url];});\n    return this._ajaxObjects[url];\n  },\n  _cachedApi: function(key, store, defaultVal){\n      return (key in store) ? store[key] : defaultVal;\n  },\n  _cachedApiPromise: function({url, key, store, processor}) {\n      // Checks store[key].  Resolves to this value, if present.\n      // Otherwise, calls Promise(url), caches in store[key], and returns\n      return (key in store) ?\n          Promise.resolve(store[key]) :\n          Sefaria._ApiPromise(url)\n              .then(data => {\n                  if (processor) { data = processor(data); }\n                  store[key] = data;\n                  return data;\n              })\n  },\n  //  https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html\n  makeCancelable: (promise) => {\n      let hasCanceled_ = false;\n\n      const wrappedPromise = new Promise((resolve, reject) => {\n        promise.then(\n          val => hasCanceled_ ? reject({isCanceled: true}) : resolve(val),\n          error => hasCanceled_ ? reject({isCanceled: true}) : reject(error)\n        );\n      });\n\n      return {\n        promise: wrappedPromise,\n        cancel() { hasCanceled_ = true; },\n      };\n  },\n  incrementalPromise: async (fetchResponse, data, increment, setResponse, setCancel) => {\n    /*\n    fetchResponse - func that takes slice of `data` as param and returns promise\n    data - array of input data for fetchResponse\n    increment - int, how many values to send to fetchResponse at a time\n    setResponse - callback to react to send updated results\n    setCancel - function that saves cancel function so it can be called in outside scope\n    */\n    let lastEndIndex = 0;\n    while (lastEndIndex <= data.length) {\n      const tempData = data.slice(lastEndIndex, lastEndIndex + increment);\n      const { promise, cancel } = Sefaria.makeCancelable(fetchResponse(tempData));\n      setCancel(cancel);\n      const tempResponses = await promise;\n      setResponse(prevResponses => !prevResponses ? tempResponses : prevResponses.concat(tempResponses));\n      lastEndIndex += increment;\n    }\n  }\n});\n\nSefaria.unpackDataFromProps = function(props) {\n  // Populate local cache with various data passed as props.\n  const initialPanels = props.initialPanels || [];\n  for (let i = 0; i < initialPanels.length; i++) {\n      let panel = initialPanels[i];\n      if (panel.text) {\n        let settings = {context: 1, enVersion: panel.enVersion, heVersion: panel.heVersion};\n        //save versions first, so their new format is also saved on text cache\n        if(panel.text?.versions?.length){\n            let versions = Sefaria._saveVersions(panel.text.sectionRef, panel.text.versions);\n            panel.text.versions = Sefaria._makeVersions(versions, false);\n        }\n\n        Sefaria._saveText(panel.text, settings);\n      }\n      if(panel.bookRef){\n         if(panel.versions?.length){\n            let versions = Sefaria._saveVersions(panel.bookRef, panel.versions);\n            panel.versions = Sefaria._makeVersions(versions, false);\n         }\n      }\n      if (panel.indexDetails) {\n        Sefaria._indexDetails[panel.bookRef] = panel.indexDetails;\n      }\n      if (panel.sheet) {\n        Sefaria.sheets._loadSheetByID[panel.sheet.id] = panel.sheet;\n      }\n  }\n  if (props.collectionData) {\n    Sefaria._collections[props.initialCollectionSlug] = props.collectionData;\n  }\n  if (props.translationsData) {\n    Sefaria._translations[props.initialTranslationsSlug] = props.translationsData;\n  }\n  if (props.topicData) {\n    Sefaria._topics[props.initialTopic] = Sefaria.processTopicsData(props.topicData);\n  }\n  if (props.topicList) {\n    Sefaria._topicList = props.topicList;\n  }\n  if (props.collectionListing) {\n      Sefaria._collectionsList.list = props.collectionListing;\n  }\n  Sefaria.versionPreferences = new VersionPreferences(props.versionPrefsByCorpus);\n  Sefaria.util._initialPath = props.initialPath ? props.initialPath : \"/\";\n  Sefaria.unpackBaseProps(props);\n\n  Sefaria.getBackgroundData();\n};\n\nSefaria.unpackBaseProps = function(props){\n    //TODO: verify these are all base props!!!\n      if (typeof props === 'undefined') {\n          return;\n      }\n      const dataPassedAsProps = [\n      \"_uid\",\n      \"_email\",\n      \"slug\",\n      \"is_moderator\",\n      \"is_editor\",\n      \"is_sustainer\",\n      \"full_name\",\n      \"profile_pic_url\",\n      \"is_history_enabled\",\n      \"translation_language_preference_suggestion\",\n      \"following\",\n      \"blocking\",\n      \"calendars\",\n      \"notificationCount\",\n      \"notifications\",\n      \"saved\",\n      \"userHistory\",\n      \"last_place\",\n      \"interfaceLang\",\n      \"multiPanel\",\n      \"community\",\n      \"followRecommendations\",\n      \"trendingTopics\",\n      \"_siteSettings\",\n      \"_debug\"\n  ];\n  for (const element of dataPassedAsProps) {\n      if (element in props) {\n        Sefaria[element] = props[element];\n      }\n  }\n}\n\nSefaria.loadServerData = function(data){\n    // data parameter is optional. in the event it isn't passed, we assume that DJANGO_DATA_VARS exists as a global var\n    // data should but defined server-side and undefined client-side\n    //TODO: Can we get rid of this global scope thing?\n    if (typeof data === \"undefined\") {\n        data = typeof DJANGO_DATA_VARS === \"undefined\" ? undefined : DJANGO_DATA_VARS;\n    }\n    if (typeof data !== 'undefined') {\n        for (const [key, value] of Object.entries(data)) {\n            this[key] = value;\n        }\n    }\n};\n\n\nSefaria.util    = Util;\nSefaria.hebrew  = Hebrew;\nSefaria.track   = Track;\nSefaria.palette = palette;\n\nSefaria.palette.indexColor = function(title) {\n      return title && Sefaria.index(title) ?\n          Sefaria.index(title)['primary_category'] ?\n              Sefaria.palette.categoryColor(Sefaria.index(title)['primary_category']):\n                Sefaria.palette.categoryColor(Sefaria.index(title).categories[0]):\n          Sefaria.palette.categoryColor(\"Other\");\n};\nSefaria.palette.refColor = ref => Sefaria.palette.indexColor(Sefaria.parseRef(ref).index);\n\nSefaria = extend(Sefaria, Strings);\n\nSefaria.setup = function(data, props = null) {\n    Sefaria.loadServerData(data);\n    let baseProps = props !=null ? props : (typeof DJANGO_VARS === \"undefined\" ? undefined : DJANGO_VARS.props);\n    Sefaria.unpackBaseProps(baseProps);\n    Sefaria.util.setupPrototypes();\n    Sefaria.util.setupMisc();\n    var cookie = Sefaria.util.handleUserCookie(Sefaria._uid);\n    // And store current uid in analytics id\n    Sefaria._analytics_uid = Sefaria._uid;\n    Sefaria._makeBooksDict();\n    Sefaria._cacheFromToc(Sefaria.toc);\n    Sefaria._cacheHebrewTerms(Sefaria.terms);\n    Sefaria._cacheSiteInterfaceStrings();\n    //console.log(`sending user logged in status to GA, uid as bool: ${!!Sefaria._uid} | analytics id: ${Sefaria._analytics_uid}`);\n    Sefaria.track.setUserData(!!Sefaria._uid, Sefaria._analytics_uid);\n    Sefaria.search = new Search(Sefaria.searchIndexText, Sefaria.searchIndexSheet);\n};\nSefaria.setup();\n\n\nexport default Sefaria;\n","import { useState, useEffect } from 'react';\nimport {\n\tInterfaceText,\n} from \"./Misc\"\nimport Sefaria  from './sefaria/sefaria';\n\n\nconst CollectionsModal = (props) => {\n  // A CollectionsWidget as a modal\n  const onClose = () => {\n    props.handleCollectionsChange && props.handleCollectionsChange();\n    props.close();\n  };\n  return <div className=\"collectionsModalBox\">\n    <div className=\"whiteOverlay\" onClick={onClose}></div>\n    <CollectionsWidget {...props} />\n  </div>\n};\n\n\nconst CollectionsWidget = ({sheetID, close, handleCollectionsChange}) => {\n  // A box that lets you control which of your collections `sheetID` belongs to\n  \n  const initialCollectionsSort = (cs, csSelected) => {\n    // When first opened, sort checked collections to top, but don't reshuffle when user clicks check of open modal\n    if (!cs || !csSelected) { return null; }\n    return cs.sort((a, b) => {\n      let aSel, bSel;\n      [aSel, bSel] = [a, b].map(x => !!csSelected.filter(y => y.slug === x.slug).length)\n      if (aSel == bSel) { return a.lastModified > b.lastModified ? -1 : 1; }\n      else { return aSel ? -1 : 1; }\n    });\n  };\n  const [collectionsSelected, setCollectionsSelected] = useState(Sefaria.getUserCollectionsForSheetFromCache(sheetID));\n  let initialCollections = Sefaria.getUserCollectionsFromCache(Sefaria._uid);\n  initialCollections = initialCollections ? initialCollectionsSort(initialCollections.slice(), collectionsSelected) : null;\n  const [collections, setCollections] = useState(initialCollections);\n  const [dataLoaded, setDataLoaded] = useState(!!collections && !!collectionsSelected);\n  const [newName, setNewName] = useState(\"\");\n  const [changed, setChanged] = useState(false);\n\n  // Make sure we have loaded the user's list of collections, \n  // and which collections this sheet belongs to for this user\n  useEffect(() => {\n    if (!dataLoaded) {\n      Promise.all([\n         Sefaria.getUserCollections(Sefaria._uid),\n         Sefaria.getUserCollectionsForSheet(sheetID)\n      ])\n     .then(() => {\n        const initialCollectionsSelected = Sefaria.getUserCollectionsForSheetFromCache(sheetID);\n        const initialSortedCollections = initialCollectionsSort(Sefaria.getUserCollectionsFromCache(Sefaria._uid), initialCollectionsSelected);\n        setCollections(initialSortedCollections);\n        setCollectionsSelected(initialCollectionsSelected);\n        setDataLoaded(true);\n      });\n    }\n  }, []);\n\n  const onCheckChange = (collection, checked) => {\n    // When a checkmark changes, add or remove this sheet from that collection\n    let url, newCollectionsSelected;\n    if (checked) {\n      newCollectionsSelected = [...collectionsSelected, collection];\n      url = `/api/collections/${collection.slug}/add/${sheetID}`;\n    } else {\n      newCollectionsSelected = collectionsSelected.filter(x => x.slug !== collection.slug);\n      url = `/api/collections/${collection.slug}/remove/${sheetID}`;\n    }\n\n    $.post(url, data => handleCollectionInclusionChange(data));\n    Sefaria._userCollectionsForSheet[sheetID] = newCollectionsSelected;\n    setCollectionsSelected(newCollectionsSelected);\n  };\n\n  const handleCollectionInclusionChange = (data) => {\n    // When a sheet has been added or removed, update collections list data in cache\n    let newCollections = Sefaria.getUserCollectionsFromCache(Sefaria._uid).filter(c => c.slug != data.collection.slug);\n    // Put the new collection first since it's just been modified\n    newCollections = [data.collectionListing, ...newCollections];\n    // Update in cache, but not in Component state -- prevents the list from jumping around\n    // while you're looking at it, but show this collection first next time you see the list.\n    Sefaria._userCollections[Sefaria._uid] = newCollections;\n    // Update cache for this collection's full listing, which has now changed\n    Sefaria._collections[data.collection.slug] = data.collection;\n    // Update sheet cache\n    Sefaria.sheets._loadSheetByID[sheetID] = data.sheet;\n    Sefaria.sheets.updateUserSheets(data.sheetListing, Sefaria._uid, true, true);\n    setChanged(true);\n  };\n\n  const onNameChange = event => setNewName(event.target.value);\n\n  const onCreateClick = () => {\n    const collection = {name: newName};\n    $.post(\"/api/collections\", {json: JSON.stringify(collection)}, (data) => {\n      if (\"error\" in data) {\n        alert(data.error);\n        return;\n      }\n      setNewName(\"\");\n      const newCollections = [data.collection, ...collections];\n      Sefaria._userCollections[Sefaria._uid] = newCollections;\n      setCollections(newCollections);\n      onCheckChange(data.collection, true);\n      handleCollectionsChange && handleCollectionsChange();\n    });\n  };\n\n  const onClose = () => {\n    if (changed && handleCollectionsChange) {\n      handleCollectionsChange();\n    }\n    close();\n  };\n\n  return <div className=\"collectionsWidget\">\n    <div className=\"collectionsWidgetTop\">\n      <span className={\"collectionsWidgetTitle\"}>\n        <InterfaceText>Collections</InterfaceText>\n      </span>\n      <div className=\"collectionsWidgetClose\" onClick={onClose}>×</div>\n    </div>\n    <div className=\"collectionsWidgetList serif\">\n      {!dataLoaded ? null :\n        collections.map((collection, i) => {\n        return <label className=\"checkmarkLabel\" key={i+collection.name}>\n          <input \n            type=\"checkbox\"\n            onChange={event => onCheckChange(collection, event.target.checked)}\n            checked={collectionsSelected.filter(x => x.slug === collection.slug).length ? \"checked\" : \"\"} />\n          <span className=\"checkmark\"></span>\n          {collection.name}\n        </label>\n      })}\n      {dataLoaded && collections.length == 0 ?\n        <span className={\"emptyMessage\"}>\n          <InterfaceText>\n            You can use collections to organize your sheets or public sheets you like. Collections can shared privately or made public on Sefaria.\n          </InterfaceText>\n        </span> : null }\n    </div>\n    <div className=\"collectionsWidgetCreate\">\n      <span className=\"collectionsWidgetPlus\">+</span>\n      <div className=\"collectionsWidgetCreateInputBox\">\n        <input className=\"collectionsWidgetCreateInput\" placeholder={Sefaria._(\"Create new collection\")} value={newName} onChange={onNameChange} />\n      </div>\n      {newName.length ?\n      <div className=\"button extraSmall white collectionsWidgetCreateButton\" onClick={onCreateClick}>\n        <InterfaceText>Create</InterfaceText>\n      </div>\n      : null}\n    </div>\n    <div className=\"collectionsWidgetDone\">\n       <div className=\"button large fillWidth\" onClick={onClose}>\n        <InterfaceText>Done</InterfaceText>\n      </div>     \n    </div>\n  </div>\n};\n\n\nexport {\n  CollectionsModal,\n  CollectionsWidget\n}","import React, { useContext, useEffect, useState } from \"react\";\n\nconst ContentLanguageContext = React.createContext({\n  language: \"english\",\n});\nContentLanguageContext.displayName = \"ContentLanguageContext\"; //This lets us see this name in the devtools\n\nconst AdContext = React.createContext({});\nAdContext.displayName = \"AdContext\";\n\nconst StrapiDataContext = React.createContext({});\nStrapiDataContext.displayName = \"StrapiDataContext\";\n\n// Gets data from a Strapi CMS instance to be used for displaying static content\nfunction StrapiDataProvider({ children }) {\n  const [dataFromStrapiHasBeenReceived, setDataFromStrapiHasBeenReceived] =\n    useState(false);\n  const [strapiData, setStrapiData] = useState(null);\n  const [modal, setModal] = useState(null);\n  const [banner, setBanner] = useState(null);\n  useEffect(() => {\n    if (STRAPI_INSTANCE) {\n      const getStrapiData = async () => {\n        let getDateWithoutTime = (date) => date.toISOString().split(\"T\")[0];\n        let getJSONDateStringInLocalTimeZone = (date) => {\n          let parts = getDateWithoutTime(date).split(\"-\");\n          return new Date(parts[0], parts[1] - 1, parts[2]).toJSON();\n        };\n        let [currentDate, twoWeeksAgo, twoWeeksFromNow] = Array(3)\n          .fill()\n          .map(() => {\n            return new Date();\n          });\n        twoWeeksFromNow.setDate(currentDate.getDate() + 14);\n        twoWeeksAgo.setDate(currentDate.getDate() - 14);\n        let startDate = getJSONDateStringInLocalTimeZone(twoWeeksAgo);\n        let endDate = getJSONDateStringInLocalTimeZone(twoWeeksFromNow);\n        // The GraphQL query has a filter for each content type to find instances that have start dates earlier than the present time\n        // Content type instances will be found that are one month within their start date. Their date range can't exceed one month\n        // There is no conflict resolution for overlapping timeframes\n        const query = `\n        query {\n          banners(\n            filters: {\n              bannerStartDate: { gte: \\\"${startDate}\\\" }\n              and: [{ bannerEndDate: { lte: \\\"${endDate}\\\" } }]\n            }\n          ) {\n            data {\n              id\n              attributes {\n                internalBannerName\n                bannerEndDate\n                bannerStartDate\n                bannerText\n                buttonText\n                buttonURL\n                showDelay\n                bannerBackgroundColor\n                createdAt\n                locale\n                localizations {\n                  data {\n                    attributes {\n                      locale\n                      buttonText\n                      buttonURL\n                      bannerText\n                    }\n                  }\n                }\n                publishedAt\n                shouldDeployOnMobile\n                showToNewVisitors\n                showToNonSustainers\n                showToReturningVisitors\n                showToSustainers\n                updatedAt\n              }\n            }\n          }\n          modals(\n            filters: {\n              modalStartDate: { gte: \\\"${startDate}\\\" }\n              and: [{ modalEndDate: { lte: \\\"${endDate}\\\" } }]\n            }\n          ) {\n            data {\n              id\n              attributes {\n                internalModalName\n                buttonText\n                buttonURL\n                showDelay\n                createdAt\n                locale\n                localizations {\n                  data {\n                    attributes {\n                      locale\n                      buttonText\n                      buttonURL\n                      modalHeader\n                      modalText\n                    }\n                  }\n                }\n                modalEndDate\n                modalStartDate\n                modalHeader\n                modalText\n                publishedAt\n                shouldDeployOnMobile\n                showToNewVisitors\n                showToNonSustainers\n                showToReturningVisitors\n                showToSustainers\n                updatedAt\n              }\n            }\n          }\n          sidebarAds(\n            filters: {\n              startTime: { gte: \\\"${startDate}\\\" }\n              and: [{ endTime: { lte: \\\"${endDate}\\\" } }]\n            }\n          ) {\n            data {\n              id\n              attributes {\n                buttonAboveOrBelow\n                title\n                bodyText\n                buttonText\n                buttonURL\n                buttonIcon {\n                  data {\n                    attributes {\n                      url\n                      alternativeText\n                    }\n                  }\n                }\n                createdAt\n                debug\n                endTime\n                hasBlueBackground\n                internalCampaignId\n                keywords\n                locale\n                localizations {\n                  data {\n                    attributes {\n                      locale\n                      title\n                      bodyText\n                      buttonText\n                      buttonURL\n                    }\n                  }\n                }\n                publishedAt\n                showTo\n                startTime\n                updatedAt\n              }\n            }\n          }\n        }\n        `;\n        const result = fetch(STRAPI_INSTANCE + \"/graphql\", {\n          method: \"POST\",\n          mode: \"cors\",\n          cache: \"no-cache\",\n          credentials: \"omit\",\n          headers: {\n            \"Content-Type\": \"application/json\",\n          },\n          redirect: \"follow\",\n          referrerPolicy: \"no-referrer\",\n          body: JSON.stringify({ query }),\n        })\n          .then((response) => {\n            if (!response.ok) {\n              throw new Error(`HTTP Error: ${response.statusText}`);\n            }\n            return response.json();\n          })\n          .then((result) => {\n            setStrapiData(result.data);\n            setDataFromStrapiHasBeenReceived(true);\n\n            // Decompose the modals and banners from the GraphQL query response for easier handling\n            let modals = result.data?.modals?.data;\n            let banners = result.data?.banners?.data;\n\n            let removeContentKeysFromLocalStorage = ({ prefix = \"\", except = \"\" } = {}) => {\n              let keysToRemove = [];\n              // Removing keys while iterating affects the length of localStorage\n              for (let i = 0; i < localStorage.length; i++) {\n                let key = localStorage.key(i);\n                if (\n                  key.startsWith(prefix) &&\n                  (except === \"\" || key !== prefix + except)\n                ) {\n                  keysToRemove.push(key);\n                }\n              }\n              keysToRemove.forEach((key) => {\n                localStorage.removeItem(key);\n              });\n            };\n\n            const currentDate = new Date();\n            if (modals?.length) {\n              // Only one modal can be displayed currently. The first one that matches will be the one shown\n              let modal = modals.find(\n                (modal) =>\n                  currentDate >= new Date(modal.attributes.modalStartDate) &&\n                  currentDate <= new Date(modal.attributes.modalEndDate)\n              );\n              if (modal) {\n                // Remove any other previous modals since there is potentially new modal to replace it\n                // However, do not remove the existing modal if the eligible one found is the same as the current one\n                removeContentKeysFromLocalStorage({\n                  prefix: \"modal_\",\n                  except: modal.attributes.internalModalName,\n                });\n\n                // Check if there is a Hebrew translation for the modal\n                if (modal.attributes.localizations?.data?.length) {\n                  let localization_attributes =\n                    modal.attributes.localizations.data[0].attributes;\n                  // Ignore the locale because only Hebrew is supported currently\n                  let { locale, ...hebrew_attributes } =\n                    localization_attributes;\n                  // Iterate over the localizable attributes in parallel to create an object compatible for use in an InterfaceText\n                  Object.keys(hebrew_attributes).forEach((attribute) => {\n                    modal.attributes[attribute] = {\n                      en: modal.attributes[attribute],\n                      he: hebrew_attributes[attribute],\n                    };\n                  });\n                  modal.attributes.locales = [\"en\", \"he\"];\n                } else {\n                  [\n                    \"modalHeader\",\n                    \"modalText\",\n                    \"buttonText\",\n                    \"buttonURL\",\n                  ].forEach((attribute) => {\n                    modal.attributes[attribute] = {\n                      en: modal.attributes[attribute],\n                      he: null,\n                    };\n                  });\n                  modal.attributes.locales = [\"en\"];\n                }\n                setModal(modal.attributes);\n              }\n            }\n\n            if (banners?.length) {\n              // Only one banner can be displayed currently. The first one that matches will be the one shown\n              let banner = banners.find(\n                (b) =>\n                  currentDate >= new Date(b.attributes.bannerStartDate) &&\n                  currentDate <= new Date(b.attributes.bannerEndDate)\n              );\n\n              if (banner) {\n                // Remove any other previous banner since there is potentially new modal to replace it\n                // However, do not remove the existing banner if the eligible one found is the same as the current one\n                removeContentKeysFromLocalStorage({\n                  prefix: \"banner_\",\n                  except: banner.attributes.internalBannerName,\n                });\n\n                // Check if there is a Hebrew translation\n                if (banner.attributes.localizations?.data?.length) {\n                  let localization_attributes =\n                    banner.attributes.localizations.data[0].attributes;\n                  // Get the hebrew attributes\n                  let { locale, ...hebrew_attributes } =\n                    localization_attributes;\n                  // Iterate over the localizable attributes in parallel to create an object compatible for use in an InterfaceText\n                  Object.keys(hebrew_attributes).forEach((attribute) => {\n                    banner.attributes[attribute] = {\n                      en: banner.attributes[attribute],\n                      he: hebrew_attributes[attribute],\n                    };\n                  });\n                  banner.attributes.locales = [\"en\", \"he\"];\n                } else {\n                  // TODO: Make the GraphQL query return nilable attributes so the attributes (just their keys) can be iterated over within the localization object\n                  [\"bannerText\", \"buttonText\", \"buttonURL\"].forEach(\n                    (attribute) => {\n                      banner.attributes[attribute] = {\n                        en: banner.attributes[attribute],\n                        he: null,\n                      };\n                    }\n                  );\n                  banner.attributes.locales = [\"en\"];\n                }\n                setBanner(banner.attributes);\n              }\n            }\n          })\n          .catch((error) => {\n            console.error(\"Failed to get strapi data: \", error);\n          });\n      };\n      getStrapiData();\n    }\n  }, []);\n\n  return (\n    <StrapiDataContext.Provider\n      value={{\n        dataFromStrapiHasBeenReceived,\n        strapiData, // All the data returned from the GraphQL query is here but only Promotions uses it in this current state\n        modal,\n        banner,\n      }}\n    >\n      {children}\n    </StrapiDataContext.Provider>\n  );\n}\n\nexport {\n  ContentLanguageContext,\n  AdContext,\n  StrapiDataProvider,\n  StrapiDataContext,\n};\n","import React, {useState, useEffect, useMemo, useCallback, useRef, useContext} from 'react';\nimport $  from './sefaria/sefariaJquery';\nimport {ContentLanguageContext} from \"./context\";\nimport Sefaria from \"./sefaria/sefaria\";\n\n\nfunction useContentLang(defaultToInterfaceOnBilingual, overrideLanguage){\n    /* useful for determining language for content text while taking into account ContentLanguageContent and interfaceLang\n    * `overrideLanguage` a string with the language name (full not 2 letter) to force to render to overriding what the content language context says. Can be useful if calling object determines one langugae is missing in a dynamic way\n    * `defaultToInterfaceOnBilingual` use if you want components not to render all languages in bilingual mode, and default them to what the interface language is*/\n    const contentLanguage = useContext(ContentLanguageContext);\n    const languageToFilter = (defaultToInterfaceOnBilingual && contentLanguage.language === \"bilingual\") ? Sefaria.interfaceLang : (overrideLanguage ? overrideLanguage : contentLanguage.language);\n    const langShort = languageToFilter.slice(0,2);\n    return [languageToFilter, langShort];\n}\n\n//From https://usehooks.com/useDebounce/\nfunction useDebounce(value, delay) {\n  // State and setters for debounced value\n  const [debouncedValue, setDebouncedValue] = useState(value);\n\n  useEffect(\n    () => {\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      // This is how we prevent debounced value from updating if value is changed ...\n      // .. within the delay period. Timeout gets cleared and restarted.\n      return () => {\n        clearTimeout(handler);\n      };\n    },\n    [value, delay] // Only re-call effect if value or delay changes\n  );\n\n  return debouncedValue;\n}\n\n\nfunction useScrollToLoad({scrollableRef, url, setter, itemsPreLoaded=0, pageSize=20}) {\n  // Loads data from `url` and calls `setter` on the resulting data when `scrollableRef` scrolls\n  // close to its bottom. \n  // API endpoint must return an array of results and support params `skip` and `limit`.\n  // `itemsPreLoaded` counts the number of items already loaded, e.g. when some data was already available\n  // in the JS cache.  If `itemsPreLoaded` > 0, no initial API is made\n  // call will be made until scroll occurs, otherwise the size page is requeste immediately.\n  const [skip, setSkip] = useState(itemsPreLoaded);\n  const [loading, setLoading] = useState(false);\n  const [loadedToEnd, setLoadedToEnd] = useState(false);\n  const isFirstRender = useRef(true);\n\n  // Set a scroll handler that will update the value of `skip`.\n  useEffect(() => {\n    const $scrollable = $(scrollableRef.current);\n    const margin = 600;\n    const handleScroll = () => {\n      if (loadedToEnd || loading) { return; }\n      if ($scrollable.scrollTop() + $scrollable.innerHeight() + margin >= $scrollable[0].scrollHeight) {\n        setSkip(skip + pageSize);\n      }\n    };\n    $scrollable.on(\"scroll\", handleScroll);\n    return (() => {$scrollable.off(\"scroll\", handleScroll);})\n  }, [scrollableRef.current, loadedToEnd, skip, loading]);\n\n  // Load and set data whenever `skip` changes.\n  useEffect(() => {\n    if (isFirstRender.current && itemsPreLoaded > 10) {\n      return;\n    }\n    setLoading(true);\n    const nextUrl = url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + \"skip=\" + skip + \"&limit=\" + pageSize;\n    $.getJSON(nextUrl, (data) => {\n      setter(data);\n      if (data.length < pageSize) {\n        setLoadedToEnd(true);\n      }\n      setLoading(false);\n    });\n  }, [skip]);\n\n  useEffect(() => {\n    if (isFirstRender.current) {\n      isFirstRender.current = false;\n    }\n  }, [])\n}\n\n\nfunction usePaginatedScroll(scrollable_element_ref, url, setter, pagesPreLoaded = 0) {\n  // Fetches and sets data from `url` when user scrolls to the\n  // bottom of `scollable_element_ref`\n\n  const [page, setPage] = useState(pagesPreLoaded > 0 ? pagesPreLoaded - 1 : 0);\n  const [nextPage, setNextPage] = useState(pagesPreLoaded > 0 ? pagesPreLoaded : 1);\n  const [loadedToEnd, setLoadedToEnd] = useState(false);\n  const isFirstRender = useRef(true);\n\n  useEffect(() => {\n    const scrollable_element = $(scrollable_element_ref.current);\n    const margin = 600;\n    const handleScroll = () => {\n      if (loadedToEnd || (page === nextPage)) { return; }\n      if (scrollable_element.scrollTop() + scrollable_element.innerHeight() + margin >= scrollable_element[0].scrollHeight) {\n        setPage(nextPage);\n      }\n    };\n    scrollable_element.on(\"scroll\", handleScroll);\n    return (() => {scrollable_element.off(\"scroll\", handleScroll);})\n  }, [scrollable_element_ref.current, loadedToEnd, page, nextPage]);\n\n  useEffect(() => {\n    if (pagesPreLoaded > 0 && isFirstRender.current) { return; }\n    const paged_url = url + \"&page=\" + page;\n    $.getJSON(paged_url, (data) => {\n      setter(data);\n      if (data.count < data.page_size) {\n        setLoadedToEnd(true);\n      } else {\n        setNextPage(page + 1);\n      }\n    });\n  }, [page]);\n\n  useEffect(() => {\n    if (isFirstRender.current) {\n      isFirstRender.current = false;\n    }\n  }, [])\n}\n\n\nfunction usePaginatedDisplay(scrollable_element_ref, input, pageSize, bottomMargin, initialRenderSize) {\n  /*\n  Listens until user is scrolled within `bottomMargin` of `scrollable_element_ref`\n  when this happens, show `pageSize` more elements from `input`.\n  On initial run, return `initialRenderSize` items if greater than `pageSize`.\n  */\n  initialRenderSize = Math.max(initialRenderSize, pageSize);\n  bottomMargin = bottomMargin || 800;\n  const [page, setPage] = useState(parseInt(initialRenderSize/pageSize)-1);\n  const [loadedToEnd, setLoadedToEnd] = useState(false);\n  const [inputUpToPage, setInputUpToPage] = useState(input.slice(0, initialRenderSize));\n  useEffect(() => () => {\n    setInputUpToPage(prev => {\n      // use `setInputUpToPage` to get access to previous value\n      // input changes because of useIncrementalLoad even though inputUpToPage may not change\n      // as long as inputUpToPage is the same element by element, dont reset page to 0\n      if (!inputUpToPage && !!prev) { setPage(0); }\n      else if (!inputUpToPage.elementsAreEqual(prev)) { setPage(0); }\n      return prev;\n    });\n    setLoadedToEnd(false);\n  }, [scrollable_element_ref && scrollable_element_ref.current, input]);\n  const numPages = useMemo(() => Math.ceil(input.length/pageSize), [input, pageSize]);\n  useEffect(() => {\n    if (!scrollable_element_ref) { return; }\n    const scrollable_element = $(scrollable_element_ref.current);\n    const handleScroll = () => {\n      if (loadedToEnd) { return; }\n      if (scrollable_element.scrollTop() + scrollable_element.innerHeight() + bottomMargin >= scrollable_element[0].scrollHeight) {\n        setPage(prevPage => prevPage + 1);\n      }\n    };\n    scrollable_element.on(\"scroll\", handleScroll);\n    return () => {\n      scrollable_element.off(\"scroll\", handleScroll);\n    }\n  }, [scrollable_element_ref && scrollable_element_ref.current, loadedToEnd]);\n  useEffect(() => {\n    setInputUpToPage(prev => {\n      // decide whether or not inputUpToPage has changed. if it's the same element-by-element to `prev`, return `prev`\n      const next = input.slice(0, pageSize*(page+1));\n      if (!next.elementsAreEqual(prev)) { return next; }\n      return prev;\n    });\n  }, [page, input, pageSize]);\n  useEffect(() => {\n    if (page >= numPages) { setLoadedToEnd(true); }\n  }, [page, numPages]);\n  return inputUpToPage;\n}\n\n\nfunction useIncrementalLoad(fetchData, input, pageSize, setter, identityElement, resetValue=false) {\n  /*\n  Loads all items in `input` in `pageSize` chunks.\n  Each input chunk is passed to `fetchData`\n  fetchData: (data) => Promise(). Takes subarray from `input` and returns promise.\n  input: array of input data for `fetchData`\n  pageSize: int, chunk size\n  setter: (data) => null. Sets paginated data on component.  setter(false) clears data.\n  identityElement: a string identifying a invocation of this effect.  When it changes, pagination and processing will restart.  Old calls in processes will be dropped on landing.\n  resetValue: value to pass to `setter` to indicate that it should forget previous values and reset.\n  */\n\n  // When input changes, creates function to fetch data by page, computes number of pages\n  const [fetchDataByPage, numPages] = useMemo(() => {\n    const fetchDataByPage = (page) => {\n      if (!input) { return Promise.reject({error: \"input not array\", input}); }\n      const pagedInput = input.slice(page*pageSize, (page+1)*pageSize);\n      return fetchData(pagedInput);\n    };\n    const numPages = Math.ceil(input.length/pageSize);\n    return [fetchDataByPage, numPages];\n  }, [input]);\n\n  usePaginatedLoad(fetchDataByPage, setter, identityElement, numPages, resetValue);\n}\n\n\nfunction usePaginatedLoad(fetchDataByPage, setter, identityElement, numPages, resetValue=false) {\n  /*\n  See `useIncrementalLoad` docs\n  */\n\n  const [page, setPage] = useState(0);\n  const [isCanceled, setCanceled] = useState({});    // dict {idElem: Bool}\n  const [valueQueue, setValueQueue] = useState(null);\n\n  // When identityElement changes:\n  // Set current identityElement to not canceled\n  // Sets previous identityElement to canceled.\n  //    Removes old items by calling setter(false);\n  //    Resets page to 0\n  useEffect(() => {\n      setCanceled(d => { d[identityElement] = false; return Object.assign({}, d);});\n      return () => {\n        setCanceled(d => { d[identityElement] = true; return Object.assign({}, d);});\n        setter(resetValue);\n        setPage(0);\n  }}, [identityElement]);\n\n  const fetchPage = useCallback(() => fetchDataByPage(page), [page, fetchDataByPage]);\n\n  // make sure value setting callback and page procession get short circuited when id_elem has been canceled\n  // clear value queue on success\n  const setResult = useCallback((id_elem, val) => {\n            if (isCanceled[id_elem]) { setValueQueue(null); return; }\n            setter(val);\n            setValueQueue(null);\n            if (page === numPages - 1 || numPages === 0) { return; }\n            setPage(prevPage => prevPage + 1);\n        }, [isCanceled, setter, numPages, page, identityElement]);\n\n  // Make sure that current value is processed with latest setResult function\n  // if this is called from within the fetchPage effect, it will have stale canceled data\n  useEffect(() => {\n    if(valueQueue) {\n      setResult(...valueQueue);\n    }\n  }, [valueQueue, setResult]);\n\n  // Put value returned and originating identity element into value queue\n  useEffect(() => {\n      fetchPage()\n        .then((val, err) => setValueQueue([identityElement, val]));\n  }, [fetchPage]);\n}\n\n\nexport {\n  useScrollToLoad,\n  usePaginatedScroll,\n  usePaginatedDisplay,\n  useDebounce,\n  useContentLang,\n  useIncrementalLoad,\n};\n","import React from \"react\";\nimport {useContentLang} from './Hooks';\nimport Sefaria from './sefaria/sefaria';\nimport ReactMarkdown from \"react-markdown\";\n\nconst ContentText = (props) => {\n   /* Renders content language throughout the site (content that comes from the database and is not interface language).\n   * Gets the active content language from Context and returns only the appropriate child(ren) for given language\n   * text {{text: object}} a dictionary {en: \"some text\", he: \"some translated text\"} to use for each language\n   * markdown {{markdown: object}} a dictionary {en: \"some text\", he: \"some translated text\"} to use for each language in the case where text contains markdown\n   * html {{html: object}} a dictionary {en: \"some html\", he: \"some translated html\"} to use for each language in the case where it needs to be dangerously set html\n   * overrideLanguage a string with the language name (full not 2 letter) to force to render to overriding what the content language context says. Can be useful if calling object determines one langugae is missing in a dynamic way\n   * defaultToInterfaceOnBilingual use if you want components not to render all languages in bilingual mode, and default them to what the interface language is\n   * bilingualOrder is an array of short language notations (e.g. [\"he\", \"en\"]) meant to tell the component what\n   * order to return the bilingual langauage elements in (as opposed to the unguaranteed order by default).\n   */\n   const langAndContentItems = _filterContentTextByLang(props);\n   return langAndContentItems.map(item => <ContentSpan lang={item[0]} content={item[1]} isHTML={!!props.html} markdown={props.markdown}/>);\n};\n\nconst VersionContent = (props) => {\n  /* Used to render content of Versions.\n  * imageLoadCallback is called to update segment numbers placement\n  * overrideLanguage a string with the language name (full not 2 letter) to force to render to overriding what the content language context says. Can be useful if calling object determines one langugae is missing in a dynamic way\n  * defaultToInterfaceOnBilingual use if you want components not to render all languages in bilingual mode, and default them to what the interface language is\n  * See filterContentTextByLang for more documentation */\n  const langAndContentItems = _filterContentTextByLang(props);\n  const [languageToFilter, _] = useContentLang(props.defaultToInterfaceOnBilingual, props.overrideLanguage);\n  return langAndContentItems.map((item) => {\n      const [lang, content] = item;\n      if (Sefaria.isFullSegmentImage(content)){\n        return(<VersionImageSpan lang={lang} content={content} languageToFilter={languageToFilter} imageLoadCallback={props.imageLoadCallback}/>);\n      }\n      return (<ContentSpan lang={lang} content={content} isHTML={true}/>);\n  })\n}\n\nconst VersionImageSpan = ({lang, content, languageToFilter, imageLoadCallback}) => {\n    function getImageAttribute(imgTag, attribute) {\n      const parser = new DOMParser();\n      const doc = parser.parseFromString(imgTag, 'text/html');\n      const imgElement = doc.querySelector('img');\n\n      if (imgElement) {\n        return imgElement.getAttribute(attribute);\n      }\n\n      return null;\n    }\n    const altText = getImageAttribute(content, 'alt');\n    const srcText = getImageAttribute(content, 'src');\n    content = (<div className=\"image-in-text\">{<img onLoad={imageLoadCallback} src={srcText} alt={altText}/>}<p className=\"image-in-text-title\">{altText}</p></div>);\n    if (lang === 'he' && languageToFilter === \"bilingual\") {content = ''}\n\n    return(<span className={`contentSpan ${lang}`} lang={lang} key={lang}>{content}</span>)\n};\n\nconst _filterContentTextByLang = ({text, html, markdown, overrideLanguage, defaultToInterfaceOnBilingual=false, bilingualOrder = null}) => {\n  /**\n   See ContentText for documentation\n   */\n  const contentVariable = html || markdown || text;  // assumption is `markdown` or `html` are preferred over `text` if they are present\n  const [languageToFilter, langShort] = useContentLang(defaultToInterfaceOnBilingual, overrideLanguage);\n  let langAndContentItems = Object.entries(contentVariable);\n  if(languageToFilter === \"bilingual\"){\n    if(bilingualOrder !== null){\n      //nifty function that sorts one array according to the order of a second array.\n      langAndContentItems.sort(function(a, b){\n        return bilingualOrder.indexOf(a[0]) - bilingualOrder.indexOf(b[0]);\n      });\n    }\n  }else{\n    langAndContentItems = langAndContentItems.filter(([lang, _])=>{\n      return lang === langShort;\n    });\n  }\n  return langAndContentItems;\n}\n\nconst ContentSpan = ({lang, content, isHTML, markdown}) => {\n  return isHTML ?\n          <span className={`contentSpan ${lang}`} lang={lang} key={lang} dangerouslySetInnerHTML={{__html: content}}/>\n          : markdown ? <span className={`contentSpan ${lang}`} lang={lang} key={lang}>\n                         <ReactMarkdown className={'reactMarkdown'} unwrapDisallowed={true} disallowedElements={['p']}>{content}</ReactMarkdown>\n                       </span>\n          : <span className={`contentSpan ${lang}`} lang={lang} key={lang}>{content}</span>;\n}\n\nexport {ContentText, VersionContent};\n","import React, {useRef, useState} from \"react\";\nimport Sefaria from \"./sefaria/sefaria\";\nimport {AdminToolHeader, InterfaceText, TitleVariants} from \"./Misc\";\nimport sanitizeHtml  from 'sanitize-html';\nimport classNames from \"classnames\";\nconst options_for_form = {\n    // \"Picture\": {label: \"Picture\", field: \"picture\", placeholder: \"Add a picture.\", type: \"picture\"},\n    \"English Caption\": {label: \"English Caption\", field: \"enImgCaption\", placeholder: \"Add a caption for topic picture\"},\n    \"Hebrew Caption\": {label: \"Hebrew Caption\", field: \"heImgCaption\", placeholder: \"Add a Hebrew caption for topic picture\"},\n    \"Title\": {label: \"Title\", field: \"enTitle\", placeholder: \"Add a title.\"},\n    \"Hebrew Title\": {label: \"Hebrew Title\", field: \"heTitle\", placeholder: \"Add a title.\"},\n    \"English Description\": {\n        label: \"English Description\",\n        field: \"enDescription\",\n        placeholder: \"Add a description.\",\n        type: 'textarea',\n        markdown: true,\n    },\n    \"Hebrew Description\": {\n        label: \"Hebrew Description\",\n        field: \"heDescription\",\n        placeholder: \"Add a description.\",\n        type: 'textarea',\n        markdown: true\n    },\n    \"Prompt\": {label: \"Prompt\", field: \"prompt\", placeholder: \"Add a prompt.\", type: 'textarea'},\n    \"English Short Description\": {\n        label: \"English Short Description for Table of Contents\", field: \"enCategoryDescription\",\n        placeholder: \"Add a short description.\", type: 'input'\n    },\n    \"Hebrew Short Description\": {\n        label: \"Hebrew Short Description for Table of Contents\", field: \"heCategoryDescription\",\n        placeholder: \"Add a short description.\", type: 'input'\n    },\n    \"English Alternate Titles\": {\n        label: \"English Alternate Titles\", field: \"enAltTitles\",\n        placeholder: \"Add a title.\", type: 'title variants'\n    },\n    \"Hebrew Alternate Titles\": {\n        label: \"Hebrew Alternate Titles\", field: \"heAltTitles\",\n        placeholder: \"Add a title.\", type: 'title variants'\n    },\n    \"Birth Place\": {\n        label: \"Place of Birth\", field: \"birthPlace\", placeholder: \"Place of birth\", type: 'input'\n    },\n    \"Hebrew Birth Place\": {\n        label: \"Hebrew Place of Birth\", field: \"heBirthPlace\", placeholder: \"Place of birth\", type: 'input'\n    },\n    \"Place of Death\": {\n        label: \"Place of Death\", field: \"deathPlace\", placeholder: \"Place of death\", type: 'input'\n    },\n    \"Hebrew Place of Death\": {\n        label: \"Hebrew Place of Death\", field: \"heDeathPlace\", placeholder: \"Place of death\", type: 'input'\n    },\n    \"Birth Year\": {\n        label: \"Year of Birth\", field: \"birthYear\", placeholder: \"Year of birth\", type: 'input'\n    },\n    \"Death Year\": {\n        label: \"Year of Death\", field: \"deathYear\", placeholder: \"Year of death\", type: 'input'\n    },\n    \"Era\": {\n        label: \"Era (GN/Gaonim, RI/Rishonim, AH/Achronim, CO/Contemporary)\", field: \"era\", placeholder: \"Choose an era\", type: 'dropdown',\n        dropdown_data: Sefaria._eras\n    }\n}\n    \nconst AdminEditorButton = ({toggleAddingTopics, text, top=false, bottom=false}) => {\n    const classes = classNames({button: 1, extraSmall: 1, topic: 1, top, bottom});\n    return <div onClick={toggleAddingTopics}\n                id=\"editTopic\"\n                className={classes}\n                role=\"button\">\n        <InterfaceText>{text}</InterfaceText>\n    </div>;\n}\n\nfunction useEditToggle() {\n  const [editingBool, toggleEditingBool] = useState(false);\n  const toggleAddingTopics = function(e) {\n      if (e.currentTarget.id === \"editTopic\") {\n        toggleEditingBool(true);\n      }\n      else if(e.currentTarget.id === \"cancel\") {\n        toggleEditingBool(false);\n     }\n  }\n  return [editingBool, toggleAddingTopics];\n}\n\nconst validateMarkdownLinks = async (input) => {\n    const regexp = /\\[.*?\\]\\((.*?)\\)/g;\n    const matches = [...input.matchAll(regexp)];\n    const matches_without_duplicates = Array.from(new Set(matches));\n    for (const match of matches_without_duplicates) {\n        const url = match[1];\n        const name = url.split(\"/\").slice(-1)[0];\n        let namesFound = [];\n        let d = [];\n        if (url.startsWith(\"/topics\")) {\n            d = await Sefaria.getTopicCompletions(name, (x) => x[1]);\n        }\n        else {\n            d = await Sefaria.getName(name, false);\n            if (d.is_ref) {\n                continue;\n            }\n            d = d.completion_objects;\n        }\n        d.forEach((x) => {\n            Array.isArray(x.key) ?\n                x.key.forEach((y) => namesFound.push(y)) // the key is an array when getName returns a TocCategory\n                : namesFound.push(x.key);\n        });\n        const validLink = namesFound.includes(name) > 0 ? true :\n            confirm(`${name} not found in Sefaria database.  Please confirm that you meant to write '${url}' in the description.`);\n        if (!validLink) {\n            return false;\n        }\n    }\n    return true;\n}\n\nconst AdminEditor = ({title, data, close, catMenu, pictureUploader, updateData, savingStatus,\n                             validate, deleteObj, items = [], isNew = true,\n                             extras = [], path = []}) => {\n    const [validatingLinks, setValidatingLinks] = useState(false);\n    const setInputValue = (e) => {\n        if (data.hasOwnProperty(e.target.id)) {\n            data[e.target.id] = sanitizeHtml(e.target.value, {allowedTags: [], disallowedTagsMode: 'discard'});\n        }\n        updateData({...data});\n    }\n    const handleTitleVariants = (newTitles, field) => {\n        const newData = {...data};\n        newData[field] = newTitles.map(x => Object.assign({}, x));\n        updateData(newData);\n    }\n    const preprocess = async () => {\n        setValidatingLinks(true);\n        for (const x of items) {\n            if (options_for_form[x]?.markdown) {\n                const field = options_for_form[x].field;\n                const valid_tags = await validateMarkdownLinks(data[field]);\n                if (!valid_tags) {\n                    setValidatingLinks(false);\n                    return false;\n                }\n            }\n        }\n        validate();\n        setValidatingLinks(false);\n    }\n    const getDropdown = (field, dropdown_data, placeholder) => {\n        const chooseCat = <option key={`chooseCategory_${field}`} value={data.origEra}\n                            selected={!dropdown_data.includes(data[field])}>{placeholder}</option>;\n        return <div id={`dropdown_${field}`} className=\"categoryChooserMenu\">\n                          <select key={field} id={field} onChange={setInputValue}>\n                              {chooseCat}\n                              {dropdown_data.map(x =>\n                                  <option key={`${field}_${x}`}\n                                          value={x}\n                                          selected={data[field] === x}>{x}</option>)}\n                          </select>\n                        </div>;\n    }\n    const item = ({label, field, placeholder, type, dropdown_data}) => {\n        let obj;\n        switch(type) {\n            case 'dropdown':\n                obj = getDropdown(field, dropdown_data, placeholder);\n                break;\n            case 'title variants':\n                const titles = data[field];\n                obj = <TitleVariants update={(newTitles) => handleTitleVariants(newTitles, field)} titles={titles} id={field}/>;\n                break;\n            case 'textarea':\n                obj = <textarea className=\"default\" id={field} onChange={setInputValue} defaultValue={data[field]}\n                         placeholder={Sefaria._(placeholder)}/>;\n                break;\n            default:\n                const inputType = field.includes('Year') ? 'number' : 'text';\n                obj = <input type={inputType} id={field} onChange={setInputValue} defaultValue={data[field]}\n                         placeholder={Sefaria._(placeholder)}/>;\n        }\n\n        return <div className=\"section\">\n                    <label><InterfaceText>{label}</InterfaceText></label>\n                    {obj}\n               </div>;\n    }\n    const confirmDelete = () => {\n        if (confirm(\"Are you sure you want to delete?\")) {\n            deleteObj();\n        }\n    }\n    \n    return <div className=\"editTextInfo\">\n        <div className=\"static\">\n            <div className=\"inner\">\n                {(savingStatus || validatingLinks) &&\n                <div className=\"collectionsWidget\">{Sefaria._(\"Saving...\")}</div>}\n                <div id=\"newIndex\">\n                    <AdminToolHeader title={title} close={close} validate={preprocess}/>\n                    {items.map((x) => {\n                        if (x.includes(\"Hebrew\") && (!Sefaria._siteSettings.TORAH_SPECIFIC)) {\n                            return null;\n                        } else if (x === \"Category Menu\") {\n                            return catMenu;\n                        } else if (x === \"Picture Uploader\") {\n                            return pictureUploader;\n                        }\n                        else {\n                            return item({...options_for_form[x]});\n                        }\n                    })}\n                    {extras}\n                    {!isNew &&\n                    <div onClick={confirmDelete} id=\"deleteTopic\" className=\"button small deleteTopic\" tabIndex=\"0\"\n                         role=\"button\">\n                        <InterfaceText>Delete</InterfaceText>\n                    </div>}\n\n                </div>\n            </div>\n        </div>\n    </div>\n}\n\nexport {AdminEditor, AdminEditorButton, useEditToggle, validateMarkdownLinks};\n","import {CategoryChooser, InterfaceText, ToggleSet} from \"./Misc\";\nimport Sefaria from \"./sefaria/sefaria\";\nimport $ from \"./sefaria/sefariaJquery\";\nimport {AdminEditor} from \"./AdminEditor\";\nimport {requestWithCallBack, AdminToolHeader} from \"./Misc\";\nimport React, {useState, useRef} from \"react\";\n\nconst displayOptionForSources = (child) => {\n    if (Sefaria.interfaceLang === 'english') {\n        return child?.descriptions?.en ? `${child?.descriptions?.en?.title} - ${child.ref}` : child.ref;\n    }\n    else {\n        const refInCache = Sefaria.getRefFromCache(child.ref);\n        const displayRef = refInCache ? refInCache.heRef : child.ref;\n        return child?.descriptions?.he ? `${child?.descriptions?.he?.title} - ${displayRef}` : displayRef;\n    }\n}\nconst displayOptions = {\"cats\": (child) => child.title || child.category,\n                        \"topics\": (child) => child.en,\n                        \"sources\": (child) => displayOptionForSources(child)};\nconst Reorder = ({subcategoriesAndBooks, updateOrder, displayType, updateParentChangedStatus=null}) => {\n    const clickHandler = (dir, child) => {\n        const index = subcategoriesAndBooks.indexOf(child);\n        let index_to_swap = -1;\n        if (dir === 'down' && index < subcategoriesAndBooks.length - 1)\n        {\n            index_to_swap = index + 1;\n        }\n        else if (dir === 'up' && index > 0)\n        {\n            index_to_swap = index - 1;\n        }\n        if (index_to_swap >= 0) {\n            let temp = subcategoriesAndBooks[index_to_swap];\n            subcategoriesAndBooks[index_to_swap] = subcategoriesAndBooks[index];\n            subcategoriesAndBooks[index] = temp;\n            updateOrder([...subcategoriesAndBooks]);\n            if (updateParentChangedStatus) {\n                updateParentChangedStatus(true);\n            }\n        }\n    }\n\n    return subcategoriesAndBooks.map((child, i) => {\n        return <div id={`reorder-${i}`} className=\"reorderTool\">\n                    <div id=\"title\">{displayOptions[displayType](child)}</div>\n                    <img src=\"/static/img/arrow-up.png\" id=\"up\" onClick={() => clickHandler('up', child)}/>\n                    <img src=\"/static/img/arrow-down.png\" id=\"down\" onClick={() => clickHandler('down', child)}/>\n              </div>;\n        })\n}\n\nconst ReorderEditor = ({close, type=\"\", postURL=\"\", redirect=\"\", origItems = []}) => {\n    /*\n    Wrapper for Reorder that allows a full-screen view of `origItems` elements to be reordered.\n    This is currently used when admin edits the root of the topic TOC or category TOC, as well\n    as when an admin reorders sources.\n     */\n    const [tocItems, setTocItems] = useState(origItems);\n    const [savingStatus, setSavingStatus] = useState(false);\n    const [isChanged, setIsChanged] = useState(false);\n    const update = (newTocItems) => {\n        setTocItems(newTocItems);\n        setIsChanged(true);\n    }\n    const validate = () => {\n        if (!isChanged) {\n            alert(\"You haven't reordered the categories.\")\n        }\n        else {\n            save();\n        }\n    }\n    const save = () => {\n        setSavingStatus(true);\n        let postCategoryData = {};\n        if (type === \"cats\") {\n            // use displayOptions to map toc objects to titles of category/book\n            postCategoryData = {subcategoriesAndBooks: tocItems.map(x => displayOptions[\"cats\"](x)), path: []};\n        }\n        else if (type === \"topics\") {\n             postCategoryData = {topics: tocItems};\n        }\n        else if (type === 'sources') {\n            postCategoryData = {sources: tocItems};\n        }\n        requestWithCallBack({url: postURL, data: postCategoryData, setSavingStatus, redirect: () => window.location.href = redirect})\n    }\n    return <div className=\"editTextInfo\">\n            <div className=\"static\">\n                <div className=\"inner\">\n                    {savingStatus ?  <div className=\"collectionsWidget\">{Sefaria._(\"Saving...\")}</div> : null}\n                    <div id=\"newIndex\">\n                        <AdminToolHeader title={\"Reorder Editor\"} close={close} validate={() => validate()}/>\n                        <Reorder subcategoriesAndBooks={tocItems} updateOrder={update} displayType={type}/>\n                    </div>\n                </div>\n            </div>\n    </div>\n}\n\nconst CategoryEditor = ({origData={}, close, origPath=[]}) => {\n    const [path, setPath] = useState(origPath);\n    const [data, setData] = useState({enTitle: origData.origEn,\n                                heTitle: origData.origHe || \"\", heDescription: origData?.origDesc?.he || \"\",\n                                enDescription: origData?.origDesc?.en || \"\",\n                                enCategoryDescription: origData?.origCategoryDesc?.en,\n                                heCategoryDescription: origData?.origCategoryDesc?.he});\n    const [isNew, setIsNew] = useState(origData?.origEn === \"\");\n    const [changed, setChanged] = useState(false);\n    const [savingStatus, setSavingStatus] = useState(false);\n    const [isPrimary, setIsPrimary] = useState(origData.isPrimary ? 'true' : 'false');\n    const origSubcategoriesAndBooks = useRef((Sefaria.tocItemsByCategories([...origPath, origData.origEn]) || []));\n    const [subcategoriesAndBooks, setSubcategoriesAndBooks] = useState([...origSubcategoriesAndBooks.current]);\n\n    const handlePrimaryClick = function(type, status) {\n        setIsPrimary(status);\n        setChanged(true);\n    }\n\n    const populateCatMenu = (update) => (\n        <div className=\"section\">\n            <label><InterfaceText>Parent Category</InterfaceText></label>\n            <CategoryChooser categories={path} update={update}/>\n        </div>\n    )\n\n    const updateCatMenu = function(newPath) {\n        if (newPath !== path && !changed) {\n            setChanged(true);\n        }\n        setPath(newPath);\n    }\n\n    let catMenu = populateCatMenu(updateCatMenu);\n\n    const updateData = function(newData) {\n        setChanged(true);\n        setData(newData);\n    }\n\n    const validate = async function () {\n        if (!changed) {\n            alert(\"Please change one of the fields before saving.\");\n            return false;\n        }\n\n        if (data.enTitle.length === 0) {\n          alert(Sefaria._(\"Title must be provided.\"));\n          return false;\n        }\n        await save();\n    }\n\n    const save = async function () {\n        setSavingStatus(true);\n        const fullPath = [...path, data.enTitle];\n        const origFullPath = [...origPath, origData.origEn];\n        let postCategoryData = {\n            \"isPrimary\": isPrimary === 'true',\n            \"enDesc\": data.enDescription,\n            \"heDesc\": data.heDescription,\n            \"enShortDesc\": data.enCategoryDescription,\n            \"heShortDesc\": data.heCategoryDescription,\n            \"heSharedTitle\": data.heTitle,\n            \"sharedTitle\": data.enTitle,\n            \"path\": fullPath\n        };\n\n        if (!Sefaria._siteSettings.TORAH_SPECIFIC) {\n            postCategoryData[\"heSharedTitle\"] = data.enTitle.slice(0, -1);  // there needs to be a hebrew title for the category's term\n        }\n\n        let url = `/api/category/${fullPath.join(\"/\")}`;\n        let urlParams = []\n        if (!isNew) {\n            urlParams.push(\"update=1\");\n            postCategoryData = {...postCategoryData, origPath: origFullPath};\n        }\n        const origSubcategoryTitles = origSubcategoriesAndBooks.current.map(displayOptions[\"cats\"]);\n        const newSubcategoryTitles = subcategoriesAndBooks.map(displayOptions[\"cats\"]);\n        const reordered = origSubcategoryTitles.some((val, index) => val !== newSubcategoryTitles[index]);\n        if (reordered && !isNew) {  // only reorder children when category isn't new\n            postCategoryData[\"subcategoriesAndBooks\"] = newSubcategoryTitles;\n            urlParams.push(\"reorder=1\");\n        }\n        if (urlParams.length > 0) {\n            url += `?${urlParams.join('&')}`;\n        }\n        requestWithCallBack({url, data: postCategoryData, setSavingStatus, redirect: () => window.location.href = \"/texts/\"+fullPath});\n    }\n\n\n    const deleteObj = function() {\n        if (subcategoriesAndBooks.length > 0) {\n            alert(\"Cannot delete a category with contents.\");\n            return;\n        }\n        const url = `/api/category/${origPath.concat(origData.origEn).join(\"/\")}`;\n        requestWithCallBack({url, type: \"DELETE\", redirect: () => window.location.href = `/texts`});\n    }\n    const primaryOptions = [\n                          {name: \"true\",   content: Sefaria._(\"True\"), role: \"radio\", ariaLabel: Sefaria._(\"Set Primary Status to True\") },\n                          {name: \"false\", content: Sefaria._(\"False\"), role: \"radio\", ariaLabel: Sefaria._(\"Set Primary Status to False\") },\n                        ];\n    const items = [\"Title\", \"Hebrew Title\", \"English Description\", \"Hebrew Description\",\n                    \"Category Menu\", \"English Short Description\", \"Hebrew Short Description\"];\n    return <div>\n        <AdminEditor title=\"Category Editor\" close={close} catMenu={catMenu} data={data} savingStatus={savingStatus}\n                validate={validate} deleteObj={deleteObj} updateData={updateData} isNew={isNew} items={items} path={path}\n                extras={\n                    [isNew ? null :\n                        <Reorder subcategoriesAndBooks={subcategoriesAndBooks} updateParentChangedStatus={setChanged}\n                                 updateOrder={setSubcategoriesAndBooks} displayType=\"cats\"/>,\n                         <div className=\"section\">\n                             <br/>\n                            <label>\n                            <InterfaceText>{Sefaria._(\"Primary Status (If true, this category will display its contents on its own category page.)\")}</InterfaceText>\n                            </label>\n                            <ToggleSet\n                              blueStyle={true}\n                              ariaLabel=\"Primary Status (If true, this category will display its contents on its own category page.)\"\n                              label=\"\"\n                              name=\"primary\"\n                              separated={false}\n                              options={primaryOptions}\n                              setOption={handlePrimaryClick}\n                              currentValue={isPrimary} />\n                         </div>,\n                        ]\n                }/>\n\n    </div>;\n}\n\nexport {CategoryEditor, ReorderEditor, Reorder};","import React, { useState, useContext, useEffect } from \"react\";\nimport { AdContext, StrapiDataProvider, StrapiDataContext } from \"./context\";\nimport classNames from \"classnames\";\nimport Sefaria from \"./sefaria/sefaria\";\nimport { OnInView } from \"./Misc\";\n\nconst Promotions = () => {\n  const [inAppAds, setInAppAds] = useState(Sefaria._inAppAds); // local cache\n  const [matchingAds, setMatchingAds] = useState(null); // match the ads to what comes from Strapi\n  const context = useContext(AdContext);\n  const strapi = useContext(StrapiDataContext);\n  useEffect(() => {\n    if (strapi.dataFromStrapiHasBeenReceived && Sefaria._siteSettings.TORAH_SPECIFIC) {\n      Sefaria._inAppAds = [];\n\n      const sidebarAds = strapi.strapiData?.sidebarAds?.data;\n      if (sidebarAds) {\n        sidebarAds.forEach((sidebarAd) => {\n          sidebarAd = sidebarAd.attributes;\n          console.log(JSON.stringify(sidebarAd, null, 2));\n          let keywordTargetsArray = sidebarAd.keywords\n            .split(\",\")\n            .map((x) => x.trim().toLowerCase());\n          let excludeKeywordTargets = keywordTargetsArray\n            .filter((x) => x[0] === \"!\")\n            .map((x) => x.slice(1));\n          keywordTargetsArray = keywordTargetsArray.filter((x) => x[0] !== \"!\");\n          Sefaria._inAppAds.push({\n            campaignId: sidebarAd.internalCampaignId,\n            title: sidebarAd.title,\n            bodyText: sidebarAd.bodyText,\n            buttonText: sidebarAd.buttonText,\n            buttonURL: sidebarAd.buttonURL,\n            buttonIcon: sidebarAd.buttonIcon,\n            buttonLocation: sidebarAd.buttonAboveOrBelow,\n            hasBlueBackground: sidebarAd.hasBlueBackground,\n            trigger: {\n              showTo: sidebarAd.showTo,\n              interfaceLang: \"english\",\n              startTimeDate: Date.parse(sidebarAd.startTime),\n              endTimeDate: Date.parse(sidebarAd.endTime),\n              keywordTargets: keywordTargetsArray,\n              excludeKeywordTargets: excludeKeywordTargets,\n            },\n            debug: sidebarAd.debug,\n          });\n          // Add a separate ad if there's a Hebrew translation. There can't be an ad with only Hebrew\n          if (sidebarAd.localizations?.data?.length) {\n            const hebrewAttributes = sidebarAd.localizations.data[0].attributes;\n            const [buttonText, bodyText, buttonURL, title] = [\n              hebrewAttributes.buttonText,\n              hebrewAttributes.bodyText,\n              hebrewAttributes.buttonURL,\n              hebrewAttributes.title,\n            ];\n            Sefaria._inAppAds.push({\n              campaignId: sidebarAd.internalCampaignId,\n              title: title,\n              bodyText: bodyText,\n              buttonText: buttonText,\n              buttonURL: buttonURL,\n              buttonIcon: sidebarAd.buttonIcon,\n              buttonLocation: sidebarAd.buttonAboveOrBelow,\n              hasBlueBackground: sidebarAd.hasBlueBackground,\n              trigger: {\n                showTo: sidebarAd.showTo,\n                interfaceLang: \"hebrew\",\n                startTimeDate: Date.parse(sidebarAd.startTime),\n                endTimeDate: Date.parse(sidebarAd.endTime),\n                keywordTargets: keywordTargetsArray,\n                excludeKeywordTargets: excludeKeywordTargets,\n              },\n              debug: sidebarAd.debug,\n            });\n          }\n        });\n        setInAppAds(Sefaria._inAppAds);\n      }\n    }\n  }, [strapi.dataFromStrapiHasBeenReceived]);\n  // dataFromStrapiHasBeenReceived will originally be null until that part is scheduled and executed\n  \n  useEffect(() => {\n    if (inAppAds) {\n      setMatchingAds(getCurrentMatchingAds());\n    }\n  }, [context, inAppAds]);\n\n\n  function showToUser(ad) {\n    if (ad.trigger.showTo === \"all\") {\n      return true;\n    } else if (ad.trigger.showTo === \"loggedIn\" && context.isLoggedIn) {\n      return true;\n    } else if (ad.trigger.showTo === \"loggedOut\" && !context.isLoggedIn) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  function showGivenDebugMode(ad) {\n    if (!ad.debug) {\n      return true;\n    } else if (context.isDebug == true) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  function getCurrentMatchingAds() {\n    // TODO: refine matching algorithm to order by matchingness?\n    return inAppAds.filter((ad) => {\n      return (\n        showToUser(ad) &&\n        showGivenDebugMode(ad) &&\n        ad.trigger.interfaceLang === context.interfaceLang &&\n        context.dt >= ad.trigger.startTimeDate &&\n        context.dt <= ad.trigger.endTimeDate &&\n        (context.keywordTargets.some((kw) =>\n          ad.trigger.keywordTargets.includes(kw)\n        ) ||\n          (ad.trigger.excludeKeywordTargets.length !== 0 &&\n            !context.keywordTargets.some((kw) =>\n              ad.trigger.excludeKeywordTargets.includes(kw)\n            )))\n      );\n    });\n  }\n\n  return matchingAds\n    ? matchingAds.map((ad) => (\n        <SidebarAd context={context} matchingAd={ad} key={ad.campaignId} />\n      ))\n    : null;\n};\n\nfunction trackSidebarAdImpression(ad) {\n  console.log(ad.campaignId + \" has been seen\");\n  gtag(\"event\", \"promo_viewed\", {\n    campaignID: ad.campaignId,\n    adType: \"sidebar\",\n  });\n}\n\nfunction trackSidebarAdClick(ad) {\n  gtag(\"event\", \"promo_clicked\", {\n    campaignID: ad.campaignId,\n    adType: \"sidebar\",\n  });\n}\n\n// Don't continuously rerender a SidebarAd if the parent component decides to rerender\n// This is done to prevent multiple views from registering from OnInView\nconst SidebarAd = React.memo(({ context, matchingAd }) => {\n  const classes = classNames({\n    sidebarPromo: 1,\n    blue: matchingAd.hasBlueBackground,\n  });\n\n  function getButton() {\n    return (\n      <a\n        className=\"button small\"\n        href={matchingAd.buttonURL}\n        onClick={() => trackSidebarAdClick(matchingAd)}\n      >\n        {matchingAd.buttonIcon?.data ? (\n          <img\n            // TODO: Create middleware to handle serving media assets to distinguish between different environments\n            // The absolute path is needed for debugging purposes to get the media asset from the local Strapi server\n            // The local Strapi instance provides a relative path through the API\n            src={(matchingAd.debug ? STRAPI_INSTANCE : '') + matchingAd.buttonIcon.data.attributes.url}\n            alt={matchingAd.buttonIcon.data.attributes.alternativeText}\n            aria-hidden=\"true\"\n          />\n        ) : null}\n        {matchingAd.buttonText}\n      </a>\n    );\n  }\n\n  return (\n    <OnInView onVisible={() => trackSidebarAdImpression(matchingAd)}>\n      <div className={classes}>\n        <h3\n          className={context.interfaceLang === \"hebrew\" ? \"int-he\" : \"int-en\"}\n        >\n          {matchingAd.title}\n        </h3>\n        {matchingAd.buttonLocation === \"below\" ? (\n          <>\n            <p\n              className={\n                context.interfaceLang === \"hebrew\" ? \"int-he\" : \"int-en\"\n              }\n            >\n              {matchingAd.bodyText}\n            </p>\n            {getButton()}\n          </>\n        ) : (\n          <>\n            {getButton()}\n            <p\n              className={\n                context.interfaceLang === \"hebrew\" ? \"int-he\" : \"int-en\"\n              }\n            >\n              {matchingAd.bodyText}\n            </p>\n          </>\n        )}\n      </div>\n    </OnInView>\n  );\n});\n\nexport { Promotions };\n","import React, {useState} from 'react';\nimport Sefaria from './sefaria/sefaria';\n\nexport function NewsletterSignUpForm({\n                                         contextName,\n                                         includeEducatorOption = true,\n                                         emailPlaceholder = {en: 'Sign up for Newsletter', he: \"הרשמו לניוזלטר\"},\n                                         subscribe=Sefaria.subscribeSefariaNewsletter,  // function which sends form data to API to subscribe\n                                     }) {\n    const [email, setEmail] = useState('');\n    const [firstName, setFirstName] = useState('');\n    const [lastName, setLastName] = useState('');\n    const [educatorCheck, setEducatorCheck] = useState(false);\n    const [subscribeMessage, setSubscribeMessage] = useState(null);\n    const [showNameInputs, setShowNameInputs] = useState(false);\n\n    function handleSubscribeKeyUp(e) {\n        if (e.keyCode === 13) {\n            handleSubscribe();\n        }\n    }\n\n    function handleSubscribe() {\n        if (showNameInputs === true) { // submit\n            if (firstName.length > 0 && lastName.length > 0) {\n                setSubscribeMessage(\"Subscribing...\");\n                subscribe(firstName, lastName, email, educatorCheck).then(res => {\n                    setSubscribeMessage(\"Subscribed! Welcome to our list.\");\n                    Sefaria.track.event(\"Newsletter\", \"Subscribe from \" + contextName, \"\");\n                }).catch(error => {\n                    setSubscribeMessage(error?.error || \"Sorry, there was an error.\");\n                    setShowNameInputs(false);\n                });\n            } else {\n                setSubscribeMessage(\"Please enter a valid first and last name\");// get he copy\n            }\n        } else if (Sefaria.util.isValidEmailAddress(email)) {\n            setShowNameInputs(true);\n        } else {\n            setShowNameInputs(false);\n            setSubscribeMessage(\"Please enter a valid email address.\");\n        }\n    }\n\n    return (\n        <div className=\"newsletterSignUpBox\">\n      <span className=\"int-en\">\n        <input\n            className=\"newsletterInput\"\n            placeholder={emailPlaceholder.en}\n            value={email}\n            onChange={e => setEmail(e.target.value)}\n            onKeyUp={handleSubscribeKeyUp}/>\n      </span>\n            <span className=\"int-he\">\n        <input\n            className=\"newsletterInput\"\n            placeholder={emailPlaceholder.he}\n            value={email}\n            onChange={e => setEmail(e.target.value)}\n            onKeyUp={handleSubscribeKeyUp}/>\n      </span>\n            {!showNameInputs ? <img src=\"/static/img/circled-arrow-right.svg\" onClick={handleSubscribe}/> : null}\n            {showNameInputs ?\n                <><span className=\"int-en\">\n        <input\n            className=\"newsletterInput firstNameInput\"\n            placeholder=\"First Name\"\n            value={firstName}\n            autoFocus\n            onChange={e => setFirstName(e.target.value)}\n            onKeyUp={handleSubscribeKeyUp}/>\n      </span>\n                    <span className=\"int-he\">\n        <input\n            className=\"newsletterInput firstNameInput\"\n            placeholder=\"שם פרטי\"\n            value={firstName}\n            onChange={e => setFirstName(e.target.value)}\n            onKeyUp={handleSubscribeKeyUp}/>\n      </span>\n                    <span className=\"int-en\">\n        <input\n            className=\"newsletterInput\"\n            placeholder=\"Last Name\"\n            value={lastName}\n            onChange={e => setLastName(e.target.value)}\n            onKeyUp={handleSubscribeKeyUp}/>\n      </span>\n                    <span className=\"int-he\">\n        <input\n            className=\"newsletterInput\"\n            placeholder=\"שם משפחה\"\n            value={lastName}\n            onChange={e => setLastName(e.target.value)}\n            onKeyUp={handleSubscribeKeyUp}/>\n      </span>\n                    {includeEducatorOption ?\n                        <EducatorCheckbox educatorCheck={educatorCheck} setEducatorCheck={setEducatorCheck}/> : null}\n                    <img src=\"/static/img/circled-arrow-right.svg\" onClick={handleSubscribe}/>\n                </>\n                : null}\n            {subscribeMessage ?\n                <div className=\"subscribeMessage\">{Sefaria._(subscribeMessage)}</div>\n                : null}\n        </div>\n    );\n}\n\n\nconst EducatorCheckbox = ({educatorCheck, setEducatorCheck}) => {\n    return (\n        <div className=\"newsletterEducatorOption\">\n          <span className=\"int-en\">\n            <input\n                type=\"checkbox\"\n                className=\"educatorNewsletterInput\"\n                checked={educatorCheck}\n                onChange={e => setEducatorCheck(!!e.target.checked)}/>\n            <span> I am an educator</span>\n          </span>\n            <span className=\"int-he\">\n            <input\n                type=\"checkbox\"\n                className=\"educatorNewsletterInput\"\n                checked={educatorCheck}\n                onChange={e => setEducatorCheck(!!e.target.checked)}/>\n            <span> מורים/ אנשי הוראה</span>\n          </span>\n        </div>\n    );\n};\n","import React, { useState, useEffect } from 'react';\nimport classNames  from 'classnames';\nimport Sefaria  from './sefaria/sefaria';\nimport {AppStoreButton, DonateLink, EnglishText, HebrewText, ImageWithCaption} from './Misc'\nimport {NewsletterSignUpForm} from \"./NewsletterSignUpForm\";\nimport {InterfaceText, ProfileListing, Dropdown} from './Misc';\nimport { Promotions } from './Promotions'\n\nconst NavSidebar = ({modules}) => {\n  return <div className=\"navSidebar sans-serif\">\n    {modules.map((m, i) =>\n      <Modules\n        type={m.type}\n        props={m.props || {}}\n        key={i} />\n    )}\n  </div>\n};\n\n\nconst Modules = ({type, props}) => {\n  // Choose the appropriate module component to render by `type`\n  const moduleTypes = {\n    \"AboutSefaria\":           AboutSefaria,\n    \"AboutContext\":           AboutContext,\n    \"Promo\":                  Promo,\n    \"Resources\":              Resources,\n    \"TheJewishLibrary\":       TheJewishLibrary,\n    \"AboutTextCategory\":      AboutTextCategory,\n    \"AboutText\":              AboutText,\n    \"SupportSefaria\":         SupportSefaria,\n    \"SupportJMC\":             SupportJMC,\n    \"SponsorADay\":            SponsorADay,\n    \"LearningSchedules\":      LearningSchedules,\n    \"Translations\":           Translations,\n    \"WeeklyTorahPortion\":     WeeklyTorahPortion,\n    \"DafYomi\":                DafYomi,\n    \"AboutTopics\":            AboutTopics,\n    \"TrendingTopics\":         TrendingTopics,\n    \"RelatedTopics\":          RelatedTopics,\n    \"TitledText\":             TitledText,\n    \"Visualizations\":         Visualizations,\n    \"JoinTheConversation\":    JoinTheConversation,\n    \"JoinTheCommunity\":       JoinTheCommunity,\n    \"GetTheApp\":              GetTheApp,\n    \"StayConnected\":          StayConnected,\n    \"AboutLearningSchedules\": AboutLearningSchedules,\n    \"AboutTranslatedText\":    AboutTranslatedText,\n    \"AboutCollections\":       AboutCollections,\n    \"ExploreCollections\":     ExploreCollections,\n    \"DownloadVersions\":       DownloadVersions,\n    \"WhoToFollow\":            WhoToFollow,\n    \"Image\":                  Image,\n    \"Wrapper\":                Wrapper,\n    \"PortalAbout\":            PortalAbout,\n    \"PortalMobile\":           PortalMobile,\n    \"PortalOrganization\":     PortalOrganization,\n    \"PortalNewsletter\":       PortalNewsletter,\n  };\n  if (!type) { return null; }\n  const ModuleType = moduleTypes[type];\n  return <ModuleType {...props} />\n};\n\n\nconst Module = ({children, blue, wide}) => {\n  const classes = classNames({navSidebarModule: 1, \"sans-serif\": 1, blue, wide});\n  return <div className={classes}>{children}</div>\n};\n\n\nconst ModuleTitle = ({children, en, he, h1}) => {\n  const content = children ?\n    <InterfaceText>{children}</InterfaceText>\n    : <InterfaceText text={{en, he}} />;\n\n  return h1 ?\n    <h1>{content}</h1>\n    : <h3>{content}</h3>\n};\n\n\nconst TitledText = ({enTitle, heTitle, enText, heText}) => {\n  return <Module>\n    <ModuleTitle en={enTitle} he={heTitle} />\n    <InterfaceText markdown={{en: enText, he: heText}} />\n  </Module>\n};\n\nconst Promo = () =>\n    <Module>\n        <Promotions adType=\"sidebar\"/>\n    </Module>\n;\n\nconst AboutContext = ({hideTitle}) => (\n    <Module>\n        {!hideTitle ?\n            <ModuleTitle h1={true}>A Living Library of the American Tradition</ModuleTitle> : null }\n        <p>\n            <span>\n                ContextUS is a project of the Jack Miller Center and powered by Sefaria. We are a nonprofit organization committed to improving public knowledge and preserving the American experiment.\n            </span>\n            <a href=\"/about\" className=\"inTextLink\">Learn More ›</a>\n        </p>\n    </Module>\n);\n\nconst AboutSefaria = ({hideTitle}) => (\n  <Module>\n    {!hideTitle ?\n    <ModuleTitle h1={true}>A Living Library of Torah</ModuleTitle> : null }\n    <InterfaceText>\n      <EnglishText>\n          Sefaria is home to 3,000 years of Jewish texts. We are a nonprofit organization offering free access to texts, translations,\n          and commentaries so that everyone can participate in the ongoing process of studying, interpreting, and creating Torah.\n        </EnglishText>\n        <HebrewText>\n          ספריא היא ביתם של 3,000 שנות ספרות יהודית.\n          אנו ארגון ללא מטרות רווח המציע גישה חופשית למקורות יהודיים, לתרגומים ולפרשנויות,\n          ומטרתנו לאפשר לכל אחד ואחת להשתתף בתהליך המתמשך של לימוד וחידוש בתורה.\n        </HebrewText>\n    </InterfaceText>\n    <a href=\"/about\" className=\"inTextLink\">\n      <InterfaceText>\n          <EnglishText>Learn More ›</EnglishText>\n          <HebrewText>לקריאה נוספת ›</HebrewText>\n      </InterfaceText>\n    </a>\n      {!hideTitle && <InterfaceText>\n          <EnglishText>\n            <a className=\"button get-start\" href=\"/sheets/210670\">\n                <img src=\"/static/icons/vector.svg\"/>\n                <div className=\"get-start\">\n                  Getting Started (2 min)\n                </div>\n            </a>\n          </EnglishText>\n          <HebrewText>\n            <a className=\"button get-start\" href=\"https://youtu.be/rCADxtqPqnw\">\n                <img src=\"/static/icons/vector.svg\"/>\n                <div className=\"get-start\">\n                  הכירו את ספריא (2 דק')\n                </div>\n            </a>\n          </HebrewText>\n      </InterfaceText>\n    }\n  </Module>\n);\n\n\nconst AboutTranslatedText = ({translationsSlug}) => {\n\n  const translationLookup = {\n    \"ar\": {title: \"نصوص يهودية بالعربية\", body: \"سفاريا هي موطن 3000 سنة من النصوص اليهودية. نحن منظمة غير ربحية تقدم وصولاً مجانيًا إلى النصوص والترجمات والتعليقات حتى يتمكن الجميع من المشاركة في العملية المستمرة لدراسة التوراة وتفسيرها وخلقها.\"},\n    \"de\": {title: \"Eine lebendige Bibliothek der Tora\", body: \"Sefaria ist eine Bibliothek für jüdische Texte aus 3.000 Jahren. Wir sind eine gemeinnützige Organisation, die freien Zugang zu Texten, Übersetzungen und Kommentaren bietet, damit jede und jeder am fortlaufenden Prozess des Studierens, Interpretierens und der Entwicklung der Tora teilnehmen kann.\"},\n    \"eo\": {title: \"Vivanta Biblioteko de Torao\", body: \"Sefaria estas hejmo de 3,000 jaroj da judaj tekstoj. Ni estas neprofitcela organizo ofertanta senpagan aliron al tekstoj, tradukoj kaj komentaĵoj por ke ĉiuj povu partopreni en la daŭra procezo de studado, interpretado kaj kreado de Torao.\"},\n    \"es\": {title: \"Una biblioteca viva de la Torá\", body: \"Sefaria alberga 3.000 años de textos judíos. Somos una organización sin fines de lucro que ofrece acceso gratuito a textos, traducciones y comentarios para que todos puedan participar en el proceso continuo de estudio, interpretación y creación de la Torá.\"},\n    \"fa\": {title:\"کتابخانه زنده تورات\", body: \"سفاریا خانه 3000 سال متون یهودی است. ما یک سازمان غیرانتفاعی هستیم که دسترسی رایگان به متون، ترجمه ها و تفسیرها را ارائه می دهیم تا همه بتوانند در روند مداوم مطالعه، تفسیر و ایجاد تورات شرکت کنند.\"},\n    \"fi\": {title: \"Tooran elävä kirjasto\", body: \"Sefaria on koti 3000 vuoden juutalaisille teksteille. Olemme voittoa tavoittelematon organisaatio, joka tarjoaa ilmaisen pääsyn teksteihin, käännöksiin ja kommentteihin, jotta kaikki voivat osallistua jatkuvaan Tooran opiskelu-, tulkkaus- ja luomisprosessiin.\"},\n    \"fr\": {title: \"Une bibliothèque vivante de la Torah\", body: \"Une bibliothèque de Torah vivante. Sefaria abrite 3 000 ans de textes juifs. Nous sommes une organisation à but non lucratif offrant un accès gratuit aux textes de la Torah, aux commentaires et aux traductions, afin que chacun puisse participer au processus infini de l'étude, de l'interprétation et de la création de la Torah.\"},\n    \"it\": {title: \"Una biblioteca vivente della Torah\", body: \"Sefaria ospita 3.000 anni di testi ebraici. Siamo un'organizzazione senza scopo di lucro che offre libero accesso a testi, traduzioni e commenti in modo che tutti possano partecipare al processo in corso di studio, interpretazione e creazione della Torah.\"},\n    \"pl\": {title: \"Żywa Biblioteka Tory\", body: \"Sefaria jest domem dla 3000 lat żydowskich tekstów. Jesteśmy organizacją nonprofit oferującą bezpłatny dostęp do tekstów, tłumaczeń i komentarzy, dzięki czemu każdy może uczestniczyć w bieżącym procesie studiowania, tłumaczenia i tworzenia Tory.\"},\n    \"pt\": {title: \"Uma Biblioteca Viva da Torá\", body: \"Sefaria é o lar de 3.000 anos de textos judaicos. Somos uma organização sem fins lucrativos que oferece acesso gratuito a textos, traduções e comentários para que todos possam participar do processo contínuo de estudo, interpretação e criação da Torá.\"},\n    \"ru\": {title: \"Живая библиотека Торы\", body: \"Сефария является домом для еврейских текстов 3000-летней давности. Мы — некоммерческая организация, предлагающая бесплатный доступ к текстам, переводам и комментариям, чтобы каждый мог участвовать в продолжающемся процессе изучения, толкования и создания Торы.\"},\n    \"yi\": {title: \"א לעבעדיקע ביבליאטעק פון תורה\", body: \"אין ספֿריאַ איז אַ היים פֿון 3,000 יאָר ייִדישע טעקסטן. מיר זענען אַ נאַן-נוץ אָרגאַניזאַציע וואָס אָפפערס פריי אַקסעס צו טעקסטן, איבערזעצונגען און קאָמענטאַרן אַזוי אַז אַלעמען קענען אָנטייל נעמען אין די אָנגאָינג פּראָצעס פון לערנען, ינטערפּריטיישאַן און שאפן תורה.\"}\n  }\n  return (\n  <Module>\n    <ModuleTitle h1={true}>{translationLookup[translationsSlug] ? \n          translationLookup[translationsSlug][\"title\"] : \"A Living Library of Torah\"}</ModuleTitle>\n        { translationLookup[translationsSlug] ? \n          translationLookup[translationsSlug][\"body\"] :\n          <InterfaceText>\n          <EnglishText>\n          Sefaria is home to 3,000 years of Jewish texts. We are a nonprofit organization offering free access to texts, translations,\n          and commentaries so that everyone can participate in the ongoing process of studying, interpreting, and creating Torah.\n        </EnglishText>\n        <HebrewText>\n          ספריא היא ביתם של 3,000 שנות ספרות יהודית.\n          אנו ארגון ללא מטרות רווח המציע גישה חופשית למקורות יהודיים, לתרגומים ולפרשנויות,\n          ומטרתנו לאפשר לכל אחד ואחת להשתתף בתהליך המתמשך של לימוד וחידוש בתורה.\n        </HebrewText>\n        </InterfaceText>\n        }\n  </Module>\n);\n}\n\n\nconst Resources = () => (\n  <Module>\n    <h3><InterfaceText context=\"ResourcesModule\">Resources</InterfaceText></h3>\n    <div className=\"linkList\">\n      <IconLink text=\"Mobile Apps\" url=\"/mobile\" icon=\"mobile.svg\" />\n      <IconLink text=\"Create with Sefaria\" url=\"/sheets\" icon=\"sheet.svg\" />\n      <IconLink text=\"Collections\" url=\"/collections\" icon=\"collection.svg\" />\n      <IconLink text=\"Teach with Sefaria\" url=\"/educators\" icon=\"educators.svg\" />\n      <IconLink text=\"Visualizations\" url=\"/visualizations\" icon=\"visualizations.svg\" />\n      <IconLink text=\"Torah Tab\" url=\"/torah-tab\" icon=\"torah-tab.svg\" />\n      <IconLink text=\"Help\" url=\"/help\" icon=\"help.svg\" />\n    </div>\n  </Module>\n);\n\n\nconst TheJewishLibrary = ({hideTitle}) => (\n  <Module>\n    {!hideTitle ?\n    <ModuleTitle>The Jewish Library</ModuleTitle> : null}\n    <InterfaceText>The tradition of Torah texts is a vast, interconnected network that forms a conversation across space and time. The five books of the Torah form its foundation, and each generation of later texts functions as a commentary on those that came before it.</InterfaceText>\n  </Module>\n);\n\nconst SupportJMC = ({blue}) => (\n    <Module blue={blue}>\n        <ModuleTitle>Support ContextUS</ModuleTitle>\n        <InterfaceText>ContextUS is an open source, non-profit project. Support us by making a tax-deductible donation.</InterfaceText>\n        <br />\n        <DonateLink classes={\"button small\" + (blue ? \" white\" : \"\")} source={\"NavSidebar / SupportJMC\"}>\n            <img src=\"/static/img/heart.png\" alt=\"donation icon\" />\n            <InterfaceText>Make a Donation</InterfaceText>\n        </DonateLink>\n    </Module>\n);\n\nconst SupportSefaria = ({blue}) => (\n  <Module blue={blue}>\n    <ModuleTitle>Support Sefaria</ModuleTitle>\n    <InterfaceText>Sefaria is an open source, nonprofit project. Support us by making a tax-deductible donation.</InterfaceText>\n    <br />\n    <DonateLink classes={\"button small\" + (blue ? \" white\" : \"\")} source={\"NavSidebar / SupportSefaria\"}>\n      <img src=\"/static/img/heart.png\" alt=\"donation icon\" />\n      <InterfaceText>Make a Donation</InterfaceText>\n    </DonateLink>\n  </Module>\n);\n\n\nconst SponsorADay = () => (\n  <Module>\n    <ModuleTitle>Sponsor A Day of Learning</ModuleTitle>\n    <InterfaceText>With your help, we can add more texts and translations to the library, develop new tools for learning, and keep Sefaria accessible for Torah study anytime, anywhere.</InterfaceText>\n    <br />\n    <DonateLink classes={\"button small\"} link={\"sponsor\"} source={\"NavSidebar / SponsorADay\"}>\n      <img src=\"/static/img/heart.png\" alt=\"donation icon\" />\n      <InterfaceText>Sponsor A Day</InterfaceText>\n    </DonateLink>\n  </Module>\n);\n\n\nconst AboutTextCategory = ({cats}) => {\n  const tocObject = Sefaria.tocObjectByCategories(cats);\n  const enTitle = \"About \" + tocObject.category;\n  const heTitle = \"אודות \" + tocObject.heCategory;\n\n  if ((Sefaria.interfaceLang === \"hebrew\" && !tocObject.heDesc) ||\n      (Sefaria.interfaceLang === \"english\" && !tocObject.enDesc)) {\n    return null;\n  }\n\n  return (\n    <Module>\n      <h3><InterfaceText text={{en: enTitle, he: heTitle}} /></h3>\n      <InterfaceText markdown={{en: tocObject.enDesc, he: tocObject.heDesc}} />\n    </Module>\n  );\n};\n\n\nconst AboutText = ({index, hideTitle}) => {\n  const lang = Sefaria.interfaceLang === \"hebrew\" ? \"he\" : \"en\"\n\n  let composed = [index.compPlaceString?.[lang], index.compDateString?.[lang]].filter(x=>!!x).join(\", \");\n  composed = composed.replace(/[()]/g, \"\");\n\n  if (index.categories.length == 2 && index.categories[0] == \"Tanakh\" && [\"Torah\", \"Prophets\", \"Writings\"].indexOf(index.categories[1]) !== -1) {\n    // Don't show date/time for Tanakh.\n    composed = null;\n  }\n\n  let authors   = index?.authors || [];\n  authors = authors.filter(a => !!a[lang]).map(a => <a href={\"/topics/\" + a.slug} key={a.slug}><InterfaceText>{a[lang]}</InterfaceText></a>);\n  authors = [].concat(...authors.map(x => [<span>, </span>, x])).slice(1); // Like a join for an array of React elements\n  const heDesc = index.heDesc || index.heShortDesc;\n  const enDesc = index.enDesc || index.enShortDesc;\n  const description = lang === \"he\" ? heDesc : enDesc;\n\n  if (!authors.length && !composed && !description) { return null; }\n\n  return (\n    <Module>\n      {hideTitle ? null :\n          <ModuleTitle>About This Text</ModuleTitle>}\n      { composed || authors.length ?\n      <div className=\"aboutTextMetadata\">\n\n        {authors.length ?\n        <div className=\"aboutTextAuthor\">\n          {authors.length == 1 ?\n              <span><InterfaceText>Author</InterfaceText>:</span>\n          : <span><InterfaceText>Authors</InterfaceText>:</span>}\n          <span className=\"aboutTextAuthorText\">\n            &nbsp;{authors}\n          </span>\n        </div> : null}\n\n        {composed ?\n        <div className=\"aboutTextComposed\">\n          <InterfaceText>Composed</InterfaceText>:\n          <span className=\"aboutTextComposedText\">\n            &nbsp;<InterfaceText>{composed}</InterfaceText>\n          </span>\n        </div> : null}\n\n      </div> : null}\n      {description ?\n      <InterfaceText markdown={{en: enDesc, he: heDesc}}/> : null}\n\n    </Module>\n  );\n};\n\n\nconst TranslationLinks = () => {\n  return (\n    <div className=\"navSidebarLink serif language\">\n      {<ul>{Object.keys(Sefaria.ISOMap).map(key => Sefaria.ISOMap[key][\"showTranslations\"] ? <li key={key}><a href={`/translations/${key}`}>\n          {Sefaria.ISOMap[key][\"nativeName\"]}\n          </a></li> : null)} </ul>}\n      </div>\n  );\n};\n\n\nconst ParashahLink = () => {\n  const parashah = Sefaria.calendars.filter(c => c.title.en === \"Parashat Hashavua\")[0];\n  return (\n    <div className=\"navSidebarLink ref serif\">\n      <img src=\"/static/icons/book.svg\" className=\"navSidebarIcon\" alt=\"book icon\" />\n      <a href={\"/\" + parashah.url}><InterfaceText text={{en: parashah.ref, he: parashah.heRef}} /></a>\n    </div>\n  );\n};\n\n\nconst ParashahName = () => {\n  const parashah = Sefaria.calendars.filter(c => c.title.en === \"Parashat Hashavua\")[0];\n  return <InterfaceText text={parashah.displayValue} />\n};\n\n\nconst HaftarotLinks = () => {\n  const haftarot = Sefaria.calendars.filter(c => c.title.en.startsWith(\"Haftarah\"))\n  return (\n    <>\n      {haftarot.map(h => \n      <div className=\"navSidebarLink ref serif\" key={h.url}>\n        <img src=\"/static/icons/book.svg\" className=\"navSidebarIcon\" alt=\"book icon\" />\n        <a href={\"/\" + h.url}><InterfaceText text={h.displayValue} /></a>\n      </div>)}\n    </>\n  );\n};\n\n\nconst DafLink = () => {\n  const daf = Sefaria.calendars.filter(c => c.title.en === \"Daf Yomi\")[0];\n  return (\n    <div className=\"navSidebarLink ref serif\">\n      <img src=\"/static/icons/book.svg\" className=\"navSidebarIcon\" alt={Sefaria._(\"book icon\")} />\n      <a href={\"/\" + daf.url}>\n        <InterfaceText text={daf.displayValue} />\n      </a>\n    </div>\n  );\n}\n\nconst Translations = () => {\n  return (<Module>\n    <ModuleTitle>Translations</ModuleTitle>\n    <InterfaceText>\n      <EnglishText>\n        Access key works from the library in several languages.\n      </EnglishText>\n      <HebrewText>\n        יצירות נבחרות מהספרייה בתרגומים לשפות שונות.\n      </HebrewText>\n    </InterfaceText>\n    <TranslationLinks />\n  </Module>)\n}\n\n\nconst LearningSchedules = () => {\n  return (\n    <Module>\n      <ModuleTitle>Learning Schedules</ModuleTitle>\n      <div className=\"readingsSection\">\n        <span className=\"readingsSectionTitle\">\n          <InterfaceText>Weekly Torah Portion</InterfaceText>: <ParashahName />\n        </span>\n        <ParashahLink />\n      </div>\n      <div className=\"readingsSection\">\n        <span className=\"readingsSectionTitle\">\n          <InterfaceText >Haftarah</InterfaceText>\n        </span>\n        <HaftarotLinks />\n      </div>\n      <div className=\"readingsSection\">\n        <span className=\"readingsSectionTitle\">\n          <InterfaceText >Daf Yomi</InterfaceText>\n        </span>\n        <DafLink />\n      </div>\n      <a href=\"/calendars\" className=\"allLink\">\n        <InterfaceText>All Learning Schedules</InterfaceText> <InterfaceText>&rsaquo;</InterfaceText>\n      </a>\n    </Module>\n  );\n};\n\n\nconst WeeklyTorahPortion = () => {\n  return (\n    <Module>\n      <ModuleTitle>Weekly Torah Portion</ModuleTitle>\n      <div className=\"readingsSection\">\n        <span className=\"readingsSectionTitle\">\n          <ParashahName />\n        </span>\n        <ParashahLink />\n      </div>\n      <div className=\"readingsSection\">\n        <span className=\"readingsSectionTitle\">\n          <InterfaceText >Haftarah</InterfaceText>\n        </span>\n        <HaftarotLinks />\n      </div>\n      <a href=\"/topics/category/torah-portions\" className=\"allLink\">\n        <InterfaceText>All Portions</InterfaceText> <InterfaceText>&rsaquo;</InterfaceText>\n      </a>\n    </Module>\n  );\n};\n\n\nconst DafYomi = () => {\n  return (\n    <Module>\n      <ModuleTitle>Daily Learning</ModuleTitle>\n      <div className=\"readingsSection\">\n        <span className=\"readingsSectionTitle\">\n          <InterfaceText >Daf Yomi</InterfaceText>\n        </span>\n        <DafLink />\n      </div>\n    </Module>\n  );\n};\n\n\nconst Visualizations = ({categories}) => {\n  const visualizations = [\n    {en: \"Tanakh & Talmud\", \n      he: 'תנ\"ך ותלמוד', \n      url: \"/explore\"},\n    {en: \"Talmud & Mishneh Torah\", \n      he: \"תלמוד ומשנה תורה\",\n      url: \"/explore-Bavli-and-Mishneh-Torah\"},\n    {en: \"Talmud & Shulchan Arukh\", \n      he: \"תלמוד ושולחן ערוך\",\n      url: \"/explore-Bavli-and-Shulchan-Arukh\"},\n    {en: \"Mishneh Torah & Shulchan Arukh\", \n      he: \"משנה תורה ושולחן ערוך\",\n      url: \"/explore-Mishneh-Torah-and-Shulchan-Arukh\"},\n    {en: \"Tanakh & Midrash Rabbah\",\n      he: 'תנ\"ך ומדרש רבה',\n      url: \"/explore-Tanakh-and-Midrash-Rabbah\"},\n    {en: \"Tanakh & Mishneh Torah\",\n      he: 'תנ\"ך ומשנה תורה',\n      url: \"/explore-Tanakh-and-Mishneh-Torah\"},\n    {en: \"Tanakh & Shulchan Arukh\",\n      he: 'תנ\"ך ושולחן ערוך',\n      url: \"/explore-Tanakh-and-Shulchan-Arukh\"},\n  ];\n\n  const links = visualizations.filter(v => categories.some(cat => v.en.indexOf(cat) > -1));\n\n  if (links.length == 0) { return null; }\n\n  return (\n    <Module>\n      <ModuleTitle>Visualizations</ModuleTitle>\n      <InterfaceText>Explore interconnections among texts with our interactive visualizations.</InterfaceText>\n      <div className=\"linkList\">\n        {links.map((link, i) => \n          <div className=\"navSidebarLink gray\" key={i}>\n            <img src=\"/static/icons/visualization.svg\" className=\"navSidebarIcon\" alt={Sefaria._(\"visualization icon\")} />\n            <a href={link.url}><InterfaceText text={{en: link.en, he: link.he}} /></a>\n          </div>\n        )}\n      </div>\n      <a href=\"/visualizations\" className=\"allLink\">\n        <InterfaceText>All Visualizations</InterfaceText> <InterfaceText>&rsaquo;</InterfaceText>\n      </a>\n    </Module>\n  );\n};\n\n\nconst AboutTopics = ({hideTitle}) => (\n  <Module>\n    {hideTitle ? null :\n    <ModuleTitle>About Topics</ModuleTitle> }\n    <InterfaceText>\n        <HebrewText>\nדפי הנושא מציגים מקורות נבחרים מארון הספרים היהודי עבור אלפי נושאים. ניתן לדפדף לפי קטגוריה או לחפש לפי נושא ספציפי, ובסרגל הצד מוצגים הנושאים הפופולריים ביותר ואלה הקשורים אליהם.  הקליקו ושוטטו בין הנושאים השונים כדי ללמוד עוד.\n        </HebrewText>\n        <EnglishText>\nTopics bring you straight to selections of texts and user created source sheets about thousands of subjects.        </EnglishText>\n    </InterfaceText>\n  </Module>\n);\n\n\nconst TrendingTopics = () => (\n  <Module>\n    <ModuleTitle>Trending Topics</ModuleTitle>\n    {Sefaria.trendingTopics.map((topic, i) => \n      <div className=\"navSidebarLink ref serif\" key={i}>\n        <a href={\"/topics/\" + topic.slug}><InterfaceText text={{en: topic.en, he: topic.he}}/></a>\n      </div>\n    )}\n  </Module>\n);\n\n\nconst RelatedTopics = ({title}) => {\n  const [topics, setTopics] = useState(Sefaria.getIndexDetailsFromCache(title)?.relatedTopics || []);\n  const [showMore, setShowMore] = useState(false);\n  const showMoreLink = !showMore && topics.length > 5;\n  const shownTopics = showMore ? topics : topics.slice(0,5);\n  useEffect(() => {\n        Sefaria.getIndexDetails(title).then(data => setTopics(data.relatedTopics));\n  },[title]);\n  return (topics.length ?\n    <Module>\n      <ModuleTitle>Related Topics</ModuleTitle>\n      {shownTopics.map((topic, i) => \n        <div className=\"navSidebarLink ref serif\" key={i}>\n          <a href={\"/topics/\" + topic.slug}><InterfaceText text={{en: topic.title.en, he: topic.title.he}}/></a>\n        </div>\n      )}\n      {showMoreLink ?\n      <a className=\"moreLink\" onClick={()=>{setShowMore(true);}}>\n        <InterfaceText>More</InterfaceText>\n      </a> : null}\n    </Module> : null\n  );\n};\n\n\nconst JoinTheConversation = ({wide}) => {\n  if (!Sefaria.multiPanel) { return null; } // Don't advertise create sheets on mobile (yet)\n\n  return (\n    <Module wide={wide}>\n      <div>\n        <ModuleTitle>Join the Conversation</ModuleTitle>\n        <InterfaceText>Combine sources from our library with your own comments, questions, images, and videos.</InterfaceText>\n      </div>\n      <div>\n        <a className=\"button small\" href=\"/sheets/new\">\n          <img src=\"/static/icons/new-sheet-black.svg\" alt=\"make a sheet icon\" />\n          <InterfaceText>Make a Sheet</InterfaceText>\n        </a>\n      </div>\n    </Module>\n  );\n};\n\n\nconst JoinTheCommunity = ({wide}) => {\n  return (\n    <Module wide={wide}>\n      <div>\n        <ModuleTitle>Join the Conversation</ModuleTitle>\n        <InterfaceText>People around the world use Sefaria to create and share Torah resources. You're invited to add your voice.</InterfaceText>\n      </div>\n      <div>\n        <a className=\"button small\" href=\"/community\">\n          <img src=\"/static/icons/community-black.svg\" alt=\"make a sheet icon\" />\n          <InterfaceText>Explore the Community</InterfaceText>\n        </a>\n      </div>\n    </Module>\n  );\n};\n\n\nconst GetTheApp = () => (\n  <Module>\n    <ModuleTitle>Get the Mobile App</ModuleTitle>\n    <InterfaceText>Access the Jewish library anywhere and anytime with the</InterfaceText> <a href=\"/mobile\" className=\"inTextLink\"><InterfaceText>Sefaria mobile app.</InterfaceText></a>\n    <br />\n    <AppStoreButton\n        href=\"https://itunes.apple.com/us/app/sefaria/id1163273965?ls=1&mt=8\"\n        platform='ios'\n        altText={Sefaria._(\"Sefaria app on IOS\")}\n    />\n    <AppStoreButton\n        href=\"https://play.google.com/store/apps/details?id=org.sefaria.sefaria\"\n        platform='android'\n        altText={Sefaria._(\"Sefaria app on Android\")}\n    />\n  </Module>\n);\n\n\nconst StayConnected = () => { // TODO: remove? looks like we are not using this\n  const fbURL = Sefaria.interfaceLang == \"hebrew\" ? \"https://www.facebook.com/sefaria.org.il\" : \"https://www.facebook.com/sefaria.org\";\n\n  return (\n    <Module>\n      <ModuleTitle>Stay Connected</ModuleTitle>\n      <InterfaceText>Get updates on new texts, learning resources, features, and more.</InterfaceText>\n      <br />\n      <NewsletterSignUpForm context=\"sidebar\" />\n\n      <a target=\"_blank\" className=\"button small white appButton iconOnly\" href={fbURL}>\n        <img src=\"/static/icons/facebook.svg\" alt={Sefaria._(\"Sefaria on Facebook\")} />\n      </a>\n      <a target=\"_blank\" className=\"button small white appButton iconOnly\" href=\"https://twitter.com/SefariaProject\">\n        <img src=\"/static/icons/twitter.svg\" alt={Sefaria._(\"Sefaria on Twitter\")} />\n      </a>\n      <a target=\"_blank\" className=\"button small white appButton iconOnly\" href=\"https://www.instagram.com/sefariaproject\">\n        <img src=\"/static/icons/instagram.svg\" alt={Sefaria._(\"Sefaria on Instagram\")} />\n      </a>\n      <a target=\"_blank\" className=\"button small white appButton iconOnly\" href=\"https://www.youtube.com/user/SefariaProject\">\n        <img src=\"/static/icons/youtube.svg\" alt={Sefaria._(\"Sefaria on YouTube\")} />\n      </a>\n\n    </Module>\n  );\n};\n\n\nconst AboutLearningSchedules = () => (\n  <Module>\n    <ModuleTitle h1={true}>Learning Schedules</ModuleTitle>\n    <InterfaceText>\n        <EnglishText>\n            Since biblical times, the Torah has been divided into sections which are read each week on a set yearly calendar.\n            Following this practice, many other calendars have been created to help communities of learners work through specific texts together.\n        </EnglishText>\n        <HebrewText>\n            מימי קדם חולקה התורה לקטעי קריאה שבועיים שנועדו לסיום הספר כולו במשך תקופת זמן של שנה.\n            בעקבות המנהג הזה התפתחו לאורך השנים סדרי לימוד תקופתיים רבים נוספים, ובעזרתם יכולות קהילות וקבוצות של לומדים ללמוד יחד טקסטים שלמים.\n        </HebrewText>\n    </InterfaceText>\n  </Module>\n);\n\n\nconst AboutCollections = ({hideTitle}) => (\n  <Module>\n    {hideTitle ? null :\n    <ModuleTitle h1={true}>About Collections</ModuleTitle>}\n    <InterfaceText>\n        <EnglishText>Collections are user generated bundles of sheets which can be used privately, shared with friends, or made public on Sefaria.</EnglishText>\n        <HebrewText>אסופות הן מקבצים של דפי מקורות שנוצרו על ידי משתמשי האתר. הן ניתנות לשימוש פרטי, לצורך שיתוף עם אחרים או לשימוש ציבורי באתר ספריא.</HebrewText>\n    </InterfaceText>\n    {hideTitle ? null :\n    <div>\n      <a className=\"button small\" href=\"/collections/new\">\n        <img src=\"/static/icons/collection-black.svg\" alt=\"create a collection icon\" />\n        <InterfaceText>Create a Collection</InterfaceText>\n      </a>\n    </div>}\n  </Module>\n);\n\n\nconst ExploreCollections = () => (\n  <Module>\n    <ModuleTitle>Collections</ModuleTitle>\n    <InterfaceText>Organizations, communities and individuals around the world curate and share collections of sheets for you to explore.</InterfaceText>\n    <div>\n      <a className=\"button small white\" href=\"/collections\">\n        <img src=\"/static/icons/collection.svg\" alt=\"collection icon\" />\n        <InterfaceText>Explore Collections</InterfaceText>\n      </a>\n    </div>\n  </Module>\n);\n\n\nconst WhoToFollow = ({toggleSignUpModal}) => (\n  <Module>\n    <ModuleTitle>Who to Follow</ModuleTitle>\n    {Sefaria.followRecommendations.map(user => \n    <ProfileListing {...user} key={user.uid} toggleSignUpModal={toggleSignUpModal} />)}\n  </Module>\n);\n\n\nconst Image = ({url}) => (\n  <Module>\n    <img className=\"imageModuleImage\" src={url} />\n  </Module>\n);\n\n\nconst Wrapper = ({title, content}) => (\n  <Module>\n    {title ? <ModuleTitle>{title}</ModuleTitle> : null}\n    {content}\n  </Module>\n);\n\n\nconst IconLink = ({text, url, icon}) => (\n  <div className=\"navSidebarLink gray\">\n    <img src={\"/static/icons/\" + icon} className=\"navSidebarIcon\" alt={`${Sefaria._(text)} ${Sefaria._(\"icon\")}`} />\n    <a href={url}><InterfaceText>{text}</InterfaceText></a>\n  </div>\n);\n\n\nconst DownloadVersions = ({sref}) => {\n    //sref is generally an index title, but just in case we ever need a different resolution\n    const [versions, setVersions] = useState([]);\n    const [isReady, setIsReady] = useState(false);\n    const [downloadSelected, setDownloadSelected] = useState({dlVersionTitle: null, dlVersionFormat: null, dlVersionLanguage: null});\n\n    const isVersionPublicDomain = v => {\n        return !(v.license && v.license.startsWith(\"Copyright\"));\n    }\n    const handleInputChange = (event) => {\n        const target = event.target;\n        const value = target.value;\n        const name = target.name;\n        let newState = {};\n        if(name == \"dlVersionName\"){\n           let [versionTitle, versionLang] = value.split(\"/\");\n           newState = {\n              dlVersionTitle: versionTitle,\n              dlVersionLanguage: versionLang\n           };\n        }else{\n            newState = {[name]: value}\n        }\n        const dlstate = {...downloadSelected, ...newState};\n        setDownloadSelected(dlstate);\n        if (downloadParamsReady(dlstate)){\n            setIsReady(true);\n        }\n    }\n    const downloadParamsReady = (downloadParams) => {\n        return !Object.values(downloadParams).some(x => x === null);\n    }\n    const versionDlLink = () => {\n        return isReady ? `/download/version/${sref} - ${downloadSelected.dlVersionLanguage} - ${downloadSelected.dlVersionTitle}.${downloadSelected.dlVersionFormat}` : \"#\";\n    }\n    const handleClick = (event) => {\n        if(!isReady) {\n            event.preventDefault();\n            return false;\n        }\n        recordDownload();\n        return true;\n    }\n    const recordDownload = () => {\n        Sefaria.track.event(\"Reader\", \"Version Download\", `${sref} / ${downloadSelected.dlVersionTitle} / ${downloadSelected.dlVersionLanguage} / ${downloadSelected.dlVersionFormat}`);\n    }\n    useEffect(() => {\n        Sefaria.getVersions(sref).then(data => {\n            data = Object.values(data).flat();\n            data = data.filter(isVersionPublicDomain);\n            data.sort((a, b) => a.versionTitle.localeCompare(b.versionTitle));\n            setVersions(data);\n        });\n    }, [sref]);\n\n    return(\n        <Module>\n          <ModuleTitle>Download Text</ModuleTitle>\n          <div className=\"downloadTextModule sans-serif\">\n          <Dropdown\n              name=\"dlVersionName\"\n              options={\n                versions.map(v => ({\n                    value: `${v.versionTitle}/${v.language}`,\n                    label: `${Sefaria._v({he: v.versionTitleInHebrew ? v.versionTitleInHebrew : v.versionTitle, en: v.versionTitle})} (${Sefaria._(Sefaria.translateISOLanguageCode(v.actualLanguage))})`\n                })).concat( // add merged versions for both primary langs \"en\" and \"he\" where applicable. (not yet possible for individual actual languages)\n                    versions.map(v => v.language).unique().map(lang => ({\n                        value: `merged/${lang}`,\n                        label: `${Sefaria._(\"Merged Version\", \"DownloadVersions\")} (${Sefaria._(Sefaria.translateISOLanguageCode(lang))})`,\n                    }))\n                )\n              }\n              placeholder={Sefaria._( \"Select Version\", \"DownloadVersions\")}\n              onChange={handleInputChange}\n          />\n          <Dropdown\n              name=\"dlVersionFormat\"\n              options={[\n                {value: \"txt\",       label: Sefaria._( \"Text (with Tags)\", \"DownloadVersions\")},\n                {value: \"plain.txt\", label: Sefaria._( \"Text (without Tags)\", \"DownloadVersions\")},\n                {value: \"csv\",       label: \"CSV\"},\n                {value: \"json\",      label: \"JSON\"},\n              ]}\n              placeholder={Sefaria._(\"Select Format\", \"DownloadVersions\")}\n              onChange={handleInputChange}\n          />\n          <a className={`button fillWidth${isReady ? \"\" : \" disabled\"}`} onClick={handleClick} href={versionDlLink()} download>{Sefaria._(\"Download\")}</a>\n        </div>\n        </Module>\n    );\n};\n\n\nconst PortalAbout = ({title, description, image_uri, image_caption}) => {\n    return(\n        <Module>\n            <ModuleTitle en={title.en} he={title.he} />\n            <div className=\"portalTopicImageWrapper\">\n                <ImageWithCaption photoLink={image_uri} caption={image_caption} />\n            </div>\n            <InterfaceText markdown={{en: description.en, he: description.he}} />\n        </Module>\n    )\n};\n\n\nconst PortalMobile = ({title, description, android_link, ios_link}) => {\n    return(\n        <Module>\n            <div className=\"portalMobile\">\n                <ModuleTitle en={title.en} he={title.he} />\n                {description && <InterfaceText markdown={{en: description.en, he: description.he}} />}\n                <AppStoreButton href={ios_link} platform={'ios'} altText='Steinsaltz app on iOS' />\n                <AppStoreButton href={android_link} platform={'android'} altText='Steinsaltz app on Android' />\n            </div>\n        </Module>\n    )\n};\nconst PortalOrganization = ({title, description}) => {\n    return(\n        <Module>\n                <ModuleTitle en={title.en} he={title.he} />\n                {description && <InterfaceText markdown={{en: description.en, he: description.he}} />}\n        </Module>\n    )\n};\n\n\nconst PortalNewsletter = ({title, description}) => {\n    let titleElement = <ModuleTitle en={title.en} he={title.he} />;\n\n    return(\n        <Module>\n            {titleElement}\n            <InterfaceText markdown={{en: description.en, he: description.he}} />\n            <NewsletterSignUpForm\n                includeEducatorOption={false}\n                emailPlaceholder={{en: \"Email Address\", he: \"כתובת מייל\"}}\n                subscribe={Sefaria.subscribeSefariaAndSteinsaltzNewsletter}\n            />\n        </Module>\n    )\n};\n\n\nexport {\n  NavSidebar,\n  Modules,\n};\n","import React  from 'react';\nimport Sefaria  from './sefaria/sefaria';\nimport PropTypes from'prop-types';\nimport $  from './sefaria/sefariaJquery';\nimport { InterfaceText, DonateLink } from './Misc';\nimport {NewsletterSignUpForm} from \"./NewsletterSignUpForm\";\nimport Component from 'react-class';\n\nconst Section = ({en, he, children}) => (\n    <div className=\"section\">\n      <div className=\"header\">\n         <InterfaceText text={{en:en, he:he}}/>\n      </div>\n      {children}\n    </div>\n);\n\nconst Link = ({href, en, he, blank}) => (\n    <a href={href} target={blank ? \"_blank\" : \"_self\"}>\n      <InterfaceText text={{en:en, he:he}}/>\n    </a>\n);\n\nclass Footer extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {};\n  }\n  componentDidMount() {\n    this.setState({isClient: true});\n  }\n  trackLanguageClick(language){\n    Sefaria.track.setInterfaceLanguage('interface language footer', language);\n  }\n  renderContextUS() {\n      return (\n      <footer id=\"footer\" className=\"static sans-serif\">\n        <div id=\"footerInner\">\n            <Section en=\"About\" he=\"About\">\n                <Link href=\"/about\" en=\"What is ContextUS?\" he=\"What is ContextUS?\" />\n                <Link href=\"/collections/help-center?tab=sheets\" en=\"Help\" he=\"Help\" />\n                <Link href=\"https://jackmillercenter.org/about-us/our-staff/\" en=\"Team\" he=\"Team\" blank={true} />\n                <Link href=\"https://jackmillercenter.org/about-us/\" en=\"The Jack Miller Center\" he=\"JMC\" blank={true} />\n                {/*<Link href=\"/terms\" en=\"Terms of Use\" he=\"Terms of Use\" />*/}\n                {/*<Link href=\"/privacy-policy\" en=\"Privacy Policy\" he=\"Privacy Policy\" />*/}\n            </Section>\n\n            <Section en=\"Tools\" he=\"Tools\">\n                <Link href=\"/sheets\" en=\"Source Sheets\" he=\"Source Sheets\" />\n                {/*<Link href=\"/faqs\" en=\"FAQs\" he=\"FAQs\" />*/}\n            </Section>\n\n             <Section en=\"Feedback\" he=\"Feedback\">\n                <Link href=\"mailto:mpromisel@gojmc.org\" en=\"Request a Text\" he=\"Request a Text\" />\n                <Link href=\"mailto:mpromisel@gojmc.org\" en=\"Report a Bug\" he=\"Report a Bug\" />\n            </Section>\n\n            <Section en=\"Join Us\" he=\"Us Join\">\n                <DonateLink source={\"Footer\"}><InterfaceText text={{en:\"Donate\", he:\"Donate\"}}/></DonateLink>\n            </Section>\n        </div>\n      </footer>\n    );\n  }\n  renderSefaria() {\n    const fbURL = Sefaria.interfaceLang == \"hebrew\" ? \"https://www.facebook.com/sefaria.org.il\" : \"https://www.facebook.com/sefaria.org\";\n    const blgURL = Sefaria.interfaceLang == \"hebrew\" ? \"https://blog.sefaria.org.il/\" : \"https://blog.sefaria.org/\";\n    let next = this.state.isClient ? (encodeURIComponent(Sefaria.util.currentPath())) : \"/\" ; //try to make sure that a server render of this does not get some weird data in the url that then gets cached\n    return (\n      <footer id=\"footer\" className=\"static sans-serif\">\n        <div id=\"footerInner\">\n            <Section en=\"About\" he=\"אודות\">\n                <Link href=\"/about\" en=\"What is Sefaria?\" he=\"מהי ספריא\" />\n                <Link href=\"/help\" en=\"Help\" he=\"עזרה\" />\n                <Link href=\"/team\" en=\"Team\" he=\"צוות\" />\n                <Link href=\"/testimonials\" en=\"Testimonials\" he=\"חוות דעת\" />\n                <Link href=\"/metrics\" en=\"Metrics\" he=\"מדדים\" />\n                <Link href=\"/annualreport/2022\" en=\"Annual Report\" he='דו\"ח שנתי' />\n                <Link href=\"/terms\" en=\"Terms of Use\" he=\"תנאי שימוש\" />\n                <Link href=\"/privacy-policy\" en=\"Privacy Policy\" he=\"מדיניות פרטיות\" />\n            </Section>\n\n            <Section en=\"Tools\" he=\"כלים\">\n                <Link href=\"/educators\" en=\"Teach with Sefaria\" he=\"מלמדים עם ספריא\" />\n                <Link href=\"/calendars\" en=\"Learning Schedules\" he=\"לוח לימוד יומי\" />\n                <Link href=\"/sheets\" en=\"Source Sheets\" he=\"דפי מקורות\" />\n                <Link href=\"/visualizations\" en=\"Visualizations\" he=\"תרשימים גרפיים\" />\n                <Link href=\"/mobile\" en=\"Mobile Apps\" he=\"ספריא בנייד\" />\n                <Link href=\"/daf-yomi\" en=\"Daf Yomi\" he=\"דף יומי\" />\n                <Link href=\"/torah-tab\" en=\"Torah Tab\" he=\"תורה טאב\" />\n                <Link href=\"/people\" en=\"Authors\" he=\"מחברים\" />\n                <Link href=\"/collections\" en=\"Collections\" he=\"אסופות\" />\n                <Link href=\"/updates\" en=\"New Additions\" he=\"עדכונים\" />\n                <Link href=\"/remote-learning\" en=\"Remote Learning\" he=\"למידה מרחוק\" />\n            </Section>\n\n            <Section en=\"Developers\" he=\"מפתחים\">\n                <Link href=\"/developers\" en=\"Get Involved\" he=\"הצטרפו אלינו\" blank={true} />\n                <Link href=\"/developers#api\" en=\"API Docs\" he=\"מסמכי API\" blank={true} />\n                <Link href=\"https://github.com/Sefaria/Sefaria-Project\" en=\"Fork us on GitHub\" he=\"Github\" blank={true} />\n                <Link href=\"https://github.com/Sefaria/Sefaria-Export\" en=\"Download our Data\" he=\"בסיס נתונים\" blank={true} />\n            </Section>\n\n            <Section en=\"Join Us\" he=\"הצטרפו אלינו\">\n                <DonateLink source={\"Footer\"}><InterfaceText text={{en:\"Donate\", he:\"תרומות\"}}/></DonateLink>\n                <Link href=\"/ways-to-give\" en=\"Ways to Give\" he=\"אפשרויות תרומה\" />\n                <Link href=\"/supporters\" en=\"Supporters\" he=\"תומכים\" />\n                <Link href=\"/jobs\" en=\"Jobs\" he=\"דרושים\" />\n                <Link href=\"https://store.sefaria.org\" en=\"Shop\" he=\"חנות\" />\n            </Section>\n\n          <div className=\"section last connect\">\n              <div className=\"header connect\">\n                  <InterfaceText>Connect</InterfaceText>\n              </div>\n              <NewsletterSignUpForm contextName=\"Footer\" />\n              <LikeFollowButtons />\n              <div className=\"socialLinks\">\n                  <Link href={fbURL} en=\"Facebook\" he=\"פייסבוק\" blank={true}/>\n                  &bull;\n                  <Link href=\"https://twitter.com/SefariaProject\" en=\"Twitter\" he=\"טוויטר\" />\n                  <br />\n\n                  <Link href=\"https://www.youtube.com/user/SefariaProject\" en=\"YouTube\" he=\"יוטיוב\" />\n                  &bull;\n                  <Link href={blgURL} en=\"Blog\" he=\"בלוג\" blank={true}/>\n                  <br />\n\n                  <Link href=\"https://www.instagram.com/sefariaproject/\" en=\"Instagram\" he=\"אינסטגרם\" />\n                  &bull;\n                  <Link href=\"mailto:hello@sefaria.org\" en=\"Email\" he=\"דוא&quot;ל\" />\n              </div>\n              <div id=\"siteLanguageToggle\">\n                  <div id=\"siteLanguageToggleLabel\">\n                      <InterfaceText>Site Language</InterfaceText>\n                  </div>\n                  <a href={\"/interface/english?next=\" + next} id=\"siteLanguageEnglish\"\n                     onClick={this.trackLanguageClick.bind(null, \"English\")}>English\n                  </a>\n                  |\n                  <a href={\"/interface/hebrew?next=\" + next} id=\"siteLanguageHebrew\"\n                      onClick={this.trackLanguageClick.bind(null, \"Hebrew\")}>עברית\n                  </a>\n              </div>\n          </div>\n        </div>\n      </footer>\n    );\n  }\n  render() {\n      if (Sefaria._siteSettings.SITE_NAME.en === \"ContextUS\") {\n          return this.renderContextUS();\n      }\n      else if (Sefaria._siteSettings.SITE_NAME.en === \"Sefaria\") {\n          return this.renderSefaria();\n      }\n  }\n}\n\nclass LikeFollowButtons extends Component {\n  componentDidMount() {\n    this.loadFacebook();\n    this.loadTwitter();\n  }\n  loadFacebook() {\n    if (typeof FB !== \"undefined\") {\n       FB.XFBML.parse();\n    } else {\n      (function(d, s, id) {\n        var js, fjs = d.getElementsByTagName(s)[0];\n        if (d.getElementById(id)) return;\n        js = d.createElement(s); js.id = id;\n        js.src = Sefaria.interfaceLang ==  \"hebrew\" ?\n          \"https://connect.facebook.net/he_IL/sdk.js#xfbml=1&version=v2.10&appId=206308089417064\"\n          : \"https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.10&appId=206308089417064\";\n        fjs.parentNode.insertBefore(js, fjs);\n      }(document, 'script', 'facebook-jssdk'));\n    }\n  }\n  loadTwitter() {\n    if (typeof twttr !== \"undefined\") {\n      if (\"widgets\" in twttr) {\n        twttr.widgets.load();\n      }\n    } else {\n      window.twttr = (function(d, s, id) {\n        var js, fjs = d.getElementsByTagName(s)[0],\n          t = window.twttr || {};\n        if (d.getElementById(id)) return t;\n        js = d.createElement(s);\n        js.id = id;\n        js.src = \"https://platform.twitter.com/widgets.js\";\n        fjs.parentNode.insertBefore(js, fjs);\n\n        t._e = [];\n        t.ready = function(f) {\n          t._e.push(f);\n        };\n\n        return t;\n      }(document, \"script\", \"twitter-wjs\"));\n    }\n  }\n  render() {\n    var fbURL = Sefaria.interfaceLang == \"hebrew\" ? \"https://www.facebook.com/sefaria.org.il\" : \"https://www.facebook.com/sefaria.org\";\n    var lang = Sefaria.interfaceLang.substring(0,2);\n    return (<div id=\"socialButtons\">\n              <div id=\"facebookButton\">\n                <div className=\"fb-like\"\n                  data-href={fbURL}\n                  data-layout=\"button\"\n                  data-action=\"like\"\n                  data-size=\"small\"\n                  data-show-faces=\"false\"\n                  data-share=\"true\"></div>\n              </div>\n              <div id=\"twitterButton\">\n                <a className=\"twitter-follow-button\"\n                  href=\"https://twitter.com/SefariaProject\"\n                  data-show-screen-name=\"false\"\n                  data-show-count=\"false\"\n                  data-lang={lang}></a>\n              </div>\n            </div>);\n  }\n}\nexport default Footer;\n","import Sefaria from \"./sefaria/sefaria\";\nimport {InterfaceText, requestWithCallBack, TopicPictureUploader} from \"./Misc\";\nimport $ from \"./sefaria/sefariaJquery\";\nimport {AdminEditor} from \"./AdminEditor\";\nimport {Reorder} from \"./CategoryEditor\";\nimport React, {useState, useEffect} from \"react\";\n\n\nconst TopicEditor = ({origData, onCreateSuccess, close, origWasCat}) => {\n    const [data, setData] = useState({...origData, catSlug: origData.origCatSlug || \"\",\n                                enTitle: origData.origEnTitle, heTitle: origData.origHeTitle || \"\",\n                                heDescription: origData?.origHeDescription || \"\",\n                                enDescription: origData?.origEnDescription || \"\",\n                                enCategoryDescription: origData?.origEnCategoryDescription || \"\",\n                                heCategoryDescription: origData?.origHeCategoryDescription || \"\",\n                                enAltTitles: origData?.origEnAltTitles || [],\n                                heAltTitles: origData?.origHeAltTitles || [],\n                                birthPlace: origData.origBirthPlace || \"\", heBirthPlace: origData.origHeBirthPlace || \"\",\n                                birthYear: origData.origBirthYear || \"\", heDeathPlace: origData.origHeDeathPlace || \"\",\n                                deathYear: origData.origDeathYear || \"\", era: origData.origEra || \"\",\n                                deathPlace: origData.origDeathPlace || \"\",\n                                enImgCaption: origData?.origImage?.image_caption?.en || \"\",\n                                heImgCaption: origData?.origImage?.image_caption?.he || \"\",\n                                image_uri: origData?.origImage?.image_uri || \"\"\n                                });\n    const isNew = !('origSlug' in origData);\n    const [savingStatus, setSavingStatus] = useState(false);\n    const [isAuthor, setIsAuthor] = useState(origData.origCatSlug === 'authors');\n    const [isCategory, setIsCategory] = useState(origWasCat);  // initialize to True if the topic originally was a category\n                                                                  // isCategory determines whether user can edit categoryDescriptions of topic\n    const subtopics = Sefaria.topicTocPage(origData.origSlug);\n    const [sortedSubtopics, setSortedSubtopics] = useState(subtopics?.sort(Sefaria.sortTopicsCompareFn)\n                                                                                .filter(x => x.slug !== origData.origSlug) // dont include topics that are self-linked\n                                                                                || []);\n    const [isChanged, setIsChanged] = useState(false);\n    const [changedPicture, setChangedPicture] = useState(false);\n\n    const toggle = function() {\n      setSavingStatus(savingStatus => !savingStatus);\n    }\n\n    const closeTopicEditor = (e) => {\n        if (changedPicture) {\n            alert(\"You changed the topic picture, and therefore, you must save your topic changes.\");\n            return;\n        }\n        close(e);\n    }\n\n\n    const handleCatChange = function(e) {\n      data.catSlug = e.target.value;\n      //logic is: if it starts out originally a category, isCategory should always be true, otherwise, it should depend solely on 'Main Menu'\n      const newIsCategory = origWasCat || e.target.value === Sefaria._(\"Main Menu\");\n      setIsCategory(newIsCategory);\n      setIsChanged(true);\n      setIsAuthor(data.catSlug === 'authors');\n      setData({...data});\n    }\n\n    let slugsToTitles = Sefaria.slugsToTitles();\n    let specialCases = {\n        \"\": {\"en\": \"Choose a Parent Topic\", \"he\": Sefaria.translation('he', \"Choose a Parent Topic\")},\n        \"Main Menu\": {\"en\": \"Main Menu\", \"he\": Sefaria.translation('he', \"Main Menu\")}\n    };\n    slugsToTitles = Object.assign(specialCases, slugsToTitles);\n    const catMenu =   <div className=\"section\">\n                                            <label><InterfaceText>Parent Topic</InterfaceText></label>\n                                            <div className=\"categoryChooserMenu\">\n                                                <select key=\"topicCats\" id=\"topicCats\" onChange={handleCatChange}>\n                                                    {Object.keys(slugsToTitles).map(function (tempSlug, i) {\n                                                        const tempTitle = Sefaria.interfaceLang === 'english' ? slugsToTitles[tempSlug].en : slugsToTitles[tempSlug].he;\n                                                        return <option key={i} value={tempSlug} selected={data.catSlug === tempSlug}>{tempTitle}</option>;\n                                                    })}\n                                                </select>\n                                            </div>\n                                    </div>;\n\n    const updateData = function(newData) {\n        setIsChanged(true);\n        setData(newData);\n    }\n    const validate = async function () {\n        if (!isChanged) {\n            alert(\"You haven't changed any of the fields.\");\n            return false;\n        }\n        if (data.catSlug === \"\") {\n          alert(Sefaria._(\"Please choose a category.\"));\n          return false;\n        }\n        if (data.enTitle.length === 0) {\n          alert(Sefaria._(\"Title must be provided.\"));\n          return false;\n        }\n        if (data.enImgCaption.length > 150) {\n            alert(\"English caption is too long.  It should not be more than 150 characters\");\n            return false;\n        }\n        if (data.heImgCaption.length > 150) {\n            alert(\"Hebrew caption is too long.  It should not be more than 150 characters\")\n            return false;\n        }\n        if (sortedSubtopics.length > 0 && !isNew) {\n            await saveReorderedSubtopics();  // make sure subtopics reordered before saving topic information below\n        }\n        saveTopic();\n    }\n    const saveReorderedSubtopics = function () {\n         const url = `/api/topic/reorder`;\n         const postCategoryData = {topics: sortedSubtopics};\n         requestWithCallBack({url, data: postCategoryData, setSavingStatus, redirect: () => window.location.href = \"/topics\"});\n    }\n\n    const prepData = () => {\n        // always add category, title, heTitle, altTitles\n        let postData = { category: data.catSlug, title: data.enTitle, heTitle: data.heTitle, altTitles: {}};\n        postData.altTitles.en = data.enAltTitles.map(x => x.name); // alt titles implemented using TitleVariants which contains list of objects with 'name' property.\n        postData.altTitles.he = data.heAltTitles.map(x => x.name);\n\n        // add image if image or caption changed\n        const origImageURI = origData?.origImage?.image_uri || \"\";\n        const origEnCaption = origData?.origImage?.image_caption?.en || \"\";\n        const origHeCaption = origData?.origImage?.image_caption?.he || \"\";\n        if (data.image_uri !== origImageURI || data.enImgCaption !== origEnCaption || data.heImgCaption !== origHeCaption) {\n            postData.image = {\"image_uri\": data.image_uri, \"image_caption\": {\"en\": data.enImgCaption, \"he\": data.heImgCaption}}\n        }\n\n        // add descriptions if they changed\n        const origDescription = {en: origData?.origEnDescription || \"\", he: origData?.origHeDescription || \"\"};\n        const origCategoryDescription = {en: origData?.origEnCategoryDescription || \"\", he: origData?.origHeCategoryDescription || \"\"};\n        const descriptionChanged = data.enDescription !== origDescription.en || data.heDescription !== origDescription.he;\n        if (descriptionChanged) {\n            postData.description = {en: data.enDescription, he: data.heDescription};\n        }\n        const categoryDescriptionChanged = data.enCategoryDescription !== origCategoryDescription.en || data.heCategoryDescription !== origCategoryDescription.he\n        if (isCategory && categoryDescriptionChanged) {\n            postData.categoryDescription = {en: data.enCategoryDescription, he: data.heCategoryDescription};\n        }\n\n        // add author keys if they changed\n        if (isAuthor) {\n            let authorKeys = ['birthPlace', 'heBirthPlace', 'birthYear', 'deathYear', 'deathPlace', 'heDeathPlace'];\n            authorKeys.map(k => {\n                const firstLetter = k.charAt(0).toUpperCase();\n                const origKey = `orig${firstLetter}${k.slice(1)}`;\n                const origVal = origData[origKey] || \"\";\n                const newVal = data[k] || \"\";\n                if (origVal !== newVal) {\n                    postData[k] = data[k];\n                }\n            })\n        }\n\n        if (!isNew) {\n          postData = {...postData, origSlug: data.origSlug, origCategory: data.origCatSlug};\n        }\n\n        return postData;\n    }\n\n    const saveTopic = function () {\n        toggle();\n        const postData = prepData();\n        let postURL = isNew ? \"/api/topic/new\" : `/api/topics/${data.origSlug}`;\n        const postJSON = JSON.stringify(postData);\n        $.post(postURL, {\"json\": postJSON}, function (result) {\n            if (result.error) {\n                toggle();\n                alert(result.error);\n            } else {\n                const newSlug = result.slug;\n                if (onCreateSuccess) {\n                    onCreateSuccess(newSlug);\n                }\n                else {\n                    window.location.href = `/topics/${newSlug}`;\n                }\n            }\n        }).fail(function (xhr, status, errorThrown) {\n            alert(\"Unfortunately, there may have been an error saving this topic information: \" + errorThrown.toString());\n        });\n    }\n    const handlePictureChange = (url) => {\n        data[\"image_uri\"] = url;\n        setChangedPicture(true);\n        updateData({...data});\n    }\n\n    const deleteObj = function() {\n        const url = `/api/topic/delete/${data.origSlug}`;\n        requestWithCallBack({url, type: \"DELETE\", redirect: () => window.location.href = \"/topics\"});\n    }\n    let items = [\"Title\", \"Hebrew Title\", \"English Description\", \"Hebrew Description\", \"Category Menu\", \"English Alternate Titles\", \"Hebrew Alternate Titles\",];\n    if (isCategory) {\n        items.push(\"English Short Description\");\n        items.push(\"Hebrew Short Description\");\n    }\n    if (isAuthor) {\n        const authorItems = [\"Birth Place\", \"Hebrew Birth Place\", \"Birth Year\", \"Place of Death\", \"Hebrew Place of Death\", \"Death Year\", \"Era\"];\n        authorItems.forEach(x => items.push(x));\n    }\n    items.push(\"Picture Uploader\");\n    items.push(\"English Caption\");\n    items.push(\"Hebrew Caption\");\n    return <AdminEditor title=\"Topic Editor\" close={closeTopicEditor} catMenu={catMenu} data={data} savingStatus={savingStatus}\n                        validate={validate} deleteObj={deleteObj} updateData={updateData} isNew={isNew} items={items}\n                        pictureUploader={<TopicPictureUploader slug={data.origSlug} callback={handlePictureChange} old_filename={data.image_uri}\n                                                               caption={{en: data.enImgCaption, he: data.heImgCaption}}/>}\n                        extras={\n                              [isNew ? null :\n                                <Reorder subcategoriesAndBooks={sortedSubtopics}\n                                         updateOrder={setSortedSubtopics}\n                                         displayType=\"topics\"/>,\n                            ]\n                        } />;\n}\n\n\nexport {TopicEditor};","import React  from 'react';\nimport Sefaria  from './sefaria/sefaria';\nimport PropTypes  from 'prop-types';\nimport {\n    ColorBarBox,\n    SaveButton,\n    SimpleInterfaceBlock,\n    SimpleContentBlock,\n    SimpleLinkedBlock,\n    ProfileListing,\n    InterfaceText,\n    CategoryHeader,\n} from './Misc';\nimport {ContentText} from \"./ContentText\";\n\n// Much of Stories was removed November 2022.\n// It remains because some of the Components are re-used in other areas of the site.\n\nconst sheetPropType = PropTypes.shape({\n    publisher_id:           PropTypes.number,\n    publisher_name:         PropTypes.string,\n    publisher_url:          PropTypes.string,\n    publisher_image:        PropTypes.string,\n    publisher_position:     PropTypes.string,\n    publisher_organization: PropTypes.string,\n    publisher_followed:     PropTypes.bool,\n    sheet_id:               PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    sheet_title:            PropTypes.string,\n    sheet_summary:          PropTypes.string,\n});\nconst textPropType = PropTypes.shape({\n    ref:   PropTypes.string.isRequired,\n    heRef: PropTypes.string.isRequired,\n    en:    PropTypes.string.isRequired,\n    he:    PropTypes.string.isRequired,\n});\nconst bilingualPropType = PropTypes.shape({\n    en: PropTypes.string.isRequired,\n    he: PropTypes.string.isRequired,\n});\n\nconst SheetListStory = (props) => {\n  const lead = props.data.lead || {en: \"Sheets\", he: \"גליונות\"};\n\n  return (\n    <StoryFrame cls=\"sheetListStory\">\n        <StoryTypeBlock en={lead.en} he={lead.he}/>\n        <StoryTitleBlock en={props.data.title.en} he={props.data.title.he}/>\n        <StorySheetList sheets={props.data.sheets} toggleSignUpModal={props.toggleSignUpModal}/>\n    </StoryFrame>\n  );\n};\nSheetListStory.propTypes = {\n  storyForm:    PropTypes.string,\n  timestamp:    PropTypes.number,\n  is_shared:    PropTypes.bool,\n  data:         PropTypes.shape({\n      lead: bilingualPropType,\n      title: bilingualPropType.isRequired,\n      sheets: PropTypes.arrayOf(sheetPropType).isRequired\n  }),\n  interfaceLang:      PropTypes.string,\n  toggleSignUpModal:  PropTypes.func\n};\n\n /****************************\n*                             *\n*           Pieces            *\n*                             *\n *****************************/\n\n// todo: if we don't want the monopoly card effect, this component isn't needed.    // style={{\"borderColor\": cardColor || \"#18345D\"}}>\nconst StoryFrame = ({cls, cardColor, children}) => (\n     <div className={'story ' + cls}>\n        {children}\n     </div>\n);\nStoryFrame.propTypes = {\n    cls:        PropTypes.string,   // Story type as class name\n    cardColor:  PropTypes.string\n};\n\n\nconst StoryTypeBlock = ({en, he}) => (\n    <SimpleInterfaceBlock en={en} he={he} classes=\"storyTypeBlock sectionTitleText\"/>\n);\n\n\nconst StoryTitleBlock = ({url, he, en, children}) => {\n    const SBlock = url ? SimpleLinkedBlock : SimpleInterfaceBlock;\n    return <div className=\"storyTitleBlock\">\n        <SBlock classes=\"storyTitle\" url={url} he={he} en={en}/>\n        {children}\n    </div>;\n};\n\n\nconst StoryBodyBlock = ({children}) => (\n    <SimpleContentBlock classes=\"storyBody\">\n        {children}\n    </SimpleContentBlock>\n);\n\n\nconst StoryTextListItem = ({text, toggleSignUpModal}) => (\n    <div className=\"storyTextListItem\">\n        <ColorBarBox tref={text.ref} >\n            <StoryBodyBlock>\n              <ContentText html={{en: text.en, he: text.he}} />\n            </StoryBodyBlock>\n        </ColorBarBox>\n        <SaveLine dref={text.ref} toggleSignUpModal={toggleSignUpModal}>\n            <SimpleLinkedBlock url={\"/\" + Sefaria.normRef(text.ref)} en={text.ref} he={text.heRef} classes=\"contentText citationLine\"/>\n        </SaveLine>\n    </div>\n);\nStoryTextListItem.propTypes = {text: textPropType.isRequired};\n\n\nconst StorySheetList = ({sheets, toggleSignUpModal, compact, cozy, smallfonts}) => (\n    <div className=\"storySheetList\">\n        {sheets.map((sheet, i) => <SheetBlock sheet={sheet} key={i} smallfonts={smallfonts} compact={compact} cozy={cozy} toggleSignUpModal={toggleSignUpModal}/>)}\n    </div>\n);\nStorySheetList.propTypes = {\n    sheets: PropTypes.arrayOf(sheetPropType).isRequired,\n    toggleSignUpModal: PropTypes.func\n};\n\nconst IntroducedTextPassage = ({text, topic, afterSave, toggleSignUpModal, bodyTextIsLink=false}) => {\n    if (!text.ref) { return null; }\n    const versions = text.versions || {}\n    const params = Sefaria.util.getUrlVersionsParams(versions);\n    const url = \"/\" + Sefaria.normRef(text.ref) + (params ? \"?\" + params  : \"\");\n    const heOnly = !text.en;\n    const enOnly = !text.he;\n    const overrideLanguage = (enOnly || heOnly) ? (heOnly ? \"hebrew\" : \"english\") : null;\n    let innerContent = <ContentText html={{en: text.en, he: text.he}} overrideLanguage={overrideLanguage} bilingualOrder={[\"he\", \"en\"]} />;\n    const content = bodyTextIsLink ? <a href={url} style={{ textDecoration: 'none' }}>{innerContent}</a> : innerContent;\n\n    return (\n        <StoryFrame cls=\"introducedTextPassageStory\">\n            <CategoryHeader type=\"sources\" data={[topic, text]} buttonsToDisplay={[\"edit\"]}>\n                <StoryTitleBlock en={text.descriptions?.en?.title} he={text.descriptions?.he?.title}/>\n            </CategoryHeader>\n            <div className={\"systemText learningPrompt\"}>\n                <InterfaceText text={{\"en\": text.descriptions?.en?.prompt, \"he\": text.descriptions?.he?.prompt}} />\n            </div>\n            <SaveLine\n                dref={text.ref}\n                versions={versions}\n                toggleSignUpModal={toggleSignUpModal}\n                classes={\"storyTitleWrapper\"}\n                afterChildren={afterSave || null} >\n                <SimpleLinkedBlock classes={\"contentText subHeading\"} en={text.ref} he={text.heRef} url={url}/>\n            </SaveLine>\n            <ColorBarBox tref={text.ref}>\n                <StoryBodyBlock>\n                    {content}\n                </StoryBodyBlock>\n            </ColorBarBox>\n        </StoryFrame>\n    );\n};\nIntroducedTextPassage.propTypes = {\n    intros: PropTypes.object,\n    text: textPropType,\n    afterSave: PropTypes.object,\n    toggleSignUpModal:  PropTypes.func\n};\n\nconst TextPassage = ({text, topic, afterSave, toggleSignUpModal, bodyTextIsLink=false}) => {\n  if (!text.ref) { return null; }\n  const versions = text.versions || {}\n  const params = Sefaria.util.getUrlVersionsParams(versions);\n  const url = \"/\" + Sefaria.normRef(text.ref) + (params ? \"?\" + params  : \"\");\n  const heOnly = !text.en;\n  const enOnly = !text.he;\n  const overrideLanguage = (enOnly || heOnly) ? (heOnly ? \"hebrew\" : \"english\") : null;\n  let innerContent = <ContentText html={{en: text.en, he: text.he}} overrideLanguage={overrideLanguage} bilingualOrder={[\"he\", \"en\"]} />;\n  const content = bodyTextIsLink ? <a href={url} style={{ textDecoration: 'none' }}>{innerContent}</a> : innerContent;\n\n  return (\n    <StoryFrame cls=\"textPassageStory\">\n      <CategoryHeader type=\"sources\" data={[topic, text]} buttonsToDisplay={[\"edit\"]}>\n          <SaveLine\n            dref={text.ref}\n            versions={versions}\n            toggleSignUpModal={toggleSignUpModal}\n            classes={\"storyTitleWrapper\"}\n            afterChildren={afterSave || null} >\n              <StoryTitleBlock en={text.ref} he={text.heRef} url={url}/>\n          </SaveLine>\n      </CategoryHeader>\n      <ColorBarBox tref={text.ref}>\n          <StoryBodyBlock>\n            {content}\n          </StoryBodyBlock>\n      </ColorBarBox>\n    </StoryFrame>\n  );\n};\nTextPassage.propTypes = {\n  text: textPropType,\n  afterSave: PropTypes.object,\n  toggleSignUpModal:  PropTypes.func\n};\n\n\nconst SheetBlock = ({sheet, compact, cozy, smallfonts, afterSave, toggleSignUpModal}) => {\n    const historyObject = {\n      ref: \"Sheet \" + sheet.sheet_id,\n      sheet_title: sheet.sheet_title,\n      sheet_owner: sheet.publisher_name,\n      versions: {}\n    };\n\n    return (\n      <StoryFrame cls={\"storySheetListItem\" + (smallfonts ? \" small\" : \"\")}>\n        <SaveLine\n            historyObject={historyObject}\n            afterChildren={afterSave || null}\n            toggleSignUpModal={toggleSignUpModal}>\n            <SimpleLinkedBlock \n                en={sheet.sheet_title}\n                he={sheet.sheet_title}\n                url={\"/sheets/\" + sheet.sheet_id}\n                classes={\"sheetTitle storyTitle\"}/>\n        </SaveLine>\n\n        {(sheet.sheet_summary && !(compact || cozy)) ? \n        <SimpleInterfaceBlock classes={\"storyBody\"} en={sheet.sheet_summary} he={sheet.sheet_summary}/>\n        : null}\n        \n        {cozy ? null :\n        <ProfileListing\n          uid={sheet.publisher_id}\n          url={sheet.publisher_url}\n          image={sheet.publisher_image}\n          name={sheet.publisher_name}\n          is_followed={sheet.publisher_followed}\n          smallfonts={smallfonts}\n          position={sheet.publisher_position}\n          organization={sheet.publisher_organization}\n          toggleSignUpModal={toggleSignUpModal} />}\n      </StoryFrame>\n    );\n};\nSheetBlock.propTypes = {\n    sheet: sheetPropType.isRequired,\n    afterSave: PropTypes.object,\n    toggleSignUpModal:  PropTypes.func\n};\n\n\nconst SaveLine = ({classes, children, historyObject, dref, versions, hideSave, afterChildren, toggleSignUpModal}) => (\n    <div className={\"saveLine \" + (classes ? classes : \"\")}>\n        <div className=\"beforeSave\">\n            {children}\n        </div>\n        {hideSave ? null :\n        <SaveButton tooltip={true}\n            historyObject={historyObject || {ref: dref, versions: versions || {}}}\n            toggleSignUpModal={toggleSignUpModal}\n        />}\n      { afterChildren ? afterChildren : null }\n    </div>\n);\nSaveLine.propTypes = {\n  historyObject:        PropTypes.object,   // One or\n  dref:                 PropTypes.string,   // the other\n  toggleSignUpModal:    PropTypes.func,\n  versions:             PropTypes.object,\n  classes:              PropTypes.string,\n  hideSave:             PropTypes.bool,\n  afterChildren:        PropTypes.object,\n};\n\n\nexport {\n  SheetBlock,\n  StorySheetList,\n  TextPassage,\n  IntroducedTextPassage\n};\n","import React, { useState, useEffect, useCallback, useRef, useMemo } from 'react';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport Sefaria  from './sefaria/sefaria';\nimport { useIncrementalLoad } from './Hooks';\nimport { Promotions } from './Promotions';\nimport { NavSidebar } from './NavSidebar';\nimport Footer from './Footer';\nimport {TopicEditor} from './TopicEditor';\nimport {AdminEditorButton, useEditToggle} from './AdminEditor';\nimport {\n  SheetBlock,\n  TextPassage,\n  IntroducedTextPassage\n} from './Story';\nimport {\n    TabView,\n    LoadingMessage,\n    Link,\n    ResponsiveNBox,\n    InterfaceText,\n    FilterableList,\n    ToolTipped,\n    SimpleLinkedBlock,\n    CategoryHeader,\n    ImageWithCaption\n} from './Misc';\nimport {ContentText} from \"./ContentText\";\n\n/*\n*** Helper functions\n*/\n\n\nconst norm_hebrew_ref = tref => tref.replace(/[׳״]/g, '');\n\n\nconst fetchBulkText = (translationLanguagePreference, inRefs) =>\n  Sefaria.getBulkText(\n    inRefs.map(x => x.ref),\n    true, 500, 600,\n    translationLanguagePreference\n  ).then(outRefs => {\n    for (let tempRef of inRefs) {\n      // annotate outRefs with `order` and `dataSources` from `topicRefs`\n      if (outRefs[tempRef.ref]) {\n        outRefs[tempRef.ref].order = tempRef.order;\n        outRefs[tempRef.ref].dataSources = tempRef.dataSources;\n        if(tempRef.descriptions) {\n            outRefs[tempRef.ref].descriptions = tempRef.descriptions;\n        }\n      }\n    }\n    return Object.entries(outRefs);\n  }\n);\n\n\nconst fetchBulkSheet = inSheets =>\n    Sefaria.getBulkSheets(inSheets.map(x => x.ref)).then(outSheets => {\n    for (let tempSheet of inSheets) {\n      if (outSheets[tempSheet.ref]) {\n        outSheets[tempSheet.ref].order = tempSheet.order;\n      }\n    }\n    return Object.values(outSheets);\n  }\n);\n\n\nconst refFilter = (currFilter, ref) => {\n  const n = text => !!text ? text.toLowerCase() : '';\n  currFilter = n(currFilter);\n  ref[1].categories = Sefaria.refCategories(ref[1].ref).join(\" \");\n  for (let field of ['en', 'he', 'ref', 'categories']) {\n    if (n(ref[1][field]).indexOf(currFilter) > -1) { return true; }\n  }\n};\n\n\nconst sheetFilter = (currFilter, sheet) => {\n  const n = text => !!text ? text.toLowerCase() : '';\n  currFilter = n(currFilter);\n  for (let field of ['sheet_title', 'publisher_name', 'publisher_position', 'publisher_organization']) {\n    if (n(sheet[field]).indexOf(currFilter) > -1) { return true; }\n  }\n};\n\n\nconst refSort = (currSortOption, a, b) => {\n  a = a[1]; b = b[1];\n  if (!a.order && !b.order) { return 0; }\n  if ((0+!!a.order) !== (0+!!b.order)) { return (0+!!b.order) - (0+!!a.order); }\n  if (currSortOption === 'Chronological') {\n    if (a.order.comp_date === b.order.comp_date) {\n      if (a.order.order_id < b.order.order_id) { return -1; }\n      if (b.order.order_id < a.order.order_id) { return 1; }\n      return 0;\n    }\n    return a.order.comp_date - b.order.comp_date;\n  }\n  else {\n    const aAvailLangs = a.order.availableLangs;\n    const bAvailLangs = b.order.availableLangs;\n    if ((Sefaria.interfaceLang === 'english') &&\n      (a.order.curatedPrimacy.en > 0 || b.order.curatedPrimacy.en > 0)) {\n      return b.order.curatedPrimacy.en - a.order.curatedPrimacy.en; }\n    else if ((Sefaria.interfaceLang === 'hebrew') &&\n      (a.order.curatedPrimacy.he > 0 || b.order.curatedPrimacy.he > 0)) {\n      return b.order.curatedPrimacy.he - a.order.curatedPrimacy.he;\n    }\n    if (Sefaria.interfaceLang === 'english' && aAvailLangs.length !== bAvailLangs.length) {\n      if (aAvailLangs.indexOf('en') > -1) { return -1; }\n      if (bAvailLangs.indexOf('en') > -1) { return 1; }\n      return 0;\n    }\n    else if (a.order.custom_order !== b.order.custom_order) { return b.order.custom_order - a.order.custom_order; }  // custom_order, when present, should trump other data\n    else if (a.order.pr !== b.order.pr) {\n        return b.order.pr - a.order.pr;\n    }\n    else { return (b.order.numDatasource * b.order.tfidf) - (a.order.numDatasource * a.order.tfidf); }\n  }\n};\n\n\nconst sheetSort = (currSortOption, a, b) => {\n  if (!a.order && !b.order) { return 0; }\n  if ((0+!!a.order) !== (0+!!b.order)) { return (0+!!b.order) - (0+!!a.order); }\n  const aTLangHe = 0 + (a.order.titleLanguage === 'hebrew');\n  const bTLangHe = 0 + (b.order.titleLanguage === 'hebrew');\n  const aLangHe  = 0 + (a.order.language      === 'hebrew');\n  const bLangHe  = 0 + (b.order.language      === 'hebrew');\n  if (Sefaria.interfaceLang === 'hebrew' && (aTLangHe ^ bTLangHe || aLangHe ^ bLangHe)) {\n    if (aTLangHe ^ bTLangHe && aLangHe ^ bLangHe) { return bTLangHe - aTLangHe; }  // title lang takes precedence over content lang\n    return (bTLangHe + bLangHe) - (aTLangHe + aLangHe);\n  } else if (Sefaria.interfaceLang === 'english' && (aTLangHe ^ bTLangHe || aLangHe ^ bLangHe)) {\n    if (aTLangHe ^ bTLangHe && aLangHe ^ bLangHe) { return aTLangHe - bTLangHe; }  // title lang takes precedence over content lang\n    return (aTLangHe + aLangHe) - (bTLangHe + bLangHe);\n  }\n  if (currSortOption === 'Views') {\n    return b.order.views - a.order.views;\n  } else if (currSortOption === 'Newest') {\n    if (b.order.dateCreated < a.order.dateCreated) { return -1; }\n    if (a.order.dateCreated < b.order.dateCreated) { return 1; }\n  } else {\n    // relevance\n    if (b.order.relevance === a.order.relevance) { return b.order.views - a.order.views; }\n    return (Math.log(b.order.views) * b.order.relevance) - (Math.log(a.order.views) * a.order.relevance);\n  }\n};\n\nconst refRenderWrapper = (toggleSignUpModal, topicData, topicTestVersion) => item => {\n  const text = item[1];\n  const topicTitle = topicData && topicData.primaryTitle;\n  const langKey = Sefaria.interfaceLang === 'english' ? 'en' : 'he';\n  let dataSourceText = '';\n\n  if (!!text.dataSources && Object.values(text.dataSources).length > 0) {\n    dataSourceText = `${Sefaria._('This source is connected to ')}\"${topicTitle && topicTitle[langKey]}\" ${Sefaria._('by')} ${Object.values(text.dataSources).map(d => d[langKey]).join(' & ')}.`;\n  }\n\n  const afterSave = (\n    <ToolTipped altText={dataSourceText} classes={\"saveButton tooltip-toggle three-dots-button\"}>\n      <img src=\"/static/img/three-dots.svg\" alt={dataSourceText}/>\n    </ToolTipped>\n  );\n\n  const hasPrompts = text.descriptions && text.descriptions[langKey] && text.descriptions[langKey].title;\n  const Passage = (topicTestVersion && hasPrompts) ? IntroducedTextPassage : TextPassage;\n  return (\n    <Passage\n      key={item[0]}\n      topic={topicData.slug}\n      text={text}\n      afterSave={afterSave}\n      toggleSignUpModal={toggleSignUpModal}\n      bodyTextIsLink= {true}\n    />\n  );\n};\n\n\nconst sheetRenderWrapper = (toggleSignUpModal) => item => (\n  <SheetBlock key={item.sheet_id} sheet={item} toggleSignUpModal={toggleSignUpModal}/>\n);\n\n\n/*\n*** Components\n*/\n\n\n\nconst TopicCategory = ({topic, topicTitle, setTopic, setNavTopic, compare, initialWidth,\n  openDisplaySettings, openSearch}) => {\n    const [topicData, setTopicData] = useState(Sefaria.getTopicFromCache(topic) || {primaryTitle: topicTitle});\n    const [subtopics, setSubtopics] = useState(Sefaria.topicTocPage(topic));\n\n    useEffect(() => {\n        Sefaria.getTopic(topic).then(setTopicData);\n    }, [topic]);\n\n    useEffect(() => {\n        setSubtopics(Sefaria.topicTocPage(topic));\n    }, [topic]);\n\n\n    let topicBlocks = subtopics\n      .filter(t => t.shouldDisplay !== false)\n      .sort(Sefaria.sortTopicsCompareFn)\n      .map((t,i) => {\n        const { slug, children, description} = t;\n        const openTopic = e => {\n          e.preventDefault();\n          t.children ? setNavTopic(slug, {en, he}) : setTopic(slug, {en, he});\n        };\n        let {en, he} = t;\n        en = en.replace(/^Parashat /, \"\");\n        he = he.replace(/^פרשת /, \"\");\n        return (\n            <div className=\"navBlock\">\n              <a href={`/topics/${children ? 'category/' : ''}${slug}`}\n                 className=\"navBlockTitle\"\n                 onClick={openTopic}\n                 key={i}>\n                <InterfaceText text={{en, he}} />\n              </a>\n              {description ?\n              <div className=\"navBlockDescription clamped\">\n                <InterfaceText markdown={{en: description.en, he: description.he}} disallowedMarkdownElements={['a']}/>\n              </div>\n              : null }\n            </div>\n        );\n      });\n\n    const sidebarModules = [\n      {type: \"Promo\"},\n      {type: \"TrendingTopics\"},\n    ];\n    if (topicData.description) {\n      sidebarModules.unshift({\n        type: \"TitledText\",\n        props: {\n          enTitle: \"About\",\n          heTitle: Sefaria._(\"About\"),\n          enText: topicData.description.en,\n          heText: topicData.description.he\n        }\n      });\n    }\n\n    return (\n        <div className=\"readerNavMenu noLangToggleInHebrew\">\n            <div className=\"content readerTocTopics\">\n                <div className=\"sidebarLayout\">\n                  <div className=\"contentInner\">\n                      <div className=\"navTitle tight\">\n                        <CategoryHeader type=\"topics\" data={topicData}>\n                            <h1><InterfaceText text={{en: topicTitle.en, he: topicTitle.he}} /></h1>\n                        </CategoryHeader>\n                      </div>\n                      <div className=\"readerNavCategories\">\n                        <ResponsiveNBox content={topicBlocks} initialWidth={initialWidth} />\n                      </div>\n                  </div>\n                  <NavSidebar modules={sidebarModules} />\n                </div>\n                <Footer />\n            </div>\n        </div>\n    );\n};\n\nconst TopicSponsorship = ({topic_slug}) => {\n    // TODO: Store this data somewhere intelligent\n    const topic_sponsorship_map = {\n        \"parashat-lech-lecha\": {\n            \"en\": \"Sponsored by The Rita J. & Stanley H. Kaplan Family Foundation in honor of Scott and Erica Belsky’s wedding anniversary.\",\n            \"he\": \"נתרם על-ידי קרן משפחת ריטה ג’. וסטנלי ה. קפלן, לכבוד יום הנישואים של סקוט ואריקה בלסקי.\"\n        },\n        \"parashat-toldot\" : {\n            \"en\": \"Dedicated by Nancy (née Ackerman) and Alex Warshofsky in gratitude for Jewish learning as their daughter, Avigayil, is called to the Torah as a bat mitzvah, and in loving memory of Freydl Gitl who paved the way in her Jewish life.\",\n            \"he\": \"מוקדש על-ידי ננסי (שם נעורים: אקרמן) ואלכס ורשופסקי בתודה על לימודי היהדות, לציון עלייתה של בתם אביגיל לתורה לרגל בת המצווה שלה ולזכרה האהוב של פריידי גיטל שסללה את הדרך בחייה היהודיים.\"\n        },\n        \"parashat-vayigash\": {\n            \"en\": \"Dedicated by Linda and Leib Koyfman in memory of Dr. Douglas Rosenman, z\\\"l, beloved father of Hilary Koyfman, and father-in-law of Mo Koyfman.\",\n            \"he\": \"נתרם על-ידי לינדה ולייב קויפמן לזכר ד\\\"ר דאגלס רוזנמן ז\\\"ל, אביה האהוב של הילארי קויפמן וחותנו של מו קויפמן\"\n        },\n        \"parashat-achrei-mot\": {\n            \"en\": \"Dedicated by Kevin Waldman in loving memory of his grandparents, Rose and Morris Waldman, who helped nurture his commitment to Jewish life.\",\n            \"he\": \"מוקדש על-ידי קווין ולדמן לזכרם האהוב של סביו, רוז ומוריס ולדמן, שעזרו לטפח את מחויבותו לחיים יהודיים.\"\n        },\n        \"parashat-vaetchanan\": {\n            \"en\": \"Shabbat Nachamu learning is dedicated in memory of Jerome L. Stern, Yehuda Leib ben David Shmuel, z\\\"l.\",\n            \"he\": \"הלימוד לשבת נחמו מוקדש לזכרו של ג'רום ל. שטרן, יהודה לייב בן דוד שמואל ז\\\"ל.\"\n        }\n\n    };\n    const sponsorship_language = topic_sponsorship_map[topic_slug];\n    if (!sponsorship_language) return null;\n\n    return (\n        <div className=\"dedication\">\n            <InterfaceText text={sponsorship_language}/>\n        </div>\n    );\n}\n\nconst TopicHeader = ({ topic, topicData, topicTitle, multiPanel, isCat, setNavTopic, openDisplaySettings, openSearch, topicImage }) => {\n  const { en, he } = !!topicData && topicData.primaryTitle ? topicData.primaryTitle : {en: \"Loading...\", he: \"טוען...\"};\n  const isTransliteration = !!topicData ? topicData.primaryTitleIsTransliteration : {en: false, he: false};\n  const category = !!topicData ? Sefaria.topicTocCategory(topicData.slug) : null;\n\n  const tpTopImg = !multiPanel && topicImage ? <TopicImage photoLink={topicImage.image_uri} caption={topicImage.image_caption}/> : null;\n  return (\n    <div>\n      \n        <div className=\"navTitle tight\">\n                <CategoryHeader type=\"topics\" data={topicData} buttonsToDisplay={[\"source\", \"edit\", \"reorder\"]}>\n                <h1>\n                    <InterfaceText text={{en:en, he:he}}/>\n                </h1>\n                </CategoryHeader>\n        </div>\n       {!topicData && !isCat ?<LoadingMessage/> : null}\n       {!isCat && category ?\n           <div className=\"topicCategory sectionTitleText\">\n             <a href={`/topics/category/${category.slug}`} onClick={e=>{ e.preventDefault(); setNavTopic(category.slug, category); }}>\n               <InterfaceText text={{en: category.en, he: category.he}}/>\n             </a>\n           </div>\n       : null}\n       {topicData && topicData.ref ?\n           <TopicSponsorship topic_slug={topicData.slug} />\n       : null }\n       {topicData && topicData.description ?\n           <div className=\"topicDescription systemText\">\n              <InterfaceText markdown={{en: topicData.description.en, he: topicData.description.he}}/>\n            </div>\n       : null}\n       {tpTopImg}\n       {topicData && topicData.ref ?\n         <a href={`/${topicData.ref.url}`} className=\"resourcesLink button blue\">\n           <img src=\"/static/icons/book-icon-black.svg\" alt=\"Book Icon\" />\n           <span className=\"int-en\">{ topicData.parasha ? Sefaria._('Read the Portion') : topicData.ref.en }</span>\n           <span className=\"int-he\">{ topicData.parasha ? Sefaria._('Read the Portion') : norm_hebrew_ref(topicData.ref.he) }</span>\n         </a>\n       : null}\n       {topicData?.indexes?.length ?\n        <div>\n          <div className=\"sectionTitleText authorIndexTitle\"><InterfaceText>Works on {Sefaria._siteSettings.SITE_NAME.en}</InterfaceText></div>\n          <div className=\"authorIndexList\">\n            {topicData.indexes.map(({url, title, description}) => <AuthorIndexItem key={url} url={url} title={title} description={description}/>)}\n          </div>\n        </div>\n       : null}\n    </div>\n);}\n\nconst AuthorIndexItem = ({url, title, description}) => {\n  return (\n      <div className=\"authorIndex\" >\n      <a href={url} className=\"navBlockTitle\">\n        <ContentText text={title} defaultToInterfaceOnBilingual />\n      </a>\n      <div className=\"navBlockDescription\">\n        <ContentText text={description} defaultToInterfaceOnBilingual />\n      </div>\n    </div>\n  );\n};\n\n\nconst useTabDisplayData = (translationLanguagePreference) => {\n  const getTabDisplayData = useCallback(() => [\n    {\n      key: 'popular-writing-of',\n      fetcher: fetchBulkText.bind(null, translationLanguagePreference),\n      sortOptions: ['Relevance', 'Chronological'],\n      filterFunc: refFilter,\n      sortFunc: refSort,\n      renderWrapper: refRenderWrapper,\n    },\n    {\n      key: 'sources',\n      fetcher: fetchBulkText.bind(null, translationLanguagePreference),\n      sortOptions: ['Relevance', 'Chronological'],\n      filterFunc: refFilter,\n      sortFunc: refSort,\n      renderWrapper: refRenderWrapper,\n    },\n    {\n      key: 'sheets',\n      fetcher: fetchBulkSheet,\n      sortOptions: ['Relevance', 'Views', 'Newest'],\n      filterFunc: sheetFilter,\n      sortFunc: sheetSort,\n      renderWrapper: sheetRenderWrapper,\n    }\n  ], [translationLanguagePreference]);\n  return getTabDisplayData();\n};\n\nconst PortalNavSideBar = ({portal, entriesToDisplayList}) => {\n   const portalModuleTypeMap = {\n    \"about\": \"PortalAbout\",\n    \"mobile\": \"PortalMobile\",\n    \"organization\": \"PortalOrganization\",\n    \"newsletter\": \"PortalNewsletter\"\n    }\n    const modules = [];\n    for (let key of entriesToDisplayList) {\n        if (!portal[key]) { continue; }\n        modules.push({\n            type: portalModuleTypeMap[key],\n            props: portal[key],\n        });\n    }\n    return(\n        <NavSidebar modules={modules} />\n    )\n};\n\nconst TopicPage = ({\n  tab, topic, topicTitle, setTopic, setNavTopic, openTopics, multiPanel, showBaseText, navHome,\n  toggleSignUpModal, openDisplaySettings, setTab, openSearch, translationLanguagePreference, versionPref,\n  topicTestVersion, onSetTopicSort, topicSort\n}) => {\n    const defaultTopicData = {primaryTitle: topicTitle, tabs: {}, isLoading: true};\n    const [topicData, setTopicData] = useState(Sefaria.getTopicFromCache(topic, {with_html: true}) || defaultTopicData);\n    const [loadedData, setLoadedData] = useState(topicData ? Object.entries(topicData.tabs).reduce((obj, [key, tabObj]) => { obj[key] = tabObj.loadedData; return obj; }, {}) : {});\n    const [refsToFetchByTab, setRefsToFetchByTab] = useState({});\n    const [parashaData, setParashaData] = useState(null);\n    const [showFilterHeader, setShowFilterHeader] = useState(false);\n    const [portal, setPortal] = useState(null);\n    const tabDisplayData = useTabDisplayData(translationLanguagePreference, versionPref);\n    const topicImage = topicData.image;\n\n    const scrollableElement = useRef();\n    const clearAndSetTopic = (topic, topicTitle) => {setTopic(topic, topicTitle)};\n\n    // Initial Topic Data, updates when `topic` changes\n    useEffect(() => {\n      setTopicData(defaultTopicData); // Ensures topicTitle displays while loading\n      const { promise, cancel } = Sefaria.makeCancelable((async () => {\n        const d = await Sefaria.getTopic(topic, {with_html: true});\n        if (d.parasha) { Sefaria.getParashaNextRead(d.parasha).then(setParashaData); }\n        setTopicData(d);\n        // Data remaining to fetch that was not already in the cache\n        for (let [tabKey, tabObj] of Object.entries(d.tabs)) {\n          const refsWithoutData = tabObj.loadedData ? tabObj.refs.slice(tabObj.loadedData.length) : tabObj.refs;\n          if (refsWithoutData.length)  {\n            setRefsToFetchByTab(prev => ({...prev, [tabKey]: refsWithoutData}));\n          } else {\n            setLoadedData(prev => ({...prev, [tabKey]: tabObj.loadedData}));\n          }\n        }\n      })());\n      promise.catch((error) => { if (!error.isCanceled) { console.log('TopicPage Error', error); } });\n      return () => {\n        cancel();\n        setTopicData(false);\n        setLoadedData({});\n        setRefsToFetchByTab({});\n      }\n    }, [topic]);\n\n    // Set up tabs and register incremental load hooks\n    const displayTabs = [];\n    let onClickFilterIndex = 2;\n    for (let tabObj of tabDisplayData) {\n      const { key } = tabObj;\n      useIncrementalLoad(\n        tabObj.fetcher,\n        refsToFetchByTab[key] || false,\n        Sefaria._topicPageSize,\n        data => setLoadedData(prev => {\n          const updatedData = (!prev[key] || data === false) ? data : [...prev[key], ...data];\n          if (topicData?.tabs?.[key]) { topicData.tabs[key].loadedData = updatedData; } // Persist loadedData in cache\n          return {...prev, [key]: updatedData};\n        }),\n        topic\n      );\n      if (topicData?.tabs?.[key]) {\n        displayTabs.push({\n          title: topicData.tabs[key].title,\n          id: key,\n        });\n      }\n    }\n    if (displayTabs.length) {\n      displayTabs.push({\n        title: {\n          en: \"Filter\",\n          he: Sefaria._(\"Filter\")\n        },\n        id: 'filter',\n        icon: `/static/icons/arrow-${showFilterHeader ? 'up' : 'down'}-bold.svg`,\n        justifyright: true\n      });\n      onClickFilterIndex = displayTabs.length - 1;\n    }\n    const classStr = classNames({topicPanel: 1, readerNavMenu: 1});\n    let sidebar = null;\n    if (topicData) {\n        if (topicData.portal_slug) {\n            Sefaria.getPortal(topicData.portal_slug).then(setPortal);\n            if (portal) {\n                sidebar = <PortalNavSideBar portal={portal} entriesToDisplayList={[\"about\"]}/> // \"mobile\", \"organization\", \"newsletter\"]}/>\n            }\n        } else {\n           sidebar = (\n               <div className=\"sideColumn\">\n                    <TopicSideColumn\n                        key={topic}\n                        slug={topic}\n                        links={topicData.links}\n                        clearAndSetTopic={clearAndSetTopic}\n                        setNavTopic={setNavTopic}\n                        parashaData={parashaData}\n                        tref={topicData.ref}\n                        timePeriod={topicData.timePeriod}\n                        properties={topicData.properties}\n                        topicTitle={topicTitle}\n                        multiPanel={multiPanel}\n                        topicImage={topicImage}\n                    />\n                    {!topicData.isLoading && <Promotions/>}\n                </div>\n            );\n        }\n    }\n    return <div className={classStr}>\n        <div className=\"content noOverflowX\" ref={scrollableElement}>\n            <div className=\"columnLayout\">\n               <div className=\"mainColumn storyFeedInner\">\n                    <TopicHeader topic={topic} topicData={topicData} topicTitle={topicTitle} multiPanel={multiPanel} setNavTopic={setNavTopic} openSearch={openSearch} openDisplaySettings={openDisplaySettings} topicImage={topicImage} />\n                    {(!topicData.isLoading && displayTabs.length) ?\n                       <TabView\n                          currTabName={tab}\n                          setTab={setTab}\n                          tabs={displayTabs}\n                          renderTab={t => (\n                            <div className={classNames({tab: 1, noselect: 1, filter: t.justifyright, open: t.justifyright && showFilterHeader})}>\n                              <InterfaceText text={t.title} />\n                              { t.icon ? <img src={t.icon} alt={`${t.title.en} icon`} /> : null }\n                            </div>\n                          )}\n                          containerClasses={\"largeTabs\"}\n                          onClickArray={{[onClickFilterIndex]: ()=>setShowFilterHeader(!showFilterHeader)}}\n                        >\n                          {\n                            tabDisplayData.map(tabObj => {\n                              const { key, sortOptions, filterFunc, sortFunc, renderWrapper } = tabObj;\n                              const displayTab = displayTabs.find(x => x.id === key);\n                              if (!displayTab) { return null; }\n                              return (\n                                <TopicPageTab\n                                  key={key}\n                                  scrollableElement={scrollableElement}\n                                  showFilterHeader={showFilterHeader}\n                                  data={loadedData[key]}\n                                  sortOptions={sortOptions}\n                                  filterFunc={filterFunc}\n                                  sortFunc={sortFunc}\n                                  onDisplayedDataChange={data => {\n                                    if (!topicData._refsDisplayedByTab) { topicData._refsDisplayedByTab = {}; }\n                                    topicData._refsDisplayedByTab[key] = data.length;\n                                  }}\n                                  initialRenderSize={(topicData._refsDisplayedByTab && topicData._refsDisplayedByTab[key]) || 0}\n                                  renderItem={renderWrapper(toggleSignUpModal, topicData, topicTestVersion)}\n                                  onSetTopicSort={onSetTopicSort}\n                                  topicSort={topicSort}\n                                />\n                              );\n                            })\n                          }\n                        </TabView>\n                    : (topicData.isLoading ? <LoadingMessage /> : null) }\n                </div>\n                {sidebar}\n            </div>\n            <Footer />\n          </div>\n      </div>;\n};\nTopicPage.propTypes = {\n  tab:                 PropTypes.string,\n  topic:               PropTypes.string.isRequired,\n  setTopic:            PropTypes.func.isRequired,\n  setNavTopic:         PropTypes.func.isRequired,\n  openTopics:          PropTypes.func.isRequired,\n  setTab:              PropTypes.func.isRequired,\n  multiPanel:          PropTypes.bool,\n  showBaseText:        PropTypes.func,\n  navHome:             PropTypes.func,\n  openDisplaySettings: PropTypes.func,\n  toggleSignUpModal:   PropTypes.func,\n  topicTestVersion:    PropTypes.string\n};\n\n\nconst TopicPageTab = ({\n  data, renderItem, classes, sortOptions, sortFunc, filterFunc, showFilterHeader,\n  scrollableElement, onDisplayedDataChange, initialRenderSize, onSetTopicSort, topicSort\n}) => {\n  return (\n    <div className=\"topicTabContents\">\n      {!!data ?\n        <div className={classes}>\n          <FilterableList\n            pageSize={20}\n            scrollableElement={scrollableElement}\n            showFilterHeader={showFilterHeader}\n            filterFunc={filterFunc}\n            sortFunc={sortFunc}\n            renderItem={renderItem}\n            renderEmptyList={()=>null}\n            renderHeader={()=>null}\n            sortOptions={sortOptions}\n            onDisplayedDataChange={onDisplayedDataChange}\n            initialRenderSize={initialRenderSize}\n            onSetSort={onSetTopicSort}\n            externalSortOption={topicSort}\n            data={data}\n          />\n        </div> : <LoadingMessage />\n      }\n    </div>\n  );\n}\n\n\nconst TopicLink = ({topic, topicTitle, onClick, isTransliteration, isCategory}) => (\n  <Link className=\"relatedTopic\" href={`/topics/${isCategory ? 'category/' : ''}${topic}`}\n    onClick={onClick.bind(null, topic, topicTitle)} key={topic}\n    title={topicTitle.en}\n  >\n    <InterfaceText text={{en:topicTitle.en, he:topicTitle.he}}/>\n  </Link>\n);\nTopicLink.propTypes = {\n  topic: PropTypes.string.isRequired,\n  clearAndSetTopic: PropTypes.func.isRequired,\n  isTransliteration: PropTypes.object,\n};\n\n\nconst TopicSideColumn = ({ slug, links, clearAndSetTopic, parashaData, tref, setNavTopic, timePeriod, properties, topicTitle, multiPanel, topicImage }) => {\n  const category = Sefaria.topicTocCategory(slug);\n  const linkTypeArray = links ? Object.values(links).filter(linkType => !!linkType && linkType.shouldDisplay && linkType.links.filter(l => l.shouldDisplay !== false).length > 0) : [];\n  if (linkTypeArray.length === 0) {\n    linkTypeArray.push({\n      title: {\n        en: !category ? 'Explore Topics' : category.en,\n        he: !category ?  'נושאים כלליים' : category.he,\n      },\n      links: Sefaria.topicTocPage(category && category.slug).slice(0, 20).map(({slug, en, he}) => ({\n        topic: slug,\n        title: {en, he},\n        isCategory: !category,\n      })),\n    })\n  }\n  const hasReadings = parashaData && (!Array.isArray(parashaData) || parashaData.length > 0) && tref;\n  const readingsComponent = hasReadings ? (\n    <ReadingsComponent parashaData={parashaData} tref={tref} />\n  ) : null;\n  const topicMetaData = <TopicMetaData timePeriod={timePeriod} properties={properties} topicTitle={topicTitle} multiPanel={multiPanel} topicImage={topicImage}/>;\n  const linksComponent = (\n    links ?\n        linkTypeArray.sort((a, b) => {\n        const aInd = a.title.en.indexOf('Related');\n        const bInd = b.title.en.indexOf('Related');\n        if (aInd > -1 && bInd > -1) { return 0; }\n        if (aInd > -1) { return -1; }\n        if (bInd > -1) { return 1; }\n        //alphabetical by en just to keep order consistent\n        return a.title.en.localeCompare(b.title.en);\n      })\n      .map(({ title, pluralTitle, links }) => {\n        const linksToDisplay = links.filter(l => l.shouldDisplay !== false);\n        const hasPlural = linksToDisplay.length > 1 && pluralTitle;\n        const pluralizedTitle = {\n          en: hasPlural ? pluralTitle.en : title.en,\n          he: hasPlural ? pluralTitle.he : title.he,\n        };\n        const hasMore = linksToDisplay.length > 10;\n        return (\n          <TopicSideSection key={title.en+title.he} title={pluralizedTitle} hasMore={hasMore}>\n            {\n              linksToDisplay\n              .sort((a, b) => {\n                const shortLang = Sefaria.interfaceLang == 'hebrew' ? 'he' : 'en';\n                if (!!a.title[shortLang] !== !!b.title[shortLang]) {\n                  return (0+!!b.title[shortLang]) - (0+!!a.title[shortLang]);\n                }\n                if (!a.order && !b.order) { return 0; }\n                if ((0+!!a.order) !== (0+!!b.order)) { return (0+!!b.order) - (0+!!a.order); }\n                return b.order.tfidf - a.order.tfidf;\n              })\n              .map(l =>\n                TopicLink({\n                  topic:l.topic, topicTitle: l.title,\n                  onClick: l.isCategory ? setNavTopic : clearAndSetTopic,\n                  isTransliteration: l.titleIsTransliteration,\n                  isCategory: l.isCategory\n                })\n              )\n            }\n          </TopicSideSection>\n        );\n      })\n    : null\n  );\n  return (\n    <div className={\"topicSideColumn\"}>\n      { readingsComponent }\n      { topicMetaData }\n      { linksComponent }\n    </div>\n  )\n}\nTopicSideColumn.propTypes = {\n  topicData: PropTypes.object,\n  clearAndSetTopic: PropTypes.func.isRequired,\n};\n\n\nconst TopicSideSection = ({ title, children, hasMore }) => {\n  const [showMore, setShowMore] = useState(false);\n  return (\n    <div key={title.en} className=\"link-section\">\n      <h2>\n        <span className=\"int-en\">{title.en}</span>\n        <span className=\"int-he\">{title.he}</span>\n      </h2>\n      <div className=\"sideList\">\n        { React.Children.toArray(children).slice(0, showMore ? undefined : 10) }\n      </div>\n      {\n        hasMore ?\n        (\n          <div className=\"sideColumnMore sans-serif\" onClick={() => setShowMore(!showMore)}>\n            <InterfaceText>{ showMore ? \"Less\" : \"More\" }</InterfaceText>\n          </div>\n        )\n        : null\n      }\n    </div>\n  );\n}\n\nconst TopicImage = ({photoLink, caption }) => {\n  \n  return (\n    <div class=\"topicImage\">\n      <ImageWithCaption photoLink={photoLink} caption={caption} />\n    </div>);\n}\n\n\nconst ReadingsComponent = ({ parashaData, tref }) => (\n  <div className=\"readings link-section\">\n    <h2>\n      <InterfaceText text={{en:\"Readings\", he:\"פרשיות והפטרות\"}}  />\n    </h2>\n    <span className=\"smallText parasha-date\">\n      <InterfaceText text={{en:Sefaria.util.localeDate(parashaData.date), he:Sefaria.util.localeDate(parashaData.date)}} />\n      <InterfaceText text={{en:Sefaria.util.hebrewCalendarDateStr(parashaData.date), he:Sefaria.util.hebrewCalendarDateStr(parashaData.date)}} />\n    </span>\n    <div className=\"parasha\">\n        <div className=\"sectionTitleText\"><InterfaceText text={{en:\"Torah\", he:\"תורה\"}} /></div>\n        <div className=\"navSidebarLink ref serif\">\n            <img src=\"/static/icons/book.svg\" className=\"navSidebarIcon\" alt=\"book icon\" />\n            <a href={'/' + tref.url} className=\"contentText\"><InterfaceText text={{en:tref.en, he:norm_hebrew_ref(tref.he)}} /></a>\n        </div>\n        <div className=\"aliyot\">\n        {\n            parashaData.parasha?.extraDetails?.aliyot?.map((aliya, index) => {\n               let sectionNum = index+1;\n               let sectionStr = sectionNum <= 7 ? sectionNum : 'M';\n               let heSectionStr = sectionNum <= 7 ? Sefaria.hebrew.encodeHebrewNumeral(sectionNum) : 'מ';\n               return (\n                  <a className=\"sectionLink\" href={\"/\" + Sefaria.normRef(aliya)} data-ref={aliya} key={aliya}>\n                    <InterfaceText text={{en:sectionStr, he:heSectionStr}}/>\n                  </a>\n                );\n            }) ?? null\n        }\n        </div>\n    </div>\n    <div className=\"haftarah\">\n        <div className=\"sectionTitleText\"><InterfaceText text={{en:\"Haftarah\", he:\"הפטרה\"}}/></div>\n        {parashaData.haftarah ?\n            <div className=\"haftarot\">\n            {\n              parashaData.haftarah.map(h => (\n                <div className=\"navSidebarLink ref serif\">\n                    <img src=\"/static/icons/book.svg\" className=\"navSidebarIcon\" alt=\"book icon\" />\n                    <a href={'/' + h.url} className=\"contentText\" key={h.url}>\n                      <InterfaceText text={{en:h.displayValue.en, he:norm_hebrew_ref(h.displayValue.he)}} />\n                    </a>\n                </div>\n              ))\n            }\n            </div> : \"\"}\n    </div>\n  </div>\n);\n\nconst propKeys = [\n  {en: 'enWikiLink', he: 'heWikiLink', title: 'Wikipedia'},\n  {en: 'jeLink', he: 'jeLink', title: 'Jewish Encyclopedia'},\n  {en: 'enNliLink', he: 'heNliLink', title: 'National Library of Israel'},\n];\n\n\nconst TopicMetaData = ({ topicTitle, timePeriod, multiPanel, topicImage, properties={} }) => {\n  const tpSection = !!timePeriod ? (\n    <TopicSideSection title={{en: \"Lived\", he: \"תקופת פעילות\"}}>\n      <div className=\"systemText topicMetaData\"><InterfaceText text={timePeriod.name} /></div>\n      <div className=\"systemText topicMetaData\"><InterfaceText text={timePeriod.yearRange} /></div>\n    </TopicSideSection>\n  ) : null;\n  const propValues = propKeys.map(keyObj => ({\n    url: {\n      en: (properties[keyObj.en] || {})['value'],\n      he: (properties[keyObj.he] || {})['value'],\n    },\n    title: keyObj.title,\n  }));\n  const hasProps = propValues.reduce((accum, curr) => accum || curr.url.en || curr.url.he, false);\n  const propsSection = hasProps ? (\n      <TopicSideSection title={{en: \"Learn More\", he: \"לקריאה נוספת\"}}>\n        {\n          propValues.map(propObj => {\n            let url, urlExists = true;\n            if (Sefaria.interfaceLang === 'hebrew') {\n              if (!propObj.url.he) { urlExists = false; }\n              url = propObj.url.he || propObj.url.en;\n            } else {\n              if (!propObj.url.en) { urlExists = false; }\n              url = propObj.url.en || propObj.url.he;\n            }\n            if (!url) { return null; }\n            return (\n              <SimpleLinkedBlock\n                key={url} en={propObj.title + (urlExists ? \"\" : \" (Hebrew)\")} he={Sefaria._(propObj.title) + (urlExists ? \"\" : ` (${Sefaria._(\"English\")})`)}\n                url={url} aclasses={\"systemText topicMetaData\"} openInNewTab\n              />\n            );\n          })\n        }\n      </TopicSideSection>\n  ) : null;\n\n  const tpSidebarImg = multiPanel && topicImage ? <TopicImage photoLink={topicImage.image_uri} caption={topicImage.image_caption}/> : null;\n  return (\n    <>\n      {tpSidebarImg}\n      { tpSection }\n      { propsSection }\n    </>\n  );\n};\n\n\nexport {\n  TopicPage,\n  TopicCategory,\n  refSort,\n  TopicImage\n}\n","export const SignUpModalKind = {\n  AddConnection: Symbol(\"Add Connection\"),\n  AddToSheet: Symbol(\"Add to Sheet\"),\n  AddTranslation: Symbol(\"Add Translation\"),\n  Follow: Symbol(\"Follow\"),\n  Notes: Symbol(\"Notes\"),\n  Save: Symbol(\"Save\"),\n  Default: Symbol(\"Default\"),\n};\n\nconst signUpModalContent = {\n  [SignUpModalKind.AddConnection]: {\n    h2: {\n      en: \"Want to document a connection to another text?\",\n      he: \"רוצים לתעד חיבור לטקסט נוסף?\",\n    },\n    h3: {\n      en: `Create a free account to do more on Contextus}`,\n      he: \"פתחו חשבון משתמש בחינם - ותוכלו לעשות הרבה יותר עם ספריא\",\n    },\n    contentList: [\n      {\n        icon: \"tools-add-connection-white.svg\",\n        bulletContent: {\n          en: \"Add interconnections & translations\",\n          he: \"הוסיפו תרגומים וחיבורים בין טקסטים\",\n        },\n      },\n      {\n        icon: \"sheetsplus-white.svg\",\n        bulletContent: {\n          en: \"Build & share source sheets\",\n          he: \"בנו ושתפו דפי מקורות\",\n        },\n      },\n      {\n        icon: \"note-white.png\",\n        bulletContent: { en: \"Take notes\", he: \"רשמו הערות\" },\n      },\n      {\n        icon: \"email-white.png\",\n        bulletContent: {\n          en: \"Get updates on new texts\",\n          he: \"התעדכנו בטקסטים חדשים הנוספים לספרייה\",\n        },\n      },\n    ],\n  },\n  [SignUpModalKind.AddToSheet]: {\n    h2: {\n      en: \"Want to make your own source sheet?\",\n      he: \"רוצים ליצור דף מקורות משלכם?\",\n    },\n    h3: {\n      en: \"Create a free account to join the conversation\",\n      he: \"פתחו חשבון משתמש בחינם כדי להוסיף דפי מקורות משלכם - ועוד:\",\n    },\n    contentList: [\n      {\n        icon: \"sheetsplus-white.svg\",\n        bulletContent: {\n          en: \"Build & share source sheets\",\n          he: \"בנו ושתפו דפי מקורות\",\n        },\n      },\n      {\n        icon: \"star-white.png\",\n        bulletContent: { en: \"Save texts\", he: \"שמרו טקסטים\" },\n      },\n      {\n        icon: \"note-white.svg\",\n        bulletContent: { en: \"Take notes\", he: \"רשמו הערות\" },\n      },\n      {\n        icon: \"share-icon-white.svg\",\n        bulletContent: {\n          en: \"Connect with other users\",\n          he: \"התחברו עם משתמשי ספריא אחרים\",\n        },\n      },\n    ],\n  },\n  [SignUpModalKind.AddTranslation]: {\n    h2: {\n      en: \"Have your own translation of this text?\",\n      he: \"יש לכם תרגום משלכם לטקסט זה?\",\n    },\n    h3: {\n      en: `Create a free account to add it to the library & do more on Contextus`,\n      he: \"פתחו חשבון משתמש בחינם כדי להוסיף אותו לספרייה - ועוד:\",\n    },\n    contentList: [\n      {\n        icon: \"sheetsplus-white.svg\",\n        bulletContent: {\n          en: \"Build & share source sheets\",\n          he: \"בנו ושתפו דפי מקורות\",\n        },\n      },\n      {\n        icon: \"star-white.png\",\n        bulletContent: { en: \"Save texts\", he: \"שמרו טקסטים\" },\n      },\n      {\n        icon: \"note-white.svg\",\n        bulletContent: { en: \"Take notes\", he: \"רשמו הערות\" },\n      },\n      {\n        icon: \"share-icon-white.svg\",\n        bulletContent: {\n          en: \"Connect with other users\",\n          he: \"התחברו עם משתמשי ספריא אחרים\",\n        },\n      },\n    ],\n  },\n  [SignUpModalKind.Follow]: {\n    h2: {\n      en: `Want to connect with other Contextus users?`,\n      he: \"רוצים להתחבר עם משתמשים אחרים בספריא?\",\n    },\n    h3: {\n      en: \"Create a free account to join the conversation\",\n      he: \"פתחו חשבון משתמש בחינם והצטרפו לשיח\",\n    },\n    contentList: [\n      {\n        icon: \"profile-white.svg\",\n        bulletContent: {\n          en: \"Follow your favorite creators\",\n          he: \"עקבו אחרי היוצרים האהובים עליכם\",\n        },\n      },\n      {\n        icon: \"sheetsplus-white.svg\",\n        bulletContent: {\n          en: \"Build & share source sheets\",\n          he: \"בנו ושתפו דפי מקורות\",\n        },\n      },\n      {\n        icon: \"note-white.svg\",\n        bulletContent: { en: \"Send messages\", he: \"שלחו הודעות דרך ספריא\" },\n      },\n    ],\n  },\n  [SignUpModalKind.Notes]: {\n    h2: { en: \"Don’t lose that thought!\", he: \"אל תשכחו את המחשבה שעלתה בכם!\" },\n    h3: {\n      en: `Create a free account to do more on Contextus`,\n      he: \"פתחו חשבון משתמש בחינם כדי לעשות יותר עם ספריא\",\n    },\n    contentList: [\n      {\n        icon: \"note-white.svg\",\n        bulletContent: {\n          en: \"Take notes on this text\",\n          he: \"רשמו הערות על הטקסט שאתם לומדים\",\n        },\n      },\n      {\n        icon: \"sheetsplus-white.svg\",\n        bulletContent: {\n          en: \"Build & create source sheets\",\n          he: \"בנו ושתפו דפי מקורות\",\n        },\n      },\n      {\n        icon: \"share-icon-white.svg\",\n        bulletContent: {\n          en: \"Connect with other users\",\n          he: \"התחברו עם משתמשים אחרים באתר\",\n        },\n      },\n      {\n        icon: \"email-white.png\",\n        bulletContent: {\n          en: \"Get updates on new features\",\n          he: \"קבלו עדכונים טכנולוגיים על תכונות חדשות בספריא\",\n        },\n      },\n    ],\n  },\n  [SignUpModalKind.Save]: {\n    h2: { en: \"Want to return to this text?\", he: \"רוצים לחזור לטקסט הזה?\" },\n    h3: {\n      en: `Create a free account to do more on Contextus`,\n      he: \"פתחו חשבון משתמש בחינם כדי לעשות יותר עם ספריא\",\n    },\n    contentList: [\n      {\n        icon: \"star-white.png\",\n        bulletContent: { en: \"Save texts\", he: \"שמרו טקסטים\" },\n      },\n      {\n        icon: \"note-white.svg\",\n        bulletContent: { en: \"Take notes\", he: \"כתבו הערות\" },\n      },\n      {\n        icon: \"clock-white.svg\",\n        bulletContent: {\n          en: \"View your reading history\",\n          he: \"צפו בהיסטוריית הקריאה שלכם\",\n        },\n      },\n      {\n        icon: \"sheetsplus-white.svg\",\n        bulletContent: {\n          en: \"Build & share source sheets\",\n          he: \"צרו ושתפו דפי מקורות\",\n        },\n      },\n    ],\n  },\n  [SignUpModalKind.Default]: {\n    h2: { en: \"Love Learning?\", he: \"אוהבים ללמוד?\" },\n    h3: {\n      en: `Sign up to get more from Contextus`,\n      he: \"הרשמו כדי לקבל יותר מספריא\",\n    },\n    contentList: [\n      {\n        icon: \"star-white.png\",\n        bulletContent: { en: \"Save texts\", he: \"שמרו טקסטים לקריאה חוזרת\" },\n      },\n      {\n        icon: \"sheet-white.png\",\n        bulletContent: { en: \"Make source sheets\", he: \"הכינו דפי מקורות\" },\n      },\n      {\n        icon: \"note-white.png\",\n        bulletContent: { en: \"Take notes\", he: \"שמרו הערות\" },\n      },\n      {\n        icon: \"email-white.png\",\n        bulletContent: { en: \"Stay in the know\", he: \"השארו מעודכנים\" },\n      },\n    ],\n  },\n};\n\nexport function generateContentForModal(signUpModalKind) {\n  if (signUpModalContent.hasOwnProperty(signUpModalKind)) {\n    return signUpModalContent[signUpModalKind];\n  } else {\n    return signUpModalContent[SignUpModalKind.Default];\n  }\n}","import Sefaria from \"./sefaria/sefaria\";\nimport $ from \"./sefaria/sefariaJquery\";\nimport {AdminEditor} from \"./AdminEditor\";\nimport {requestWithCallBack, Autocompleter, InterfaceText} from \"./Misc\";\nimport React, {useState} from \"react\";\n\nconst SourceEditor = ({topic, close, origData={}}) => {\n    const isNew = !origData.ref;\n    const [displayRef, setDisplayRef] = useState(origData.lang === 'he' ?\n                                                            (origData.heRef || \"\") :  (origData.ref || \"\") );\n    const title = Sefaria.interfaceLang === 'english' ? (origData?.descriptions?.en?.title || '') : (origData?.descriptions?.he?.title || '');\n    const prompt = Sefaria.interfaceLang === 'english' ? (origData?.descriptions?.en?.prompt || '') : (origData?.descriptions?.he?.prompt || '');\n    const [data, setData] = useState({enTitle: title,  // use enTitle for hebrew or english case\n                                                prompt: prompt,\n                                                });\n    const [changed, setChanged] = useState(false);\n    const [savingStatus, setSavingStatus] = useState(false);\n\n    const updateData = (newData) => {\n        setChanged(true);\n        setData(newData);\n    }\n\n    const validate = async function () {\n        if (!changed) {\n            alert(\"Please change one of the fields before saving.\");\n            return false;\n        }\n        if (displayRef.length === 0) {\n          alert(Sefaria._(\"Ref must be provided.\"));\n          return false;\n        }\n        let refInCache = Sefaria.getRefFromCache(displayRef);\n        if (!refInCache) {\n            refInCache = await Sefaria.getRef(displayRef);\n        }\n        if (!refInCache?.ref) {\n          alert(Sefaria._(\"Valid ref must be provided.\"));\n          return false;\n        }\n        await save();\n    }\n\n    const save = async function () {\n        setSavingStatus(true);\n        let refInUrl = isNew ? displayRef : origData.ref;\n        let url = `/api/ref-topic-links/${Sefaria.normRef(refInUrl)}`;\n        let postData = {\"topic\": topic, \"is_new\": isNew, 'new_ref': displayRef, 'interface_lang': Sefaria.interfaceLang};\n        if (data.enTitle.length > 0) {\n            postData['description'] = {\"title\": data.enTitle, \"prompt\": data.prompt};\n        }\n        requestWithCallBack({url, data: postData, setSavingStatus, redirect: () => window.location.href = \"/topics/\"+topic});\n    }\n\n    const handleChange = (x) => {\n        setChanged(true);\n        setDisplayRef(x);\n    }\n\n    const getSuggestions = async (input) => {\n        let results = {\"helperPromptText\": null, \"currentSuggestions\": null,\n            \"showAddButton\": false\n        };\n        setDisplayRef(input);\n        if (input === \"\") {  // this occurs when there was text in the inputbox and user just erased it\n            return results;\n        }\n        const d = await Sefaria.getName(input, true, 5);\n        if (d.is_section || d.is_segment) {\n            results.helperPromptText = null;\n            results.currentSuggestions = null;\n            results.showAddButton = true;\n            results.previewText = input;\n            return results;\n        } else {\n            results.previewText = null;\n        }\n\n        results.currentSuggestions = d.completion_objects\n            .map(suggestion => ({\n                name: suggestion.title,\n                key: suggestion.key,\n                border_color: Sefaria.palette.refColor(suggestion.key)\n            }))\n        return results;\n    }\n\n    const deleteTopicSource = function() {\n        const url = `/api/ref-topic-links/${origData.ref}?topic=${topic}&interface_lang=${Sefaria.interfaceLang}`;\n        requestWithCallBack({url, type: \"DELETE\", redirect: () => window.location.href = `/topics/${topic}`});\n    }\n\n    return <div>\n        <AdminEditor title=\"Source Editor\" close={close}  data={data} savingStatus={savingStatus}\n                validate={validate} items={[\"Title\", \"Prompt\"]} deleteObj={deleteTopicSource} updateData={updateData} isNew={isNew}\n                extras={\n                    [<div>\n                        <label><InterfaceText>Enter Source Ref (for example: 'Yevamot.62b.9-11' or 'Yevamot 62b:9-11')</InterfaceText></label>\n                        <Autocompleter\n                            selectedCallback={() => {}}\n                            getSuggestions={getSuggestions}\n                            inputValue={displayRef}\n                            changeInputValue={handleChange}\n                            inputPlaceholder=\"Search for a Text or Commentator.\"\n                            buttonTitle=\"Select Source\"\n                            autocompleteClassNames=\"addInterfaceInput\"\n                            showSuggestionsOnSelect={true}\n                        />\n                    </div>]\n                }/>\n\n    </div>;\n}\n\nexport {SourceEditor};","import React  from 'react';\nimport ReactDOM  from 'react-dom';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport Component from 'react-class'\n\nclass DictionarySearch extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      val: \"\",\n      timer: null,\n      autocomplete: null\n    };\n  }\n  componentDidMount() {\n    this.attachKeyboard();\n    this.initAutocomplete();\n    this.checkIfChanged();\n  }\n  /*\n  shouldComponentUpdate(nextProps, nextState) {\n    if (this.props.interfaceLang != nextProps.interfaceLang) { return true; }\n    return false;\n  } */\n  componentWillUnmount() {\n    clearTimeout(this.state.timer);\n  }\n  checkIfChanged() {\n    let current;\n    try {\n      current = $(ReactDOM.findDOMNode(this)).find(\"input.search\").val();\n    }\n    catch(e) {\n      // The component is unmounted\n      return;\n    }\n    if (this.state.val != current) {\n      if (document.getElementById('keyboardInputMaster')) {\n        // If the keyboard is open, place autocomplete results below it\n        $(ReactDOM.findDOMNode(this)).find(\"input.search\").autocomplete(\"option\", \"position\", {my: \"left+15 top+180\", at: \"left bottom\",of: this.props.contextSelector + ' .dictionarySearchBox'});\n      } else {\n        // Otherwise results are below input box\n        $(ReactDOM.findDOMNode(this)).find(\"input.search\").autocomplete(\"option\", \"position\", {my: \"left top\", at: \"left bottom\", of: this.props.contextSelector + ' .dictionarySearchBox'});\n      }\n      $(ReactDOM.findDOMNode(this)).find(\"input.search\").autocomplete(\"search\");\n    }\n    this.setState({\n      val: current,\n      timer: setTimeout(\n          () => this.checkIfChanged(),\n          330\n      )\n    });\n\n  }\n  attachKeyboard() {\n    const inputElement = document.querySelector(this.props.contextSelector + ' .dictionarySearchBox .keyboardInput');\n    if (inputElement && (!inputElement.VKI_attached)) {\n      VKI_attach(inputElement);\n    }\n  }\n  initAutocomplete() {\n    $(ReactDOM.findDOMNode(this)).find(\"input.search\").autocomplete({\n      position: {\n        my: \"left top\",\n        at: \"left bottom\",\n        of: this.props.contextSelector + ' .dictionarySearchBox'\n      },\n      open: function(e) {\n        const searchBoxWidth = $(this.props.contextSelector + \" .dictionarySearchBox\").width();\n\n        if (document.getElementById('keyboardInputMaster')) {\n          // If the keyboard is open, set width to whichever is less of width of input box and width of keyboard\n          const keyboardWidth = $('#keyboardInputMaster').width() + 10;\n          $(this.props.contextSelector + \" .dictionary-toc-autocomplete\").width(Math.min(searchBoxWidth, keyboardWidth));\n        } else {\n          // Otherwise width of input box\n          $(this.props.contextSelector + \" .dictionary-toc-autocomplete\").width(searchBoxWidth);\n        }\n      }.bind(this),\n      close: function(event) {\n        this.setState({\n          val: $(ReactDOM.findDOMNode(this)).find(\"input.search\").val()\n        });\n        this.checkIfChanged()\n      }.bind(this),\n      classes: {\n        \"ui-autocomplete\": \"dictionary-toc-autocomplete\"  //todo: make unique identifier?\n      },\n      minLength: 1,\n      focus: e => clearTimeout(this.state.timer),\n      select: function( event, ui ) {\n        if (ui.item.value == \"__invalid\") { return false; }\n        $(ReactDOM.findDOMNode(this)).find(\"input.search\").val(ui.item.value);  // This will disappear when the next line executes, but the eye can sometimes catch it.\n        this.submitSearch(ui.item.label);\n        return false;\n      }.bind(this),\n\n      source: function(request, response) {\n        if (Sefaria.hebrew.containsEnglish(request.term)) {\n          response([{label: \"Invalid entry.  Please type a Hebrew word.\", value: \"__invalid\"}]);\n          return\n        }\n        Sefaria.lexiconCompletion(\n            request.term,\n            this.props.lexiconName,\n            d => {\n              if (d.length > 0) {\n                response(d.map(function(e) { return {label: e[1], value: e[0]}}));\n              } else {\n                response([])\n              }\n            }\n        );\n      }.bind(this)\n    });\n  }\n  handleSearchButtonClick(event) {\n    const query = $(ReactDOM.findDOMNode(this)).find(\".search\").val();\n    if (query) {\n      this.submitSearch(query, true);\n    }\n  }\n  handleSearchKeyUp(event) {\n    if (event.keyCode === 13) {\n      const query = $(event.target).val();\n      if (query) {\n        $(ReactDOM.findDOMNode(this)).find(\"input.search\").autocomplete(\"close\");\n        this.submitSearch(query, true);\n      }\n    }\n  }\n  displayWord(word) {\n    // Either show results in sidebar, or show word in reader, depending on which mode we're in.\n    console.log(word)\n    if (this.props.showWordList) {\n      this.props.showWordList(word);\n    } else if (this.props.navigatePanel || this.props.showBaseText) {\n      const ref = this.props.title + \", \" + word;\n      Sefaria.getText(ref).then(data => {\n        // Check that this ref exists first before trying to open a panel\n        if (\"error\" in data) {\n          return;\n        }\n        this.props.navigatePanel ? this.props.navigatePanel(ref, this.props.currVersions) : this.props.showBaseText(ref, false, this.props.currVersions);\n      })\n    }\n  }\n  submitSearch(word, needsResolution) {\n    if (needsResolution) {\n      // Get the dotted form of this word, or the nearest match\n      Sefaria.lexiconCompletion(word, this.props.lexiconName,\n        d => {\n          const resolvedWord = (d.length > 0) ? d[0][1] : word;\n          this.displayWord(resolvedWord)\n          });\n    } else {\n      this.displayWord(word);\n    }\n  }\n  showVirtualKeyboardIcon(show){\n      if(document.getElementById('keyboardInputMaster')) { // if keyboard is open, ignore.\n        return; //this prevents the icon from flashing on every key stroke.\n      }\n      if(Sefaria.interfaceLang === 'english'){\n          const opacity = show ? 0.4 : 0;\n          $(ReactDOM.findDOMNode(this)).find(\".keyboardInputInitiator\").css({\"opacity\": opacity});\n      }\n  }\n  render() {\n    let inputClasses = classNames({search: 1, keyboardInput: Sefaria.interfaceLang == 'english'});\n\n    return (\n        <div className = \"searchBox dictionarySearchBox ui-front\">\n          <img className=\"dictionarySearchButton\" src=\"/static/icons/magnifier.svg\" onClick={this.handleSearchButtonClick} role=\"button\" alt=\"image of maginfying glass\"/>\n          <input className={inputClasses}\n            id=\"searchInput\"\n            placeholder={Sefaria._(\"Search Dictionary\")}\n            onKeyUp={this.handleSearchKeyUp}\n            onFocus={this.showVirtualKeyboardIcon.bind(this, true)}\n            onBlur={this.showVirtualKeyboardIcon.bind(this, false)}\n            maxLength={75}\n            title={Sefaria._(\"Search for Texts or Keywords Here\")}\n          />\n        </div>\n    );\n  }\n}\nDictionarySearch.propTypes = {\n  lexiconName:      PropTypes.string,    // req. for redirect to text - e.g. TOC case.\n  title:            PropTypes.string,    // req. for redirect to text - e.g. TOC case.\n  showBaseText:     PropTypes.func,      // req. for redirect to text - e.g. TOC case.\n  showWordList:     PropTypes.func,      // req. for sidebar case\n  currVersions:     PropTypes.object,    // req. for redirect to text - e.g. TOC case.\n  contextSelector:  PropTypes.string.isRequired // CSS Selector for uniquely identifiable context that this is in.\n};\n\n\nexport default DictionarySearch;\n","import React, {useEffect, useRef, useState} from 'react';\nimport PropTypes from \"prop-types\";\n\nfunction VersionBlockHeader({text, link, onClick, renderMode, direction}) {\n    return renderMode === 'versionTitle' ?\n        (<VersionBlockHeaderTitle\n            link={link}\n            onClick={onClick}\n            versionTitle={text}\n        />) :\n        (<VersionBlockHeaderText\n            link={link}\n            onClick={onClick}\n            text={text}\n            direction={direction}\n        />);\n}\nVersionBlockHeader.prototypes = {\n  onClick: PropTypes.func.isRequired,\n  text: PropTypes.string.isRequired,\n  renderMode: PropTypes.string.isRequired,\n  link: PropTypes.string.isRequired,\n  direction: PropTypes.string,\n};\n\nfunction VersionBlockHeaderTitle({link, onClick, versionTitle}) {\n    return (\n          <a\n              href={link}\n              onClick={onClick}\n          >\n              {versionTitle}\n          </a>\n    );\n}\nVersionBlockHeaderTitle.prototypes = {\n  onClick: PropTypes.func.isRequired,\n  versionTitle: PropTypes.string.isRequired,\n  link: PropTypes.string.isRequired,\n};\n\nfunction VersionBlockHeaderText({link, onClick, text, direction}) {\n    const [shouldAttemptTruncation, setShouldAttemptTruncation] = useState(true);\n    const [truncationOccurred, setTruncationOccurred] = useState(false);\n    const textRef = useRef(null);\n    useEffect(() => {\n        const element = textRef.current;\n        const computedStyles = window.getComputedStyle(element);\n        const maxHeight = parseInt(computedStyles.getPropertyValue('max-height'), 10);\n        setTruncationOccurred(element.scrollHeight > maxHeight+1); //added +1 because for some reason when the view is too big the height has 1 more\n    }); //no second param for running in resize seems better than adding a listener\n    function onEllipsisClick() {\n        setShouldAttemptTruncation(false);\n        setTruncationOccurred(false);\n    }\n    return (\n        <div className={'versionPreviewWithOptionalEllipsis'} dir={direction}>\n          <a\n              className={`versionPreview ${shouldAttemptTruncation && 'shouldAttemptTruncation'}`}\n              ref={textRef}\n              href={link}\n              onClick={onClick}\n              dangerouslySetInnerHTML={{__html: text}}\n          />\n          {truncationOccurred && <a className='ellipsis' onClick={onEllipsisClick}>…</a>}\n        </div>\n    );\n}\nVersionBlockHeaderText.prototypes = {\n  onClick: PropTypes.func.isRequired,\n  versionTitle: PropTypes.string.isRequired,\n  link: PropTypes.string.isRequired,\n  direction: PropTypes.string.isRequired,\n};\n\nexport default VersionBlockHeader;\n","import React from 'react';\nimport PropTypes from \"prop-types\";\n\nfunction VersionBlockSelectButton({link, openVersionInMainPanel, text, isSelected}) {\n    return (\n          <a className={`selectButton ${isSelected ? \"currSelectButton\" : \"\"}`}\n              href={link}\n              onClick={openVersionInMainPanel}\n          >\n              {Sefaria._(text)}\n          </a>\n    );\n}\nVersionBlockSelectButton.prototypes = {\n  openVersionInMoinPanel: PropTypes.func.isRequired,\n  text: PropTypes.string.isRequired,\n  isSelected: PropTypes.bool.isRequired,\n  link: PropTypes.string.isRequired,\n};\nexport default VersionBlockSelectButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from \"classnames\";\nimport Sefaria from \"../sefaria/sefaria\";\nimport {VersionBlockUtils} from './VersionBlock';\n\nfunction VersionInformation({currentRef, version}) {\n    function makeLicenseLink() {\n        const license_map = Sefaria.getLicenseMap();\n        return (version.license in license_map) ? license_map[version.license] : \"#\";\n    }\n    return (\n        <div className=\"versionDetailsInformation\">\n            <div className={classNames(VersionBlockUtils.makeAttrClassNames(version, {\"versionSource\": 1, \"versionDetailsElement\": 1}, \"versionSource\"))}>\n              <span className=\"versionDetailsLabel\">\n                {`${Sefaria._(\"Source\")}: `}\n              </span>\n              <a className=\"versionDetailsLink\" href={version.versionSource} target=\"_blank\">\n                { Sefaria.util.parseUrl(version.versionSource).host.replace(\"www.\", \"\") }\n              </a>\n            </div>\n            <div className={classNames(VersionBlockUtils.makeAttrClassNames(version, {\"versionDigitizedBySefaria\": 1, \"versionDetailsElement\": 1}, \"digitizedBySefaria\"))}>\n              <span className=\"versionDetailsLabel\">\n                {`${Sefaria._(\"Digitization\")}: `}\n              < /span>\n              <a className=\"versionDetailsLink\" href=\"/digitized-by-sefaria\" target=\"_blank\">\n                {Sefaria._(\"Sefaria\")}\n              </a>\n            </div>\n            <div className={classNames(VersionBlockUtils.makeAttrClassNames(version, {\"versionLicense\": 1, \"versionDetailsElement\": 1}, \"license\" ))}>\n              <span className=\"versionDetailsLabel\">\n                {`${Sefaria._(\"License\")}: `}\n              </span>\n              <a className=\"versionDetailsLink\" href={makeLicenseLink()} target=\"_blank\">\n                {Sefaria._(version?.license)}\n              </a>\n            </div>\n            <div className={classNames(VersionBlockUtils.makeAttrClassNames(version, {\"versionHistoryLink\": 1, \"versionDetailsElement\": 1}, null))}>\n               <a className=\"versionDetailsLink\" href={`/activity/${Sefaria.normRef(currentRef)}/${version.language}/${version.versionTitle && version.versionTitle.replace(/\\s/g,\"_\")}`} target=\"_blank\">\n                 {Sefaria._(\"Revision History\")}\n               </a>\n            </div>\n            <div className={classNames(VersionBlockUtils.makeAttrClassNames(version, {\"versionBuyLink\": 1, \"versionDetailsElement\": 1}, \"purchaseInformationURL\"))}>\n               <a className=\"versionDetailsLink\" href={version.purchaseInformationURL} target=\"_blank\">\n                {Sefaria._(\"Buy in Print\")}\n               </a>\n            </div>\n        </div>\n    );\n}\nVersionInformation.prototypes = {\n    currentRef: PropTypes.string.isRequired,\n    version: PropTypes.object.isRequired,\n};\nexport default VersionInformation;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from \"classnames\";\nimport Sefaria from \"../sefaria/sefaria\";\nimport {VersionBlockUtils} from \"./VersionBlock\";\n\nfunction VersionImage({version}) {\n    function makeImageLink() {\n        return !!version.purchaseInformationURL ? version.purchaseInformationURL : version.versionSource;\n    }\n    function makeImageSrc(){\n        return  !!version.purchaseInformationImage ? version.purchaseInformationImage : \"data:,\";\n    }\n    return (\n      <div className=\"versionDetailsImage\">\n        <div className={classNames(VersionBlockUtils.makeAttrClassNames(version, {\"versionBuyImage\": 1, \"versionDetailsElement\": 1} , \"purchaseInformationImage\"))}>\n          <a className=\"versionDetailsLink versionDetailsImageLink\" href={makeImageLink()} target=\"_blank\">\n            <img className=\"versionImage\" src={makeImageSrc()} alt={Sefaria._(\"Buy Now\")} />\n          </a>\n        </div>\n      </div>\n    )\n}\nVersionImage.prototypes = {\n    version: PropTypes.object.isRequired,\n};\nexport default VersionImage;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport VersionBlockSelectButton from \"./VersionBlockSelectButton\";\nimport {VersionBlockUtils} from './VersionBlock';\nimport Sefaria from \"../sefaria/sefaria\";\n\nfunction VersionTitleAndSelector({currentRef, version, currObjectVersions, openVersionInReader, isSelected}) {\n    function makeShortVersionTitle() {\n        let shortVersionTitle = version.shortVersionTitle || version.versionTitle;\n        if (Sefaria.interfaceLang === \"hebrew\") {\n            shortVersionTitle = version.shortVersionTitleInHebrew || version.versionTitleInHebrew || shortVersionTitle;\n        }\n        return shortVersionTitle;\n    }\n    const openVersionInMainPanel = VersionBlockUtils.openVersionInMainPanel.bind(null, currentRef, version, currObjectVersions, 'select-button',\n        null, openVersionInReader);\n    const buttonText = isSelected ? 'Currently Selected' : 'Select';\n    return (\n        <div className='version-with-preview-title-line'>\n            <div className='open-details'>\n                {makeShortVersionTitle()}\n            </div>\n            <VersionBlockSelectButton\n                isSelected={isSelected}\n                openVersionInMainPanel={openVersionInMainPanel}\n                text={buttonText}\n                link={VersionBlockUtils.makeVersionLink(currentRef, version, currObjectVersions, true)}\n            />\n        </div>\n    );\n}\nVersionTitleAndSelector.prototypes = {\n  currObjectVersions: PropTypes.object.isRequired,\n  version: PropTypes.object.isRequired,\n  currentRef: PropTypes.string.isRequired,\n  openVersionInReader: PropTypes.func.isRequired,\n  isSelected: PropTypes.bool.isRequired,\n};\nexport default VersionTitleAndSelector;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {VersionBlockUtils} from \"./VersionBlock\";\nimport VersionInformation from \"./VersionInformation\";\nimport VersionImage from \"./VersionImage\";\n\nfunction VersionMetadata({currentRef, version}) {\n    return (\n        <div className='versionDetails preview'>\n            <div className='version-preview-informations'>\n                <div className='versionDetails-version-title'>{VersionBlockUtils.makeVersionTitle(version).text}</div>\n                <VersionInformation currentRef={currentRef} version={version}/>\n            </div>\n            <VersionImage version={version}/>\n        </div>\n    );\n}\nVersionMetadata.prototypes = {\n    currentRef: PropTypes.string.isRequired,\n    version: PropTypes.object.isRequired,\n};\nexport default VersionMetadata;\n","import React from 'react';\nimport Sefaria from './sefaria/sefaria';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Component      from 'react-class';\nimport {ContentText} from \"./ContentText\";\n\n\n\nclass CategoryFilter extends Component {\n  // A clickable representation of category of connections, include counts.\n  // If `showBooks` list connections broken down by book as well.\n  handleClick(e) {\n    e.preventDefault();\n    if (this.props.showBooks) { // 2nd level\n      this.props.setFilter(this.props.category, this.props.updateRecent);\n      if (Sefaria.site) { Sefaria.track.event(\"Reader\", \"Category Filter Click\", this.props.category); }\n    } else { // top level\n      this.props.setConnectionsCategory(this.props.category);\n      if (Sefaria.site) { Sefaria.track.event(\"Reader\", \"Connections Category Click\", this.props.category); }\n    }\n  }\n  render() {\n    const filterSuffix = this.props.category  === \"Quoting Commentary\" ? \"Quoting\" : null;\n    const textMissingDescription = null; //\"missing description\"\n    const textFilters = this.props.showBooks ? this.props.books.map(function(book, i) {\n      return (<TextFilter\n                srefs={this.props.srefs}\n                key={i}\n                book={book.book}\n                heBook={book.heBook}\n                count={book.count}\n                hasEnglish={book.hasEnglish}\n                category={this.props.category}\n                hideColors={true}\n                updateRecent={true}\n                filterSuffix={filterSuffix}\n                setFilter={this.props.setFilter}\n                description={book.enShortDesc ? book.enShortDesc: textMissingDescription}\n                heDescription={book.heShortDesc ? book.heShortDesc: textMissingDescription}\n                on={Sefaria.util.inArray(book.book, this.props.filter) !== -1} />);\n    }.bind(this)) : null;\n\n    const color        = Sefaria.palette.categoryColor(this.props.category);\n    const style       = {\"--category-color\":color}\n    let innerClasses = classNames({categoryFilter: 1, withBooks: this.props.showBooks, on: this.props.on});\n    let handleClick  = this.handleClick;\n    const categoryForUrl = !this.props.showBooks ? this.props.category + \" ConnectionsList\" : this.props.category;\n    const url = (this.props.srefs && this.props.srefs.length > 0)?\"/\" + Sefaria.normRef(this.props.srefs[0]) + \"?with=\" + categoryForUrl :\"\";\n    const classesDesc = classNames({ sidebarDescription: 1, lowlight: this.props.count === 0, title:1});\n    let outerClasses = classNames({categoryFilterGroup: 1, withBooks: this.props.showBooks});\n    const catDesc = Sefaria.getDescriptionDict(this.props.category, []);\n    const catEnDesc = catDesc[0];\n    const catHeDesc = catDesc[1];\n    return (\n      <div className={outerClasses} style={style}>\n        <a href={url} onClick={handleClick}>\n          <div className={innerClasses} data-name={this.props.category}>\n            <span className=\"filterInner\">\n              <span className=\"filterText\">\n                <ContentText text={{en:this.props.showBooks ? `All ${this.props.category}` : this.props.category, he:this.props.showBooks ? `כל הקישורים ל${this.props.heCategory}` : this.props.heCategory}} />\n                <span className=\"connectionsCount\"> ({this.props.count})</span>\n              </span>\n              <span className=\"en\">\n                {this.props.hasEnglish && Sefaria._siteSettings.TORAH_SPECIFIC ? <EnglishAvailableTag /> : null}\n              </span>\n            </span>\n          <div className={classesDesc}>{catEnDesc || catHeDesc ?\n                              <ContentText text={{en: catEnDesc, he: catHeDesc}} />\n                      : null }</div>          </div>\n        </a>\n        {textFilters}\n      </div>\n    );\n  }\n}\nCategoryFilter.propTypes = {\n  srefs:                  PropTypes.array.isRequired,\n  category:               PropTypes.string.isRequired,\n  heCategory:             PropTypes.string.isRequired,\n  showBooks:              PropTypes.bool.isRequired,\n  count:                  PropTypes.number.isRequired,\n  hasEnglish:             PropTypes.bool,\n  books:                  PropTypes.array.isRequired,\n  filter:                 PropTypes.array.isRequired,\n  updateRecent:           PropTypes.bool.isRequired,\n  setFilter:              PropTypes.func.isRequired,\n  setConnectionsCategory: PropTypes.func.isRequired,\n  on:                     PropTypes.bool,\n};\n\n\nclass TextFilter extends Component {\n  // A clickable representation of connections by Text or Commentator\n  handleClick(e) {\n    e.preventDefault();\n    const name = \"enDisplayText\" in this.props ? this.props[\"enDisplayText\"] : this.props.book;\n    let filter = this.props.filterSuffix ? name + \"|\" + this.props.filterSuffix : name;\n    this.props.setFilter(filter, this.props.updateRecent);\n    if (Sefaria.site) {\n      if (this.props.inRecentFilters) { Sefaria.track.event(\"Reader\", \"Text Filter in Recent Click\", filter); }\n      else { Sefaria.track.event(\"Reader\", \"Text Filter Click\", filter); }\n    }\n  }\n  render() {\n    const classes = classNames({textFilter: 1, on: this.props.on, lowlight: this.props.count == 0});\n    const classesDesc = classNames({ sidebarDescription: 1, lowlight: this.props.count == 0});\n    const color = this.props.filterSuffix === \"Essay\" ? \"var(--essay-links-green)\" : Sefaria.palette.categoryColor(this.props.category);\n    const style = {\"--category-color\": color};\n    const enBook = this.props.book == this.props.category ? this.props.book.toUpperCase() : this.props.book;\n    const showCount = !this.props.hideCounts && !!this.props.count;\n    const url = (this.props.srefs && this.props.srefs.length > 0)?\"/\" + Sefaria.normRef(this.props.srefs[0]) + \"?with=\" + enBook:\"\";\n    const upperClass = classNames({uppercase: this.props.book === this.props.category});\n    const name = \"enDisplayText\" in this.props ? this.props[\"enDisplayText\"] : enBook;\n    const heName = \"heDisplayText\" in this.props ? this.props[\"heDisplayText\"] : this.props.heBook;\n    const enDesc = this.props.description\n    const heDesc = this.props.heDescription\n    const showDescription = true; //showCount;//\n    return (\n      <a href={url} onClick={this.handleClick}>\n        <div data-name={enBook} className={classes} style={style} >\n            <div className={upperClass}>\n                <span className=\"filterInner\">\n                  <span className=\"filterText\">\n                    <ContentText text={{en: name, he: heName }} />\n                    {showCount ? <span className=\"connectionsCount\">&nbsp;({this.props.count})</span> : null}\n                  </span>\n                  <span className=\"en\">\n                    {this.props.hasEnglish && Sefaria._siteSettings.TORAH_SPECIFIC ? <EnglishAvailableTag /> : null}\n                  </span>\n                </span>\n              {showDescription ?<div className={classesDesc}>{enDesc || heDesc ?\n                              <ContentText text={{en: enDesc, he: heDesc}} />\n                      : null }</div> : null}\n            </div>\n        </div>\n      </a>\n    );\n  }\n}\nTextFilter.propTypes = {\n  srefs:           PropTypes.array.isRequired,\n  book:            PropTypes.string.isRequired,\n  heBook:          PropTypes.string.isRequired,\n  on:              PropTypes.bool.isRequired,\n  setFilter:       PropTypes.func.isRequired,\n  updateRecent:    PropTypes.bool,\n  inRecentFilters: PropTypes.bool,\n  filterSuffix:    PropTypes.string,  // Optionally add a string to the filter parameter set (but not displayed)\n  enDisplayedText: PropTypes.string,  // displayedText fields used when link is 'essay' and we don't want to show the book title\n  heDisplayedText: PropTypes.string,\n};\n\n\nclass EnglishAvailableTag extends Component {\n  render() {\n    return <span className=\"englishAvailableTag\">EN</span>\n  }\n}\n\nclass RecentFilterSet extends Component {\n  // A toggle-able listing of currently and recently used text filters.\n  toggleAllFilterView() {\n    this.setState({showAllFilters: !this.state.showAllFilters});\n  }\n  render() {\n    // Annotate filter texts with category\n    let recentFilters;\n    recentFilters = this.props.recentFilters.map(function(filter) {\n      let filterAndSuffix = filter.split(\"|\");\n      filter              = filterAndSuffix[0];\n      let filterSuffix    = filterAndSuffix.length == 2 ? filterAndSuffix[1] : null;\n      let index           = Sefaria.index(filter);\n      const filterKey       = filter + (filterSuffix ? `|${filterSuffix}` : '');\n      return {\n        book: filter,\n        filterSuffix,\n        heBook: index ? index.heTitle : Sefaria.hebrewTerm(filter),\n        category: index ? (index.primary_category ? index.primary_category : index.categories[0]) : filter,\n        filterKey,\n      };\n    });\n    let topLinks = [];\n    // If the current filter is not already in the top set, put it first\n    if (this.props.filter.length) {\n      let filter = this.props.filter[0];\n      let i = 0;\n      for (i; i < topLinks.length; i++) {\n        if (recentFilters[i].book === filter ||\n            recentFilters[i].category == filter ) { break; }\n      }\n      if (i == recentFilters.length) {\n        let index = Sefaria.index(filter);\n        let annotatedFilter;\n        if (index) {\n          annotatedFilter = {book: filter, heBook: index.heTitle, category: index.primary_category };\n        } else {\n          annotatedFilter = {book: filter, heBook: filter.en, category: \"Other\" };\n        }\n\n        recentFilters = [annotatedFilter].concat(topLinks).slice(0,5);\n      } else {\n        // topLinks.move(i, 0);\n      }\n    }\n    recentFilters = recentFilters.map(function(book) {\n     return (<TextFilter\n                srefs={this.props.srefs}\n                key={book.filterKey}\n                book={book.book}\n                heBook={book.heBook}\n                category={book.category}\n                hideCounts={true}\n                hideColors={true}\n                count={book.count}\n                filterSuffix={book.filterSuffix}\n                updateRecent={false}\n                inRecentFilters={true}\n                setFilter={this.props.setFilter}\n                on={Sefaria.util.inArray(book.filterKey, this.props.filter) !== -1} />);\n    }.bind(this));\n\n    let classes = classNames({recentFilterSet: 1, topFilters: this.props.asHeader, filterSet: 1});\n    return (\n      <div className={classes}>\n        <div className=\"topFiltersInner\">{recentFilters}</div>\n      </div>\n    );\n  }\n}\nRecentFilterSet.propTypes = {\n  srefs:              PropTypes.array.isRequired,\n  filter:             PropTypes.array.isRequired,\n  recentFilters:      PropTypes.array.isRequired,\n  inHeader:           PropTypes.bool,\n  setFilter:          PropTypes.func.isRequired,\n};\n\nexport {\n  CategoryFilter,\n  RecentFilterSet,\n  TextFilter\n};\n","import React  from 'react';\nimport ReactDOM  from 'react-dom';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport Component from 'react-class';\nimport {EnglishText, HebrewText} from \"./Misc\";\nimport {VersionContent} from \"./ContentText\";\nimport {ContentText} from \"./ContentText\";\n\nclass TextRange extends Component {\n  // A Range or text defined a by a single Ref. Specially treated when set as 'basetext'.\n  // This component is responsible for retrieving data from `Sefaria` for the ref that defines it.\n  componentDidMount() {\n    this._isMounted = true;\n    let data = this.getText();\n    if (data && !this.dataPrefetched) {\n      // If data was populated server side, onTextLoad was never called\n      this.onTextLoad(data);\n    } else if (this.props.basetext || this.props.segmentNumber) {\n      this.placeSegmentNumbers();\n    }\n    window.addEventListener('resize', this.handleResize);\n  }\n  componentWillUnmount() {\n    this._isMounted = false;\n    window.removeEventListener('resize', this.handleResize);\n  }\n  shouldComponentUpdate(nextProps) {\n    if (this.props.sref !== nextProps.sref)                   { return true; }\n    if (!!this.props.filter !== !!nextProps.filter)           { return true; }\n    if (this.props.filter && nextProps.filter &&\n        !this.props.filter.compare(nextProps.filter))         { return true; }\n    if (this.props.highlightedRefs && nextProps.highlightedRefs &&\n        !this.props.highlightedRefs.compare(nextProps.highlightedRefs)) { return true; }\n    if (this.props.currVersions.en !== nextProps.currVersions.en) { return true; }\n    if (this.props.currVersions.he !== nextProps.currVersions.he) { return true; }\n    if (this.props.translationLanguagePreference !== nextProps.translationLanguagePreference) { return true; }\n    if (this.props.showHighlight !== nextProps.showHighlight) { return true; }\n    // todo: figure out when and if this component receives settings at all\n    if (nextProps.settings && this.props.settings &&\n        (nextProps.settings.language !== this.props.settings.language ||\n          nextProps.settings.layoutDefault !== this.props.settings.layoutDefault ||\n          nextProps.settings.layoutTanakh !== this.props.settings.layoutTanakh ||\n          nextProps.settings.aliyotTorah !== this.props.settings.aliyotTorah ||\n          nextProps.settings.vowels !== this.props.settings.vowels ||\n          nextProps.settings.layoutTalmud !== this.props.settings.layoutTalmud ||\n          nextProps.settings.biLayout !== this.props.settings.biLayout ||\n          nextProps.settings.fontSize !== this.props.settings.fontSize ||\n          nextProps.settings.punctuationTalmud !== this.props.settings.punctuationTalmud ||\n          nextProps.layoutWidth !== this.props.layoutWidth))     { return true; }\n    // lowlight ?\n\n    return false;\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    // Place segment numbers again if update affected layout\n    if (this.props.basetext || this.props.segmentNumber) {\n      if (prevProps.currVersions.en !== this.props.currVersions.en ||\n          prevProps.currVersions.he !== this.props.currVersions.he ||\n          prevProps.settings.language !== this.props.settings.language ||\n          prevProps.settings.layoutDefault !== this.props.settings.layoutDefault ||\n          prevProps.settings.layoutTanakh !== this.props.settings.layoutTanakh ||\n          prevProps.settings.aliyotTorah !== this.props.settings.aliyotTorah ||\n          prevProps.settings.layoutTalmud !== this.props.settings.layoutTalmud ||\n          prevProps.settings.biLayout !== this.props.settings.biLayout ||\n          prevProps.settings.fontSize !== this.props.settings.fontSize ||\n          prevProps.layoutWidth !== this.props.layoutWidth ||\n          prevProps.settings.punctuationTalmud !== this.props.settings.punctuationTalmud ||\n          !!prevProps.filter !== !!this.props.filter ||\n          (!!prevProps.filter && !prevProps.filter.compare(this.props.filter))) {\n            // Rerender in case version has changed\n            this.forceUpdate(function() {\n                this.placeSegmentNumbers();\n            }.bind(this));\n      }\n    }\n  }\n  handleResize() {\n    if (this.props.basetext || this.props.segmentNumber) {\n      this.placeSegmentNumbers();\n    }\n  }\n  handleClick(event) {\n    if (window.getSelection().type === \"Range\") {\n      // Don't do anything if this click is part of a selection\n      return;\n    }\n    if (this.props.onRangeClick) {\n      //Click on the body of the TextRange itself from TextList\n      this.props.onRangeClick(this.props.sref);\n      Sefaria.track.event(\"Reader\", \"Click Text from TextList\", this.props.sref);\n    }\n  }\n  handleKeyPress(event) {\n    if (event.charCode == 13) {\n      this.handleClick(event);\n    }\n  }\n  getText() {\n    let settings = {\n      context: this.props.withContext ? 1 : 0,\n      enVersion: this.props.currVersions.en || null,\n      heVersion: this.props.currVersions.he || null,\n      // Support redirect of basetext for schema node refs.  Don't rewrite refs on sidebar to avoid infinite loop of cache misses.\n      firstAvailableRef: this.props.basetext ? 1 : 0,\n      translationLanguagePreference: this.props.translationLanguagePreference,\n      versionPref: Sefaria.versionPreferences.getVersionPref(this.props.sref),\n    };\n    let data = Sefaria.getTextFromCache(this.props.sref, settings);\n\n    if ((!data || \"updateFromAPI\" in data) && !this.textLoading) { // If we don't have data yet, call trigger an API call\n      this.textLoading = true;\n      Sefaria.getText(this.props.sref, settings).then(this.onTextLoad);\n    } else if (!!data && this.props.isCurrentlyVisible) {\n      this._updateCurrVersions(data.versionTitle, data.heVersionTitle);\n    }\n    return data;\n  }\n  onTextLoad(data) {\n    // Initiate additional API calls when text data first loads\n    this.textLoading = false;\n    if (this.props.basetext && this.props.sref !== data.ref) {\n      // Replace ReaderPanel contents ref with the normalized form of the ref, if they differ.\n      // Pass parameter to showBaseText to replaceHistory - normalization should't add a step to history\n      this.props.showBaseText(data.ref, true, this.props.currVersions);\n      return;\n    } else if (this.props.basetext && data.spanning) {\n      // Replace ReaderPanel contents with split refs if ref is spanning\n      // Pass parameter to showBaseText to replaceHistory - normalization should't add a step to history\n      // console.log(\"Re-rewriting spanning ref\")\n      this.props.showBaseText(data.spanningRefs, true, this.props.currVersions, this.props.versionLanguage);\n      return;\n    }\n\n    this._updateCurrVersions(data.versionTitle, data.heVersionTitle);\n\n    // If this is a ref to a super-section, rewrite it to first available section\n    if (this.props.basetext && data.textDepth - data.sections.length > 1 && data.firstAvailableSectionRef) {\n      this.props.showBaseText(data.firstAvailableSectionRef, true, this.props.currVersions);\n      return;\n    }\n\n    this.prefetchData();\n\n    if (this._isMounted) {\n      this.forceUpdate(function() {\n        this.placeSegmentNumbers();\n        this.props.onTextLoad && this.props.onTextLoad(data.ref); // Don't call until the text is actually rendered\n      }.bind(this));\n    }\n  }\n  _updateCurrVersions(enVTitle, heVTitle) {\n    // make sure currVersions matches versions returned, due to translationLanguagePreference and versionPreferences\n    if (!this.props.updateCurrVersionsToMatchAPIResult) { return; }\n    this.props.updateCurrVersionsToMatchAPIResult(enVTitle, heVTitle);\n  }\n  _prefetchLinksAndNotes(data) {\n    let sectionRefs = data.isSpanning ? data.spanningRefs : [data.sectionRef];\n    sectionRefs = sectionRefs.map(function(ref) {\n      if (ref.indexOf(\"-\") > -1) {\n        ref = ref.split(\"-\")[0];\n        ref = ref.slice(0, ref.lastIndexOf(\":\"));\n      }\n      return ref;\n    });\n\n    if (this.props.loadLinks && !Sefaria.linksLoaded(sectionRefs)) {\n      for (let i = 0; i < sectionRefs.length; i++) {\n        Sefaria.related(sectionRefs[i], function() {\n          if (this._isMounted) { this.forceUpdate(); }\n        }.bind(this));\n        if (Sefaria._uid) {\n          Sefaria.relatedPrivate(sectionRefs[i], function() {\n            if (this._isMounted) { this.forceUpdate(); }\n          }.bind(this));\n        }\n      }\n    }\n  }\n  prefetchData() {\n    // Prefetch additional data (next, prev, links, notes etc) for this ref\n    if (this.dataPrefetched) { return; }\n\n    let data = this.getText();\n    if (!data) { return; }\n\n    // Load links at section level if spanning, so that cache is properly primed with section level refs\n    this._prefetchLinksAndNotes(data);\n\n    if (this.props.prefetchNextPrev) {\n     if (data.next) {\n       Sefaria.getText(data.next, {\n         context: 1,\n         multiple: this.props.prefetchMultiple,\n         enVersion: this.props.currVersions.en || null,\n         heVersion: this.props.currVersions.he || null,\n         translationLanguagePreference: this.props.translationLanguagePreference,\n         versionPref: Sefaria.versionPreferences.getVersionPref(data.next),\n       }).then(ds => Array.isArray(ds) ? ds.map(d => this._prefetchLinksAndNotes(d)) : this._prefetchLinksAndNotes(ds));\n     }\n     if (data.prev) {\n       Sefaria.getText(data.prev, {\n         context: 1,\n         multiple: -this.props.prefetchMultiple,\n         enVersion: this.props.currVersions.en || null,\n         heVersion: this.props.currVersions.he || null,\n         translationLanguagePreference: this.props.translationLanguagePreference,\n         versionPref: Sefaria.versionPreferences.getVersionPref(data.prev),\n       }).then(ds => Array.isArray(ds) ? ds.map(d => this._prefetchLinksAndNotes(d)) : this._prefetchLinksAndNotes(ds));\n     }\n     if (data.indexTitle) {\n        // Preload data that is used on Text TOC page\n        Sefaria.getIndexDetails(data.indexTitle);\n     }\n    }\n    this.dataPrefetched = true;\n  }\n  placeSegmentNumbers() {\n    // console.log(\"placeSegmentNumbers\", this.props.sref);\n    // Set the vertical offsets for segment numbers and link counts, which are dependent\n    // on the rendered height of the text of each segment.\n    if (!this.props.basetext) { return; }\n\n    const $text  = $(ReactDOM.findDOMNode(this));\n    let elemsAtPosition = {}; // Keyed by top position, an array of elements found there\n    const setTop = function() {\n      const $elem = $(this);\n      const top   = $elem.parent().position().top;\n      $elem.css({top: top, left: '', right: ''});\n      let list = elemsAtPosition[top] || [];\n      list.push($elem);\n      elemsAtPosition[top] = list;\n    };\n    $text.find(\".linkCount\").each(setTop);\n    elemsAtPosition = {};  // resetting because we only want it to track segmentNumbers\n    $text.find(\".segmentNumber\").each(setTop).show();\n\n    const side = this.props.settings.language == \"hebrew\" ? \"right\" : \"left\";\n    const selector = this.props.settings.language == \"hebrew\" ? \".he\" : \".en\";\n    const fixCollision = function ($elems) {\n      // Takes an array of jQuery elements that all currently appear at the same top position\n      if ($elems.length == 1) { return; }\n      if ($elems.length == 2) {\n        const adjust1 = $elems[0].find(\".segmentNumberInner\").width();\n        const adjust2 = $elems[1].find(\".segmentNumberInner\").width();\n        $elems[0].css(side, \"-=\" + adjust1);\n        $elems[1].css(side, \"+=\" + adjust2);\n      }\n    };\n    for (let top in elemsAtPosition) {\n      if (elemsAtPosition.hasOwnProperty(top)) {\n        fixCollision(elemsAtPosition[top]);\n      }\n    }\n    $text.find(\".segmentNumber\").show();\n    $text.find(\".linkCount\").show();\n  }\n  onFootnoteClick(event) {\n    event.preventDefault();\n    $(event.target).closest(\"sup\").next(\"i.footnote\").toggle();\n    this.placeSegmentNumbers();\n  }\n  parashahHeader(data, segment, includeAliyout=false) {\n    // Returns the English/Hebrew title of a Parasha, if `ref` is the beginning of a new parahsah\n    // returns null otherwise.\n    //let data = this.getText();\n    if (!data) { return null; }\n    if (\"alts\" in data && data.alts.length && ((data.categories[1] == \"Torah\" && !data[\"isDependant\"]) || data.categories[2] == \"Onkelos\")) {\n      const curRef = segment.ref;\n      if (\"alt\" in segment && segment.alt != null){\n        if(includeAliyout || \"whole\" in segment.alt){\n          return {\"en\": segment.alt[\"en\"][0], \"he\": segment.alt[\"he\"][0], \"parashaTitle\": \"whole\" in segment.alt}\n        }\n      }\n    }\n    return null;\n  }\n\n  render() {\n    const data = this.getText();\n    let title, heTitle, ref;\n    if (data && this.props.basetext) {\n      ref              = this.props.withContext ? data.sectionRef : data.ref;\n      const sectionStrings   = Sefaria.sectionString(ref);\n      const oref             = Sefaria.ref(ref);\n      const useShortString   = oref && Sefaria.util.inArray(oref.primary_category, [\"Tanakh\", \"Mishnah\", \"Talmud\", \"Tanaitic\", \"Commentary\"]) !== -1;\n      title            = useShortString ? sectionStrings.en.numbered : sectionStrings.en.named;\n      heTitle          = useShortString ? sectionStrings.he.numbered : sectionStrings.he.named;\n    } else if (data && !this.props.basetext) {\n      title            = data.ref;\n      heTitle          = data.heRef;\n      ref              = data.ref;\n    } else if (!data) {\n      title            = \"Loading...\";\n      heTitle          = \"טעינה...\";\n      ref              = null;\n    }\n    const formatEnAsPoetry = data && data.formatEnAsPoetry\n    const formatHeAsPoetry = data && data.formatHeAsPoetry\n\n    const showNumberLabel =  data && data.categories &&\n                              data.categories[0] !== \"Liturgy\" &&\n                              data.categories[0] !== \"Reference\";\n\n    const showSegmentNumbers = showNumberLabel && this.props.basetext;\n\n    // [\\.\\!\\?\\:\\,\\u05F4]+                                                                      # Match (and remove) one or more punctuation or gershayim\n    //    (?![\\u0591-\\u05bd\\u05bf-\\u05c5\\u05c7\\u200d\\u05d0-\\u05eA](?:[\\.\\!\\?\\:\\,\\u05F4\\s]|$))   # So long as it's not immediately followed by one letter (followed by space, punctuation, endline, etc.)\n    // |—\\s;                                                                                    # OR match (and remove) an mdash followed by a space\n    const punctuationre = /[\\.\\!\\?\\:\\,\\u05F4]+(?![\\u0591-\\u05bd\\u05bf-\\u05c5\\u05c7\\u200d\\u05d0-\\u05eA](?:[\\.\\!\\?\\:\\,\\u05F4\\s]|$))|—\\s/g;\n\n    const strip_punctuation_re = (this.props.settings?.language === \"hebrew\" || this.props.settings?.language === \"bilingual\") && this.props.settings?.punctuationTalmud === \"punctuationOff\" && data?.type === \"Talmud\" ? punctuationre : null;\n    const nre = /[\\u0591-\\u05af\\u05bd\\u05bf\\u05c0\\u05c4\\u05c5\\u200d]/g; // cantillation\n    const cnre = /[\\u0591-\\u05bd\\u05bf-\\u05c5\\u05c7\\u200d]/g; // cantillation and nikud\n\n    let strip_vowels_re = null;\n\n    if(this.props.settings && this.props.settings.language !== \"english\" && this.props.settings.vowels !== \"all\"){\n      strip_vowels_re = (this.props.settings.vowels == \"partial\") ? nre : cnre;\n    }\n\n    let segments      = Sefaria.makeSegments(data, this.props.withContext);\n    if(segments.length > 0 && strip_vowels_re && !strip_vowels_re.test(segments[0].he)){\n      strip_vowels_re = null; //if the first segment doesnt even match as containing vowels or cantillation- stop\n    }\n    let textSegments = segments.map((segment, i) => {\n      let highlight = this.props.highlightedRefs && this.props.highlightedRefs.length ?        // if highlighted refs are explicitly set\n                            Sefaria.util.inArray(segment.ref, this.props.highlightedRefs) !== -1 || // highlight if this ref is in highlighted refs prop\n                            Sefaria.util.inArray(Sefaria.sectionRef(segment.ref), this.props.highlightedRefs) !== -1 : // or if the highlighted refs include a section level ref including this ref\n                            this.props.basetext && segment.highlight;  // otherwise highlight if this a basetext and the ref is specific\n      const textHighlights = (highlight || !this.props.basetext) && !!this.props.textHighlights ? this.props.textHighlights : null; // apply textHighlights in a base text only when the segment is hightlights\n      let parashahHeader = null;\n        if (this.props.showParashahHeaders) {\n        const parashahNames = this.parashahHeader(data, segment, (this.props.settings.aliyotTorah == 'aliyotOn'));\n        if (parashahNames){\n          const pclasses = classNames({\n                    parashahHeader: 1,\n                    aliyah: !parashahNames.parashaTitle,\n                  });\n          parashahHeader = (\n              <div className={pclasses}>\n                <ContentText text={{en: parashahNames.en, he:parashahNames.he}} defaultToInterfaceOnBilingual={true}/>\n              </div>\n          );\n        }\n      }\n      segment.he = strip_vowels_re ? segment.he.replace(strip_vowels_re, \"\") : segment.he;\n      segment.he = strip_punctuation_re ? segment.he.replace(strip_punctuation_re, \"\") : segment.he;\n\n      return (\n        <span className=\"rangeSpan\" key={i + segment.ref}>\n          { parashahHeader }\n          <TextSegment\n            sref={segment.ref}\n            enLangCode={this.props.currVersions.en && /\\[([a-z][a-z][a-z]?)\\]$/.test(this.props.currVersions.en) ? /\\[([a-z][a-z][a-z]?)\\]$/.exec(this.props.currVersions.en)[1] : 'en'}\n            heLangCode={this.props.currVersions.he && /\\[([a-z][a-z][a-z]?)\\]$/.test(this.props.currVersions.he) ? /\\[([a-z][a-z][a-z]?)\\]$/.exec(this.props.currVersions.he)[1] : 'he'}\n            en={!this.props.useVersionLanguage || this.props.currVersions.en ? segment.en : null}\n            he={!this.props.useVersionLanguage || this.props.currVersions.he ? segment.he : null}\n            highlight={highlight}\n            showHighlight={this.props.showHighlight}\n            textHighlights={textHighlights}\n            segmentNumber={showSegmentNumbers ? segment.number : 0}\n            showLinkCount={this.props.basetext}\n            linkCount={Sefaria.linkCount(segment.ref, this.props.filter)}\n            filter={this.props.filter}\n            panelPosition={this.props.panelPosition}\n            onSegmentClick={this.props.onSegmentClick}\n            onCitationClick={this.props.onCitationClick}\n            onFootnoteClick={this.onFootnoteClick}\n            onNamedEntityClick={this.props.onNamedEntityClick}\n            unsetTextHighlight={this.props.unsetTextHighlight}\n            formatEnAsPoetry={formatEnAsPoetry}\n            formatHeAsPoetry={formatHeAsPoetry}\n            placeSegmentNumbers={this.placeSegmentNumbers}\n            navigatePanel={this.props.navigatePanel}\n          />\n        </span>\n      );\n    });\n    textSegments = textSegments.length ? textSegments : null;\n\n    const classes = classNames({\n                      textRange: 1,\n                      basetext: this.props.basetext,\n                      loading: !data,\n                      lowlight: this.props.lowlight\n                  });\n\n    // configure number display for inline references\n    let sidebarNum;\n    const displaySidebarNumber = (this.props.inlineReference &&\n        this.props.inlineReference['data-commentator'] === Sefaria.index(Sefaria.parseRef(this.props.sref).index).collectiveTitle);\n    if (displaySidebarNumber) {\n      let enDisplayValue, heDisplayValue;\n      if (this.props.inlineReference['data-label']) {\n         enDisplayValue = this.props.inlineReference['data-label'];\n         heDisplayValue = this.props.inlineReference['data-label'];\n      }\n      else {\n         enDisplayValue = this.props.inlineReference['data-order'];\n         heDisplayValue = Sefaria.hebrew.encodeHebrewNumeral(enDisplayValue);\n      }\n      if (heDisplayValue === undefined) {\n        heDisplayValue = enDisplayValue;\n      }\n      sidebarNum = <div className=\"numberLabel sans-serif itag\">\n        <span className=\"numberLabelInner\">\n          <ContentText text={{en:enDisplayValue, he:heDisplayValue}} defaultToInterfaceOnBilingual={true}/>\n        </span>\n      </div>;\n    } else if (showNumberLabel && this.props.numberLabel) {\n      sidebarNum = <div className=\"numberLabel sans-serif\">\n        <span className=\"numberLabelInner\">\n          <ContentText text={{en:this.props.numberLabel, he:Sefaria.hebrew.encodeHebrewNumeral(this.props.numberLabel)}} defaultToInterfaceOnBilingual={true}/>\n        </span>\n      </div>;\n    } else { sidebarNum = null;}\n    return (\n      <div className={classes} onClick={this.handleClick} onKeyPress={this.handleKeyPress} data-ref={ref}>\n        {sidebarNum}\n        {this.props.hideTitle ? null :\n        (<div className=\"title\">\n          <div className=\"titleBox\" role=\"heading\" aria-level=\"2\">\n            <ContentText text={{en: title, he: heTitle}} defaultToInterfaceOnBilingual={true}/>\n          </div>\n          {this.props.titleButtons ? <div className=\"buttons\" onClick={e => e.stopPropagation()}>{this.props.titleButtons}</div> : null }\n        </div>)}\n        <div className=\"text\">\n          <div className=\"textInner\">\n            { textSegments }\n            { this.props.showActionLinks ? actionLinks : null }\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\nTextRange.propTypes = {\n  sref:                   PropTypes.string.isRequired,\n  currVersions:           PropTypes.object.isRequired,\n  useVersionLanguage:     PropTypes.bool,\n  highlightedRefs:        PropTypes.array,\n  showHighlight:          PropTypes.bool,\n  basetext:               PropTypes.bool,\n  withContext:            PropTypes.bool,\n  hideTitle:              PropTypes.bool,\n  loadLinks:              PropTypes.bool,\n  prefetchNextPrev:       PropTypes.bool,\n  prefetchMultiple:       PropTypes.number,\n  lowlight:               PropTypes.bool,\n  numberLabel:            PropTypes.number,\n  settings:               PropTypes.object,\n  filter:                 PropTypes.array,\n  titleButtons:           PropTypes.object,\n  showParashahHeaders:    PropTypes.bool,\n  onTextLoad:             PropTypes.func,\n  onRangeClick:           PropTypes.func,\n  onSegmentClick:         PropTypes.func,\n  onCitationClick:        PropTypes.func,\n  onNamedEntityClick:     PropTypes.func,\n  showBaseText:           PropTypes.func,\n  unsetTextHighlight:     PropTypes.func,\n  panelsOpen:             PropTypes.number, // used?\n  layoutWidth:            PropTypes.number,\n  showActionLinks:        PropTypes.bool,\n  inlineReference:        PropTypes.object,\n  textHighlights:         PropTypes.array,\n  translationLanguagePreference: PropTypes.string,\n  navigatePanel:          PropTypes.func\n};\nTextRange.defaultProps = {\n  currVersions: {en:null,he:null},\n};\n\nclass TextSegment extends Component {\n  shouldComponentUpdate(nextProps) {\n    if (this.props.highlight !== nextProps.highlight)           { return true; }\n    if (this.props.showHighlight !== nextProps.showHighlight)   { return true; }\n    if (this.props.textHighlights !== nextProps.textHighlights) { return true; }\n    if (this.props.showLinkCount !== nextProps.showLinkCount)   { return true; }\n    if (this.props.linkCount !== nextProps.linkCount)           { return true; }\n    if (!!this.props.filter !== !!nextProps.filter)             { return true; }\n    if (this.props.filter && nextProps.filter &&\n        !this.props.filter.compare(nextProps.filter))           { return true; }\n    if (this.props.en !== nextProps.en\n        || this.props.he !== nextProps.he)                      { return true; }\n    return false;\n  }\n  componentDidUpdate(prevProps) {\n    if (this.props.highlight !== prevProps.highlight && !!this.props.textHighlights) {\n      this.props.unsetTextHighlight();\n    }\n  }\n  handleRefLinkClick(refLink, event) {\n    event.preventDefault();\n    let newRef = Sefaria.humanRef(refLink.attr(\"data-ref\"));\n    const newBook = Sefaria.parseRef(newRef)?.book;\n    const currBook = Sefaria.parseRef(this.props.sref)?.book;\n    const isScrollLink = refLink.attr('data-scroll-link');\n\n    // two options: in most cases, we open a new panel, but if isScrollLink is 'true', we should navigate in the same panel to the new location\n    const canNavigatePanel = newBook === currBook && !!this.props.navigatePanel; // navigatePanel only works if we're scrolling to a location in the same book\n    if (isScrollLink === 'true' && canNavigatePanel) {\n      this.props.navigatePanel(newRef);\n    }\n    else {\n      const ven = refLink.attr(\"data-ven\") ? refLink.attr(\"data-ven\") : null;\n      const vhe = refLink.attr(\"data-vhe\") ? refLink.attr(\"data-vhe\") : null;\n      let currVersions = {\"en\": ven, \"he\": vhe};\n      this.props.onCitationClick(newRef, this.props.sref, true, currVersions);\n    }\n\n    event.stopPropagation();\n    Sefaria.track.event(\"Reader\", \"Citation Link Click\", ref);\n  }\n  isRefLink (x) {\n    // 'x' is a jquery element\n    return x?.attr('data-ref') && x?.prop('tagName') === 'A';\n  }\n  handleClick(event) {\n    // grab refLink from target or parent (sometimes there is an <i> within refLink forcing us to look for the parent)\n    const refLink = this.isRefLink($(event.target)) ? $(event.target) : this.isRefLink($(event.target.parentElement)) ? $(event.target.parentElement) : null;\n    const namedEntityLink = $(event.target).closest(\"a.namedEntityLink\");\n    const footnoteLink = $(event.target).is(\"sup\") || $(event.target).parents(\"sup\").size();\n    if (refLink) {\n      //Click of citation\n      this.handleRefLinkClick(refLink, event);\n    } else if (footnoteLink) {\n      this.props.onFootnoteClick(event);\n      event.stopPropagation();\n    } else if (namedEntityLink.length > 0) {\n      //Click of named entity\n      event.preventDefault();\n      if (!this.props.onNamedEntityClick) { return; }\n\n      let topicSlug = namedEntityLink.attr(\"data-slug\");\n      Sefaria.util.selectElementContents(namedEntityLink[0]);\n      this.props.onNamedEntityClick(topicSlug, this.props.sref, namedEntityLink[0].innerText);\n      event.stopPropagation();\n      Sefaria.track.event(\"Reader\", \"Named Entity Link Click\", topicSlug);\n    } else if (this.props.onSegmentClick) {\n      this.props.onSegmentClick(this.props.sref);\n      Sefaria.track.event(\"Reader\", \"Text Segment Click\", this.props.sref);\n    }\n  }\n  handleKeyPress(event) {\n    if (event.charCode == 13) {\n      this.handleClick(event);\n    }\n  }\n  formatItag(lang, text) {\n    let $newElement = $(\"<div>\" + text + \"</div>\");\n    const textValue = function(i) {\n      let value;\n      if ($(i).attr('data-label')) {\n        return $(i).attr('data-label');\n      } else {\n        if (lang === \"he\") {\n          value = Sefaria.hebrew.encodeHebrewNumeral($(i).attr('data-order'));\n        }\n        else if (lang === \"en\") {\n          value = $(i).attr('data-order');\n        }\n      }\n      if (value === undefined) {\n        value = $(i).attr('data-order');\n      }\n      return value;\n    };\n    //Since our list of commentaries has titles both with single quotes and double quotes in it, because reasons, we need to escape at least one so this function doest go down in flames.\n    const escapedFilter = this.props.filter[0].replace(/[\"]/g, '\\\\\"'); //we know filter is defined at this point, so no need to check if its there first.\n    $newElement.find(`i[data-commentator=\"${escapedFilter}\"]`).each(function () {\n      $(this).replaceWith('<sup class=\"itag\">' + textValue(this) + \"</sup>\");\n    });\n    return $newElement.html();\n  }\n  wrapWordsInGenericHTMLRegex(text) {\n    text = text.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');  //escape text\n    const arbitraryHTMLTagsRegex = '(?:<\\/?[^>]+>){0,}';\n    return text.replace(/(\\S+)/g, `${arbitraryHTMLTagsRegex}$1${arbitraryHTMLTagsRegex}`);\n  }\n  addHighlights(text) {\n    // for adding in highlights to query results in Reader\n    if (!!this.props.textHighlights) {\n      const highList = this.props.textHighlights.map(h => this.wrapWordsInGenericHTMLRegex(h));\n      const reg = new RegExp(`(${highList.join(\"|\")})`, 'g');\n      return text.replace(reg, '<span class=\"queryTextHighlight\">$1</span>');\n    }\n    return text;\n  }\n\n  addPoetrySpans(text) {\n    const textArray = text.split(\"<br>\").map(t => (`<span class='poetry indentWhenWrap'>${t}</span>`) ).join(\"<br>\")\n    return(textArray)\n  }\n\n  render() {\n    let linkCountElement = null;\n    let he = this.props.he || \"\";\n    let en = this.props.en || \"\";\n    // render itags\n    if (this.props.filter && this.props.filter.length > 0) {\n      he = this.formatItag(\"he\", he);\n      en = this.formatItag(\"en\", en);\n    }\n    he = this.addHighlights(he);\n    en = this.addHighlights(en);\n\n    en = this.props.formatEnAsPoetry ? this.addPoetrySpans(en) : en\n    he = this.props.formatHeAsPoetry ? this.addPoetrySpans(he) : he\n\n    const heOnly = !this.props.en;\n    const enOnly = !this.props.he;\n    const overrideLanguage = (enOnly || heOnly) ? (heOnly ? \"hebrew\" : \"english\") : null;\n\n    if (this.props.showLinkCount) {\n      const linkCount = this.props.linkCount;\n      const minOpacity = 20, maxOpacity = 70;\n      const linkScore = linkCount ? Math.min(linkCount + minOpacity, maxOpacity) / 100.0 : 0;\n      const style = {opacity: linkScore};\n      linkCountElement = this.props.showLinkCount ? (\n          <div className=\"linkCount sans-serif\" title={linkCount + \" Connections Available\"}>\n             <span className=\"linkCountDot\" style={style}></span>\n          </div>\n      ) : null;\n    } else {\n      linkCountElement = \"\";\n    }\n    let segmentNumber = this.props.segmentNumber ? (\n        <div className=\"segmentNumber sans-serif\">\n          <span className=\"segmentNumberInner\">\n             <ContentText\n                 text={{\"en\": this.props.segmentNumber, \"he\": Sefaria.hebrew.encodeHebrewNumeral(this.props.segmentNumber)}}\n                 defaultToInterfaceOnBilingual={true}\n             />\n          </span>\n        </div>\n    ) : null;\n\n\n\n    const classes=classNames({\n      segment: 1,\n      highlight: this.props.highlight && this.props.showHighlight,\n      invisibleHighlight: this.props.highlight,\n      heOnly: heOnly,\n      enOnly: enOnly,\n      showNamedEntityLinks: !!this.props.onNamedEntityClick,\n    });\n    if(!this.props.en && !this.props.he){\n        return false;\n    }\n    return (\n      <div tabIndex=\"0\"\n           className={classes} onClick={this.handleClick} onKeyPress={this.handleKeyPress}\n           data-ref={this.props.sref} aria-controls={\"panel-\"+(this.props.panelPosition+1)}\n           aria-label={\"Click to see links to \"+this.props.sref}>\n        {segmentNumber}\n        {linkCountElement}\n        <p className=\"segmentText\">\n          <VersionContent overrideLanguage={overrideLanguage} html={{\"he\": he+ \" \", \"en\": en+ \" \" }} bilingualOrder={[\"he\", \"en\"]} imageLoadCallback={this.props.placeSegmentNumbers}/>\n        </p>\n\n        <div className=\"clearFix\"></div>\n      </div>\n    );\n  }\n}\nTextSegment.propTypes = {\n  sref:            PropTypes.string,\n  en:              PropTypes.string,\n  he:              PropTypes.string,\n  highlight:       PropTypes.bool,\n  showHighlight:   PropTypes.bool,\n  textHighlights:  PropTypes.array,\n  segmentNumber:   PropTypes.number,\n  showLinkCount:   PropTypes.bool,\n  linkCount:       PropTypes.number,\n  filter:          PropTypes.array,\n  onCitationClick: PropTypes.func,\n  onSegmentClick:  PropTypes.func,\n  onFootnoteClick: PropTypes.func,\n  onNamedEntityClick: PropTypes.func,\n  unsetTextHighlight: PropTypes.func,\n  navigatePanel: PropTypes.func\n};\n\nexport default TextRange;\n","import {\n  SheetListing,\n  LoadingMessage,\n  SimpleLinkedBlock, InterfaceText, EnglishText, HebrewText\n} from './Misc';\nimport {\n  RecentFilterSet,\n} from './ConnectionFilters';\nimport React  from 'react';\nimport ReactDOM  from 'react-dom';\nimport Sefaria  from './sefaria/sefaria';\nimport PropTypes  from 'prop-types';\nimport TextRange  from './TextRange';\nimport Component      from 'react-class';\nimport classNames from 'classnames';\n\nclass TextList extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      linksLoaded: false, // has the list of refs been loaded\n      textLoaded:  false, // has the text of those refs been loaded\n      waitForText: true,  // should we delay rendering texts until preload is finished\n    }\n  }\n  componentDidMount() {\n    this._isMounted = true;\n    this.loadConnections();\n  }\n  componentWillUnmount() {\n    this._isMounted = false;\n  }\n  componentWillReceiveProps(nextProps) {\n    if (!Sefaria.util.object_equals(this.props.filter, nextProps.filter)) {\n      this.preloadText(nextProps.filter);\n    }\n  }\n  componentWillUpdate(nextProps) {\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (!prevProps.srefs.compare(this.props.srefs)) {\n      this.loadConnections();\n    }\n    const didRender = prevState.linksLoaded && (!prevState.waitForText || prevState.textLoaded);\n    const willRender = this.state.linksLoaded && (!this.state.waitForText || this.state.textLoaded);\n    if (!didRender && willRender) {\n      // links text just loaded\n      this.props.checkVisibleSegments();\n    }\n  }\n  getSectionRef() {\n    var ref = this.props.srefs[0]; // TODO account for selections spanning sections\n    var sectionRef = Sefaria.sectionRef(ref) || ref;\n    return sectionRef;\n  }\n  loadConnections() {\n    // Load connections data from server for this section\n    var sectionRef = this.getSectionRef();\n    if (!sectionRef) { return; }\n    Sefaria.related(sectionRef, function(data) {\n      if (this._isMounted) {\n        this.preloadText(this.props.filter);\n        this.setState({\n          linksLoaded: true,\n        });\n      }\n    }.bind(this));\n  }\n  onDataChange() {\n    Sefaria.clearLinks();\n    this.setState({linksLoaded: false});\n    this.loadConnections();\n  }\n  preloadText(filter) {\n    // Preload text of links if `filter` is a single commentary, or all commentary\n    if (filter.length == 1 &&\n        Sefaria.index(filter[0]) && // filterSuffix for quoting commmentary prevents this path for QC\n        (Sefaria.index(filter[0]).categories[0] == \"Commentary\"||\n         Sefaria.index(filter[0]).primary_category == \"Commentary\")) {\n      // Individual commentator names (\"Rashi\") are put into Sefaria.index with \"Commentary\" as first category\n      // Intentionally fails when looking up \"Rashi on Genesis\", which indicates we're looking at a quoting commentary.\n      this.preloadSingleCommentaryText(filter);\n\n    } else if (filter.length == 1 && filter[0] == \"Commentary\") {\n      this.preloadAllCommentaryText(filter);\n\n    } else {\n      this.setState({waitForText: false, textLoaded: false});\n    }\n  }\n  preloadSingleCommentaryText(filter) {\n    //console.log('preloading single commentary')\n    // Preload commentary for an entire section of text.\n    this.setState({textLoaded: false});\n    var commentator       = filter[0];\n    var basetext          = this.getSectionRef();\n    var commentarySection = Sefaria.commentarySectionRef(commentator, basetext);\n    if (!commentarySection) {\n      this.setState({waitForText: false});\n      return;\n    }\n    this.setState({waitForText: true});\n    Sefaria.text(commentarySection, {}, function() {\n      if (this._isMounted) {\n        this.setState({textLoaded: true});\n      }\n    }.bind(this));\n  }\n  preloadAllCommentaryText() {\n    var basetext   = this.getSectionRef();\n    var summary    = Sefaria.linkSummary(basetext);\n    if (summary.length && summary[0].category == \"Commentary\") {\n      this.setState({textLoaded: false, waitForText: true});\n      // Get a list of commentators on this section that we need don't have in the cache\n      var commentators = summary[0].books.map(function(item) {\n        return item.book;\n      });\n\n      if (commentators.length) {\n        var commentarySections = commentators.map(function(commentator) {\n          return Sefaria.commentarySectionRef(commentator, basetext);\n        }).filter(function(commentarySection) {\n          return !!commentarySection;\n        });\n        this.waitingFor = Sefaria.util.clone(commentarySections);\n        this.target = 0;\n        for (var i = 0; i < commentarySections.length; i++) {\n          Sefaria.text(commentarySections[i], {}, function(data) {\n            var index = this.waitingFor.indexOf(data.commentator);\n            if (index == -1) {\n                // console.log(\"Failed to clear commentator:\");\n                // console.log(data);\n                this.target += 1;\n            }\n            if (index > -1) {\n                this.waitingFor.splice(index, 1);\n            }\n            if (this.waitingFor.length == this.target) {\n              if (this._isMounted) {\n                this.setState({textLoaded: true});\n              }\n            }\n          }.bind(this));\n        }\n      } else {\n        // All commentaries have been loaded already\n        this.setState({textLoaded: true});\n      }\n    } else {\n      // There were no commentaries to load\n      this.setState({textLoaded: true});\n    }\n  }\n  getLinks() {\n    var refs               = this.props.srefs;\n    var filter             = this.props.filter;\n    var excludedSheet      = this.props.nodeRef ? this.props.nodeRef.split(\".\")[0] : null;\n    var sectionRef         = this.getSectionRef();\n\n    var sortConnections = function(a, b) {\n      // Sort according this which verse the link connects to\n      if (a.anchorVerse !== b.anchorVerse) {\n        return a.anchorVerse - b.anchorVerse;\n      }\n      if (a.index_title == b.index_title) {\n        // For Sheet links of the same group sort by title\n        if (a.isSheet && b.isSheet) {\n          return a.title > b.title ? 1 : -1;\n        }\n        // For text links of same text/commentary use content order, set by server\n        return a.commentaryNum - b.commentaryNum;\n      }\n      if (this.props.contentLang == \"hebrew\") {\n        return a.sourceHeRef > b.sourceHeRef ? 1 : -1;\n      } else {\n        return a.sourceRef > b.sourceRef ? 1 : -1;\n      }\n    }.bind(this);\n\n    let sectionLinks = Sefaria.getLinksFromCache(sectionRef);\n    sectionLinks.map(link => {\n      if (!(\"anchorRefExpanded\" in link)) { link.anchorRefExpanded = Sefaria.splitRangingRef(link.anchorRef); }\n    });\n    let overlaps = link => (!(link.anchorRefExpanded.every(aref => Sefaria.util.inArray(aref, refs) === -1)));\n    let links = Sefaria._filterLinks(sectionLinks, filter)\n      .filter(overlaps)\n      .sort(sortConnections);\n\n    if (excludedSheet) {\n      links = Sefaria._filterSheetFromLinks(links, excludedSheet);\n    }\n\n    return links;\n  }\n  render() {\n    var refs               = this.props.srefs;\n    var oref               = Sefaria.ref(refs[0]);\n    var filter             = this.props.filter; // Remove filterSuffix for display\n    var displayFilter      = filter.map(filter => filter.split(\"|\")[0]);  // Remove filterSuffix for display\n    var links              = this.getLinks();\n\n    var en = \"No connections known\" + (filter.length ? \" for \" + displayFilter.join(\", \") + \" here\" : \"\") + \".\";\n    var he = \"אין קשרים ידועים\"        + (filter.length ? \" ל\"    + displayFilter.map(f => Sefaria.hebrewTerm(f)).join(\", \") : \"\") + \".\";\n    var noResultsMessage = <LoadingMessage message={en} heMessage={he} />;\n    var message = !this.state.linksLoaded ? (<LoadingMessage />) : (links.length === 0 ? noResultsMessage : null);\n    var content = links.length === 0 ? message :\n                  this.state.waitForText && !this.state.textLoaded ?\n                    (<LoadingMessage />) :\n                    links.map(function(link, i) {\n                        if (link.isSheet) {\n                          var hideAuthor = link.index_title == this.props.filter[0];\n                          return (<SheetListing\n                                    sheet={link}\n                                    handleSheetClick={this.props.handleSheetClick}\n                                    connectedRefs={this.props.srefs}\n                                    hideAuthor={hideAuthor}\n                                    openInNewTab={true}\n                                    key={i + link.anchorRef} />);\n                        } else {\n                          var hideTitle = link.category === \"Commentary\" && this.props.filter[0] !== \"Commentary\";\n                          const classes = classNames({ textListTextRangeBox: 1,  typeQF: link.type.startsWith('quotation_auto')});\n                          return (<div className={classes} key={i + link.sourceRef}>\n                                    <TextRange\n                                      panelPosition ={this.props.panelPosition}\n                                      sref={link.sourceRef}\n                                      hideTitle={hideTitle}\n                                      numberLabel={link.category === \"Commentary\" ? link.anchorVerse : 0}\n                                      basetext={false}\n                                      textHighlights={link.highlightedWords || null}\n                                      inlineReference={link.inline_reference || null}\n                                      onCitationClick={this.props.onCitationClick}\n                                      translationLanguagePreference={this.props.translationLanguagePreference}\n                                    />\n                                    <ConnectionButtons>\n                                      <OpenConnectionTabButton srefs={[link.sourceRef]} openInTabCallback={this.props.onTextClick}/>\n                                      <AddConnectionToSheetButton srefs={[link.sourceRef]} addToSheetCallback={this.props.setConnectionsMode}/>\n                                      {Sefaria.is_moderator ?\n                                      <DeleteConnectionButton delUrl={\"/api/links/\" + link._id} connectionDeleteCallback={this.onDataChange}/> : null\n                                      }\n                                    </ConnectionButtons>\n                                  </div>);\n\n                        }\n                      }, this);\n    return (\n        <div>\n          {this.props.fullPanel ?\n          <RecentFilterSet\n            srefs={this.props.srefs}\n            asHeader={false}\n            filter={this.props.filter}\n            recentFilters={this.props.recentFilters}\n            textCategory={oref ? oref.primary_category : null}\n            setFilter={this.props.setFilter}\n            showAllFilters={this.showAllFilters} />\n            : null }\n          { content }\n        </div>);\n  }\n}\nTextList.propTypes = {\n  srefs:                   PropTypes.array.isRequired,    // an array of ref strings\n  filter:                  PropTypes.array.isRequired,\n  recentFilters:           PropTypes.array.isRequired,\n  fullPanel:               PropTypes.bool,\n  multiPanel:              PropTypes.bool,\n  contentLang:             PropTypes.string,\n  setFilter:               PropTypes.func,\n  setConnectionsMode:      PropTypes.func,\n  onTextClick:             PropTypes.func,\n  onCitationClick:         PropTypes.func,\n  onDataChange:            PropTypes.func,\n  handleSheetClick:        PropTypes.func,\n  openNav:                 PropTypes.func,\n  openDisplaySettings:     PropTypes.func,\n  closePanel:              PropTypes.func,\n  selectedWords:           PropTypes.string,\n  checkVisibleSegments:    PropTypes.func.isRequired,\n  translationLanguagePreference: PropTypes.string,\n};\n\nconst DeleteConnectionButton = ({delUrl, connectionDeleteCallback}) =>{\n  /*\n  ConnectionButton composite element. Goes inside a ConnectionButtons\n  Takes a url for a delete api (with the full URI of a specific object) and callback\n   */\n  const deleteLink = () => {\n    if(!Sefaria.is_moderator) return;\n    if (confirm(\"Are you sure you want to delete this connection?\")) {\n      const url = delUrl;\n      $.ajax({\n        type: \"delete\",\n        url: url,\n        success: function() {\n          connectionDeleteCallback();\n          alert(\"Connection deleted.\");\n        }.bind(this),\n        error: function () {\n          alert(\"There was an error deleting this connection. Please reload the page or try again later.\");\n        }\n      });\n    }\n  }\n  return Sefaria.is_moderator ? (\n      <SimpleLinkedBlock\n        aclasses={\"connection-button delete-link\"}\n        onClick={deleteLink}\n        en={\"Remove\"}\n        he={\"מחיקת קישור\"}\n      />\n  ) : null;\n}\n\n\nconst OpenConnectionTabButton = ({srefs, openInTabCallback, openStrings}) =>{\n  /*\n  ConnectionButton composite element. Goes inside a ConnectionButtons\n  Takes a ref(s) for opening as a link and callback for opening in-app\n   */\n  const sref = Array.isArray(srefs) ? Sefaria.normRefList(srefs) : srefs;\n  const [en, he] = openStrings || ['Open', 'פתיחה'];\n  const openLinkInTab = (event) => {\n    if (openInTabCallback) {\n      event.preventDefault();\n      //Click on the body of the TextRange itself from TextList\n      openInTabCallback(srefs);\n      Sefaria.track.event(\"Reader\", \"Click Text from TextList\", sref);\n    }\n  }\n  return(\n      <SimpleLinkedBlock\n        aclasses={\"connection-button panel-open-link\"}\n        onClick={openLinkInTab}\n        en={en}\n        he={he}\n        url={`/${sref}`}\n      />\n  );\n}\n\n\nconst AddConnectionToSheetButton = ({srefs, addToSheetCallback, versions= {\"en\":null, \"he\":null} }) =>{\n  /*\n  ConnectionButton composite element. Goes inside a ConnectionButtons\n  Takes a ref(s) for opening an AddToSourceSheet element and callback for passing data to said element - refs and versions object\n   */\n  const addToSheet = () => {\n    addToSheetCallback(\"Add To Sheet\", {\"addSource\": \"connectionsPanel\", \"connectionRefs\" : srefs, \"versions\": versions});\n  }\n  return(\n    <SimpleLinkedBlock\n      aclasses={\"connection-button add-to-sheet-link\"}\n      onClick={addToSheet}\n      en={\"Add to Sheet\"}\n      he={\"הוספה לדף מקורות\"}\n    />\n  );\n}\n\nconst ConnectionButtons = ({children}) =>{\n  /* This is basically just a composition container, and allows to apply css rules to a container for connection buttons.\n    can also be expanded to use a default set of connection buttons, if not children are present?\n   */\n  return(\n      <div className={`connection-buttons`}>\n        {children}\n      </div>\n  );\n}\n\n\nexport {TextList as default, ConnectionButtons, AddConnectionToSheetButton, OpenConnectionTabButton, DeleteConnectionButton};\n","import React, {useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport VersionBlockHeader from \"./VersionBlockHeader\";\nimport {VersionBlockUtils} from './VersionBlock';\nimport VersionTitleAndSelector from './VersionTitleAndSelector';\nimport VersionMetadata from \"./VersionMetadata\";\nimport {OpenConnectionTabButton} from \"../TextList\";\n\nfunction VersionBlockWithPreview({currentRef, version, currObjectVersions, openVersionInSidebar, openVersionInReader, isSelected, srefs, onRangeClick}) {\n    const opeInSidebar = VersionBlockUtils.openVersionInSidebar.bind(null, currentRef, version, currObjectVersions, openVersionInSidebar);\n    function openInTabCallback(sref) {\n        onRangeClick(sref, false, {[version.language]: version.versionTitle});\n    }\n    return (\n        <div className='versionBlock with-preview'>\n            <VersionBlockHeader\n              text={version.text}\n              onClick={opeInSidebar}\n              renderMode='contentText'\n              link={VersionBlockUtils.makeVersionLink(currentRef, version, currObjectVersions, false)}\n              direction={version.direction || 'ltr'}\n             />\n            <details>\n                <summary>\n                    <VersionTitleAndSelector\n                      version={version}\n                      currentRef={currentRef}\n                      currObjectVersions={currObjectVersions}\n                      openVersionInReader={openVersionInReader}\n                      isSelected={isSelected}\n                    />\n                </summary>\n                <div className='version-block-with-preview-details'>\n                    <VersionMetadata\n                        currentRef={currentRef}\n                        version={version}\n                    />\n                    <OpenConnectionTabButton\n                        srefs={srefs}\n                        openInTabCallback={openInTabCallback}\n                        openStrings={['Open Text', 'פתיחת טקסט']}\n                    />\n                </div>\n            </details>\n        </div>\n    );\n}\nVersionBlockWithPreview.prototypes = {\n  version: PropTypes.object.isRequired,\n  currObjectVersions: PropTypes.object.isRequired,\n  currentRef: PropTypes.string.isRequired,\n  openVersionInSidebar: PropTypes.func,\n  openVersionInReader: PropTypes.func.isRequired,\n  isSelected: PropTypes.bool.isRequired,\n  srefs: PropTypes.array.isRequired,\n  onRangeClick: PropTypes.func.isRequired,\n};\nexport default VersionBlockWithPreview;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Sefaria from '../sefaria/sefaria';\nimport Util from '../sefaria/util';\nimport $ from '../sefaria/sefariaJquery';\nimport Component from 'react-class';\nimport {LoadingMessage} from \"../Misc\";\nimport VersionBlockHeader from \"./VersionBlockHeader\";\nimport VersionBlockSelectButton from \"./VersionBlockSelectButton\";\nimport VersionInformation from \"./VersionInformation\";\nimport VersionImage from \"./VersionImage\";\nimport VersionBlockWithPreview from \"./VersionBlockWithPreview\";\n\nclass VersionBlockUtils {\n    static makeVersionTitle(version){\n      if (version.merged) {\n        return {\"className\" : \"\", \"text\": Sefaria._(\"Merged from\") + \" \" + Array.from(new Set(version.sources)).join(\", \")};\n      } else if (Sefaria.interfaceLang === \"english\" || !version.versionTitleInHebrew) {\n        return {\"className\" : \"\", \"text\" : version.versionTitle};\n      } else {\n        return {\"className\": \"he\", \"text\": version.versionTitleInHebrew};\n      }\n    }\n    static makeVersionLink(currRef, version, currObjectVersions, mainPanel) {\n      if (version.merged) {\n        return \"#\"; // there's no url for a merged version\n      }\n      const withParam = mainPanel ? \"\" : \"&with=Translation Open\";\n      const versionParam = mainPanel ? version.language : 'side';\n      const nonSelectedVersionParams = Object.entries(currObjectVersions)\n                                        .filter(([vlang, ver]) => !!ver && !!ver?.versionTitle && !version?.merged && (withParam || vlang === version.language))  // in 'side' case, keep all version params\n                                        .map(([vlang, ver]) => `&v${vlang}=${ver.versionTitle.replace(/\\s/g,'_')}`)\n                                        .join(\"\");\n      const versionLink = nonSelectedVersionParams === \"\" ? null : `/${Sefaria.normRef(currRef)}${nonSelectedVersionParams}&v${versionParam}=${version.versionTitle.replace(/\\s/g,'_')}${withParam}`.replace(\"&\",\"?\");\n      return versionLink;\n    }\n    static makeAttrClassNames(version, extraClassNames, attrToExist = null, attrIsMultilingual = false){\n      if(attrIsMultilingual && Sefaria.interfaceLang != \"english\"){\n        attrToExist = attrToExist+\"In\"+Sefaria.interfaceLang.toFirstCapital();\n      }\n      return {...extraClassNames, \"n-a\": (attrToExist ? !version[attrToExist] : 0)};\n    }\n    static openVersionInSidebar(currRef, version, currObjectVersions, openVersionInSidebar, e) {\n      e.preventDefault();\n      try {\n        gtag(\"event\", \"onClick_version_title\", {element_name: `version_title`,\n            change_to: `${version.versionTitle}`, change_from: `${currObjectVersions[version.language]['versionTitle']}`,\n            categories: `${Sefaria.refCategories(currRef)}`, book: `${Sefaria.parseRef(currRef).index}` })\n      }\n      catch(err) {\n        console.log(err);\n      }\n      openVersionInSidebar(version.versionTitle, version.language);\n  }\n  static openVersionInMainPanel(currRef, version, currObjectVersions, renderMode, firstSectionRef, openVersionInReader, e) {\n      e.preventDefault();\n      try {\n        gtag(\"event\", \"onClick_select_version\", {element_name: `select_version`,\n        change_to: `${version.versionTitle}`, change_from: `${currObjectVersions[version.language]['versionTitle']}`,\n        categories: `${Sefaria.refCategories(currRef)}`, book: `${Sefaria.parseRef(currRef).index}` })\n      }\n      catch(err) {\n        console.log(err);\n      }\n      if (renderMode === 'book-page') {\n          window.location = `/${firstSectionRef}?v${version.language}=${version.versionTitle.replace(/\\s/g,'_')}`;\n      } else {\n          openVersionInReader(version.versionTitle, version.language);\n      }\n      Sefaria.setVersionPreference(currRef, version.versionTitle, version.language);\n  }\n}\n\nclass VersionBlock extends Component {\n  constructor(props) {\n    super(props);\n    this.updateableVersionAttributes = [\n      \"versionTitle\",\n      \"versionSource\",\n      \"versionNotes\",\n      \"license\",\n      \"priority\",\n      \"digitizedBySefaria\",\n      \"status\",\n      \"versionTitleInHebrew\",\n      \"shortVersionTitle\",\n      \"shortVersionTitleInHebrew\",\n      \"versionNotesInHebrew\",\n      \"purchaseInformationImage\",\n      \"purchaseInformationURL\",\n\n    ];\n    let s = {\n      editing: false,\n      error: null,\n      originalVersionTitle: props.version[\"versionTitle\"]\n    };\n    this.updateableVersionAttributes.forEach(attr => s[attr] = props.version[attr]);\n    this.state = s;\n  }\n  handleInputChange(event) {\n    const target = event.target;\n    const name = target.name;\n    const value = target.type === 'checkbox' ? (name === \"status\" ? (target.checked ? \"locked\" : null) : target.checked ) : target.value;\n\n    this.setState({\n      [name]: value,\n      error: null\n    });\n  }\n\n  saveVersionUpdate(event) {\n    const v = this.props.version;\n    let payloadVersion = {};\n    this.updateableVersionAttributes.forEach(function(attr) {\n      if (this.state[attr] || this.state[attr] != this.props.version[attr]) {\n        payloadVersion[attr] = this.state[attr];\n      }\n    }.bind(this));\n    delete payloadVersion.versionTitle;\n    if (this.state.versionTitle != this.state.originalVersionTitle) {\n      payloadVersion.newVersionTitle = this.state.versionTitle;\n    }\n    this.setState({\"error\": \"Saving.  Page will reload on success.\"});\n    $.ajax({\n      url: `/api/version/flags/${v.title}/${v.language}/${v.versionTitle}`,\n      dataType: 'json',\n      type: 'POST',\n      data: {json: JSON.stringify(payloadVersion)},\n      success: function(data) {\n        if (data.status == \"ok\") {\n          document.location.reload(true);\n        } else {\n          this.setState({error: data.error});\n        }\n      }.bind(this),\n      error: function(xhr, status, err) {\n        this.setState({error: err.toString()});\n      }.bind(this)\n    });\n  }\n  deleteVersion() {\n    if (!confirm(\"Are you sure you want to delete this text version?\")) { return; }\n\n    const url = \"/api/texts/\" + this.props.version.title + \"/\" + this.props.version.language + \"/\" + this.props.version.versionTitle;\n\n    $.ajax({\n      url: url,\n      type: \"DELETE\",\n      success: function(data) {\n        if (\"error\" in data) {\n          alert(data.error)\n        } else {\n          alert(\"Text Version Deleted.\");\n          window.location = \"/\" + Sefaria.normRef(this.props.version.title);\n        }\n      }\n    }).fail(function() {\n      alert(\"Something went wrong. Sorry!\");\n    });\n  }\n  openEditor() {\n    if(Sefaria.is_moderator){\n      this.setState({editing:true});\n    }else{\n      return;\n    }\n  }\n  closeEditor() {\n    this.setState({editing:false});\n  }\n  openExtendedNotes(e){\n    e.preventDefault();\n    this.props.viewExtendedNotes(this.props.version.title, this.props.version.language, this.props.version.versionTitle);\n  }\n  makeVersionNotes(){\n    if (!this.props.showNotes) {\n      return null;\n    }\n    if(Sefaria.interfaceLang==\"english\" && !!this.props.version.versionNotes){\n      return this.props.version.versionNotes;\n    }else if(Sefaria.interfaceLang==\"hebrew\" && !!this.props.version.versionNotesInHebrew){\n      return this.props.version.versionNotesInHebrew;\n    }else{\n      return null;\n    }\n  }\n  makeSelectVersionLanguage(){\n    let voc = this.props.version.isSource ? 'Version' : \"Translation\";\n    return this.props.isCurrent ? Sefaria._(\"Current \" + voc) : Sefaria._(\"Select \"+ voc);\n  }\n\n  hasExtendedNotes(){\n    return !!(this.props.version.extendedNotes || this.props.version.extendedNotesHebrew);\n  }\n\n  render() {\n    if(this.props.version.title == \"Sheet\") return null //why are we even getting here in such a case??;\n    const v = this.props.version;\n    const vtitle = VersionBlockUtils.makeVersionTitle(v);\n    const vnotes = this.makeVersionNotes();\n    const showLanguagLabel = this.props.rendermode == \"book-page\";\n    const openVersionInSidebar = VersionBlockUtils.openVersionInSidebar.bind(null, this.props.currentRef, this.props.version,\n        this.props.currObjectVersions, this.props.openVersionInSidebar);\n    const openVersionInMainPanel = VersionBlockUtils.openVersionInMainPanel.bind(null, this.props.currentRef,\n        this.props.version, this.props.currObjectVersions, this.props.rendermode, this.props.firstSectionRef, this.props.openVersionInReader);\n\n    if (this.state.editing && Sefaria.is_moderator) {\n      // Editing View\n      let close_icon = (Sefaria.is_moderator)?<i className=\"fa fa-times-circle\" aria-hidden=\"true\" onClick={this.closeEditor}/>:\"\";\n\n      let licenses = Object.keys(Sefaria.getLicenseMap());\n      licenses = licenses.includes(v.license) ? licenses : [v.license].concat(licenses);\n\n      return (\n        <div className = \"versionBlock\">\n          <div className=\"error\">{this.state.error}</div>\n          <div className=\"versionEditForm\">\n\n            <label htmlFor=\"versionTitle\" className=\"\">Version Title</label>\n            {close_icon}\n            <input id=\"versionTitle\" name=\"versionTitle\" className=\"\" type=\"text\" value={this.state.versionTitle} onChange={this.handleInputChange} />\n\n            <label htmlFor=\"versionTitleInHebrew\" className=\"\">Hebrew Version Title</label>\n            <input id=\"versionTitleInHebrew\" name=\"versionTitleInHebrew\" className=\"\" type=\"text\" value={this.state.versionTitleInHebrew} onChange={this.handleInputChange} />\n\n            <label htmlFor=\"shortVersionTitle\" className=\"\">Short Version Title</label>\n            <input id=\"shortVersionTitle\" name=\"shortVersionTitle\" className=\"\" type=\"text\" value={this.state.shortVersionTitle} onChange={this.handleInputChange} />\n\n            <label htmlFor=\"shortVersionTitleInHebrew\" className=\"\">Short Hebrew Version Title</label>\n            <input id=\"shortVersionTitleInHebrew\" name=\"shortVersionTitleInHebrew\" className=\"\" type=\"text\" value={this.state.shortVersionTitleInHebrew} onChange={this.handleInputChange} />\n\n            <label htmlFor=\"versionSource\">Version Source</label>\n            <input id=\"versionSource\" name=\"versionSource\" className=\"\" type=\"text\" value={this.state.versionSource} onChange={this.handleInputChange} />\n\n            <label id=\"license_label\" htmlFor=\"license\">License</label>\n            <select id=\"license\" name=\"license\" className=\"\"  value={this.state.license} onChange={this.handleInputChange}>\n              {licenses.map(v => <option key={v} value={v}>{v?v:\"(None Listed)\"}</option>)}\n            </select>\n\n            <label id=\"digitzedBySefaria_label\" htmlFor=\"digitzedBySefaria\">Digitized by Sefaria</label>\n            <input type=\"checkbox\" id=\"digitzedBySefaria\" name=\"digitizedBySefaria\" checked={this.state.digitizedBySefaria} onChange={this.handleInputChange}/>\n\n            <label id=\"priority_label\" htmlFor=\"priority\">Priority</label>\n            <input id=\"priority\" name=\"priority\" className=\"\" type=\"text\" value={this.state.priority} onChange={this.handleInputChange} />\n\n            <label id=\"locked_label\" htmlFor=\"locked\">Locked</label>\n            <input type=\"checkbox\" id=\"locked\" name=\"status\" checked={this.state.status == \"locked\"} onChange={this.handleInputChange}/>\n\n            <label id=\"versionNotes_label\" htmlFor=\"versionNotes\">VersionNotes</label>\n            <textarea id=\"versionNotes\" name=\"versionNotes\" placeholder=\"Version Notes\" onChange={this.handleInputChange} value={this.state.versionNotes} rows=\"5\" cols=\"40\"/>\n\n            <label id=\"versionNotesInHebrew_label\" htmlFor=\"versionNotes_in_hebrew\">Hebrew VersionNotes</label>\n            <textarea id=\"versionNotesInHebrew\" name=\"versionNotesInHebrew\" placeholder=\"Hebrew Version Notes\" onChange={this.handleInputChange} value={this.state.versionNotesInHebrew} rows=\"5\" cols=\"40\"/>\n            <div>\n              <h3>Purchase Information</h3>\n              <label htmlFor=\"purchase_url\">Buy URL (Link to Store Item):</label>\n              <input id=\"purchase_url\" name=\"purchaseInformationURL\" className=\"\" type=\"text\" value={this.state.purchaseInformationURL}  onChange={this.handleInputChange} />\n              <label htmlFor=\"purchase_image\">Buy Image (Image to Display for Link)</label>\n              <input id=\"purchase_image\" name=\"purchaseInformationImage\" className=\"\" type=\"text\" value={this.state.purchaseInformationImage} onChange={this.handleInputChange} />\n            </div>\n            <div>\n              <div id=\"delete_button\" onClick={this.deleteVersion}>Delete Version</div>\n              <div id=\"save_button\" onClick={this.saveVersionUpdate}>SAVE</div>\n              <div className=\"clearFix\"></div>\n            </div>\n          </div>\n        </div>\n      );\n    }\n    else {\n      return (\n        <div className=\"versionBlock\">\n            <div className=\"versionBlockHeading\">\n              <div className=\"versionTitle\" role=\"heading\">\n                <VersionBlockHeader\n                  text={vtitle[\"text\"]}\n                  onClick={this.props.rendermode === 'book-page' ? openVersionInMainPanel : openVersionInSidebar}\n                  renderMode='versionTitle'\n                  link={VersionBlockUtils.makeVersionLink(this.props.currentRef, this.props.version,\n                      this.props.currObjectVersions, this.props.rendermode === 'book-page')}\n                 />\n              </div>\n              <i className={`fa fa-pencil versionEditIcon ${(Sefaria.is_moderator && this.props.rendermode == \"book-page\") ? \"enabled\" : \"\"}`} aria-hidden=\"true\" onClick={this.openEditor}/>\n              <div className=\"versionLanguage sans-serif\">{showLanguagLabel ? Sefaria._(Sefaria.translateISOLanguageCode(v.actualLanguage)) : \"\"}</div>\n            </div>\n            <div className=\"versionSelect sans-serif\">\n              <VersionBlockSelectButton\n                   isSelected={this.props.isCurrent}\n                   openVersionInMainPanel={openVersionInMainPanel}\n                   text={this.makeSelectVersionLanguage()}\n                   link={VersionBlockUtils.makeVersionLink(this.props.currentRef, this.props.version,\n                      this.props.currObjectVersions, true)}\n             />\n            </div>\n            <div className={classNames(VersionBlockUtils.makeAttrClassNames(v, {\"versionNotes\": 1, \"sans-serif\": (this.props.rendermode == \"book-page\")}, \"versionNotes\", true))}>\n              <span className=\"\" dangerouslySetInnerHTML={ {__html: vnotes} } />\n              <span className={`versionExtendedNotesLinks ${this.hasExtendedNotes() ? \"\": \"n-a\"}`}>\n                <a onClick={this.openExtendedNotes} href={`/${this.props.version.title}/${this.props.version.language}/${this.props.version.versionTitle}/notes`}>\n                  {Sefaria._(\"Read More\")}\n                </a>\n              </span>\n            </div>\n          { !v.merged ?\n            <div className=\"versionDetails sans-serif\">\n              <VersionInformation currentRef={this.props.currentRef} version={v}/>\n              <VersionImage version={v}/>\n            </div> : null\n          }\n        </div>\n      );\n    }\n  }\n}\nVersionBlock.propTypes = {\n  version:                PropTypes.object.isRequired,\n  currObjectVersions:     PropTypes.object.isRequired,\n  currentRef:             PropTypes.string,\n  firstSectionRef:        PropTypes.string,\n  showHistory:            PropTypes.bool,\n  showNotes:              PropTypes.bool,\n  openVersionInSidebar:   PropTypes.func,\n  openVersionInReader:    PropTypes.func,\n  isCurrent:              PropTypes.bool,\n  viewExtendedNotes:      PropTypes.func,\n  sidebarDisplay:         PropTypes.bool,\n  rendermode:             PropTypes.string,\n  inTranslationBox:          PropTypes.bool,\n};\nVersionBlock.defaultProps = {\n  showHistory: true,\n  showNotes: true,\n  sidebarDisplay: false\n};\n\nclass VersionsBlocksList extends Component{\n  constructor(props) {\n    super(props);\n    this.state = {\n      currentKeys: this.getCurrentVersionsKeys(this.props.currObjectVersions),\n    }\n  }\n  sortVersions(prioritize=null){\n    //sorts the languages of the available versions\n    const standard_langs = [\"en\", \"he\"];\n    //const activeLanguages = Object.values(this.props.currObjectVersions).map(({actualLanguage}) => actualLanguage);\n    return Object.keys(this.props.versionsByLanguages).sort(\n      (a, b) => {\n        if      (!!prioritize && a === prioritize)                {return -1;}\n        else if (!!prioritize && b === prioritize)                {return 1;}\n        /*else if (a in standard_langs && !(b in standard_langs))   {return -1;}\n        else if (b in standard_langs && !(a in standard_langs))   {return  1;}\n        else if (this.props.activeLanguages.includes(a))          {return -1;}\n        else if (this.props.activeLanguages.includes(b))          {return  1;}*/\n        else if (a < b)                                           {return -1;}\n        else if (b < a)                                           {return  1;}\n        else                                                      {return  0;}\n      }\n    );\n  }\n  componentDidMount() {\n    this.setState({currentKeys : this.getCurrentVersionsKeys(this.props.currObjectVersions)});\n  }\n  isVersionCurrent(version){\n    //make versions string key and check if that key is in the current keys array (hashing for morons)\n    const {actualLanguage, versionTitle} = version;\n    return this.state.currentKeys.includes(`${actualLanguage}|${versionTitle}`);\n  }\n  getCurrentVersionsKeys(currentVersions){\n    //make an array of strings that are keys of the current versions\n    return Object.values(currentVersions).map((v) => !!v ? `${v.actualLanguage}|${v.versionTitle}` : \"\");\n  }\n  render(){\n      const sortedLanguages = this.sortVersions(this.props.sortPrioritizeLanugage);\n      if (!this.props.versionsByLanguages) {\n        return (\n          <div className=\"versionsBox\">\n            <LoadingMessage />\n          </div>\n        );\n      }\n      return (\n        <div className=\"versionsBox\">\n          {\n            sortedLanguages.map((lang) => (\n              <div className=\"language-block\" key={lang}>\n                { this.props.showLanguageHeaders ?\n                  <div className=\"versionLanguage sans-serif\">\n                    {Sefaria._(Sefaria.translateISOLanguageCode(lang))}<span className=\"enInHe connectionsCount\">{` (${this.props.versionsByLanguages[lang].length})`}</span>\n                  </div>\n                    :\n                    null\n                }\n                {\n                  this.props.versionsByLanguages[lang].map((v) => (\n                        this.props.inTranslationBox ?\n                            <VersionBlockWithPreview\n                                currentRef={this.props.currentRef}\n                                version={v}\n                                currObjectVersions={this.props.currObjectVersions}\n                                openVersionInReader={this.props.openVersionInReader}\n                                openVersionInSidebar={this.props.openVersionInSidebar}\n                                isSelected={this.isVersionCurrent(v)}\n                                srefs={this.props.srefs}\n                                onRangeClick={this.props.onRangeClick}\n                            /> :\n                            <VersionBlock\n                                rendermode=\"versions-box\"\n                                sidebarDisplay={true}\n                                version={v}\n                                currObjectVersions={this.props.currObjectVersions}\n                                currentRef={this.props.currentRef}\n                                firstSectionRef={\"firstSectionRef\" in v ? v.firstSectionRef : null}\n                                key={`${this.isVersionCurrent(v) ? \"current\" : \"\"}|${v.versionTitle}|${v.actualLanguage}`}\n                                openVersionInReader={this.props.openVersionInReader}\n                                openVersionInSidebar={this.props.openVersionInSidebar}\n                                viewExtendedNotes={this.props.viewExtendedNotes}\n                                isCurrent={this.isVersionCurrent(v)}\n                                inTranslationBox={this.props.inTranslationBox}\n                                showNotes={this.props.showNotes}\n                            />\n                      ))\n                }\n              </div>\n            ))\n          }\n        </div>\n      );\n    }\n}\nVersionsBlocksList.propTypes={\n  versionsByLanguages: PropTypes.object.isRequired,\n  currObjectVersions: PropTypes.object,\n  displayCurrentVersions: PropTypes.bool,\n  sortPrioritizeLanugage: PropTypes.string,\n  currentRef: PropTypes.string,\n  openVersionInReader: PropTypes.func,\n  openVersionInSidebar: PropTypes.func,\n  viewExtendedNotes: PropTypes.func,\n  showLanguageHeaders: PropTypes.bool,\n  inTranslationBox: PropTypes.bool,\n  showNotes: PropTypes.bool,\n  srefs: PropTypes.array,\n  onRangeClick: PropTypes.func,\n};\nVersionsBlocksList.defaultProps = {\n  displayCurrentVersions: true,\n  showLanguageHeaders: true,\n};\n\n\n\nexport {VersionBlock as default, VersionsBlocksList, VersionBlockUtils};\n","import {\n  LoadingMessage,\n} from './Misc';\n\nimport React  from 'react';\nimport PropTypes  from 'prop-types';\nimport Component   from 'react-class';\nimport Sefaria from \"./sefaria/sefaria\";\n\nclass ExtendedNotes extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {'notesLanguage': Sefaria.interfaceLang, 'extendedNotes': '', 'langToggle': false};\n  }\n  getVersionData(versionList){\n    const versionTitle = this.props.currVersions['en'] ? this.props.currVersions['en'] : this.props.currVersions['he'];\n    const thisVersion = versionList.filter(x=>x.versionTitle===versionTitle)[0];\n    let extendedNotes = {'english': thisVersion.extendedNotes, 'hebrew': thisVersion.extendedNotesHebrew};\n\n    if (extendedNotes.english && extendedNotes.hebrew){\n      this.setState({'extendedNotes': extendedNotes, 'langToggle': true});\n    }\n    else if (extendedNotes.english && !extendedNotes.hebrew) {\n      this.setState({'extendedNotes': extendedNotes, 'notesLanguage': 'english'});\n    }\n    else if (extendedNotes.hebrew && !extendedNotes.english) {\n      this.setState({'extendedNotes': extendedNotes, 'notesLanguage': 'hebrew'});\n    }\n    else{\n      this.props.backFromExtendedNotes();\n    }\n  }\n  componentDidMount() {\n    // use Sefaria.getVersions(ref, cb), where cb will invoke setState\n    Sefaria.getVersions(this.props.title).then(versions => {\n      this.getVersionData(Object.values(versions).flat());\n    });\n  }\n  goBack(event) {\n    event.preventDefault();\n    this.props.backFromExtendedNotes();\n  }\n  changeLanguage(event) {\n    event.preventDefault();\n    if (this.state.notesLanguage==='english') {\n      this.setState({'notesLanguage': 'hebrew'});\n    }\n    else {\n      this.setState({'notesLanguage': 'english'});\n    }\n  }\n  render() {\n    let notes = '';\n    if (this.state.extendedNotes) {\n      notes = this.state.extendedNotes[this.state.notesLanguage];\n      if (this.state.notesLanguage==='hebrew' && !notes){\n        notes = 'לא קיימים רשימות מורחבות בשפה העברית עבור גרסה זו';\n      }\n      else if (this.state.notesLanguage==='english' && !notes){\n        notes = 'Extended notes in English do not exist for this version';\n      }\n    }\n      return <div className=\"extendedNotes\">\n        {this.props.backFromExtendedNotes ?<a onClick={this.goBack} href={`${this.props.title}`}>\n          {Sefaria.interfaceLang===\"hebrew\" ? \"חזור\" : \"Back\"}\n        </a> : \"\"}\n        {this.state.extendedNotes\n          ? <div className=\"extendedNotesText\" dangerouslySetInnerHTML={ {__html: notes} }></div>\n        : <LoadingMessage/>}\n        {this.state.langToggle ? <a onClick={this.changeLanguage} href={`${this.props.title}`}>\n          {this.state.notesLanguage==='english' ? 'עברית' : 'English'}\n        </a> : ''}\n      </div>\n  }\n}\n\nExtendedNotes.PropTypes = {\n  currVersions:          PropTypes.object.isRequired,\n  title:                 PropTypes.string.isRequired,\n  backFromExtendedNotes: PropTypes.func,\n\n};\n\nexport default ExtendedNotes;\n","import {\n  CloseButton,\n  MenuButton,\n  DisplaySettingsButton,\n  CategoryAttribution,\n  CategoryColorLine,\n  LoadingMessage,\n  TabView,\n  InterfaceText,\n  EnglishText, HebrewText, LanguageToggleButton,\n  AdminToolHeader,\n  CategoryChooser,\n  TitleVariants,\n  CategoryHeader, requestWithCallBack\n} from './Misc';\nimport {ContentText} from \"./ContentText\";\nimport {validateMarkdownLinks} from \"./AdminEditor\";\nimport React, { useState, useRef }  from 'react';\nimport ReactDOM  from 'react-dom';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport { NavSidebar, Modules } from './NavSidebar';\nimport DictionarySearch  from './DictionarySearch';\nimport VersionBlock  from './VersionBlock/VersionBlock';\nimport ExtendedNotes from './ExtendedNotes';\nimport Footer  from './Footer';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport Component   from 'react-class';\nimport {ContentLanguageContext} from './context';\nimport Hebrew from './sefaria/hebrew.js';\n\nimport ReactTags from 'react-tag-autocomplete';\n\n\n\n\n\nclass BookPage extends Component {\n  // Menu for the Table of Contents for a single text\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      versions: [],\n      versionsLoaded: false,\n      currentVersion: null,\n      currObjectVersions: {en: null, he: null},\n      indexDetails: Sefaria.getIndexDetailsFromCache(props.title),\n      dlVersionTitle: null,\n      dlVersionLanguage: null,\n      dlVersionFormat: null,\n      dlReady: false\n    };\n  }\n  componentDidMount() {\n    this.loadData();\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if ((this.props.settingsLanguage != prevProps.settingsLanguage)) {\n      this.forceUpdate();\n    }\n  }\n  getDataRef() {\n    // Returns ref to be used to looking up data\n    return Sefaria.sectionRef(this.props.currentRef) || this.props.currentRef;\n  }\n  getData() {\n    // Gets data about this text from cache, which may be null.\n    return Sefaria.text(this.getDataRef(), {context: 1, enVersion: this.props.currVersions.en, heVersion: this.props.currVersions.he});\n  }\n  loadData() {\n    // Ensures data this text is in cache, rerenders after data load if needed\n    Sefaria.getIndexDetails(this.props.title).then(data => this.setState({indexDetails: data}));\n\n    if (this.isBookToc() && !this.props.compare) {\n      if(!this.state.versionsLoaded){\n        Sefaria.getVersions(this.props.title).then(result => {\n          this.onVersionsLoad(Object.values(result).flat());\n        })\n      }\n    }\n  }\n  onVersionsLoad(versions){\n    this.setState({versions: versions, currObjectVersions: this.makeFullCurrentVersionsObjects(versions), versionsLoaded: true})\n  }\n  makeFullCurrentVersionsObjects(versions){\n    //build full versions of current object versions\n    let currObjectVersions = {en: null, he: null};\n    for(let [lang,ver] of Object.entries(this.props.currVersions)){\n      if(!!ver){\n        let fullVer = versions.find(version => version.versionTitle == ver && version.language == lang);\n        currObjectVersions[lang] = fullVer ? fullVer : null;\n      }\n    }\n    return currObjectVersions;\n  }\n  getCurrentVersion() {\n    // For now treat bilingual as english. TODO show attribution for 2 versions in bilingual case.\n    if (this.isBookToc()) { return null; }\n    let d = this.getData();\n    if (!d) { return null; }\n    let currentLanguage = this.props.settingsLanguage == \"he\" ? \"he\" : \"en\";\n    if (currentLanguage == \"en\" && !d.text.length) {currentLanguage = \"he\"}\n    if (currentLanguage == \"he\" && !d.he.length) {currentLanguage = \"en\"}\n    let currObjectVersions;\n    if(this.state.versions.length){\n      currObjectVersions = this.state.currObjectVersions;\n    }else{\n      currObjectVersions = this.makeFullCurrentVersionsObjects(d.versions);\n    }\n    let currentVersion = {\n      ... currObjectVersions[currentLanguage],\n      ...{\n        language:               currentLanguage,\n        versionTitle:           currentLanguage == \"he\" ? d.heVersionTitle : d.versionTitle,\n        versionSource:          currentLanguage == \"he\" ? d.heVersionSource : d.versionSource,\n        versionStatus:          currentLanguage == \"he\" ? d.heVersionStatus : d.versionStatus,\n        license:                currentLanguage == \"he\" ? d.heLicense : d.license,\n        sources:                currentLanguage == \"he\" ? d.heSources : d.sources,\n        versionNotes:           currentLanguage == \"he\" ? d.heVersionNotes : d.versionNotes,\n        digitizedBySefaria:     currentLanguage == \"he\" ? d.heDigitizedBySefaria : d.digitizedBySefaria,\n        versionTitleInHebrew: currentLanguage == \"he\" ? d.heVersionTitleInHebrew : d.VersionTitleInHebrew,\n        shortVersionTitle:    currentLanguage == \"he\" ? d.heShortVersionTitle : d.shortVersionTitle,\n        shortVersionTitleInHebrew: currentLanguage == \"he\" ? d.heShortVersionTitleInHebrew : d.shortVersionTitleInHebrew,\n        versionNotesInHebrew: currentLanguage == \"he\" ? d.heVersionNotesInHebrew : d.VersionNotesInHebrew,\n        extendedNotes:        currentLanguage == \"he\" ? d.heExtendedNotes : d.extendedNotes,\n        extendedNotesHebrew:  currentLanguage == \"he\" ? d.extendedNotesHebrew : d.heExtendedNotesHebrew,\n      }\n    };\n    currentVersion.merged = !!(currentVersion.sources);\n    return currentVersion;\n  }\n  openVersion(version, language) {\n    // Selects a version and closes this menu to show it.\n    // Calling this functon wihtout parameters resets to default\n    this.props.selectVersion(version, language);\n    this.props.close();\n  }\n  isBookToc() {\n    return (this.props.mode == \"book toc\")\n  }\n  isTextToc() {\n    return (this.props.mode == \"text toc\")\n  }\n  extendedNotesBack(event){\n    return null;\n  }\n  render() {\n    const title     = this.props.title;\n    const index     = Sefaria.index(title);\n    const heTitle   = index ? index.heTitle : title;\n    const category  = this.props.category;\n    const isDictionary = this.state.indexDetails && !!this.state.indexDetails.lexiconName;\n    const categories = Sefaria.index(this.props.title).categories;\n    let currObjectVersions = this.state.currObjectVersions;\n    let catUrl;\n    if (category == \"Commentary\") {\n      const baseCategory = index.categories[0];\n      const commCategory = index.categories.find(x => x === \"Commentary\" || x.includes(` on ${baseCategory}`)); //this finds commentary categories in Mishnah, Talmud and Tanakh such as \"Rishonim on Tanakh\"\n      const urlCategories = index.categories.slice(0, index.categories.indexOf(commCategory || baseCategory) + 1);\n      catUrl = `/texts/${urlCategories.join(\"/\")}`\n    } else if (category == \"Targum\" || category == \"Guides\") {\n      catUrl  = \"/texts/\" + index.categories.slice(0, index.categories.indexOf(category) + 1).join(\"/\");\n    } else if (category == \"Talmud\") {\n      catUrl  = \"/texts/\" + index.categories.slice(0, index.categories.indexOf(\"Talmud\") + 2).join(\"/\");\n    } else {\n      catUrl  = \"/texts/\" + category;\n    }\n\n    const readButton = !this.state.indexDetails || this.isTextToc() || this.props.compare ? null :\n      Sefaria.lastPlaceForText(title) ?\n        <a className=\"button small readButton\" href={\"/\" + Sefaria.normRef(Sefaria.lastPlaceForText(title).ref)}>\n          <InterfaceText>Continue Reading</InterfaceText>\n        </a>\n        :\n        <a className=\"button small readButton\" href={\"/\" + Sefaria.normRef(this.state.indexDetails[\"firstSectionRef\"])}>\n          <InterfaceText>Start Reading</InterfaceText>\n        </a>\n\n    const tabs = [{id: \"contents\", title: {en: \"Contents\", he: Sefaria._(\"Contents\")}}];\n    if (this.isBookToc()){\n      tabs.push({id: \"versions\", title: {en: \"Versions\", he: Sefaria._(\"Versions\")}});\n    }\n    const renderTab = t => (\n      <div className={classNames({tab: 1, noselect: 1})}>\n        <InterfaceText text={t.title} />\n        { t.icon ? <img src={t.icon} alt={`${t.title.en} icon`} /> : null }\n      </div>\n    );\n\n    const sidebarModules = !this.state.indexDetails ? [] :\n      [\n        this.props.multiPanel ? {type: \"AboutText\", props: {index: this.state.indexDetails}} : {type: null},\n        {type: \"Promo\"},\n        {type: \"RelatedTopics\", props: { title: this.props.title}},\n        !isDictionary ? {type: \"DownloadVersions\", props:{sref: this.props.title}} : {type: null},\n      ];\n\n    const classes = classNames({\n      bookPage: 1,\n      readerNavMenu: 1,\n      fullBookPage: this.isBookToc(),\n      narrowPanel: this.props.narrowPanel,\n      compare: this.props.compare,\n      noLangToggleInHebrew: Sefaria.interfaceLang === 'hebrew'\n    });\n\n    return (\n      <div className={classes}>\n        <CategoryColorLine category={category} />\n        {this.isTextToc() || this.props.compare ?\n        <>\n          <div className=\"readerControls\">\n            <div className=\"readerControlsInner\">\n              <div className=\"leftButtons\">\n                {this.props.compare ?\n                <MenuButton onClick={this.props.onCompareBack} compare={true} />\n                : <CloseButton onClick={this.props.close} />}\n              </div>\n              <div className=\"readerTextToc readerTextTocHeader\">\n                {this.props.compare ?\n                <div className=\"readerTextTocBox\">\n                  <InterfaceText>{title}</InterfaceText>\n                </div>\n                :\n                <div className=\"readerTextTocBox sans-serif\">\n                  <InterfaceText>Table of Contents</InterfaceText>\n                </div>}\n              </div>\n              <div className=\"rightButtons\">\n                {Sefaria.interfaceLang !== \"hebrew\" ?\n                  <DisplaySettingsButton onClick={this.props.openDisplaySettings} />\n                  : <DisplaySettingsButton placeholder={true} />}\n              </div>\n            </div>\n          </div>\n        </> : null}\n\n        <div className=\"content\">\n          <div className=\"sidebarLayout\">\n            <div className=\"contentInner followsContentLang\">\n              {this.props.compare ? null :\n              <div className=\"tocTop\">\n                <div className=\"tocTitle\" role=\"heading\" aria-level=\"1\">\n                  <div className=\"tocTitleControls\">\n                    <CategoryHeader type=\"books\" buttonsToDisplay={[\"section\", \"edit\"]}\n                                    data={title}><ContentText text={{en:title, he:heTitle}}/></CategoryHeader>\n                  </div>\n                  { this.props.multiPanel && this.props.toggleLanguage && Sefaria.interfaceLang !== \"hebrew\" && Sefaria._siteSettings.TORAH_SPECIFIC ?\n                  <LanguageToggleButton toggleLanguage={this.props.toggleLanguage} /> : null }\n                </div>\n\n                <a className=\"tocCategory\" href={catUrl}>\n                  <ContentText text={{en:category, he:Sefaria.hebrewTerm(category)}}/>\n                </a>\n\n                <CategoryAttribution categories={categories} asEdition={true} />\n\n                {this.state.indexDetails && this.state.indexDetails.dedication ?\n                  <div className=\"dedication\">\n                    <span>\n                      <ContentText html={{en:this.state.indexDetails.dedication.en, he:this.state.indexDetails.dedication.he}}/>\n                    </span>\n                  </div> : null }\n              </div>}\n\n              {this.state.indexDetails ?\n              <div>\n                {readButton}\n\n                {this.props.multiPanel ? null :\n                <div className=\"about\">\n                  <Modules type={\"AboutText\"} props={{index: this.state.indexDetails, hideTitle: true}} />\n                </div>}\n\n                 <TabView\n                  tabs={tabs}\n                  currTabName={this.props.tab}\n                  setTab={this.props.setTab}\n                  renderTab={renderTab}\n                  containerClasses={\"largeTabs\"}>\n                   <TextTableOfContents\n                        narrowPanel={this.props.narrowPanel}\n                        title={this.props.title}\n                        close={this.props.close}\n                        showBaseText={this.props.showBaseText}\n                        currVersions={this.props.currVersions}\n                   />\n                   <VersionsList\n                     currObjectVersions={currObjectVersions}\n                     openVersionInReader={this.openVersion}\n                     currentRef={this.props.currentRef}\n                     viewExtendedNotes={this.props.viewExtendedNotes}\n                   />\n                 </TabView>\n\n\n              </div>\n                  :\n              <LoadingMessage />\n              }\n            </div>\n            {this.isBookToc() && ! this.props.compare ? \n            <NavSidebar modules={sidebarModules} /> : null}\n          </div>\n          {this.isBookToc() && ! this.props.compare ?\n          <Footer /> : null}\n        </div>\n      </div>\n    );\n  }\n}\nBookPage.propTypes = {\n  mode:                  PropTypes.string.isRequired,\n  title:                 PropTypes.string.isRequired,\n  category:              PropTypes.string.isRequired,\n  currentRef:            PropTypes.string.isRequired,\n  settingsLanguage:      PropTypes.string.isRequired,\n  currVersions:          PropTypes.object.isRequired,\n  compare:               PropTypes.bool,\n  narrowPanel:           PropTypes.bool,\n  close:                 PropTypes.func.isRequired,\n  showBaseText:          PropTypes.func.isRequired,\n  selectVersion:         PropTypes.func,\n  viewExtendedNotes:     PropTypes.func,\n  onCompareBack:         PropTypes.func,\n  backFromExtendedNotes: PropTypes.func,\n  extendedNotes:         PropTypes.string,\n  extendedNotesHebrew:   PropTypes.string\n};\n\n\nclass TextTableOfContents extends Component {\n  // The content section of the text table of contents that includes links to text sections,\n  // and tabs for alternate structures and commentary.\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      tab: \"schema\",\n      indexDetails: Sefaria.getIndexDetailsFromCache(props.title)\n    };\n  }\n  componentDidMount() {\n    this.loadData();\n    this.scrollToCurrent();\n  }\n  loadData(){\n    // Ensures data this text is in cache, rerenders after data load if needed\n    Sefaria.getIndexDetails(this.props.title).then((data) => {\n      this.setState({\n        indexDetails: data,\n        tab: this.getDefaultActiveTab(data)\n       });\n      this.scrollToCurrent();\n    });\n  }\n  annotateTorahAltDisplayProperties(altStructSchema){\n    for (const node of altStructSchema.nodes) {\n      node[\"displayFixedTitleSubSections\"] = true;\n    }\n  }\n  scrollToCurrent(){\n    const curr = document.querySelector(\".current\");\n    if(curr){\n      Sefaria.util.scrollIntoViewIfNeeded(curr, {block: \"center\"});\n    }\n  }\n  getDefaultActiveTab(indexDetails){\n    return (\"default_struct\" in indexDetails && indexDetails.default_struct in indexDetails?.alts) ? indexDetails.default_struct : \"schema\";\n  }\n  setTab(tab) {\n    this.setState({tab: tab});\n  }\n  handleClick(e) {\n    const $a = $(e.target).closest(\"a\");\n    if ($a.length && ($a.hasClass(\"sectionLink\") || $a.hasClass(\"linked\"))) {\n      let ref = $a.attr(\"data-ref\");\n      ref = decodeURIComponent(ref);\n      ref = Sefaria.humanRef(ref);\n      if(this.props?.close){\n        this.props.close();\n      }\n      this.props.navigatePanel ? this.props.navigatePanel(ref, this.props.currVersions) : this.props.showBaseText(ref, false, this.props.currVersions);\n      e.preventDefault();\n    }\n  }\n  render() {\n    if(this.state.indexDetails == null){\n      return (<LoadingMessage />);\n    }\n    const isTorah = [\"Genesis\", \"Exodus\", \"Leviticus\", \"Numbers\", \"Deuteronomy\"].indexOf(this.props.title) > -1;\n    const isDictionary = this.state.indexDetails?.lexiconName;\n    const defaultStruct = this.getDefaultActiveTab(this.state.indexDetails);\n    const excludedStructs = this.state.indexDetails?.exclude_structs || [];\n    const alts = this.state.indexDetails?.alts || {};\n    if(isTorah){\n      //add a dummy prop (maybe later add to actual db) to indicate the special display case for this alt struct. \n      // Showing both linked title and subsections\n      this.annotateTorahAltDisplayProperties(alts[\"Parasha\"])\n    }\n    let structTabOptions = [];\n    if(!excludedStructs.includes(\"schema\")){\n      structTabOptions.push({\n        name: \"schema\",\n        text: \"sectionNames\" in this.state.indexDetails?.schema ? this.state.indexDetails.schema.sectionNames[0] : \"Contents\",\n        onPress: this.setTab.bind(null, \"schema\")\n      })\n    }\n    for (let alt in alts) {\n      if (alts.hasOwnProperty(alt) && !excludedStructs.includes(alt)) {\n        structTabOptions.push({\n          name: alt,\n          text: alt,\n          onPress: this.setTab.bind(null, alt)\n        });\n      }\n    }\n    structTabOptions = structTabOptions.sort(function(a, b) {\n      return a.name == defaultStruct ? -1 :\n              b.name == defaultStruct ? 1 : 0;\n    }.bind(this));\n    const showToggle = !(isDictionary || isTorah) && structTabOptions.length > 1;\n    const toggleNames = showToggle ? structTabOptions.map(x => x.text) : [];\n    const toggle = (showToggle ?\n                  <TabbedToggleSet\n                    tabOptions={structTabOptions}\n                    activeTab={this.state.tab}\n                    narrowPanel={this.props.narrowPanel} /> : null);\n    \n   const dictionarySearch = (isDictionary ?\n              <DictionarySearch\n              lexiconName={this.state.indexDetails.lexiconName}\n              title={this.props.title}\n              showBaseText={this.props.showBaseText}\n              navigatePanel={this.props.navigatePanel}\n              contextSelector=\".textTableOfContents\"\n              currVersions={this.props.currVersions}/> : null);\n    let content;\n    switch(this.state.tab) {\n      case \"schema\":\n        if (isTorah) {\n          content = (\n            <>\n              <SchemaNode\n                schema={this.state.indexDetails.schema}\n                topToggleTitles={toggleNames}\n                addressTypes={this.state.indexDetails.schema.addressTypes}\n                refPath={this.props.title}\n                topLevel={true}\n                topLevelHeader={\"Chapters\"}\n                currentlyVisibleRef={this.props.currentlyVisibleRef}\n                currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}\n              />\n              <div className=\"torahNavParshiot\">\n                <SchemaNode\n                  schema={alts[\"Parasha\"]}\n                  addressTypes={alts[\"Parasha\"][\"nodes\"][0][\"addressTypes\"]}\n                  refPath={this.props.title}\n                  topLevel={true}\n                  topLevelHeader={\"Torah Portions\"}\n                  disableSubCollapse={true}\n                  currentlyVisibleRef={this.props.currentlyVisibleRef}\n                  currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}\n                />\n              </div>\n            </>\n          );\n        } else {\n          content = <SchemaNode\n                      schema={this.state.indexDetails.schema}\n                      topToggleTitles={toggleNames}\n                      addressTypes={this.state.indexDetails.schema.addressTypes}\n                      refPath={this.props.title}\n                      topLevel={true}\n                      currentlyVisibleRef={this.props.currentlyVisibleRef}\n                      currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}\n\n          />;\n        }\n        break;\n      default:\n        content = <SchemaNode\n                    schema={alts[this.state.tab]}\n                    addressTypes={this.state.indexDetails.schema.addressTypes}\n                    refPath={this.props.title}\n                    topLevel={true}\n                    currentlyVisibleRef={this.props.currentlyVisibleRef}\n                    currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}\n                    />;\n        break;\n    }\n\n    return (\n        <div onClick={this.handleClick}>\n          <div className=\"textTableOfContents\">\n            <div className=\"tocTools\">\n              {toggle}\n              {dictionarySearch}\n            </div>\n            <div className=\"tocContent\">\n              {content}\n            </div>\n          </div>\n        </div>\n    );\n  }\n}\nTextTableOfContents.propTypes = {\n    title:           PropTypes.string.isRequired,\n    narrowPanel:     PropTypes.bool,\n    close:           PropTypes.func,\n    showBaseText:    PropTypes.func,\n    currVersions:    PropTypes.object\n};\n\n\nconst TabbedToggleSet = ({tabOptions, activeTab, narrowPanel}) => {\n  let options = tabOptions.map(function(option, i) {\n    const handleClick = function(e) {\n      e.preventDefault();\n      option.onPress();\n    }.bind(this);\n\n    let classes = classNames({altStructToggle: 1, \"sans-serif\": 1, active: activeTab === option.name});\n    const url = Sefaria.util.replaceUrlParam(\"tab\", option.name);\n    return (\n      <div className=\"altStructToggleBox\" key={i}>\n        <a className={classes} onClick={handleClick} href={url}>\n            <InterfaceText>{option.text}</InterfaceText>\n        </a>\n      </div>\n    );\n    }.bind(this));\n\n    let rows = [];\n    if (narrowPanel) {\n      const rowSize = options.length == 4 ? 2 : 3;\n      for (let i = 0; i < options.length; i += rowSize) {\n        rows.push(options.slice(i, i+rowSize));\n      }\n    } else {\n      rows = [options];\n    }\n\n    return (\n        <div className=\"structToggles\">\n            {rows.map(function(row, i) {\n              return (<div className=\"structTogglesInner\" key={i}>{row}</div>);\n            })}\n        </div>\n    );\n\n}\nTabbedToggleSet.propTypes = {\n  tabOptions:     PropTypes.array.isRequired, // array of object with `name`. `text`, `heText`, `onPress`\n  activeTab:      PropTypes.string.isRequired,\n  narrowPanel: PropTypes.bool\n};\n\n\nclass SchemaNode extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      // Collapse nodes below top level, and those that aren't default or makred includedSections\n      collapsed: \"nodes\" in props.schema && !(props.topLevel || props.disableSubCollapse) ? props.schema.nodes.map(node => !(node.default || node.includeSections)) : []\n    };\n  }\n  toggleCollapse(i) {\n    if(this.props.disableSubCollapse) return;\n    \n    this.state.collapsed[i] = !this.state.collapsed[i];\n    this.setState({collapsed: this.state.collapsed});\n  }\n  render() {\n    if (!(\"nodes\" in this.props.schema)) {\n      if (this.props.schema.nodeType === \"JaggedArrayNode\") {\n        return (\n          <JaggedArrayNode\n            schema={this.props.schema}\n            topToggleTitles={this.props.topToggleTitles}\n            refPath={this.props.refPath}\n            topLevel={this.props.topLevel}\n            topLevelHeader={this.props.topLevelHeader}\n            currentlyVisibleRef={this.props.currentlyVisibleRef}\n            currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}\n          />\n        );\n      } else if (this.props.schema.nodeType === \"ArrayMapNode\") {\n        return (\n          <ArrayMapNode schema={this.props.schema} currentlyVisibleRef={this.props.currentlyVisibleRef} currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef} />\n        );\n      } else if (this.props.schema.nodeType === \"DictionaryNode\") {\n        return (\n          <DictionaryNode\n              schema={this.props.schema}\n              currentlyVisibleRef={this.props.currentlyVisibleRef} \n              currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}\n          />\n        );\n      }\n\n    } else { //we do have subcontent\n      let content = this.props.schema.nodes.map(function(node, i) {\n        let path;\n        if (node.nodeType == \"ArrayMapNode\") {\n          //ArrayMapNode content\n          path = this.props.refPath + \", \" + node.title;\n          return <ArrayMapNode schema={node} currentlyVisibleRef={this.props.currentlyVisibleRef}  currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef} key={path}/>;\n        } else if (\"nodes\" in node) {\n          // SchemaNode with children (nodes)\n          path = this.props.refPath + \", \" + node.title;\n          return (\n            <div className=\"schema-node-toc\" data-ref={path} key={path}>\n              <span className={`schema-node-title ${this.state.collapsed[i] ? \"collapsed\" : \"open\"} ${this.props.disableSubCollapse ? \"fixed\" : \"\"}`}\n                    onClick={()=> {this.toggleCollapse(i)}}\n                    onKeyPress={(e) => {e.charCode == 13 ? this.toggleCollapse(i):null}}\n                    role=\"heading\"\n                    aria-level=\"3\"\n                    aria-hidden=\"true\" tabIndex={0}>\n                <ContentText text={{en: node.title, he: node.heTitle}} />\n              </span>\n              {!this.state.collapsed[i] ?\n              <div className=\"schema-node-contents\">\n                <SchemaNode\n                  schema={node}\n                  refPath={this.props.refPath + \", \" + node.title}\n                  topToggleTitles={this.props.topToggleTitles}\n                  currentlyVisibleRef={this.props.currentlyVisibleRef}\n                  currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}/>\n              </div>\n              : null }\n            </div>);\n        } else if (node.nodeType == \"DictionaryNode\") {\n          return <DictionaryNode \n              schema={node} \n              currentlyVisibleRef={this.props.currentlyVisibleRef} \n              currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef} \n              key={i}\n          />;\n        } else if (node.depth == 1 && !node.default) {\n          // SchemaNode title that points straight to content\n          //we check if this happens to be where the reader is currently at\n          path = this.props.refPath + \", \" + node.title;\n          let currentPlace = path == this.props?.currentlyVisibleSectionRef;\n          const linkClasses = classNames({\"schema-node-toc\": 1, \"linked\": 1, \"current\": currentPlace})\n          return (\n            <a className={linkClasses} href={\"/\" + Sefaria.normRef(path)} data-ref={path} key={i}>\n              <span className=\"schema-node-title\" role=\"heading\" aria-level=\"3\">\n                <ContentText text={{en:node.title , he:node.heTitle }}/>\n              </span>\n            </a>);\n        } else {\n          // SchemaNode that has a JaggedArray below it\n          return (\n            <div className=\"schema-node-toc janode\" key={i}>\n              { !node.default ?\n              <span className={`schema-node-title ${this.state.collapsed[i] ? \"collapsed\" : \"open\"}`}\n                    role=\"heading\" aria-level=\"3\" tabIndex={0}\n                    onClick={this.toggleCollapse.bind(null, i)}\n                    onKeyPress={function(e) {e.charCode == 13 ? this.toggleCollapse(i):null}.bind(this)} >\n                <ContentText text={{en: node.title, he: node.heTitle}} />\n              </span>\n              : null }\n              { !this.state.collapsed[i] ?\n              <div className=\"schema-node-contents\">\n                <JaggedArrayNode\n                  schema={node}\n                  topToggleTitles={this.props.topToggleTitles}\n                  contentLang={this.props.contentLang}\n                  refPath={this.props.refPath + (node.default ? \"\" : \", \" + node.title)}\n                  currentlyVisibleRef={this.props.currentlyVisibleRef}\n                  currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}\n                />\n              </div>\n              : null }\n            </div>);\n        }\n      }.bind(this));\n      let topLevelHeader = this.props.topLevel && this.props.topLevelHeader ? (\n        <div className=\"specialNavSectionHeader\">\n          <ContentText text={{\n            en: this.props.topLevelHeader,\n            he: Sefaria.hebrewTranslation(this.props.topLevelHeader)\n          }}/>\n        </div>\n      ) : null;\n      return (\n          <>\n            {topLevelHeader}\n            <div className=\"tocLevel\">{content}</div>\n          </>\n\n      );\n    }\n  }\n}\nSchemaNode.propTypes = {\n  schema:      PropTypes.object.isRequired,\n  refPath:     PropTypes.string.isRequired\n};\n\n\nclass JaggedArrayNode extends Component {\n  render() {\n    const offset = this.props.schema?.index_offsets_by_depth?.['1'] || 0;\n    if (\"toc_zoom\" in this.props.schema) {\n      let zoom = this.props.schema.toc_zoom - 1;\n      return (<JaggedArrayNodeSection\n                depth={this.props.schema.depth - zoom}\n                sectionNames={this.props.schema.sectionNames.slice(0, -zoom)}\n                addressTypes={this.props.schema.addressTypes.slice(0, -zoom)}\n                contentCounts={this.props.schema.content_counts}\n                refPath={this.props.refPath}\n                currentlyVisibleRef={this.props.currentlyVisibleRef}\n                currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}\n                offset={offset}\n              />);\n    }\n    const specialHeaderText = this.props.topLevelHeader || this.props.schema?.sectionNames[0] || \"Chapters\";\n    let topLevelHeader = !this.props.topToggleTitles.includes(specialHeaderText) && (this.props.topLevel && (this.props.schema?.depth <= 2 || this.props.topLevelHeader)) ? (\n        <div className=\"specialNavSectionHeader\">\n          <ContentText text={{\n            en: specialHeaderText,\n            he: Sefaria.hebrewTranslation(specialHeaderText)\n          }}/>\n        </div>\n    ) : null;\n    return (\n        <>\n          {topLevelHeader}\n          <JaggedArrayNodeSection\n                depth={this.props.schema.depth}\n                sectionNames={this.props.schema.sectionNames}\n                addressTypes={this.props.schema.addressTypes}\n                contentCounts={this.props.schema.content_counts}\n                refPath={this.props.refPath}\n                currentlyVisibleRef={this.props.currentlyVisibleRef}\n                currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}\n                offset={offset}\n          />\n        </>\n    );\n  }\n}\nJaggedArrayNode.propTypes = {\n  schema:      PropTypes.object.isRequired,\n  refPath:     PropTypes.string.isRequired,\n  topToggleTitles: PropTypes.array\n};\n\n\nclass JaggedArrayNodeSection extends Component {\n  contentCountIsEmpty(count) {\n    // Returns true if count is zero or is an an array (of arrays) of zeros.\n    if (typeof count == \"number\") { return count == 0; }\n    let innerCounts = count.map(this.contentCountIsEmpty);\n    return innerCounts.unique().compare([true]);\n  }\n  refPathTerminal(count) {\n    // Returns a string to be added to the end of a section link depending on a content count\n    // Used in cases of \"zoomed\" JaggedArrays, where `contentCounts` is deeper than `depth` so that zoomed section\n    // links still point to section level.\n    if (typeof count == \"number\") { return \"\"; }\n    let terminal = \":\";\n    for (let i = 0; i < count.length; i++) {\n      if (count[i]) {\n        terminal += (i+1) + this.refPathTerminal(count[i]);\n        break;\n      }\n    }\n    return terminal;\n  }\n  render() {\n    if (this.props.depth > 2) {\n      let content = [];\n      for (let i = 0; i < this.props.contentCounts.length; i++) {\n        if (this.contentCountIsEmpty(this.props.contentCounts[i])) { continue; }\n        let [enSection, heSection] = Sefaria.getSectionStringByAddressType(this.props.addressTypes[0], i);\n        content.push(\n          <div className=\"tocSection\" key={i}>\n            <div className=\"sectionName\">\n              <ContentText text={{ en:this.props.sectionNames[0] + \" \" + enSection , he: Sefaria.hebrewTerm(this.props.sectionNames[0]) + \" \" +heSection}}/>\n            </div>\n            <JaggedArrayNodeSection\n              depth={this.props.depth - 1}\n              sectionNames={this.props.sectionNames.slice(1)}\n              addressTypes={this.props.addressTypes.slice(1)}\n              contentCounts={this.props.contentCounts[i]}\n              refPath={this.props.refPath + \":\" + enSection}\n              currentlyVisibleRef={this.props.currentlyVisibleRef}\n              currentlyVisibleSectionRef={this.props.currentlyVisibleSectionRef}/>\n          </div>);\n      }\n      return ( <div className=\"tocLevel\">{content}</div> );\n    }\n    let contentCounts = this.props.depth == 1 ? new Array(this.props.contentCounts).fill(1) : this.props.contentCounts;\n    let sectionLinks = [];\n    for (let i = 0; i < contentCounts.length; i++) {\n      if (this.contentCountIsEmpty(contentCounts[i])) { continue; }\n      let [section, heSection] = Sefaria.getSectionStringByAddressType(this.props.addressTypes[0], i, this.props.offset);\n      let ref  = (this.props.refPath + \":\" + section).replace(\":\", \" \") + this.refPathTerminal(contentCounts[i]);\n      let currentPlace = ref == this.props?.currentlyVisibleSectionRef || ref == this.props?.currentlyVisibleRef || Sefaria.refContains(this.props?.currentlyVisibleSectionRef, ref); //the second clause is for depth 1 texts\n      const linkClasses = classNames({\"sectionLink\": 1, \"current\": currentPlace}); \n      let link = (\n        <a className={linkClasses} href={\"/\" + Sefaria.normRef(ref)} data-ref={ref} key={i}>\n          <ContentText text={{en:section, he:heSection}}/>\n        </a>\n      );\n      sectionLinks.push(link);\n    }\n    return (\n      <div className=\"tocLevel\">{sectionLinks}</div>\n    );\n  }\n}\nJaggedArrayNodeSection.propTypes = {\n  depth:           PropTypes.number.isRequired,\n  sectionNames:    PropTypes.array.isRequired,\n  addressTypes:    PropTypes.array.isRequired,\n  contentCounts:   PropTypes.oneOfType([\n                      PropTypes.array,\n                      PropTypes.number\n                    ]),\n  refPath:         PropTypes.string.isRequired,\n};\n\n\nclass ArrayMapNode extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      collapsed: false\n    };\n  }\n  toggleCollapse() {\n    if(this.props.schema.displayFixedTitleSubSections) return;\n    this.setState({collapsed: !this.state.collapsed});\n  }\n  render() {\n    const schema = this.props.schema;\n    const includeSections = schema?.includeSections ?? true; //either undefined or explicitly true\n    if (\"refs\" in schema && schema.refs.length && includeSections) {\n      let skip = 0;\n      let sectionLinks = schema.refs.map(function(ref, i) {\n        if ('addresses' in schema) {\n          i = schema.addresses[i] - 1;\n        } else {\n          i += schema.offset || 0;\n          if ('skipped_addresses' in schema) {\n            i += skip;\n            while (schema.skipped_addresses.includes(i+1)) {\n              skip++;\n              i++;\n            }\n          }\n        }\n        if (ref === \"\") {\n          return null;\n        }\n        let [section, heSection] = Sefaria.getSectionStringByAddressType(schema.addressTypes[0], i);\n        let currentPlace = ref == this.props?.currentlyVisibleSectionRef  || ref == this.props?.currentlyVisibleRef || Sefaria.refContains(ref, this.props?.currentlyVisibleRef);\n        const linkClasses = classNames({\"sectionLink\": 1, \"current\": currentPlace}); \n        return (\n          <a className={linkClasses} href={\"/\" + Sefaria.normRef(ref)} data-ref={ref} key={i}>\n            <ContentText text={{en:section, he:heSection}}/>\n          </a>\n        );\n      }.bind(this));\n      \n      let path = this.props.refPath + \", \" + schema.title;\n      let ref = \"wholeRef\" in schema ? Sefaria.splitSpanningRefNaive(schema.wholeRef)[0] : null;\n      \n      return schema.displayFixedTitleSubSections ? (\n          <a className=\"schema-node-toc linked\" href={\"/\" + Sefaria.normRef(ref)} data-ref={ref} key={path}>\n            <span className=\"schema-node-title open fixed\"\n                  role=\"heading\"\n                  aria-level=\"3\"\n                  aria-hidden=\"true\" tabIndex={0}>\n              <ContentText text={{en: schema.title, he: schema.heTitle}} />\n            </span>\n            <div className=\"schema-node-contents\">{sectionLinks}</div>\n          </a>\n      ) : (\n          <div className=\"schema-node-toc\" data-ref={path} key={path}>\n            <span className={`schema-node-title ${this.state.collapsed ? \"collapsed\" : \"open\"}`}\n                  onClick={()=> {this.toggleCollapse()}}\n                  onKeyPress={(e) => {e.charCode == 13 ? this.toggleCollapse():null}}\n                  role=\"heading\"\n                  aria-level=\"3\"\n                  aria-hidden=\"true\" tabIndex={0}>\n              <ContentText text={{en: schema.title, he: schema.heTitle}} />\n            </span>\n            {!this.state.collapsed ?\n            <div className=\"schema-node-contents\">{sectionLinks}</div>\n            : null }\n          </div>\n      );\n\n    } else { //just a single link for an alt struct section\n      let currentPlace = this.props?.currentlyVisibleSectionRef && \n          (schema.wholeRef == this.props?.currentlyVisibleRef || (Sefaria.refContains(schema.wholeRef, this.props?.currentlyVisibleRef)));\n      const linkClasses = classNames({\"schema-node-toc\": 1, \"linked\":1, \"current\": currentPlace}); \n      return (\n        <a className={linkClasses} href={\"/\" + Sefaria.normRef(schema.wholeRef)} data-ref={schema.wholeRef}>\n          <span className=\"schema-node-title\" role=\"heading\" aria-level=\"3\">\n            <ContentText text={{en:schema.title, he:schema.heTitle}}/>\n          </span>\n        </a>);\n    }\n  }\n}\nArrayMapNode.propTypes = {\n  schema:      PropTypes.object.isRequired\n};\n\n\nclass DictionaryNode extends Component {\n  getCurrentLetter(){ \n    //we need this so we can tell what letter of the alphabet a user is currently looking at based on the current ref, since the letters arent actually super\n    // sections. \n    if(this.props?.currentlyVisibleSectionRef){\n      const rf = this.props.currentlyVisibleSectionRef;\n      const letterSectionRf = rf.substring(0, rf.lastIndexOf(\",\") + 3); \n      //get the substring up to the character after the last comma (and the space) thats the letter of the\n      // alphabet we are on\n      return letterSectionRf;\n    }\n    return null;\n  }\n  render() {\n    if (this.props.schema.headwordMap) {\n      const headerText = this.props.schema.title ? (\n        <ContentText text={{en:this.props.schema.title , he:this.props.schema.heTitle }}/>\n      ) : (\n        <ContentText text={{en: \"Browse By Letter\", he: 'לפי סדר הא\"ב'}}/>);\n      const letterSection = this.getCurrentLetter();\n      let sectionLinks = this.props.schema.headwordMap.map((m, i) => {\n        let letter = m[0];\n        let ref = m[1];\n        let currentPlace = letterSection ? ref == letterSection : false;\n        const linkClasses = classNames({\"sectionLink\": 1, \"current\": currentPlace});\n        return (\n            <a className={linkClasses} href={\"/\" + Sefaria.normRef(ref)} data-ref={ref} key={i}>\n              <ContentText text={{en: letter, he: letter}}/>\n            </a>\n        );\n      });\n      return (\n          <div className=\"schema-node-toc\">\n            <div className=\"schema-node-contents\">\n              <div className=\"specialNavSectionHeader\">\n                {headerText}\n              </div>\n              <div className=\"tocLevel\">{sectionLinks}</div>\n            </div>\n          </div>\n      );\n    }\n  }\n}\nDictionaryNode.propTypes = {\n  schema:      PropTypes.object.isRequired\n};\n\n\nclass VersionsList extends Component {\n  componentDidMount() {\n    Sefaria.getVersions(this.props.currentRef).then((result) => {\n          this.onVersionsLoad(Object.values(result).flat());\n        });\n  }\n  onVersionsLoad(versions){\n    versions.sort(\n      (a, b) => {\n        if      (a.priority > b.priority)                {return -1;}\n        else if (a.priority < b.priority)                {return 1;}\n        else if (a.versionTitle < b.versionTitle)        {return -1;}\n        else if (a.versionTitle > b.versionTitle)        {return  1;}\n        else                                             {return  0;}\n      }\n    );\n    this.setState({versions: versions});\n  }\n  render() {\n    if (!this?.state?.versions) {\n        return (\n          <div className=\"versionsBox\">\n            <LoadingMessage />\n          </div>\n        );\n    }\n    let versions = this.state.versions;\n    let vblocks = versions.map(v =>\n      <VersionBlock\n        rendermode=\"book-page\"\n        version={v}\n        currObjectVersions={this.props.currObjectVersions}\n        currentRef={this.props.currentRef}\n        firstSectionRef={\"firstSectionRef\" in v ? v.firstSectionRef : null}\n        openVersionInReader={this.props.openVersionInReader}\n        viewExtendedNotes={this.props.viewExtendedNotes}\n        key={v.versionTitle + \"/\" + v.language}/>\n     );\n    return (\n      <div className=\"versionsBox\">\n        {vblocks}\n      </div>\n    );\n  }\n}\nVersionsList.propTypes = {\n  currentRef:                PropTypes.string,\n  currObjectVersions:        PropTypes.object,\n  openVersionInReader:       PropTypes.func,\n  viewExtendedNotes:         PropTypes.func,\n};\n\nconst SectionTypesBox = function({sections, canEdit, updateParent}) {\n  const box = useRef(null);\n  const add = function() {\n    updateParent(sections.concat(\"\")); //tell parent new values\n  }\n  const remove = function(i) {\n    updateParent(sections.slice(0, i+1)); //tell parent new values\n  }\n  const updateSelfAndParent = function() {\n    let newSections = Array.from(box.current.children).map(item => item.value);\n    updateParent(newSections);\n  }\n\n  return <div id=\"sBox\" ref={box}>\n            {sections.map(function(section, i) {\n              if (i === 0) {\n                return <input onChange={updateSelfAndParent} className={'sectionType'} defaultValue={section}/>;\n              }\n              else if (canEdit) {\n                return <span><input onChange={updateSelfAndParent} className={'sectionType'} defaultValue={section}/><span className=\"remove\" onClick={(i) => remove(i)}>X</span></span>;\n              }\n              else {\n                return <input onChange={updateSelfAndParent} className={'sectionType'} defaultValue={section}/>;\n              }\n            })}\n            {canEdit ? <span className=\"add\" onClick={add}>Add Section</span> : null}\n          </div>\n}\n\nconst EditTextInfo = function({initTitle, close}) {\n  const index = useRef(null);\n  index.current = Sefaria.getIndexDetailsFromCache(initTitle);\n  const oldTitle = index.current.title; //save original title, in case english title gets edited\n  const [enTitle, setEnTitle] = useState(index.current.title);\n  const [heTitle, setHeTitle] = useState(index.current.heTitle);\n  const [titleVariants, setTitleVariants] = useState(index.current.titleVariants.map((item, i) =>({[\"name\"]: item, [\"id\"]: i})));\n  const [heTitleVariants, setHeTitleVariants] = useState(index.current.heTitleVariants.map((item, i) =>({[\"name\"]: item, [\"id\"]: i})));\n  const [categories, setCategories] = useState(index.current.categories);\n  const [savingStatus, setSavingStatus] = useState(false);\n  const [sections, setSections] = useState(index.current.sectionNames);\n  const [enDesc, setEnDesc] = useState(index.current?.enDesc || \"\");\n  const [enShortDesc, setEnShortDesc] = useState(index.current?.enShortDesc || \"\");\n  const [heDesc, setHeDesc] = useState(index.current?.heDesc || \"\");\n  const [heShortDesc, setHeShortDesc] = useState(index.current?.heShortDesc || \"\");\n  const [authors, setAuthors] = useState(index.current.authors?.map((item, i) =>({[\"name\"]: item.en, [\"slug\"]: item.slug, [\"id\"]: i})) || []);\n  const [pubDate, setPubDate] = useState(index.current?.pubDate);\n  const [pubPlace, setPubPlace] = useState(index.current?.pubPlaceString?.en);\n  const [hePubPlace, setHePubPlace] = useState(index.current?.pubPlaceString?.he);\n  const [compPlace, setCompPlace] = useState(index.current?.compPlaceString?.en);\n  const [heCompPlace, setHeCompPlace] = useState(index.current?.compPlaceString?.he);\n  const getYearAsStr = (init) => {\n    if (typeof init === 'undefined' || init.length === 0) {\n      return \"\";\n    } else if (init.length === 2) {\n      return `${init[0]}-${init[1]}`;\n    }\n    else if (init.length === 1) {\n      return `${init[0]}`;\n    }\n  }\n  const [compDate, setCompDate] = useState(index.current?.compDate);\n  const initCompDate = getYearAsStr(index.current?.compDate);  //init comp date to display\n  const initPubDate = getYearAsStr(index.current?.pubDate);\n\n\n  const toggleInProgress = function() {\n    setSavingStatus(savingStatus => !savingStatus);\n  }\n  const validate = async function () {\n    if (!enTitle) {\n      alert(\"Please give a text title or commentator name.\");\n      return false;\n    }\n\n    if (!heTitle && Sefaria._siteSettings.TORAH_SPECIFIC) {\n      alert(\"Please give a Hebrew text title.\");\n      return false;\n    }\n\n    if (/[.\\-\\\\\\/]/.test(enTitle)) {\n      alert('Text titles may not contain periods, hyphens or slashes.');\n      return false;\n    }\n\n    if (categories.length === 0) {\n      alert(\"Please choose a text category.\");\n      return false;\n    }\n\n    for (let i = 0; i < categories.length; i++) {\n      if (/[.\\-\\\\\\/]/.test(categories[i])) {\n        alert('Categories may not contain periods, hyphens or slashes.');\n        return false;\n      }\n    }\n    if (Hebrew.containsHebrew(enTitle)) {\n      alert(\"Please enter a primary title in English. Use the Hebrew Title field to specify a title in Hebrew.\");\n      return false;\n    }\n    for (const x of [enDesc, heDesc]) {\n      const valid_tags = await validateMarkdownLinks(x);\n      if (!valid_tags) {\n        return false;\n      }\n    }\n    return true;\n  }\n  const validateCompDate = (newValue, setter) => {\n    let pattern = /(-?\\d+)(-?)(-?\\d*)/;\n    let result = newValue.match(pattern);\n    if (!result) {\n      setter([]);\n    }\n    else if (result[2] === \"-\") {\n      const start = Number.parseInt(result[1]);\n      const end = Number.parseInt(result[3]);\n      if (Number.isNaN(start) || Number.isNaN(end)) {\n        alert(\"Year must be an integer or range of integers.\");\n      }\n      else if (end <= start) {\n        alert(`Invalid date format ${start} to ${end}`);\n      }\n      else {\n        setter([start, end]);\n      }\n    }\n    else {\n      const year = Number.parseInt(newValue);\n      if (Number.isNaN(year)) {\n        alert(\"Year must be an integer or range of integers.\");\n      }\n      else {\n        setter([year]);\n      }\n    }\n  }\n  const save = function() {\n    const enTitleVariantNames = titleVariants.map(i => i.name);\n    const heTitleVariantNames = heTitleVariants.map(i => i.name);\n    const authorSlugs = authors.map(i => i.slug);\n    let postIndex = {title: enTitle, authors: authorSlugs, titleVariants: enTitleVariantNames, heTitleVariants: heTitleVariantNames,\n                    heTitle, categories, enDesc, enShortDesc, heDesc, heShortDesc, pubPlace, compPlace, hePubPlace, heCompPlace\n                    }\n    if (sections && sections.length > 0) {\n      postIndex.sectionNames = sections;\n    }\n    if (enTitle !== oldTitle) {\n      postIndex.oldTitle = oldTitle;\n    }\n    if (getYearAsStr(pubDate) !== initPubDate) {\n      postIndex.pubDate = pubDate;\n    }\n    if (getYearAsStr(compDate) !== initCompDate) {\n      postIndex.compDate = compDate;\n    }\n    let postJSON = JSON.stringify(postIndex);\n    let title = enTitle.replace(/ /g, \"_\");\n    let url = \"/api/v2/raw/index/\" + title;\n    if (\"oldTitle\" in index.current) {\n      url += \"?update=1\";\n    }\n    toggleInProgress();\n    $.post(url,  {\"json\": postJSON}, function(data) {\n      if (data.error) {\n        toggleInProgress();\n        alert(data.error);\n      } else {\n        alert(\"Text information saved.\");\n        window.location.href = \"/admin/reset/\"+index.current.title;\n      }\n      }).fail( function(xhr, textStatus, errorThrown) {\n        alert(\"Unfortunately, there may have been an error saving this text information.\");\n        window.location.href = \"/admin/reset/\"+index.current.title;  // often this occurs when save occurs successfully but there is simply a timeout on cauldron so try resetting it\n      });\n  };\n  const validateThenSave = async function () {\n    const valid = await validate();\n    if (valid) {\n      save();\n    }\n  }\n  const addAuthor = function (newAuthor) {\n    const lowerCaseName = newAuthor.name.toLowerCase();\n    Sefaria._ApiPromise(Sefaria.apiHost + \"/api/topic/completion/\" + newAuthor.name).then(d => {\n      const matches = d[1].filter((t) => t.type === 'AuthorTopic');\n      const exactMatch = matches.find((t) => t.title.toLowerCase() === lowerCaseName);\n      if (!exactMatch) {\n        const closestMatches = matches.map((t) => t.title);\n        const closestMatchMsg = matches.length > 0 ? `The closest match(es) found were: ${closestMatches.join(', ')}` : \"\";\n        alert(`Invalid author.  Make sure it is listed under the 'Authors' category in the Topic Table of Contents. ${closestMatchMsg}`);\n      } else {\n        const newAuthor = [{\"id\": authors.length, \"name\": exactMatch.title, \"slug\": exactMatch.key}];\n        setAuthors([].concat(authors, newAuthor));\n      }\n    });\n  }\n\n  const removeAuthor = function (authorIDtoRemove) {\n    let newAuthors = authors.filter(author => author.id !== authorIDtoRemove);\n    setAuthors(newAuthors);\n  }\n  const deleteObj = () => {\n    setSavingStatus(true);\n    const url = `/api/v2/index/${enTitle}`;\n    requestWithCallBack({url, type: \"DELETE\", redirect: () => window.location.href = `/texts`});\n  }\n  return (\n      <div className=\"editTextInfo\">\n      <div className=\"static\">\n        <div className=\"inner\">\n          {savingStatus ? <div className=\"collectionsWidget\">Saving text information...<br/><br/>(processing title changes may take some time)</div> : null}\n          <div id=\"newIndex\">\n            <AdminToolHeader title={\"Index Editor\"} close={close} validate={validateThenSave}/>\n            <div className=\"section\">\n                <label><InterfaceText>Text Title</InterfaceText></label>\n              <input type=\"text\" id=\"textTitle\" onChange={(e) => setEnTitle(e.target.value)} defaultValue={enTitle}/>\n            </div>\n            {Sefaria._siteSettings.TORAH_SPECIFIC ?\n                <div className=\"section\">\n                <label><InterfaceText>Hebrew Title</InterfaceText></label>\n                <input id=\"textTitle\" type=\"text\" onChange={(e) => setHeTitle(e.target.value)} defaultValue={heTitle}/>\n                </div> : null}\n\n            <div className=\"section\">\n                <label><InterfaceText>English Description</InterfaceText></label>\n              <textarea className=\"default\" onChange={(e) => setEnDesc(e.target.value)} defaultValue={enDesc}/>\n            </div>\n            <div className=\"section\">\n                <label><InterfaceText>Short English Description</InterfaceText></label>\n              <textarea className=\"default\" onChange={(e) => setEnShortDesc(e.target.value)} defaultValue={enShortDesc}/>\n            </div>\n            {Sefaria._siteSettings.TORAH_SPECIFIC ?\n              <div className=\"section\">\n                  <label><InterfaceText>Hebrew Description</InterfaceText></label>\n                <textarea className=\"default\" onChange={(e) => setHeDesc(e.target.value)} defaultValue={heDesc}/>\n              </div> : null}\n            {Sefaria._siteSettings.TORAH_SPECIFIC ?\n              <div className=\"section\">\n                  <label><InterfaceText>Short Hebrew Description</InterfaceText></label>\n                <textarea className=\"default\" onChange={(e) => setHeShortDesc(e.target.value)} defaultValue={heShortDesc}/>\n              </div> : null}\n\n            <div className=\"section\">\n              <label><InterfaceText>Category</InterfaceText></label>\n              <CategoryChooser update={setCategories} categories={categories}/>\n            </div>\n\n            <div className=\"section\">\n              <div><InterfaceText>Authors</InterfaceText></div><label><span className=\"optional\"><InterfaceText>Optional</InterfaceText></span></label>\n              <TitleVariants titles={authors} options={{'onTitleAddition': addAuthor, 'onTitleDelete': removeAuthor}}/>\n            </div>\n            <div className=\"section\">\n              <div><InterfaceText>Alternate English Titles</InterfaceText></div><label><span className=\"optional\"><InterfaceText>Optional</InterfaceText></span></label>\n\n              <TitleVariants update={setTitleVariants} titles={titleVariants}/>\n            </div>\n\n            {Sefaria._siteSettings.TORAH_SPECIFIC ?\n                <div className=\"section\">\n                  <div><InterfaceText>Alternate Hebrew Titles</InterfaceText></div><label><span className=\"optional\"><InterfaceText>Optional</InterfaceText></span></label>\n                  <TitleVariants update={setHeTitleVariants} titles={heTitleVariants}/>\n                </div> : null}\n            <div className=\"section\">\n              <div><InterfaceText>Completion Year</InterfaceText></div><label><span className=\"optional\"><InterfaceText>Optional.  Provide a range if there is an error margin or the work was completed over the course of many years such as 1797-1800 or -900--200 (to denote 900 BCE to 200 BCE).</InterfaceText></span></label>\n              <br/><input id=\"compDate\" onBlur={(e) => validateCompDate(e.target.value, setCompDate)} defaultValue={initCompDate}/>\n            </div>\n            <div className=\"section\">\n              <div><InterfaceText>Place of Composition</InterfaceText></div>\n              <label><span className=\"optional\"><InterfaceText>Optional</InterfaceText></span></label>\n              <input id=\"compPlace\" onChange={(e) => setCompPlace(e.target.value)} defaultValue={compPlace}/>\n            </div>\n            {Sefaria._siteSettings.TORAH_SPECIFIC &&\n                <div className=\"section\">\n                  <div><InterfaceText>Hebrew Place of Composition</InterfaceText></div><label>\n                  <span className=\"optional\"><InterfaceText>Optional</InterfaceText></span></label>\n                  <input id=\"heCompPlace\" onChange={(e) => setHeCompPlace(e.target.value)} defaultValue={heCompPlace}/>\n                </div>}\n            <div className=\"section\">\n              <div><InterfaceText>Publication Year</InterfaceText></div><label><span className=\"optional\"><InterfaceText>Optional.  Provide a range if there is an error margin or the work was completed over the course of many years such as 1797-1800 or -900--200 (to denote 900 BCE to 200 BCE).</InterfaceText></span></label>\n              <input id=\"pubDate\" onBlur={(e) => validateCompDate(e.target.value, setPubDate)} defaultValue={initPubDate}/>\n            </div>\n            <div className=\"section\">\n              <div><InterfaceText>Place of Publication</InterfaceText></div><label><span className=\"optional\"><InterfaceText>Optional</InterfaceText></span></label>\n              <input id=\"pubPlace\" onChange={(e) => setPubPlace(e.target.value)} defaultValue={pubPlace}/>\n            </div>\n            {Sefaria._siteSettings.TORAH_SPECIFIC &&\n                <div className=\"section\">\n                  <div><InterfaceText>Hebrew Place of Publication</InterfaceText></div>\n                  <label><span className=\"optional\"><InterfaceText>Optional</InterfaceText></span></label>\n                  <input id=\"hePubPlace\" onChange={(e) => setHePubPlace(e.target.value)} defaultValue={hePubPlace}/>\n                </div>}\n            {index.current.hasOwnProperty(\"sectionNames\") ?\n              <div className=\"section\">\n                <div><label><InterfaceText>Text Structure</InterfaceText></label></div>\n                <SectionTypesBox updateParent={setSections} sections={sections} canEdit={index.current === {}}/>\n              </div> : null}\n            <div onClick={deleteObj} id=\"deleteTopic\" className=\"button small deleteTopic\" tabIndex=\"0\" role=\"button\">\n                <InterfaceText>Delete</InterfaceText>\n            </div>\n          </div>\n        </div>\n      </div>\n      </div>\n  );\n}\n\n\n\n\n\nclass ReadMoreText extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {expanded: props.text.split(\" \").length < props.initialWords};\n  }\n  render() {\n    /** todo fix interfacetext */\n    let text = this.state.expanded ? this.props.text : this.props.text.split(\" \").slice(0, this.props.initialWords).join (\" \") + \"...\";\n    return <div className=\"readMoreText\">\n      {text}\n      {this.state.expanded ? null :\n        <span className=\"readMoreLink\" onClick={() => this.setState({expanded: true})}>\n          <InterfaceText>\n            <EnglishText className=\"int-en\">Read More ›</EnglishText>\n            <HebrewText className=\"int-he\">קרא עוד ›</HebrewText>\n          </InterfaceText>\n\n        </span>\n      }\n    </div>\n  }\n}\nReadMoreText.propTypes = {\n  text: PropTypes.string.isRequired,\n  initialWords: PropTypes.number,\n};\nReadMoreText.defaultProps = {\n  initialWords: 30\n};\n\n\n/*\n  TODO what happened to ExtendedNotes?\n\n  {this.props.mode === \"extended notes\" ?\n  <ExtendedNotes\n    title={this.props.title}\n    currVersions={this.props.currVersions}\n    backFromExtendedNotes={this.props.backFromExtendedNotes}\n  />\n  : null }\n*/\n\n\n\nexport {BookPage as default, TextTableOfContents, EditTextInfo};","\n//\n\nclass TrackG4 {\n\n    /**\n     * This function should be called in components that we want to track click events on.\n     * before the return you need to add in this line `const analyticsContext = useContext(AdContext);` to get the context.\n     * and then call the gtagClick as fallowing: onClick={e => TrackG4.gtagClick(e, onClick, `ToolTipped`, {\"classes\": `${classes}`}, analyticsContext)}\n     * if there is an onClick function already pass it in the `onClick` parameter in the gtagClick function.\n     */\n\n    static gtagClick = (e, onClick = () => {\n    }, comp_name, params, analyticsContext) => {\n        const contextParams = {\n            \"keywordTargets\": analyticsContext.keywordTargets,\n            \"interfaceLang\": analyticsContext.interfaceLang\n        }\n        const allParams = Object.assign({}, params, contextParams)\n        gtag(\"event\", `onclick_${comp_name}`, allParams)\n        onClick(e)\n    };\n\n}\nexport default TrackG4","//const React      = require('react');\nimport React, {useContext, useEffect, useRef, useState} from 'react';\nimport ReactDOM from 'react-dom';\nimport $ from './sefaria/sefariaJquery';\nimport {CollectionsModal} from \"./CollectionsWidget\";\nimport Sefaria from './sefaria/sefaria';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Component from 'react-class';\nimport { usePaginatedDisplay } from './Hooks';\nimport {ContentLanguageContext, AdContext, StrapiDataContext} from './context';\nimport ReactCrop from 'react-image-crop';\nimport 'react-image-crop/dist/ReactCrop.css';\nimport {ContentText} from \"./ContentText\";\nimport ReactTags from \"react-tag-autocomplete\";\nimport {AdminEditorButton, useEditToggle} from \"./AdminEditor\";\nimport {CategoryEditor, ReorderEditor} from \"./CategoryEditor\";\nimport {refSort} from \"./TopicPage\";\nimport {TopicEditor} from \"./TopicEditor\";\nimport {generateContentForModal, SignUpModalKind} from './sefaria/signupModalContent';\nimport {SourceEditor} from \"./SourceEditor\";\nimport Cookies from \"js-cookie\";\nimport {EditTextInfo} from \"./BookPage\";\nimport ReactMarkdown from 'react-markdown';\nimport TrackG4 from \"./sefaria/trackG4\";\n/**\n * Component meant to simply denote a language specific string to go inside an InterfaceText element\n * ```\n * <InterfaceText>\n *     <EnglishText>lorem ipsum</EnglishText>\n *     <HebrewText>lorem ipsum</HebrewText>\n * </InterfaceText>\n * ```\n * @param children\n * @returns {JSX.Element}\n * @constructor\n */\nconst HebrewText = ({children}) => (\n    <>{children}</>\n);\nconst EnglishText = ({children}) => (\n    <>{children}</>\n);\n\nconst AvailableLanguages = () => {\n  return {\"english\" : EnglishText, \"hebrew\": HebrewText};\n};\nconst AvailableLanguagesValidator = (children, key, componentName, location, propFullName) => {\n    if (!(children[key].type && (Object.values(AvailableLanguages()).indexOf(children[key].type) != -1) )) {\n      return new Error(\n        'Invalid prop `' + propFullName + '` supplied to' +\n        ' `' + componentName + '`. Validation failed.'\n      );\n    }\n};\nconst __filterChildrenByLanguage = (children, language) => {\n  let chlArr = React.Children.toArray(children);\n  let currLangComponent = AvailableLanguages()[language];\n  let newChildren = chlArr.filter(x=> x.type == currLangComponent);\n  return newChildren;\n};\n\nconst InterfaceText = ({text, html, markdown, children, context, disallowedMarkdownElements=[]}) => {\n  /**\n   * Renders a single span for interface string with either class `int-en`` or `int-he` depending on Sefaria.interfaceLang.\n   *  If passed explicit text or html objects as props with \"en\" and/or \"he\", will only use those to determine correct text or fallback text to display.\n   *  Otherwise:\n   * `children` can be the English string, which will be translated with Sefaria._ if needed.\n   * `children` can also take the form of <LangText> components above, so they can be used for longer paragrpahs or paragraphs containing html, if needed.\n   * `context` is passed to Sefaria._ for additional translation context\n   */\n  const contentVariable = html || markdown || text;  // assumption is `markdown` or `html` are preferred over `text` if they are present\n  const isHebrew = Sefaria.interfaceLang === \"hebrew\";\n  let elemclasses = classNames({\"int-en\": !isHebrew, \"int-he\": isHebrew});\n  let textResponse = null;\n  if (contentVariable) {// Prioritize explicit props passed in for text of the element, does not attempt to use Sefaria._() for this case.\n    let {he, en} = contentVariable;\n    textResponse = isHebrew ? (he || en) : (en || he);\n    let fallbackCls = (isHebrew && !he) ? \" enInHe\" : ((!isHebrew && !en) ? \" heInEn\" : \"\" );\n    elemclasses += fallbackCls;\n  } else { // Also handle composition with children\n    const chlCount = React.Children.count(children);\n    if (chlCount === 1) { // Same as passing in a `en` key but with children syntax\n      textResponse = Sefaria._(children, context);\n    } else if (chlCount <= Object.keys(AvailableLanguages()).length){ // When multiple languages are passed in via children\n      let newChildren = __filterChildrenByLanguage(children, Sefaria.interfaceLang);\n      textResponse = newChildren[0]; //assumes one language element per InterfaceText, may be too naive\n    } else {\n      console.log(\"Error too many children\")\n    }\n  }\n  return (\n    html ?\n      <span className={elemclasses} dangerouslySetInnerHTML={{__html: textResponse}}/>\n        : markdown ? <span className={elemclasses}><ReactMarkdown className={'reactMarkdown'} unwrapDisallowed={true} disallowedElements={['p', ...disallowedMarkdownElements]}>{textResponse}</ReactMarkdown></span>\n                    : <span className={elemclasses}>{textResponse}</span>\n  );\n};\nInterfaceText.propTypes = {\n  //Makes sure that children passed in are either a single string, or an array consisting only of <EnglishText>, <HebrewText>\n  children: PropTypes.oneOfType([\n      PropTypes.string,\n      PropTypes.arrayOf(AvailableLanguagesValidator),\n  ]),\n  content: PropTypes.object,\n  html: PropTypes.object,\n  context: PropTypes.string,\n  className: PropTypes.string\n};\n\nconst LoadingRing = () => (\n  <div className=\"lds-ring\"><div></div><div></div><div></div><div></div></div>\n);\n\nconst DonateLink = ({children, classes, source, link}) => {\n  let url = Sefaria._siteSettings?.DONATION_URL;\n  if (!url)\n  {\n    link = link || \"default\";\n    const linkOptions = {\n      default: {\n        en: \"https://donate.sefaria.org/give/451346/#!/donation/checkout\",\n        he: \"https://donate.sefaria.org/give/468442/#!/donation/checkout\"\n      },\n      sustainer: {\n        en: \"https://donate.sefaria.org/give/457760/#!/donation/checkout\",\n        he: \"https://donate.sefaria.org/give/478929/#!/donation/checkout\"\n      },\n      dayOfLearning: {\n        en: \"https://donate.sefaria.org/sponsor\",\n        he: \"https://donate.sefaria.org/sponsorhe\",\n      }\n    };\n    url = `${Sefaria._v(linkOptions[link])}?c_src=${source}`;\n  }\n\n  const trackClick = () => {\n    Sefaria.track.event(\"Donations\", \"Donation Click\", source);\n  };\n\n  return (\n    <a href={url} className={classes} target=\"_blank\" onClick={trackClick}>\n      {children}\n    </a>\n  );\n};\n\n/* flexible profile picture that overrides the default image of gravatar with text with the user's initials */\nclass ProfilePic extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      showDefault: !this.props.url || this.props.url.startsWith(\"https://www.gravatar\"), // We can't know in advance if a gravatar image exists of not, so start with the default beforing trying to load image\n      src: null,\n      isFirstCropChange: true,\n      crop: {unit: \"px\", width: 250, aspect: 1},\n      croppedImageBlob: null,\n      error: null,\n    };\n    this.imgFile = React.createRef();\n  }\n  setShowDefault() { /* console.log(\"error\"); */ this.setState({showDefault: true});  }\n  setShowImage() { /* console.log(\"load\"); */ this.setState({showDefault: false});  }\n  componentDidMount() {\n    if (this.didImageLoad()) {\n      this.setShowImage();\n    } else {\n      this.setShowDefault();\n    }\n  }\n  didImageLoad(){\n    // When using React Hydrate, the onLoad event of the profile image will return before\n    // react code runs, so we check after mount as well to look replace bad images, or to\n    // swap in a gravatar image that we now know is valid.\n    const img = this.imgFile.current;\n    return (img && img.complete && img.naturalWidth !== 0);\n  }\n  onSelectFile(e) {\n    if (e.target.files && e.target.files.length > 0) {\n      if (!e.target.files[0].type.startsWith('image/')) {\n        this.setState({ error: \"Error: Please upload an image with the correct file extension (e.g. jpg, png)\"});\n        return;\n      }\n      const reader = new FileReader();\n      reader.addEventListener(\"load\", () =>\n        this.setState({ src: reader.result })\n      );\n      console.log(\"FILE\", e.target.files[0]);\n      reader.readAsDataURL(e.target.files[0]);\n    }\n  }\n  onImageLoaded(image) {\n    this.imageRef = image;\n  }\n  onCropComplete(crop) {\n    this.makeClientCrop(crop);\n  }\n  onCropChange(crop, percentCrop) {\n    // You could also use percentCrop:\n    // this.setState({ crop: percentCrop });\n    if (this.state.isFirstCropChange) {\n      const { clientWidth:width, clientHeight:height } = this.imageRef;\n      crop.width = Math.min(width, height);\n      crop.height = crop.width;\n      crop.x = (this.imageRef.width/2) - (crop.width/2);\n      crop.y = (this.imageRef.height/2) - (crop.width/2);\n      this.setState({ crop, isFirstCropChange: false });\n    } else {\n      this.setState({ crop });\n    }\n  }\n  async makeClientCrop(crop) {\n    if (this.imageRef && crop.width && crop.height) {\n      const croppedImageBlob = await this.getCroppedImg(\n        this.imageRef,\n        crop,\n        \"newFile.jpeg\"\n      );\n      //console.log(croppedImageUrl);\n      this.setState({ croppedImageBlob });\n    }\n  }\n  getCroppedImg(image, crop, fileName) {\n    const canvas = document.createElement(\"canvas\");\n    const scaleX = image.naturalWidth / image.width;\n    const scaleY = image.naturalHeight / image.height;\n    canvas.width = crop.width * scaleX;\n    canvas.height = crop.height * scaleY;\n    const ctx = canvas.getContext(\"2d\");\n    ctx.drawImage(\n      image,\n      crop.x * scaleX,\n      crop.y * scaleY,\n      crop.width * scaleX,\n      crop.height * scaleY,\n      0,\n      0,\n      crop.width * scaleX,\n      crop.height * scaleY\n    );\n\n    return new Promise((resolve, reject) => {\n      canvas.toBlob(blob => {\n        if (!blob) {\n          console.error(\"Canvas is empty\");\n          return;\n        }\n        blob.name = fileName;\n        resolve(blob);\n      }, \"image/jpeg\");\n    });\n  }\n  closePopup({ cb }) {\n    this.setState({\n      src: null,\n      crop: {unit: \"px\", width: 250, aspect: 1},\n      isFirstCropChange: true,\n      croppedImageBlob: null,\n      error: null,\n    }, cb);\n  }\n  async upload() {\n    const formData = new FormData();\n    formData.append('file', this.state.croppedImageBlob);\n    this.setState({ uploading: true });\n    let errored = false;\n    try {\n      const response = await Sefaria.uploadProfilePhoto(formData);\n      if (response.error) {\n        throw new Error(response.error);\n      } else {\n        this.closePopup({ cb: () => {\n          window.location = \"/profile/\" + Sefaria.slug; // reload to get update\n          return;\n        }});\n      }\n    } catch (e) {\n      errored = true;\n      console.log(e);\n    }\n    this.setState({ uploading: false, errored });\n  }\n  render() {\n    const { name, url, len, hideOnDefault, showButtons, outerStyle } = this.props;\n    const { showDefault, src, crop, error, uploading, isFirstCropChange } = this.state;\n    const nameArray = !!name.trim() ? name.trim().split(/\\s/) : [];\n    const initials = nameArray.length > 0 ? (nameArray.length === 1 ? nameArray[0][0] : nameArray[0][0] + nameArray[nameArray.length-1][0]) : \"\";\n    const defaultViz = showDefault ? 'flex' : 'none';\n    const profileViz = showDefault ? 'none' : 'block';\n    const imageSrc = url.replace(\"profile-default.png\", 'profile-default-404.png');  // replace default with non-existant image to force onLoad to fail\n\n    return (\n      <div style={outerStyle} className=\"profile-pic\">\n        <div className={classNames({'default-profile-img': 1, noselect: 1, invisible: hideOnDefault})}\n          style={{display: defaultViz,  width: len, height: len, fontSize: len/2}}>\n          { showButtons ? null : `${initials}` }\n        </div>\n        <img\n          className=\"img-circle profile-img\"\n          style={{display: profileViz, width: len, height: len, fontSize: len/2}}\n          src={imageSrc}\n          alt=\"User Profile Picture\"\n          ref={this.imgFile}\n          onLoad={this.setShowImage}\n          onError={this.setShowDefault}\n        />\n        {this.props.children ? this.props.children : null /*required for slate.js*/}\n        { showButtons ? /* cant style file input directly. see: https://stackoverflow.com/questions/572768/styling-an-input-type-file-button */\n            (<div className={classNames({\"profile-pic-button-visible\": showDefault !== null, \"profile-pic-hover-button\": !showDefault, \"profile-pic-button\": 1})}>\n              <input type=\"file\" className=\"profile-pic-input-file\" id=\"profile-pic-input-file\" onChange={this.onSelectFile} onClick={(event)=> { event.target.value = null}}/>\n              <label htmlFor=\"profile-pic-input-file\" className={classNames({resourcesLink: 1, blue: showDefault})}>\n                <span className=\"int-en\">{ showDefault ? \"Add Picture\" : \"Upload New\" }</span>\n                <span className=\"int-he\">{ showDefault ? \"הוספת תמונה\" : \"עדכון תמונה\" }</span>\n              </label>\n            </div>) : null\n          }\n          { (src || !!error) && (\n            <div id=\"interruptingMessageBox\" className=\"sefariaModalBox\">\n              <div id=\"interruptingMessageOverlay\" onClick={this.closePopup}></div>\n              <div id=\"interruptingMessage\" className=\"profile-pic-cropper-modal\">\n                <div className=\"sefariaModalContent profile-pic-cropper-modal-inner\">\n                  { src ?\n                    (<ReactCrop\n                      src={src}\n                      crop={crop}\n                      className=\"profile-pic-cropper\"\n                      keepSelection\n                      onImageLoaded={this.onImageLoaded}\n                      onComplete={this.onCropComplete}\n                      onChange={this.onCropChange}\n                    />) : (<div className=\"profile-pic-cropper-error\">{ error }</div>)\n                  }\n              </div>\n              { (uploading || isFirstCropChange) ? (<div className=\"profile-pic-loading\"><LoadingRing /></div>) : (\n                <div>\n                  <div className=\"smallText profile-pic-cropper-desc\">\n                    <span className=\"int-en\">Drag corners to crop image</span>\n                    <span className=\"int-he\">לחיתוך התמונה, גרור את הפינות</span>\n                  </div>\n                  <div className=\"profile-pic-cropper-button-row\">\n                    <a href=\"#\" className=\"resourcesLink profile-pic-cropper-button\" onClick={this.closePopup}>\n                      <span className=\"int-en\">Cancel</span>\n                      <span className=\"int-he\">בטל</span>\n                    </a>\n                    <a href=\"#\" className=\"resourcesLink blue profile-pic-cropper-button\" onClick={this.upload}>\n                      <span className=\"int-en\">Save</span>\n                      <span className=\"int-he\">שמור</span>\n                    </a>\n                  </div>\n                </div>\n                )\n              }\n            </div>\n          </div>\n          )\n        }\n      </div>\n    );\n  }\n}\nProfilePic.propTypes = {\n  url:           PropTypes.string,\n  name:          PropTypes.string,\n  len:           PropTypes.number,\n  hideOnDefault: PropTypes.bool,  // hide profile pic if you have are displaying default pic\n  showButtons:   PropTypes.bool,  // show profile pic action buttons\n};\n\n\n/**\n * Renders a list of data that can be filtered and sorted\n * @param filterFunc\n * @param sortFunc\n * @param renderItem\n * @param sortOptions\n * @param getData\n * @param data\n * @param renderEmptyList\n * @param renderHeader\n * @param renderFooter\n * @param showFilterHeader\n * @param refreshData\n * @param initialFilter\n * @param scrollableElement\n * @param pageSize\n * @param onDisplayedDataChange\n * @param initialRenderSize\n * @param bottomMargin\n * @param containerClass\n * @param onSetSort: optional. function that is passed the current sort option when the user changes it. Use this to control sort from outside the component. See `externalSortOption`.\n * @param externalSortOption: optional. string that is one of the options in `sortOptions`. Use this to control sort from outside the component. See `onSetSort`.\n * @returns {JSX.Element}\n * @constructor\n */\nconst FilterableList = ({\n  filterFunc, sortFunc, renderItem, sortOptions, getData, data, renderEmptyList,\n  renderHeader, renderFooter, showFilterHeader, refreshData, initialFilter,\n  scrollableElement, pageSize, onDisplayedDataChange, initialRenderSize,\n  bottomMargin, containerClass, onSetSort, externalSortOption,\n}) => {\n  const [filter, setFilter] = useState(initialFilter || '');\n  const [internalSortOption, setSortOption] = useState(sortOptions[0]);\n  const [displaySort, setDisplaySort] = useState(false);\n  const sortOption = externalSortOption || internalSortOption;\n\n  // Apply filter and sort to the raw data\n  const processData = rawData => rawData ? rawData\n      .filter(item => !filter ? true : filterFunc(filter, item))\n      .sort((a, b) => sortFunc(sortOption, a, b))\n      : [];\n\n  const cachedData = data || null;\n  const [loading, setLoading] = useState(!cachedData);\n  const [rawData, setRawData] = useState(cachedData);\n  const [displayData, setDisplayData] = useState(processData(rawData));\n\n  // If `getData` function is passed, load data through this effect\n  useEffect(() => {\n    let isMounted = true;\n    if (!rawData && !!getData) { // Don't try calling getData when `data` is intially passed\n      setLoading(true);\n      getData().then(data => {\n        if (isMounted) {\n          setRawData(data);\n          setDisplayData(processData(data));\n          setLoading(false);\n        }\n      });\n    }\n    return () => {\n      isMounted = false;\n    };\n  }, [getData, rawData]);\n\n  // Alternatively, if there is no `getData` function passed, we expect data\n  // to be fed in directly through the `data` prop. Check `data` again whenever\n  // refreshData signal changes.\n  useEffect(() => {\n    setRawData(data);\n    setDisplayData(processData(data));\n  }, [data, refreshData]);\n\n  // Updates to filter or sort\n  useEffect(() => {\n    setDisplayData(processData(rawData));\n  }, [filter, sortOption]);\n\n  const dataUpToPage = usePaginatedDisplay(scrollableElement, displayData, pageSize, bottomMargin, initialRenderSize || pageSize);\n\n  if (onDisplayedDataChange) {\n    useEffect(() => {\n      onDisplayedDataChange(dataUpToPage);\n    }, [dataUpToPage]);\n  }\n\n  const setSort = newSortOption => {\n    if (newSortOption === sortOption) { return; }\n    setSortOption(newSortOption);\n    setDisplaySort(false);\n    onSetSort?.(newSortOption);\n  };\n\n  const oldDesign = typeof showFilterHeader == 'undefined';\n  return (\n    <div className=\"filterable-list\">\n      {oldDesign ? <div className=\"filter-bar\">\n        <div className=\"filter-bar-inner\">\n          <SearchButton />\n          <input\n            type=\"text\"\n            placeholder={Sefaria._(\"Search\")}\n            name=\"filterableListInput\"\n            value={filter}\n            onChange={e => setFilter(e.target.value)}\n          />\n        </div>\n        <div>\n          { sortOptions.length > 1 ?\n            <DropdownModal close={()=>setDisplaySort(false)} isOpen={displaySort}>\n              <DropdownButton\n                isOpen={displaySort}\n                toggle={()=>setDisplaySort(prev => !prev)}\n                enText={\"Sort\"}\n                heText={\"מיון\"}\n              />\n              <DropdownOptionList\n                isOpen={displaySort}\n                options={sortOptions.map(option => ({type: option, name: option, heName: Sefaria._(option, \"FilterableList\")}))}\n                currOptionSelected={sortOption}\n                handleClick={setSort}\n              />\n            </DropdownModal>\n            : null\n          }\n        </div>\n      </div> : null }\n      { !oldDesign && showFilterHeader ? (\n        <div className=\"filter-bar-new\">\n          <div className=\"filter-input\">\n            <SearchButton />\n            <input\n              type=\"text\"\n              placeholder={Sefaria._(\"Search\")}\n              name=\"filterableListInput\"\n              value={filter}\n              onChange={e => setFilter(e.target.value)}\n            />\n          </div>\n          <div className=\"filter-sort-wrapper\">\n            <span className=\"systemText\">\n              <InterfaceText>Sort by</InterfaceText>\n            </span>\n            { sortOptions.map(option =>(\n              <span\n                key={option}\n                className={classNames({'sans-serif': 1, 'sort-option': 1, noselect: 1, active: sortOption === option})}\n                onClick={() => setSort(option)}\n              >\n                <InterfaceText context=\"FilterableList\">{option}</InterfaceText>\n              </span>\n            ))}\n          </div>\n        </div>\n      ) : null}\n      {\n        loading ? <LoadingMessage /> :\n        <div className={\"filter-content\" + (containerClass ? \" \" + containerClass : \"\")}>\n          {dataUpToPage.length ?\n          <>\n            { !!renderHeader ? renderHeader({filter}) : null }\n            { dataUpToPage.map(renderItem) }\n          </>\n          : <>{!!renderEmptyList ? renderEmptyList({filter}) : null}</>}\n          { !!renderFooter ? renderFooter({filter}) : null }\n        </div>\n      }\n    </div>\n  );\n};\nFilterableList.propTypes = {\n  filterFunc:       PropTypes.func.isRequired,\n  sortFunc:         PropTypes.func.isRequired,\n  renderItem:       PropTypes.func.isRequired,\n  sortOptions:      PropTypes.array.isRequired,\n  getData:          PropTypes.func,   // At least one of `getData` or `data` is required\n  data:             PropTypes.array,\n  renderEmptyList:  PropTypes.func,\n  renderHeader:     PropTypes.func,\n  renderFooter:     PropTypes.func,\n  showFilterHeader: PropTypes.bool,\n};\n\n\nclass TabView extends Component {\n  constructor(props) {\n    super(props);\n    const { currTabName } = props;\n    this.state = {\n      currTabName: typeof currTabName === 'undefined' ? this.props.tabs[0].id : currTabName\n    };\n  }\n  componentDidMount() {\n    if (this.props.currTabName === null) {\n      this.props.setTab(this.props.tabs[0].id, true)\n    }\n  }\n  openTab(index) {\n    this.setState({currTabIndex: index});\n  }\n  getTabIndex() {\n    let tabIndex;\n    if (typeof this.props.currTabName === 'undefined') {\n      tabIndex = this.props.tabs.findIndex(tab => tab.id === this.state.currTabName ? true : false)\n    } else if (this.props.currTabName === null) {\n      tabIndex = 0;\n    } else {\n      tabIndex = this.props.tabs.findIndex(tab => tab.id === this.props.currTabName ? true : false)\n    }\n    if(tabIndex === -1) {\n      tabIndex = 0;\n    }\n    return tabIndex;\n  }\n  onClickTab(e, clickTabOverride) {\n    if (clickTabOverride) {\n      clickTabOverride()\n    } else {\n      let target = $(event.target);\n      while (!target.attr(\"data-tab-index\")) { target = target.parent(); }\n      const tabIndex = parseInt(target.attr(\"data-tab-index\"));\n      const { onClickArray, setTab, tabs } = this.props;\n      if (onClickArray && onClickArray[tabIndex]) {\n        onClickArray[tabIndex]();\n      } else {\n        this.openTab(tabIndex);\n        const tab = this.props.tabs[tabIndex];\n        setTab && setTab(tab.id);\n      }\n    }\n  }\n  renderTab(tab, index) {\n    const currTabIndex = this.getTabIndex();\n    return (\n      <div className={classNames({active: currTabIndex === index, justifyright: tab.justifyright})} key={tab.id} data-tab-index={index} onClick={(e) => {this.onClickTab(e, tab.clickTabOverride)}}>\n        {this.props.renderTab(tab, index)}\n      </div>\n    );\n  }\n  render() {\n    const currTabIndex = this.getTabIndex();\n    const classes = classNames({\"tab-view\": 1, [this.props.containerClasses]: 1});\n    return (\n      <div className={classes}>\n        <div className=\"tab-list sans-serif\">\n          {this.props.tabs.map(this.renderTab)}\n        </div>\n        { React.Children.toArray(this.props.children)[currTabIndex] }\n      </div>\n    );\n  }\n}\nTabView.propTypes = {\n  tabs:         PropTypes.array.isRequired,  // array of objects of any form. only requirement is each tab has a unique 'id' field. These objects will be passed to renderTab.\n  renderTab:    PropTypes.func.isRequired,\n  currTabName:  PropTypes.string,  // optional. If passed, TabView will be controlled from outside\n  setTab:       PropTypes.func,    // optional. If passed, TabView will be controlled from outside\n  onClickArray: PropTypes.object,  // optional. If passed, TabView will be controlled from outside\n};\n\n\nclass DropdownOptionList extends Component {\n  render() {\n    return (\n      <div className={(this.props.isOpen) ? \"dropdown-option-list\" :\"dropdown-option-list hidden\"}>\n        <table>\n          <tbody>\n            {\n              this.props.options.map( (option, iSortTypeObj) => {\n                const tempClasses = classNames({'filter-title': 1, unselected: this.props.currOptionSelected !== option.type});\n                return (\n                  <tr key={option.type} className={tempClasses} onClick={()=>{ this.props.handleClick(option.type); }} tabIndex={`${iSortTypeObj}`} onKeyPress={e => {e.charCode == 13 ? this.props.handleClick(option.type) : null}} aria-label={`Sort by ${option.name}`}>\n                    <td>\n                      <img className=\"dropdown-option-check\" src=\"/static/img/check-mark.svg\" alt={`${option.name} sort selected`}/>\n                    </td>\n                    <td className=\"dropdown-option-list-label\">\n                      <span className=\"int-en\">{option.name}</span>\n                      <span className=\"int-he\" dir=\"rtl\">{option.heName}</span>\n                    </td>\n                  </tr>\n                );\n              })\n            }\n          </tbody>\n        </table>\n      </div>\n    );\n  }\n}\nDropdownOptionList.propTypes = {\n  initialTabIndex: PropTypes.number,\n  setTab: PropTypes.func,\n  isOpen: PropTypes.bool.isRequired,\n  options: PropTypes.array.isRequired,\n  currOptionSelected: PropTypes.string.isRequired,\n  handleClick: PropTypes.func.isRequired,\n};\n\n\nconst DropdownButton = ({isOpen, toggle, enText, heText, buttonStyle}) => {\n  const filterTextClasses = classNames({ \"dropdown-button\": 1, active: isOpen, buttonStyle });\n  return (\n    <div className={ filterTextClasses } tabIndex=\"0\" onClick={toggle} onKeyPress={(e) => {e.charCode == 13 ? toggle(e):null}}>\n      <InterfaceText text={{en: enText, he: heText}} />\n      {isOpen ? <img src=\"/static/img/arrow-up.png\" alt=\"\"/> : <img src=\"/static/img/arrow-down.png\" alt=\"\"/>}\n    </div>\n  );\n};\nDropdownButton.propTypes = {\n  isOpen:      PropTypes.bool.isRequired,\n  toggle:      PropTypes.func.isRequired,\n  enText:      PropTypes.string.isRequired,\n  heText:      PropTypes.string.isRequired,\n  buttonStyle: PropTypes.bool,\n};\n\n\nclass DropdownModal extends Component {\n  componentDidMount() {\n    document.addEventListener('mousedown', this.handleClickOutside, false);\n  }\n  componentWillUnmount() {\n    document.removeEventListener('mousedown', this.handleClickOutside, false);\n  }\n  handleClickOutside(event) {\n    const domNode = ReactDOM.findDOMNode(this);\n    if ((!domNode || !domNode.contains(event.target)) && this.props.isOpen) {\n      this.props.close();\n    }\n  }\n  render() {\n    return (\n      <div className={classNames({\"dropdown-modal\": 1, \"position-unset\": this.props.positionUnset, \"sans-serif\": 1})}>\n        { this.props.children }\n      </div>\n    );\n  }\n}\nDropdownModal.propTypes = {\n  close:   PropTypes.func.isRequired,\n  isOpen:  PropTypes.bool.isRequired,\n  positionUnset: PropTypes.bool,  // for search filters\n};\n\n\nclass Link extends Component {\n  handleClick(e) {\n    e.preventDefault();\n    this.props.onClick();\n  }\n  render() {\n    return <a\n              className={this.props.className}\n              href={this.props.href}\n              onClick={this.handleClick}\n              title={this.props.title}>{this.props.children}</a>\n  }\n}\nLink.propTypes = {\n  href:    PropTypes.string.isRequired,\n  onClick: PropTypes.func,\n  title:   PropTypes.string.isRequired,\n};\n\n\nclass GlobalWarningMessage extends Component {\n  close() {\n    Sefaria.globalWarningMessage = null;\n    this.forceUpdate();\n  }\n  render() {\n    return Sefaria.globalWarningMessage ?\n      <div id=\"globalWarningMessage\">\n        <i className='close fa fa-times' onClick={this.close}></i>\n        <div dangerouslySetInnerHTML={ {__html: Sefaria.globalWarningMessage} }></div>\n      </div>\n      : null;\n  }\n}\n\n\nclass TextBlockLink extends Component {\n  // Monopoly card style link with category color at top\n  // This component is seriously overloaded :grimacing:\n\n  render() {\n    let { book, category, title, heTitle, showSections, sref, heRef, displayValue, heDisplayValue, position, url_string, recentItem, currVersions, sideColor, saved, sheetTitle, sheetOwner, timeStamp, intlang } = this.props;\n    const index    = Sefaria.index(book);\n    category = category || (index ? index.primary_category : \"Other\");\n    const style    = {\"borderColor\": Sefaria.palette.categoryColor(category)};\n    title    = title   || (showSections ? sref : book);\n    heTitle  = heTitle || (showSections ? heRef : index.heTitle);\n    const hlang = intlang ? \"int-he\": \"he\";\n    const elang = intlang ? \"int-en\": \"en\";\n    let byLine;\n    if (!!sheetOwner && sideColor) {\n      title = sheetTitle.stripHtml();\n      heTitle = title;\n      byLine = sheetOwner;\n    }\n    const subtitle = displayValue ? (\n        <span className=\"blockLinkSubtitle\">\n            <span className={elang}>{displayValue}</span>\n            <span className={hlang}>{heDisplayValue}</span>\n        </span>\n    ) : null;\n\n    position = position || 0;\n    const isSheet = book === 'Sheet';\n    const classes  = classNames({refLink: !isSheet, sheetLink: isSheet, blockLink: 1, recentItem, calendarLink: (subtitle != null), saved });\n    url_string = url_string ? url_string : sref;\n    let url;\n    if (isSheet) {\n      url = `/sheets/${Sefaria.normRef(url_string).replace('Sheet.','')}`\n    } else {\n      url = \"/\" + Sefaria.normRef(url_string) + Sefaria.util.getUrlVersionsParams(currVersions).replace(\"&\",\"?\");\n    }\n\n    if (sideColor) {\n      return (\n        <a href={url} className={classes} data-ref={sref} data-ven={currVersions.en} data-vhe={currVersions.he} data-position={position}>\n          <div className=\"sideColorLeft\" data-ref-child={true}>\n            <div className=\"sideColor\" data-ref-child={true} style={{backgroundColor: Sefaria.palette.categoryColor(category)}} />\n            <div className=\"sideColorInner\" data-ref-child={true}>\n              <span className={elang} data-ref-child={true}>{title}{!!sheetOwner ? (<i className=\"byLine\" data-ref-child={true}>{byLine}</i>) : null}</span>\n              <span className={hlang} data-ref-child={true}>{heTitle}{!!sheetOwner ? (<i className=\"byLine\" data-ref-child={true}>{byLine}</i>) : null}</span>\n            </div>\n          </div>\n          <div className=\"sideColorRight\">\n            { saved ? <SaveButton historyObject={{ ref: sref, versions: currVersions }} /> : null }\n            { !saved && timeStamp ?\n              <span className=\"sans-serif\">\n                { Sefaria.util.naturalTime(timeStamp) }\n              </span>: null\n            }\n          </div>\n        </a>\n      );\n    }\n    return (\n      <a href={url} className={classes} data-ref={sref} data-ven={currVersions.en} data-vhe={currVersions.he} data-position={position} style={style}>\n        <span className={elang}>{title}</span>\n        <span className={hlang}>{heTitle}</span>\n        {subtitle}\n      </a>\n    );\n  }\n}\nTextBlockLink.propTypes = {\n  sref:            PropTypes.string.isRequired,\n  currVersions:    PropTypes.object.isRequired,\n  heRef:           PropTypes.string,\n  book:            PropTypes.string,\n  category:        PropTypes.string,\n  title:           PropTypes.string,\n  heTitle:         PropTypes.string,\n  displayValue:    PropTypes.string,\n  heDisplayValue:  PropTypes.string,\n  url_string:      PropTypes.string,\n  showSections:    PropTypes.bool,\n  recentItem:      PropTypes.bool,\n  position:        PropTypes.number,\n  sideColor:       PropTypes.bool,\n  saved:           PropTypes.bool,\n  sheetTitle:      PropTypes.string,\n  sheetOwner:      PropTypes.string,\n  timeStamp:       PropTypes.number,\n};\nTextBlockLink.defaultProps = {\n  currVersions: {en:null, he:null},\n};\n\n\nclass LanguageToggleButton extends Component {\n  toggle(e) {\n    e.preventDefault();\n    this.props.toggleLanguage();\n  }\n  render() {\n    var url = this.props.url || \"\";\n    return (<a href={url} className=\"languageToggle\" onClick={this.toggle}>\n              <img className=\"en\" src=\"/static/img/aleph.svg\" alt=\"Hebrew Language Toggle Icon\" />\n              <img className=\"he\" src=\"/static/img/aye.svg\" alt=\"English Language Toggle Icon\" />\n            </a>);\n  }\n}\nLanguageToggleButton.propTypes = {\n  toggleLanguage: PropTypes.func.isRequired,\n  url:            PropTypes.string,\n};\n\n\nconst ColorBarBox = ({tref, children}) =>  (\n  <div className=\"colorBarBox\" style={{\"borderColor\": Sefaria.palette.refColor(tref)}}>{children}</div>\n);\n\n\nconst DangerousInterfaceBlock = ({en, he, classes}) => (\n        <div className={classes}>\n          <InterfaceText html={{\"en\": en, \"he\":he}} />\n        </div>\n    );\nDangerousInterfaceBlock.propTypes = {\n    en: PropTypes.string,\n    he: PropTypes.string,\n    classes: PropTypes.string\n};\n\n\nconst SimpleInterfaceBlock = ({en, he, classes}) => (\n        <div className={classes}>\n            <InterfaceText text={{en:en, he:he}} />\n        </div>\n    );\nSimpleInterfaceBlock.propTypes = {\n    en: PropTypes.string,\n    he: PropTypes.string,\n    classes: PropTypes.string\n};\n\n\nconst SimpleContentBlock = ({children, classes}) => (\n        <div className={classes}>\n          {children}\n        </div>\n    );\nSimpleContentBlock.propTypes = {\n    classes: PropTypes.string\n};\n\n\nconst SimpleLinkedBlock = ({en, he, url, classes, aclasses, children, onClick, openInNewTab}) => (\n  <div className={classes} onClick={onClick}>\n    <a href={url} className={aclasses} target={openInNewTab ? \"_blank\" : \"_self\"}>\n      <InterfaceText text={{en, he}}/>\n    </a>\n    {children}\n  </div>\n);\nSimpleLinkedBlock.propTypes = {\n    en: PropTypes.string,\n    he: PropTypes.string,\n    url: PropTypes.string,\n    classes: PropTypes.string,\n    aclasses: PropTypes.string\n};\n\n\nclass BlockLink extends Component {\n  render() {\n    var interfaceClass = this.props.interfaceLink ? 'int-' : '';\n    var cn = {blockLink: 1};\n    var linkClass = this.props.title.toLowerCase().replace(\" \", \"-\") + \"-link\";\n    cn[linkClass] = 1;\n    var classes = classNames(cn);\n      return (<a className={classes} href={this.props.target}>\n              {this.props.image ? <img src={this.props.image} alt=\"\" /> : null}\n              <span className={`${interfaceClass}en`}>{this.props.title}</span>\n              <span className={`${interfaceClass}he`}>{this.props.heTitle}</span>\n           </a>);\n  }\n}\nBlockLink.propTypes = {\n  title:         PropTypes.string,\n  heTitle:       PropTypes.string,\n  target:        PropTypes.string,\n  image:         PropTypes.string,\n  interfaceLink: PropTypes.bool\n};\nBlockLink.defaultProps = {\n  interfaceLink: false\n};\n\n\nclass ToggleSet extends Component {\n  // A set of options grouped together.\n  render() {\n    let classes = {toggleSet: 1, separated: this.props.separated, blueStyle: this.props.blueStyle };\n    classes[this.props.name] = 1;\n    classes = classNames(classes);\n    const width = 100.0 - (this.props.separated ? (this.props.options.length - 1) * 3 : 0);\n    const style = {width: (width/this.props.options.length) + \"%\"};\n    const label = this.props.label ? (<span className=\"toggle-set-label\">{this.props.label}</span>) : null;\n    return (\n      <div className={classes} role=\"radiogroup\" aria-label={this.props.ariaLabel}>\n        {label}\n        <div className=\"toggleSetToggleBox\">\n          {this.props.options.map((option) => (\n          <ToggleOption\n            name={option.name}\n            key={option.name}\n            set={this.props.name}\n            role={option.role}\n            ariaLabel={option.ariaLabel}\n            on={this.props.currentValue == option.name}\n            setOption={this.props.setOption}\n            style={style}\n            image={option.image}\n            fa={option.fa}\n            content={option.content} />))}\n        </div>\n      </div>);\n  }\n}\nToggleSet.propTypes = {\n  name:          PropTypes.string.isRequired,\n  label:         PropTypes.string,\n  setOption:     PropTypes.func.isRequired,\n  currentValue:  PropTypes.string,\n  options:       PropTypes.array.isRequired,\n  separated:     PropTypes.bool,\n  blueStyle:     PropTypes.bool,\n  role:          PropTypes.string,\n  ariaLabel:     PropTypes.string\n};\n\n\nclass ToggleOption extends Component {\n  // A single option in a ToggleSet\n\n  handleClick() {\n    this.props.setOption(this.props.set, this.props.name);\n    if (Sefaria.site) { Sefaria.track.event(\"Reader\", \"Display Option Click\", this.props.set + \" - \" + this.props.name); }\n  }\n  checkKeyPress(e){\n    if (e.keyCode === 39  || e.keyCode === 40) { //39 is right arrow -- 40 is down\n        $(e.target).siblings(\".toggleOption\").attr(\"tabIndex\",\"-1\");\n        $(e.target).attr(\"tabIndex\",\"-1\");\n        $(e.target).next(\".toggleOption\").focus().attr(\"tabIndex\",\"0\");\n    }\n    else if (e.keyCode === 37 || e.keyCode === 38) { //37 is left arrow -- 38 is up\n        $(e.target).siblings(\".toggleOption\").attr(\"tabIndex\",\"-1\");\n        $(e.target).attr(\"tabIndex\",\"-1\");\n        $(e.target).prev(\".toggleOption\").focus().attr(\"tabIndex\",\"0\");\n    }\n    else if (e.keyCode === 13) { //13 is enter\n        $(e.target).trigger(\"click\");\n    }\n    else if (e.keyCode === 9) { //9 is tab\n        var lastTab = $(\"div[role='dialog']\").find(':tabbable').last();\n        var firstTab = $(\"div[role='dialog']\").find(':tabbable').first();\n        if (e.shiftKey) {\n          if ($(e.target).is(firstTab)) {\n            $(lastTab).focus();\n            e.preventDefault();\n          }\n        }\n        else {\n          if ($(e.target).is(lastTab)) {\n            $(firstTab).focus();\n            e.preventDefault();\n          }\n        }\n    }\n    else if (e.keyCode === 27) { //27 is escape\n        e.stopPropagation();\n        $(\".mask\").trigger(\"click\");\n    }\n  }\n  render() {\n    let classes = {toggleOption: 1, on: this.props.on };\n    const tabIndexValue = this.props.on ? 0 : -1;\n    const ariaCheckedValue = this.props.on ? \"true\" : \"false\";\n    classes[this.props.name] = 1;\n    classes = classNames(classes);\n    const content = this.props.image ? (<img src={this.props.image} alt=\"\"/>) :\n                      this.props.fa ? (<i className={\"fa fa-\" + this.props.fa}></i>) :\n                        typeof this.props.content === \"string\" ? (<span dangerouslySetInnerHTML={ {__html: this.props.content} }></span>) :\n                          this.props.content;\n    return (\n      <div\n        role={this.props.role}\n        aria-label= {this.props.ariaLabel}\n        tabIndex = {this.props.role == \"radio\"? tabIndexValue : \"0\"}\n        aria-checked={ariaCheckedValue}\n        className={classes}\n        onKeyDown={this.checkKeyPress}\n        onClick={this.handleClick}>\n        {content}\n      </div>);\n  }\n}\n\n         //style={this.props.style}\n\nconst requestWithCallBack = ({url, setSavingStatus, redirect, type=\"POST\", data={}, redirect_params}) => {\n    let ajaxPayload = {url, type};\n    if (type === \"POST\") {\n      ajaxPayload.data = {json: JSON.stringify(data)};\n    }\n    $.ajax({\n      ...ajaxPayload,\n      success: function(result) {\n        if (\"error\" in result) {\n          if (setSavingStatus) {\n            setSavingStatus(false);\n          }\n          alert(result.error);\n        } else {\n          redirect();\n        }\n      }\n    }).fail(function() {\n      alert(Sefaria._(\"Something went wrong. Sorry!\"));\n    });\n}\n\n const TopicToCategorySlug = function(topic, category=null) {\n   //helper function for AdminEditor\n   if (!category) {\n     category = Sefaria.topicTocCategory(topic.slug);\n   }\n   let initCatSlug = category ? category.slug : \"Main Menu\";    //category topics won't be found using topicTocCategory,\n   // so all category topics initialized to \"Main Menu\"\n   if (\"displays-under\" in topic?.links && \"displays-above\" in topic?.links) {\n     // this case handles categories that are not top level but have children under them\n     const displayUnderLinks = topic.links[\"displays-under\"]?.links;\n     if (displayUnderLinks && displayUnderLinks.length === 1) {\n       initCatSlug = displayUnderLinks[0].topic;\n     }\n   }\n   return initCatSlug;\n }\n\nfunction useHiddenButtons() {\n    const [hideButtons, setHideButtons] = useState(true);\n    const handleMouseOverAdminButtons = () => {\n        setHideButtons(false);\n        setTimeout(() => setHideButtons(true), 3000);\n    }\n    return [hideButtons, handleMouseOverAdminButtons];\n}\n\nconst AllAdminButtons = ({ buttonOptions, buttonsToDisplay, adminClasses }) => {\n  return (\n    <span className={adminClasses}>\n      {buttonsToDisplay.map((key, i) => {\n        const top = i === 0;\n        const bottom = i === buttonsToDisplay.length - 1;\n        const [buttonText, toggleAddingTopics] = buttonOptions[key];\n        return (\n          <AdminEditorButton\n            text={buttonText}\n            top={top}\n            bottom={bottom}\n            toggleAddingTopics={toggleAddingTopics}\n          />\n        );\n      })}\n    </span>\n  );\n};\n\n\nconst CategoryHeader =  ({children, type, data = [], buttonsToDisplay = [\"subcategory\", \"edit\"]}) => {\n  /*\n  Provides an interface for using admin tools.\n  `type` is 'sources', 'cats', 'books' or 'topics'\n  `data` is list when `type` === 'cats' which tells us where we are in the TOC tree,\n        for `type` === 'books' it's the name of the book\n        for `type` === 'topics' it's a dictionary of the topic object\n        for `type` === 'sources' it's a list where the first item is topic slug and second item is source data\n  `buttonsToDisplay` is a list that says in the specified order we want all of the buttons in buttonOptions\n   */\n  const [editCategory, toggleEditCategory] = useEditToggle();\n  const [addCategory, toggleAddCategory] = useEditToggle();\n  const [reorderCategory, toggleReorderCategory] = useEditToggle();\n  const [addSource, toggleAddSource] = useEditToggle();\n  const [addSection, toggleAddSection] = useEditToggle();\n  const [hiddenButtons, setHiddenButtons] = useHiddenButtons(true);\n  const buttonOptions = {\"subcategory\": [\"Add sub-category\", toggleAddCategory],\n                          \"source\": [\"Add a source\", toggleAddSource],\n                          \"section\": [\"Add section\", toggleAddSection],\n                          \"reorder\": [\"Reorder sources\", toggleReorderCategory],\n                          \"edit\": [\"Edit\", toggleEditCategory]};\n\n\n  let wrapper = \"\";\n  let adminButtonsSpan = null;\n  if (Sefaria.is_moderator) {\n    if (editCategory) {\n      adminButtonsSpan = <CategoryEditorWrapper toggle={toggleEditCategory} data={data} type={type}/>;\n    } else if (addSource) {\n      adminButtonsSpan = <SourceEditor topic={data.slug} close={toggleAddSource}/>;\n    } else if (addCategory) {\n      adminButtonsSpan = <CategoryAdderWrapper toggle={toggleAddCategory} data={data} type={type}/>;\n    } else if (addSection) {\n      window.location = `/add/${data}`;\n    } else if (reorderCategory) {\n      adminButtonsSpan = <ReorderEditorWrapper toggle={toggleReorderCategory} data={data} type={type}/>;  // reordering sources on a topic page\n    } else {\n      wrapper = \"headerWithAdminButtons\";\n      const adminClasses = classNames({adminButtons: 1, hiddenButtons});\n        adminButtonsSpan = <AllAdminButtons\n        buttonOptions={buttonOptions}\n        buttonsToDisplay={buttonsToDisplay}\n        adminClasses={adminClasses}\n      />;\n    }\n  }\n  return <span className={wrapper}><span onMouseEnter={() => setHiddenButtons()}>{children}</span><span>{adminButtonsSpan}</span></span>;\n}\nconst ReorderEditorWrapper = ({toggle, type, data}) => {\n    /*\n    Wrapper for ReorderEditor that can reorder topics, categories, and sources.  It is only used for reordering topics and categories at the\n    root of the topic or category TOC, so an empty array for `data` is passed indicating these cases.  In the case of reordering sources, `data`\n    is a dictionary of the topic whose sources can be accessed via its `refs` field.\n     */\n    const reorderingSources = data.length !== 0;\n    const _filterAndSortRefs = (refs) => {\n        if (!refs) {\n            return [];\n        }\n        // a topic can be connected to refs in one language and not in another so filter out those that are not in current interface lang\n        refs = refs.filter((x) => !x.is_sheet && x?.order?.availableLangs?.includes(Sefaria.interfaceLang.slice(0, 2)));\n        // then sort the refs and take only first 30 sources because admins don't want to reorder hundreds of sources\n        return refs.sort((a, b) => refSort('relevance', [a.ref, a], [b.ref, b])).slice(0, 30);\n    }\n    const _createURLs = (type, data) => {\n      if (reorderingSources) {\n        return {\n          url: `/api/source/reorder?topic=${data.slug}&lang=${Sefaria.interfaceLang}`,\n          redirect: `/topics/${data.slug}`,\n          origItems: _filterAndSortRefs(data.refs?.about?.refs) || [],\n        }\n      }\n      switch (type) {  // at /texts or /topics\n        case 'topics':\n            return {\n              url: '/api/topic/reorder',\n              redirect: '/topics',\n              origItems: Sefaria.topic_toc\n            };\n        case 'cats':\n          return {\n            url: '/api/category?reorder=1',\n            redirect: '/texts',\n            origItems: Sefaria.toc\n          };\n      }\n    }\n    const {url, redirect, origItems} = _createURLs(type, data);\n    return <ReorderEditor\n            close={toggle}\n            type={!reorderingSources ? type : 'sources'}\n            origItems={origItems}\n            postURL={url}\n            redirect={redirect}\n          />;\n}\n\nconst EditorForExistingTopic = ({ toggle, data }) => {\n  const prepAltTitles = (lang) => { // necessary for use with TitleVariants component\n    return data.titles.filter(x => !x.primary && x.lang === lang).map((item, i) => ({[\"name\"]: item.text, [\"id\"]: i}))\n  }\n  const initCatSlug = TopicToCategorySlug(data);\n  const origData = {\n    origSlug: data.slug,\n    origCatSlug: initCatSlug,\n    origEnTitle: data.primaryTitle.en,\n    origHeTitle: data.primaryTitle.he || \"\",\n    origEnDescription: data.description?.en || \"\",\n    origHeDescription: data.description?.he || \"\",\n    origEnCategoryDescription: data.categoryDescription?.en || \"\",\n    origHeCategoryDescription: data.categoryDescription?.he || \"\",\n    origEnAltTitles: prepAltTitles('en'),\n    origHeAltTitles: prepAltTitles('he'),\n    origBirthPlace: data?.properties?.birthPlace?.value,\n    origHeBirthPlace: data?.properties?.heBirthPlace?.value,\n    origHeDeathPlace: data?.properties?.heDeathPlace?.value,\n    origBirthYear: data?.properties?.birthYear?.value,\n    origDeathPlace: data?.properties?.deathPlace?.value,\n    origDeathYear: data?.properties?.deathYear?.value,\n    origEra: data?.properties?.era?.value,\n    origImage: data?.image,\n\n  };\n\n  const origWasCat = \"displays-above\" in data?.links;\n\n  return (\n    <TopicEditor\n      origData={origData}\n      origWasCat={origWasCat}\n      close={toggle}\n    />\n  );\n};\n\n\n\nconst EditorForExistingCategory = ({ toggle, data }) => {\n  let tocObject = Sefaria.tocObjectByCategories(data);\n  const origDesc = {en: tocObject.enDesc, he: tocObject.heDesc};\n  const origCategoryDesc = {en: tocObject.enShortDesc, he: tocObject.heShortDesc};\n  const origData = {\n    origEn: tocObject.category,\n    origHe: tocObject.heCategory,\n    origDesc,\n    origCategoryDesc,\n    isPrimary: tocObject.isPrimary\n  };\n\n  return (\n    <CategoryEditor\n      origData={origData}\n      close={toggle}\n      origPath={data.slice(0, -1)}\n    />\n  );\n};\n\n\nconst CategoryEditorWrapper = ({toggle, data, type}) => {\n  switch (type) {\n    case \"books\":\n      return <EditTextInfo initTitle={data} close={toggle}/>;\n    case \"sources\":\n        const [topicSlug, refData] = data;\n        return <SourceEditor topic={topicSlug} origData={refData} close={toggle}/>;\n    case \"cats\":\n        return <EditorForExistingCategory toggle={toggle} data={data} />;\n    case \"topics\":\n        return <EditorForExistingTopic toggle={toggle} data={data} />;\n  }\n}\n\nconst CategoryAdderWrapper = ({toggle, data, type}) => {\n      const origData = {origEnTitle: \"\"};\n      switch (type) {\n        case \"cats\":\n          return <CategoryEditor origData={origData} close={toggle} origPath={data}/>;\n        case \"topics\":\n          origData['origCatSlug'] = data;\n          return <TopicEditor origData={origData} close={toggle} origWasCat={false}/>;\n      }\n  }\n\nclass SearchButton extends Component {\n  render() {\n    return (<span className=\"readerNavMenuSearchButton\" onClick={this.props.onClick}>\n      <img src=\"/static/icons/iconmonstr-magnifier-2.svg\" />\n    </span>);\n  }\n}\n\n\nclass MenuButton extends Component {\n  render() {\n    var isheb = Sefaria.interfaceLang == \"hebrew\";\n    var icon = this.props.compare ? (isheb ?\n      <i className=\"fa fa-chevron-right\"></i> : <i className=\"fa fa-chevron-left\"></i>) :\n        (<i className=\"fa fa-bars\"></i>);\n    return (<span className=\"readerNavMenuMenuButton\" onClick={this.props.onClick}>{icon}</span>);\n  }\n}\nMenuButton.propTypes = {\n  onClick: PropTypes.func,\n  compare: PropTypes.bool,\n};\n\n\nclass CloseButton extends Component {\n  onClick(e) {\n    e.preventDefault();\n    this.props.onClick();\n  }\n  render() {\n    if (this.props.icon == \"circledX\"){\n      var icon = <img src=\"/static/icons/circled-x.svg\" />;\n    } else if (this.props.icon == \"chevron\") {\n      var icon = <i className=\"fa fa-chevron-left\"></i>\n    } else {\n      var icon = \"×\";\n    }\n    var classes = classNames({readerNavMenuCloseButton: 1, circledX: this.props.icon === \"circledX\"});\n    var url = this.props.url || \"\";\n    return (<a href={url} className={classes} onClick={this.onClick}>{icon}</a>);\n  }\n}\n\n\nclass DisplaySettingsButton extends Component {\n  render() {\n    let style = this.props.placeholder ? {visibility: \"hidden\"} : {};\n    let icon;\n\n    if (Sefaria._siteSettings.TORAH_SPECIFIC) {\n      icon =\n        <InterfaceText>\n        <EnglishText> <img src=\"/static/img/lang_icon_english.svg\" alt=\"Toggle Reader Menu Display Settings\"/></EnglishText>\n        <HebrewText><img src=\"/static/img/lang_icon_hebrew.svg\" alt=\"Toggle Reader Menu Display Settings\"/></HebrewText>\n        </InterfaceText>;\n    } else {\n      icon = <span className=\"textIcon\">Aa</span>;\n    }\n    return (<a\n              className=\"readerOptions\"\n              tabIndex=\"0\"\n              role=\"button\"\n              aria-haspopup=\"true\"\n              aria-label=\"Toggle Reader Menu Display Settings\"\n              style={style}\n              onClick={this.props.onClick}\n              onKeyPress={function(e) {e.charCode == 13 ? this.props.onClick(e):null}.bind(this)}>\n              {icon}\n            </a>);\n  }\n}\nDisplaySettingsButton.propTypes = {\n  onClick: PropTypes.func,\n  placeholder: PropTypes.bool,\n};\n\n\nfunction InterfaceLanguageMenu({currentLang, translationLanguagePreference, setTranslationLanguagePreference}){\n  const [isOpen, setIsOpen] = useState(false);\n  const wrapperRef = useRef(null);\n\n  const getCurrentPage = () => {\n    return isOpen ? (encodeURIComponent(Sefaria.util.currentPath())) : \"/\";\n  }\n  const handleClick = (e) => {\n    e.stopPropagation();\n    setIsOpen(isOpen => !isOpen);\n  }\n  const handleTransPrefResetClick = (e) => {\n    e.stopPropagation();\n    setTranslationLanguagePreference(null);\n  };\n  const handleHideDropdown = (event) => {\n      if (event.key === 'Escape') {\n          setIsOpen(false);\n      }\n  };\n  const handleClickOutside = (event) => {\n      if (\n          wrapperRef.current &&\n          !wrapperRef.current.contains(event.target)\n      ) {\n          setIsOpen(false);\n      }\n  };\n\n  useEffect(() => {\n      document.addEventListener('keydown', handleHideDropdown, true);\n      document.addEventListener('click', handleClickOutside, true);\n      return () => {\n          document.removeEventListener('keydown', handleHideDropdown, true);\n          document.removeEventListener('click', handleClickOutside, true);\n      };\n  }, []);\n\n  return (\n      <div className=\"interfaceLinks\" ref={wrapperRef}>\n        <a className=\"interfaceLinks-button\" onClick={handleClick}><img src=\"/static/icons/globe-wire.svg\" alt={Sefaria._('Toggle Interface Language Menu')}/></a>\n        <div className={`interfaceLinks-menu ${ isOpen ? \"open\" : \"closed\"}`}>\n          <div className=\"interfaceLinks-header\">\n            <InterfaceText>Site Language</InterfaceText>\n          </div>\n          <div className=\"interfaceLinks-options\">\n            <a className={`interfaceLinks-option int-bi int-he ${(currentLang == 'hebrew') ? 'active':''}`} href={`/interface/hebrew?next=${getCurrentPage()}`}>עברית</a>\n            <a className={`interfaceLinks-option int-bi int-en ${(currentLang == 'english') ? 'active' : ''}`} href={`/interface/english?next=${getCurrentPage()}`}>English</a>\n          </div>\n          { !!translationLanguagePreference ? (\n            <>\n              <div className=\"interfaceLinks-header\">\n                <InterfaceText>Preferred Translation</InterfaceText>\n              </div>\n              <div className=\"interfaceLinks-options trans-pref-header-container\">\n                <InterfaceText>{Sefaria.translateISOLanguageCode(translationLanguagePreference, true)}</InterfaceText>\n                <a className=\"trans-pref-reset\" onClick={handleTransPrefResetClick}>\n                  <img src=\"/static/img/circled-x.svg\" className=\"reset-btn\" />\n                  <span className=\"smallText\">\n                    <InterfaceText>Reset</InterfaceText>\n                  </span>\n                </a>\n              </div>\n            </>\n          ) : null}\n        </div>\n      </div>\n  );\n}\nInterfaceLanguageMenu.propTypes = {\n  currentLang: PropTypes.string,\n  translationLanguagePreference: PropTypes.string,\n};\n\n\nfunction SaveButton({historyObject, placeholder, tooltip, toggleSignUpModal}) {\n  if (!historyObject) { placeholder = true; }\n  const isSelected = () => !!Sefaria.getSavedItem(historyObject);\n  const [selected, setSelected] = useState(placeholder || isSelected());\n  useEffect(() => {\n    if (placeholder) { return; }\n    setSelected(isSelected())\n  }, [historyObject && historyObject.ref]);\n\n  const [isPosting, setPosting] = useState(false);\n\n  const style = placeholder ? {visibility: 'hidden'} : {};\n  const classes = classNames({saveButton: 1, \"tooltip-toggle\": tooltip});\n  const altText = placeholder ? '' :\n      `${Sefaria._(selected ? \"Remove\" : \"Save\")} \"${historyObject.sheet_title ?\n          historyObject.sheet_title.stripHtml() : Sefaria._r(historyObject.ref)}\"`;\n\n  function onClick(event) {\n    if (isPosting) { return; }\n    event.preventDefault();\n    setPosting(true);\n    Sefaria.track.event(\"Saved\", \"saving\", historyObject.ref);\n    Sefaria.toggleSavedItem(historyObject)\n        .then(() => { setSelected(isSelected()); }) // since request is async, check if it's selected from data\n        .catch(e => { if (e == 'notSignedIn') { toggleSignUpModal(); }})\n        .finally(() => { setPosting(false); });\n  }\n\n  return (\n    <ToolTipped {...{ altText, classes, style, onClick }}>\n      { selected ? <img src=\"/static/icons/bookmark-filled.svg\" alt={altText}/> :\n        <img src=\"/static/icons/bookmark.svg\" alt={altText}/> }\n    </ToolTipped>\n  );\n}\nSaveButton.propTypes = {\n  historyObject: PropTypes.shape({\n    ref: PropTypes.string,\n    versions: PropTypes.object,\n  }),\n  placeholder: PropTypes.bool,\n  tooltip: PropTypes.bool,\n  toggleSignUpModal: PropTypes.func,\n};\n\n\nconst ToolTipped = ({ altText, classes, style, onClick, children }) => {\n  const analyticsContext = useContext(AdContext)\n  return (\n  <div aria-label={altText} tabIndex=\"0\"\n    className={classes} role=\"button\"\n    style={style} onClick={e => TrackG4.gtagClick(e, onClick, `ToolTipped`, {\"classes\": classes}, analyticsContext)}\n    onKeyPress={e => {e.charCode == 13 ? onClick(e): null}}>\n    { children }\n  </div>\n)};\n\n\nclass FollowButton extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      following: props.following, // Deal w/ case where we don't know?\n      hovering: false\n    }\n  }\n  _postFollow() {\n    $.post(\"/api/follow/\" + this.props.uid, {}, data => {\n      Sefaria.following.push(this.props.uid);  // keep local following list up-to-date\n      Sefaria.track.event(\"Following\", \"New Follow\", this.props.uid);\n    });\n  }\n  _postUnfollow() {\n    $.post(\"/api/unfollow/\" + this.props.uid, {}, data => {\n      Sefaria.following = Sefaria.following.filter(i => i !== this.props.uid);  // keep local following list up-to-date\n      Sefaria.track.event(\"Following\", \"Unfollow\", this.props.uid);\n    });\n  }\n  onMouseEnter() {\n    if (this.props.disableUnfollow) { return; }\n    this.setState({hovering: true});\n  }\n  onMouseLeave() {\n    this.setState({hovering: false});\n  }\n  onClick(e) {\n    e.stopPropagation();\n    if (!Sefaria._uid) {\n      this.props.toggleSignUpModal();\n      return;\n    }\n    if (this.state.following && !this.props.disableUnfollow) {\n      this._postUnfollow();\n      this.setState({following: false});\n    } else {\n      this._postFollow();\n      this.setState({following: true, hovering: false});  // hovering:false keeps the \"unfollow\" from flashing.\n    }\n  }\n  render() {\n    const classes = this.props.classes ? this.props.classes : classNames({\n      largeFollowButton: this.props.large,\n      smallFollowButton: !this.props.large,\n      following: this.state.following,\n      hovering: this.state.hovering,\n      smallText: !this.props.large,\n    });\n    let buttonText = this.state.following ? this.state.hovering ?  \"Unfollow\" : \"Following\" : \"Follow\";\n    buttonText = buttonText === \"Follow\" && this.props.followBack ? \"Follow Back\" : buttonText;\n    return (\n      <div className={classes} onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave} onClick={this.onClick}>\n        {this.props.icon ? <img src={`/static/icons/${this.state.following ? this.state.hovering ?  \"checkmark\" : \"checkmark\" : \"follow\"}.svg`} aria-hidden=\"true\"/> : null}\n        <InterfaceText context={\"FollowButton\"}>{buttonText}</InterfaceText>\n      </div>\n    );\n  }\n}\nFollowButton.propTypes = {\n  uid:               PropTypes.number.isRequired,\n  following:         PropTypes.bool,  // is this person followed already?\n  large:             PropTypes.bool,\n  disableUnfollow:   PropTypes.bool,\n  followBack:        PropTypes.bool,\n  toggleSignUpModal: PropTypes.func,\n\n};\n\nconst TopicPictureUploader = ({slug, callback, old_filename, caption}) => {\n    /*\n    `old_filename` is passed to API so that if it exists, it is deleted\n     */\n    const fileInput = useRef(null);\n\n    const uploadImage = function(imageData, type=\"POST\") {\n      const formData = new FormData();\n      formData.append('file', imageData.replace(/data:image\\/(jpe?g|png|gif);base64,/, \"\"));\n      if (old_filename !== \"\") {\n        formData.append('old_filename', old_filename);\n      }\n      const request = new Request(\n        `${Sefaria.apiHost}/api/topics/images/${slug}`,\n        {headers: {'X-CSRFToken': Cookies.get('csrftoken')}}\n      );\n      fetch(request, {\n          method: 'POST',\n          mode: 'same-origin',\n          credentials: 'same-origin',\n          body: formData\n      }).then(response => {\n        if (!response.ok) {\n            response.text().then(resp_text=> {\n                alert(resp_text);\n            })\n        }else{\n            response.json().then(resp_json=>{\n                callback(resp_json.url);\n            });\n        }\n    }).catch(error => {\n        alert(error);\n    })};\n    const onFileSelect = (e) => {\n          const file = fileInput.current.files[0];\n          if (file == null)\n          return;\n          if (/\\.(jpe?g|png|gif)$/i.test(file.name)) {\n              const reader = new FileReader();\n\n              reader.addEventListener(\"load\", function() {\n                uploadImage(reader.result);\n              }, false);\n\n              reader.addEventListener(\"onerror\", function() {\n                alert(reader.error);\n              }, false);\n\n              reader.readAsDataURL(file);\n          } else {\n            alert('The file is not an image');\n          }\n    }\n    const deleteImage = () => {\n        const old_filename_wout_url = old_filename.split(\"/\").slice(-1);\n        const url = `${Sefaria.apiHost}/api/topics/images/${slug}?old_filename=${old_filename_wout_url}`;\n        requestWithCallBack({url, type: \"DELETE\", redirect: () => alert(\"Deleted image.\")});\n        callback(\"\");\n        fileInput.current.value = \"\";\n    }\n    return <div className=\"section\">\n            <label><InterfaceText>Picture</InterfaceText></label>\n            <label>\n              <span className=\"optional\"><InterfaceText>Please use horizontal, square, or only-slightly-vertical images for best results.</InterfaceText></span>\n            </label>\n            <div role=\"button\" title={Sefaria._(\"Add an image\")} aria-label=\"Add an image\" contentEditable={false} onClick={(e) => e.stopPropagation()} id=\"addImageButton\">\n              <label htmlFor=\"addImageFileSelector\">\n                <div className=\"button extraSmall blue control-elem\" tabIndex=\"0\" role=\"button\">\n                      <InterfaceText>Upload Picture</InterfaceText>\n                    </div>\n              </label>\n              </div><input style={{display: \"none\"}} id=\"addImageFileSelector\" type=\"file\" onChange={onFileSelect} ref={fileInput} />\n              {old_filename !== \"\" && <div style={{\"max-width\": \"420px\"}}>\n                    <br/><ImageWithCaption photoLink={old_filename} caption={caption}/>\n                    <br/><div onClick={deleteImage} className=\"button extraSmall blue control-elem\" tabIndex=\"1\" role=\"button\">\n                      <InterfaceText>Remove Picture</InterfaceText>\n                    </div></div>\n              }\n          </div>\n    }\n\nconst CategoryColorLine = ({category}) =>\n  <div className=\"categoryColorLine\" style={{background: Sefaria.palette.categoryColor(category)}}/>;\n\n\nclass ProfileListing extends Component {\n  render() {\n    const { url, image, name, uid, is_followed, toggleSignUpModal, smallfonts, organization } = this.props;\n    return (\n      <div className={\"authorByLine sans-serif\" + (smallfonts ? \" small\" : \"\")}>\n        <div className=\"authorByLineImage\">\n          <a href={url}>\n            <ProfilePic\n              len={smallfonts ? 30 : 40}\n              url={image}\n              name={name}\n            />\n          </a>\n        </div>\n        <div className={`authorByLineText ${smallfonts? \"small\" : \"\"}`}>\n          <SimpleLinkedBlock\n            classes=\"authorName\"\n            url={url}\n            en={name}\n            he={name}\n          >\n            <FollowButton\n              large={false}\n              uid={uid}\n              following={is_followed}\n              disableUnfollow={true}\n              toggleSignUpModal={toggleSignUpModal} />\n          </SimpleLinkedBlock>\n          {!!organization ?\n          <SimpleInterfaceBlock\n            classes=\"authorOrganization\"\n            en={organization}\n            he={organization} />\n          :null}\n        </div>\n      </div>\n    );\n  }\n}\nProfileListing.propTypes = {\n  uid:               PropTypes.number.isRequired,\n  url:               PropTypes.string.isRequired,\n  image:             PropTypes.string.isRequired,\n  name:              PropTypes.string.isRequired,\n  is_followed:       PropTypes.bool,\n  toggleSignUpModal: PropTypes.func,\n};\n\n\nconst SheetListing = ({\n  sheet, connectedRefs, handleSheetClick, handleSheetDelete, handleCollectionsChange,\n  editable, deletable, saveable, collectable, pinnable, pinned, pinSheet,\n  hideAuthor, showAuthorUnderneath, infoUnderneath, hideCollection, openInNewTab, toggleSignUpModal, showSheetSummary\n}) => {\n  // A source sheet presented in lists, like sidebar or profile page\n  const [showCollectionsModal, setShowCollectionsModal] = useState(false);\n\n  const handleSheetClickLocal = (e) => {\n    //console.log(\"Sheet Click Handled\");\n    // TODO: There more contexts to distinguish / track. Profile, collections, search\n    if (Sefaria._uid == sheet.owner) {\n      Sefaria.track.event(\"Tools\", \"My Sheet Click\", sheet.sheetUrl);\n    } else {\n      Sefaria.track.event(\"Tools\", \"Sheet Click\", sheet.sheetUrl);\n    }\n    if (handleSheetClick) {\n      Sefaria.track.sheets(\"Opened via Connections Panel\", connectedRefs.toString());\n      handleSheetClick(e, sheet, null, connectedRefs);\n      e.preventDefault();\n    }\n  };\n\n  const handleSheetOwnerClick = (e) => {\n    Sefaria.track.event(\"Tools\", \"Sheet Owner Click\", sheet.ownerProfileUrl);\n  };\n\n  const handleTopicClick = (topic) => {\n    Sefaria.track.event(\"Tools\", \"Topic Click\", topic);\n  };\n\n  const handleSheetDeleteClick = () => {\n    if (confirm(Sefaria._(\"Are you sure you want to delete this sheet? There is no way to undo this action.\"))) {\n      Sefaria.sheets.deleteSheetById(sheet.id).then(handleSheetDelete);\n    }\n  };\n\n  const toggleCollectionsModal = () => {\n    if (Sefaria._uid) {\n      setShowCollectionsModal(!showCollectionsModal);\n    } else {\n      toggleSignUpModal();\n    }\n  };\n\n  const title = sheet.title ? sheet.title.stripHtmlConvertLineBreaks() : \"Untitled Source Sheet\";\n\n  const viewsIcon = sheet.public ?\n    <div className=\"sheetViews sans-serif\"><i className=\"fa fa-eye\" title={sheet.views + \" views\"}></i> {sheet.views}</div>\n    : <div className=\"sheetViews sans-serif\"><i className=\"fa fa-lock\" title=\"Private\"></i></div>;\n\n  const views = (\n    <>\n      {sheet.views}&nbsp;<InterfaceText>Views</InterfaceText>\n    </>\n  );\n\n  const sheetSummary = showSheetSummary && sheet.summary?\n  <DangerousInterfaceBlock classes={\"smallText sheetSummary\"} en={sheet.summary} he={sheet.sheet_summary}/>:null;\n\n  const sheetInfo = hideAuthor ? null :\n      <div className=\"sheetInfo\">\n        <div className=\"sheetUser\">\n          <a href={sheet.ownerProfileUrl} target={openInNewTab ? \"_blank\" : \"_self\"}>\n            <ProfilePic\n              outerStyle={{display: \"inline-block\"}}\n              name={sheet.ownerName}\n              url={sheet.ownerImageUrl}\n              len={26}\n            />\n          </a>\n          <a href={sheet.ownerProfileUrl} target={openInNewTab ? \"_blank\" : \"_self\"} className=\"sheetAuthor\" onClick={handleSheetOwnerClick}>{sheet.ownerName}</a>\n        </div>\n        {viewsIcon}\n      </div>\n\n  const collectionsList = \"collections\" in sheet ? sheet.collections.slice() : [];\n  if (sheet.displayedCollectionName) {\n    collectionsList.unshift({name: sheet.displayedCollectionName, slug: sheet.displayedCollection});\n  }\n  const collections = collectionsList.map((collection, i) => {\n    const separator = i == collectionsList.length -1 ? null : <span className=\"separator\">,</span>;\n    return (\n      <a href={`/collections/${collection.slug}`}\n        target={openInNewTab ? \"_blank\" : \"_self\"}\n        className=\"sheetTag\"\n        key={i}\n      >\n        {collection.name}\n        {separator}\n      </a>\n    );\n  });\n\n  const topics = sheet.topics.map((topic, i) => {\n    const separator = i == sheet.topics.length -1 ? null : <span className=\"separator\">,</span>;\n    return (\n      <a href={`/topics/${topic.slug}`}\n        target={openInNewTab ? \"_blank\" : \"_self\"}\n        className=\"sheetTag\"\n        key={i}\n        onClick={handleTopicClick.bind(null, topic.slug)}\n      >\n        <InterfaceText text={topic} />\n        {separator}\n      </a>\n    );\n  });\n  const created = Sefaria.util.localeDate(sheet.created);\n  const underInfo = infoUnderneath ? [\n      sheet.status !== 'public' ? (<span className=\"unlisted\"><img src=\"/static/img/eye-slash.svg\"/><span>{Sefaria._(\"Not Published\")}</span></span>) : undefined,\n      showAuthorUnderneath ? (<a href={sheet.ownerProfileUrl} target={openInNewTab ? \"_blank\" : \"_self\"}>{sheet.ownerName}</a>) : undefined,\n      views,\n      created,\n      collections.length ? collections : undefined,\n      sheet.topics.length ? topics : undefined,\n    ].filter(x => x !== undefined) : [topics];\n\n\n  const pinButtonClasses = classNames({sheetListingPinButton: 1, pinned: pinned, active: pinnable});\n  const pinMessage = pinned && pinnable ? Sefaria._(\"Pinned Sheet - click to unpin\") :\n                    pinned ? Sefaria._(\"Pinned Sheet\") : Sefaria._(\"Pin Sheet\");\n  const pinButton = <img src=\"/static/img/pin.svg\" className={pinButtonClasses} title={pinMessage} onClick={pinnable ? pinSheet : null} />\n\n  return (\n    <div className=\"sheet\" key={sheet.sheetUrl}>\n      <div className=\"sheetLeft\">\n        {sheetInfo}\n        <a href={sheet.sheetUrl} target={openInNewTab ? \"_blank\" : \"_self\"} className=\"sheetTitle\" onClick={handleSheetClickLocal}>\n          <img src=\"/static/img/sheet.svg\" className=\"sheetIcon\"/>\n          <span className=\"sheetTitleText\">{title}</span>\n        </a>\n        {sheetSummary}\n        <div className=\"sheetTags sans-serif\">\n          {\n            underInfo.map((item, i) => (\n              <span key={i}>\n                { i !== 0 ? <span className=\"bullet\">{'\\u2022'}</span> : null }\n                {item}\n              </span>\n            ))\n          }\n        </div>\n      </div>\n      <div className=\"sheetRight\">\n        {\n          collectable ?\n            <img src=\"/static/icons/collection.svg\" onClick={toggleCollectionsModal} title={Sefaria._(\"Add to Collection\")} />\n            : null\n        }\n        {\n          deletable ?\n            <img src=\"/static/icons/circled-x.svg\" onClick={handleSheetDeleteClick} title={Sefaria._(\"Delete\")} />\n            : null\n        }\n        {\n          saveable ?\n            <SaveButton historyObject={{ ref: `Sheet ${sheet.id}`, versions: {}  }}\n              toggleSignUpModal={toggleSignUpModal} />\n            : null\n        }\n        { pinnable || pinned ?\n            pinButton\n            : null\n        }\n      </div>\n      {showCollectionsModal ?\n        <CollectionsModal\n          sheetID={sheet.id}\n          close={toggleCollectionsModal}\n          handleCollectionsChange={handleCollectionsChange} />\n        : null\n      }\n    </div>);\n};\n\n\nconst CollectionListing = ({data}) => {\n  const imageUrl = \"/static/icons/collection.svg\";\n  const collectionUrl = \"/collections/\" + data.slug;\n  return (\n    <div className=\"collectionListing\">\n      <div className=\"left-content\">\n        <div className=\"collectionListingText\">\n\n          <a href={collectionUrl} className=\"collectionListingName\">\n            <img className=\"collectionListingImage\" src={imageUrl} alt=\"Collection Icon\"/>\n            {data.name}\n          </a>\n\n          <div className=\"collectionListingDetails\">\n            {data.listed ? null :\n              (<span className=\"unlisted\">\n                <img src=\"/static/img/eye-slash.svg\"/>\n                <InterfaceText>Unlisted</InterfaceText>\n              </span>) }\n\n            {data.listed ? null :\n            <span className=\"collectionListingDetailSeparator\">•</span> }\n\n            <span className=\"collectionListingDetail collectionListingSheetCount\">\n              <InterfaceText>{`${data.sheetCount} `}</InterfaceText>\n              <InterfaceText>Sheets</InterfaceText>\n            </span>\n\n            {data.memberCount > 1 ?\n            <span className=\"collectionListingDetailSeparator\">•</span> : null }\n\n            {data.memberCount > 1 ?\n            <span className=\"collectionListingDetail collectionListingMemberCount\">\n              <InterfaceText>{`${data.memberCount} `}</InterfaceText>\n              <InterfaceText>Editors</InterfaceText>\n            </span> : null }\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n\n\nclass Note extends Component {\n  // Public or private note in the Sidebar.\n  render() {\n    var authorInfo = this.props.ownerName && !this.props.isMyNote ?\n        (<div className=\"noteAuthorInfo\">\n          <a href={this.props.ownerProfileUrl}>\n            <img className=\"noteAuthorImg\" src={this.props.ownerImageUrl} />\n          </a>\n          <a href={this.props.ownerProfileUrl} className=\"noteAuthor\">{this.props.ownerName}</a>\n        </div>) : null;\n\n      var buttons = this.props.isMyNote ?\n                    (<div className=\"noteButtons\">\n                      <i className=\"editNoteButton fa fa-pencil\" title=\"Edit Note\" onClick={this.props.editNote} ></i>\n                    </div>) : null;\n\n      var text = Sefaria.util.linkify(this.props.text);\n      text = text.replace(/\\n/g, \"<br />\");\n\n      return (<div className=\"note\">\n                {buttons}\n                {authorInfo}\n                <div className=\"noteContent\">\n                  <span className=\"noteText\" dangerouslySetInnerHTML={{__html:text}}></span>\n                </div>\n              </div>);\n  }\n}\nNote.propTypes = {\n  text:            PropTypes.string.isRequired,\n  ownerName:       PropTypes.string,\n  ownerImageUrl:   PropTypes.string,\n  ownerProfileUrl: PropTypes.string,\n  isPrivate:       PropTypes.bool,\n  isMyNote:        PropTypes.bool,\n  editNote:        PropTypes.func\n};\n\n\nclass LoginPrompt extends Component {\n  render() {\n    var nextParam = \"?next=\" + Sefaria.util.currentPath();\n    return (\n      <div className=\"loginPrompt\">\n        <div className=\"loginPromptMessage\">\n          <span className=\"int-en\">Please log in to use this feature.</span>\n          <span className=\"int-he\">עליך להיות מחובר בכדי להשתמש באפשרות זו.</span>\n        </div>\n        <a className=\"button\" href={\"/login\" + nextParam}>\n          <span className=\"int-en\">Log In</span>\n          <span className=\"int-he\">התחברות</span>\n        </a>\n        <a className=\"button\" href={\"/register\" + nextParam}>\n          <span className=\"int-en\">Sign Up</span>\n          <span className=\"int-he\">הרשמה</span>\n        </a>\n      </div>);\n  }\n}\nLoginPrompt.propTypes = {\n  fullPanel: PropTypes.bool,\n};\n\nclass SignUpModal extends Component {\n  render() {\n    const innerContent = [\n      [\"star-white.png\", \"Save texts\"],\n      [\"sheet-white.png\", \"Make source sheets\"],\n      [\"note-white.png\", \"Take notes\"],\n      [\"email-white.png\", \"Stay in the know\"],\n    ].map(x => (\n      <div key={x[0]}>\n        <img src={`/static/img/${x[0]}`} alt={x[1]} />\n        <InterfaceText>{ x[1] }</InterfaceText>\n      </div>\n    ));\n    const nextParam = \"?next=\" + encodeURIComponent(Sefaria.util.currentPath());\n\n    return (\n      this.props.show ? <div id=\"interruptingMessageBox\" className=\"sefariaModalBox\">\n        <div id=\"interruptingMessageOverlay\" onClick={this.props.onClose}></div>\n        <div id=\"interruptingMessage\" className=\"sefariaModalContentBox\">\n          <div id=\"interruptingMessageClose\" className=\"sefariaModalClose\" onClick={this.props.onClose}>×</div>\n          <div className=\"sefariaModalContent\">\n            <h2 className=\"serif sans-serif-in-hebrew\">\n              <InterfaceText>Love Learning?</InterfaceText>\n            </h2>\n            <h3>\n              <InterfaceText>Sign up to get more from {Sefaria._siteSettings.SITE_NAME[\"en\"]}</InterfaceText>\n            </h3>\n            <div className=\"sefariaModalInnerContent\">\n              { innerContent }\n            </div>\n            <a className=\"button white control-elem\" href={\"/register\" + nextParam}>\n              <InterfaceText>Sign Up</InterfaceText>\n            </a>\n            <div className=\"sefariaModalBottomContent\">\n              <InterfaceText>Already have an account?</InterfaceText>&nbsp;\n              <a href={\"/login\" + nextParam}><InterfaceText>Sign in</InterfaceText></a>\n            </div>\n          </div>\n        </div>\n      </div> : null\n    );\n  }\n}\nSignUpModal.propTypes = {\n  show: PropTypes.bool,\n  onClose: PropTypes.func.isRequired,\n};\n\n\nfunction OnInView({ children, onVisible }) {\n  /**\n   *  The functional component takes an existing element and wraps it in an IntersectionObserver and returns the children, only observed and with a callback for the observer.\n   *  `children` single element or nested group of elements wrapped in a div\n   *  `onVisible` callback function that will be called when given component(s) are visible within the viewport\n   *  Ex. <OnInView onVisible={handleImageIsVisible}><img src=\"...\" /></OnInView>\n   */\n  const elementRef = useRef(); \n\n  useEffect(() => {\n    const observer = new IntersectionObserver(\n      // Callback function will be invoked whenever the visibility of the observed element changes\n      (entries) => {\n        const entry = entries[0];\n        // Check if the observed element is intersecting with the viewport (it's visible)\n        // Invoke provided prop callback for analytics purposes\n        if (entry.isIntersecting) {\n          onVisible();\n        }\n      },\n      // The entire element must be entirely visible\n      { threshold: 1 }\n    );\n\n    // Start observing the element, but wait until the element exists\n    if (elementRef.current) {\n      observer.observe(elementRef.current);\n    }\n\n    // Cleanup when the component unmounts\n    return () => {\n      // Stop observing the element when it's no longer on the screen and can't be visible\n      if (elementRef.current) {\n        observer.unobserve(elementRef.current);\n      }\n    };\n  }, [onVisible]);\n\n  // Attach elementRef to a div wrapper and pass the children to be rendered within it\n  return <div ref={elementRef}>{children}</div>;\n}\n\nconst transformValues = (obj, callback) => {\n  const newObj = {};\n  for (let key in obj) {\n    newObj[key] = obj[key] !== null ? callback(obj[key]) : null;\n  }\n  return newObj;\n};\n\nconst replaceNewLinesWithLinebreaks = (content) => {\n  return transformValues(\n    content,\n    (s) => s.replace(/\\n/gi, \"&nbsp; \\n\") + \"&nbsp; \\n&nbsp; \\n\"\n  );\n}\n\nconst InterruptingMessage = ({\n  onClose,\n}) => {\n  const [interruptingMessageShowDelayHasElapsed, setInterruptingMessageShowDelayHasElapsed] = useState(false);\n  const [hasInteractedWithModal, setHasInteractedWithModal] = useState(false);\n  const strapi = useContext(StrapiDataContext);\n\n  const markModalAsHasBeenInteractedWith = (modalName) => {\n    localStorage.setItem(\"modal_\" + modalName, \"true\");\n  };\n\n  const hasModalBeenInteractedWith = (modalName) => {\n    return JSON.parse(localStorage.getItem(\"modal_\" + modalName));\n  };\n\n  const trackModalInteraction = (modalName, eventDescription) => {\n    gtag(\"event\", \"modal_interacted_with_\" + eventDescription, {\n      campaignID: modalName,\n      adType: \"modal\",\n    });\n  };\n\n  const trackModalImpression = () => {\n    console.log(\"We've got visibility!\");\n    gtag(\"event\", \"modal_viewed\", {\n      campaignID: strapi.modal.internalModalName,\n      adType: \"modal\",\n    });\n  };\n\n  const shouldShow = () => {\n    if (!strapi.modal) return false;\n    if (Sefaria.interfaceLang === 'hebrew' && !strapi.modal.locales.includes('he')) return false;\n    if (\n      hasModalBeenInteractedWith(\n        strapi.modal.internalModalName\n      )\n    )\n      return false;\n\n    let shouldShowModal = false;\n\n    let noUserKindIsSet = ![\n      strapi.modal.showToReturningVisitors,\n      strapi.modal.showToNewVisitors,\n      strapi.modal.showToSustainers,\n      strapi.modal.showToNonSustainers,\n    ].some((p) => p);\n    if (\n      Sefaria._uid &&\n      ((Sefaria.is_sustainer &&\n        strapi.modal.showToSustainers) ||\n        (!Sefaria.is_sustainer &&\n          strapi.modal.showToNonSustainers))\n    )\n      shouldShowModal = true;\n    else if (\n      (Sefaria.isReturningVisitor() &&\n        strapi.modal.showToReturningVisitors) ||\n      (Sefaria.isNewVisitor() && strapi.modal.showToNewVisitors)\n    )\n      shouldShowModal = true;\n    else if (noUserKindIsSet) shouldShowModal = true;\n    if (!shouldShowModal) return false;\n    // Don't show the modal on pages where the button link goes to since you're already there\n    const excludedPaths = [\"/donate\", \"/mobile\", \"/app\", \"/ways-to-give\"];\n    if (strapi.modal.buttonURL) {\n      if (strapi.modal.buttonURL.en) {\n        excludedPaths.push(new URL(strapi.modal.buttonURL.en).pathname);\n      }\n      if (strapi.modal.buttonURL.he) {\n        excludedPaths.push(new URL(strapi.modal.buttonURL.he).pathname);\n      }\n    }\n    return excludedPaths.indexOf(window.location.pathname) === -1;\n  };\n\n  const closeModal = (eventDescription) => {\n    if (onClose) onClose();\n    markModalAsHasBeenInteractedWith(\n      strapi.modal.internalModalName\n    );\n    setHasInteractedWithModal(true);\n    trackModalInteraction(\n      strapi.modal.internalModalName,\n      eventDescription\n    );\n  };\n\n  useEffect(() => {\n    if (shouldShow()) {\n      const timeoutId = setTimeout(() => {\n        setInterruptingMessageShowDelayHasElapsed(true);\n      }, strapi.modal.showDelay * 1000);\n      return () => clearTimeout(timeoutId); // clearTimeout on component unmount\n    }\n  }, [strapi.modal]); // execute useEffect when the modal changes\n\n  if (!interruptingMessageShowDelayHasElapsed) return null;\n\n  if (!hasInteractedWithModal) {\n    return (\n      <OnInView onVisible={trackModalImpression}>\n        <div id=\"interruptingMessageBox\" className={interruptingMessageShowDelayHasElapsed ? \"\" : \"hidden\"}>\n          <div id=\"interruptingMessageOverlay\"></div>\n          <div id=\"interruptingMessage\">\n            <div className=\"colorLine\"></div>\n            <div id=\"interruptingMessageContentBox\" className=\"hasColorLine\">\n              <div\n                id=\"interruptingMessageClose\"\n                onClick={() => {\n                  closeModal(\"close_clicked\");\n                }}\n              >\n                ×\n              </div>\n              <div id=\"interruptingMessageContent\">\n                <div id=\"defaultModal\">\n                  {strapi.modal.modalHeader.en && (\n                    <h1 className=\"int-en\">{strapi.modal.modalHeader.en}</h1>\n                  )}\n                  {strapi.modal.modalHeader.he && (\n                    <h1 className=\"int-he\">{strapi.modal.modalHeader.he}</h1>\n                  )}\n                  <div id=\"defaultModalBody\" className=\"line-break\">\n                    <InterfaceText\n                      markdown={replaceNewLinesWithLinebreaks(\n                        strapi.modal.modalText\n                      )}\n                    />\n                  </div>\n                  <div className=\"buttons\">\n                    <a\n                      className=\"button int-en\"\n                      target=\"_blank\"\n                      href={strapi.modal.buttonURL.en}\n                      onClick={() => {\n                        closeModal(\"modal_button_clicked\");\n                      }}\n                    >\n                      <span className=\"int-en\">\n                        {strapi.modal.buttonText.en}\n                      </span>\n                    </a>\n                    <a\n                      className=\"button int-he\"\n                      target=\"_blank\"\n                      href={strapi.modal.buttonURL.he}\n                      onClick={() => {\n                        closeModal(\"modal_button_clicked\");\n                      }}\n                    >\n                      <span className=\"int-he\">\n                        {strapi.modal.buttonText.he}\n                      </span>\n                    </a>\n                  </div>\n                </div>\n              </div>\n              <div className=\"colorLine\"></div>\n            </div>\n          </div>\n        </div>\n      </OnInView>\n    );\n  } else {\n    return null;\n  }\n};\nInterruptingMessage.displayName = \"InterruptingMessage\";\n\nconst Banner = ({ onClose }) => {\n  const [bannerShowDelayHasElapsed, setBannerShowDelayHasElapsed] =\n    useState(false);\n  const [hasInteractedWithBanner, setHasInteractedWithBanner] = useState(false);\n  let strapi = {};\n  strapi.banner = {\n            \"internalBannerName\": \"contextus-welcome\",\n            \"bannerText\": {\"en\": \"Welcome to ContextUS! We are in the process of upgrading and expanding our site. Please excuse our dust! If you have any questions or feedback, please contact us at jmc@gojmc.org.\",\n                          \"he\": \"Welcome to ContextUS! We are in the process of upgrading and expanding our site. Please excuse our dust! If you have any questions or feedback, please contact us at jmc@gojmc.org.\"},\n            \"buttonText\": {\"en\": \"Contact Us\", \"he\": \"Contact Us\"},\n            \"buttonURL\": {\"en\": \"mailto:jmc@gojmc.org\", \"he\": \"mailto:jmc@gojmc.org\"},\n            \"showDelay\": 2,\n            \"bannerBackgroundColor\": '#133059',\n            \"locale\": \"en\",\n            \"localizations\": { \"data\": [] },\n            \"publishedAt\": \"2023-12-05T23:18:42.245Z\",\n            \"shouldDeployOnMobile\": true,\n            \"showToNewVisitors\": true,\n            \"showToNonSustainers\": true,\n            \"showToReturningVisitors\": true,\n            \"showToSustainers\": true,\n          }\n\n  const markBannerAsHasBeenInteractedWith = (bannerName) => {\n    localStorage.setItem(\"banner_\" + bannerName, \"true\");\n  };\n\n  const hasBannerBeenInteractedWith = (bannerName) => {\n    return JSON.parse(localStorage.getItem(\"banner_\" + bannerName));\n  };\n\n  const trackBannerInteraction = (bannerName, eventDescription) => {\n    gtag(\"event\", \"banner_interacted_with_\" + eventDescription, {\n      campaignID: bannerName,\n      adType: \"banner\",\n    });\n  };\n\n  const trackBannerImpression = () => {\n    gtag(\"event\", \"banner_viewed\", {\n      campaignID: strapi.banner.internalBannerName,\n      adType: \"banner\",\n    });\n  };\n\n  const shouldShow = () => {\n    if (!strapi.banner) return false;\n    if (\n      Sefaria.interfaceLang === \"hebrew\" &&\n      !strapi.banner.locales.includes(\"he\")\n    )\n      return false;\n    if (hasBannerBeenInteractedWith(strapi.banner.internalBannerName))\n      return false;\n\n    let shouldShowBanner = false;\n\n    let noUserKindIsSet = ![\n      strapi.banner.showToReturningVisitors,\n      strapi.banner.showToNewVisitors,\n      strapi.banner.showToSustainers,\n      strapi.banner.showToNonSustainers,\n    ].some((p) => p);\n    if (\n      Sefaria._uid &&\n      ((Sefaria.is_sustainer && strapi.banner.showToSustainers) ||\n        (!Sefaria.is_sustainer && strapi.banner.showToNonSustainers))\n    )\n      shouldShowBanner = true;\n    else if (\n      (Sefaria.isReturningVisitor() && strapi.banner.showToReturningVisitors) ||\n      (Sefaria.isNewVisitor() && strapi.banner.showToNewVisitors)\n    )\n      shouldShowBanner = true;\n    else if (noUserKindIsSet) shouldShowBanner = true;\n    if (!shouldShowBanner) return false;\n\n    const excludedPaths = [\"/donate\", \"/mobile\", \"/app\", \"/ways-to-give\"];\n    // Don't show the banner on pages where the button link goes to since you're already there\n    if (strapi.banner.buttonURL) {\n      if (strapi.banner.buttonURL.en) {\n        excludedPaths.push(new URL(strapi.banner.buttonURL.en).pathname);\n      }\n      if (strapi.banner.buttonURL.he) {\n        excludedPaths.push(new URL(strapi.banner.buttonURL.he).pathname);\n      }\n    }\n    return excludedPaths.indexOf(window.location.pathname) === -1;\n  };\n\n  const closeBanner = (eventDescription) => {\n    if (onClose) onClose();\n    markBannerAsHasBeenInteractedWith(strapi.banner.internalBannerName);\n    setHasInteractedWithBanner(true);\n    trackBannerInteraction(strapi.banner.internalBannerName, eventDescription);\n  };\n\n  useEffect(() => {\n    if (shouldShow()) {\n      const timeoutId = setTimeout(() => {\n        // s2 is the div that contains the React root and needs to be manipulated by traditional DOM methods\n        if (document.getElementById(\"s2\").classList.contains(\"headerOnly\")) {\n          document.body.classList.add(\"hasBannerMessage\");\n        }\n        setBannerShowDelayHasElapsed(true);\n      }, strapi.banner.showDelay * 1000);\n      return () => clearTimeout(timeoutId); // clearTimeout on component unmount\n    }\n  }, []); // execute useEffect when the banner changes\n\n  if (!bannerShowDelayHasElapsed) return null;\n\n  if (!hasInteractedWithBanner) {\n    return (\n      <OnInView onVisible={trackBannerImpression}>\n        <div\n          id=\"bannerMessage\"\n          className={bannerShowDelayHasElapsed ? \"\" : \"hidden\"}\n          style={\n            strapi.banner.bannerBackgroundColor && {\n              backgroundColor: strapi.banner.bannerBackgroundColor,\n            }\n          }\n        >\n          <div id=\"bannerMessageContent\">\n            <div id=\"bannerTextBox\">\n              <InterfaceText\n                markdown={\n                  strapi.banner.bannerText\n                }\n              />\n            </div>\n            <div id=\"bannerButtonBox\">\n              <a\n                className=\"button white int-en\"\n                href={strapi.banner.buttonURL.en}\n                onClick={() => {\n                  closeBanner(\"banner_button_clicked\");\n                }}\n              >\n                <span>{strapi.banner.buttonText.en}</span>\n              </a>\n              <a\n                className=\"button white int-he\"\n                href={strapi.banner.buttonURL.he}\n                onClick={() => {\n                  closeBanner(\"banner_button_clicked\");\n                }}\n              >\n                <span>{strapi.banner.buttonText.he}</span>\n              </a>\n            </div>\n          </div>\n          <div\n            id=\"bannerMessageClose\"\n            onClick={() => {\n              closeBanner(\"close_clicked\");\n            }}\n          >\n            ×\n          </div>\n        </div>\n      </OnInView>\n    );\n  } else {\n    return null;\n  }\n};\n\nBanner.displayName = \"Banner\";\n\nconst NBox = ({ content, n, stretch, gap=0  }) => {\n  // Wrap a list of elements into an n-column flexbox\n  // If `stretch`, extend the final row into any remaining empty columns\n  let length = content.length;\n  let rows = [];\n  for (let i=0; i<length; i+=n) {\n    rows.push(content.slice(i, i+n));\n  }\n  return (\n    <div className=\"gridBox\">\n      {rows.map((row, i) => (\n      <div className=\"gridBoxRow\" key={i} style={{\"gap\": gap, \"marginTop\": gap}}>\n        {row.pad(stretch ? row.length : n, \"\").map((item, j) => (\n          <div className={classNames({gridBoxItem: 1, placeholder: !item})} key={`gridItem|${j}`}>{item}</div>\n        ))}\n      </div>\n      ))}\n    </div>\n  );\n}\n\nclass TwoOrThreeBox extends Component {\n  // Wrap a list of elements into a two or three column table, depending on window width\n  render() {\n      var threshhold = this.props.threshhold;\n      if (this.props.width > threshhold) {\n        return (<NBox content={this.props.content} n={3}/>);\n      } else {\n        return (<NBox content={this.props.content} n={2}/>);\n      }\n  }\n}\nTwoOrThreeBox.propTypes = {\n  content:    PropTypes.array.isRequired,\n  width:      PropTypes.number.isRequired,\n  threshhold: PropTypes.number\n};\nTwoOrThreeBox.defaultProps = {\n  threshhold: 500\n};\n\n\nconst ResponsiveNBox = ({content, stretch, initialWidth, threshold2=500, threshold3=1500, gap=0}) => {\n  //above threshold2, there will be 2 columns\n  //above threshold3, there will be 3 columns\n  initialWidth = initialWidth || (window ? window.innerWidth : 1000);\n  const [width, setWidth] = useState(initialWidth);\n  const ref = useRef(null);\n\n  useEffect(() => {\n    deriveAndSetWidth();\n    window.addEventListener(\"resize\", deriveAndSetWidth);\n    return () => {\n        window.removeEventListener(\"resize\", deriveAndSetWidth);\n    }\n  }, []);\n\n  const deriveAndSetWidth = () => setWidth(ref.current ? ref.current.offsetWidth : initialWidth);\n\n  const n = (width > threshold3) ? 3 :\n    (width > threshold2) ? 2 : 1;\n\n  return (\n    <div className=\"responsiveNBox\" ref={ref}>\n      <NBox content={content} n={n} stretch={stretch} gap={gap}/>\n    </div>\n  );\n};\n\n\nclass Dropdown extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      optionsOpen: false,\n      selected: null\n    };\n  }\n\n  componentDidMount() {\n    if (this.props.preselected) {\n      const selected = this.props.options.filter( o => (o.value == this.props.preselected));\n      this.select(selected[0])\n    }\n  }\n\n  select(option) {\n    this.setState({selected: option, optionsOpen: false});\n    const event = {target: {name: this.props.name, value: option.value}}\n    this.props.onChange && this.props.onChange(event);\n  }\n  toggle() {\n    this.setState({optionsOpen: !this.state.optionsOpen});\n  }\n  render() {\n    return (\n        <div className=\"dropdown sans-serif\">\n          <div className={`dropdownMain noselect${this.state.selected ? \" selected\":\"\"}`} onClick={this.toggle}>\n            <span>{this.state.selected ? this.state.selected.label : this.props.placeholder}</span>\n            <img src=\"/static/icons/chevron-down.svg\" className=\"dropdownOpenButton noselect fa fa-caret-down\"/>\n\n          </div>\n          {this.state.optionsOpen ?\n            <div className=\"dropdownListBox noselect\">\n              <div className=\"dropdownList noselect\">\n                {this.props.options.map(function(option) {\n                  const onClick = this.select.bind(null, option);\n                  const classes = classNames({dropdownOption: 1, selected: this.state.selected && this.state.selected.value == option.value});\n                  return <div className={classes} onClick={onClick} key={option.value}>{option.label}</div>\n                }.bind(this))}\n              </div>\n            </div>\n          : null}\n        </div>);\n  }\n}\nDropdown.propTypes = {\n  options:     PropTypes.array.isRequired, // Array of {label, value}\n  name:        PropTypes.string.isRequired,\n  onChange:    PropTypes.func,\n  placeholder: PropTypes.string,\n  selected:    PropTypes.string,\n};\n\n\nclass LoadingMessage extends Component {\n  render() {\n    var message = this.props.message || \"Loading...\";\n    var heMessage = this.props.heMessage || \"טוען מידע...\";\n    var classes = \"loadingMessage sans-serif \" + (this.props.className || \"\");\n    return (<div className={classes}>\n              <InterfaceText>\n                <EnglishText>{message}</EnglishText>\n                <HebrewText>{heMessage}</HebrewText>\n              </InterfaceText>\n            </div>);\n  }\n}\nLoadingMessage.propTypes = {\n  message:   PropTypes.string,\n  heMessage: PropTypes.string,\n  className: PropTypes.string\n};\n\n\nconst CategoryAttribution = ({categories, linked = true, asEdition}) => {\n  const attribution = Sefaria.categoryAttribution(categories);\n  if (!attribution) { return null; }\n\n  const en = asEdition ? attribution.englishAsEdition : attribution.english;\n  const he = asEdition ? attribution.hebrewAsEdition : attribution.hebrew;\n  const str = <ContentText text={{en, he}} defaultToInterfaceOnBilingual={true} />;\n\n  const content = linked ?\n      <a href={attribution.link}>{str}</a> : str;\n\n  return <div className=\"categoryAttribution\">{content}</div>;\n};\n\n\nclass SheetTopicLink extends Component {\n  handleTagClick(e) {\n    e.preventDefault();\n    this.props.setSheetTag(this.props.topic.slug);\n  }\n  render() {\n    const { slug, en, he } = this.props.topic;\n    return (\n      <a href={`/topics/${slug}`} onClick={this.handleTagClick}>\n        <InterfaceText text={{en:en, he:he}} />\n      </a>\n    );\n  }\n}\nSheetTopicLink.propTypes = {\n  topic:       PropTypes.shape({\n                 en: PropTypes.string.isRequired,\n                 he: PropTypes.string.isRequired,\n                 slug: PropTypes.string.isRequired,\n               }).isRequired,\n  setSheetTag: PropTypes.func.isRequired\n};\n\n\nclass SheetAccessIcon extends Component {\n  render() {\n    var sheet = this.props.sheet;\n    return (sheet.status == \"unlisted\") ?\n      (<i className=\"fa fa-lock\" title={msg}></i>)\n      : null;\n  }\n}\nSheetAccessIcon.propTypes = {\n  sheet: PropTypes.object.isRequired\n};\n\n\nclass FeedbackBox extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      type: null,\n      alertmsg: null,\n      feedbackSent: false,\n    };\n  }\n  sendFeedback() {\n    if (!this.state.type) {\n      this.setState({alertmsg: Sefaria._(\"Please select a feedback type\")});\n      return\n    }\n\n    if (!Sefaria._uid && !this.validateEmail($(\"#feedbackEmail\").val())) {\n      this.setState({alertmsg: Sefaria._(\"Please enter a valid email address\")});\n      return\n    }\n\n    let feedback = {\n        refs: this.props.srefs || null,\n        type: this.state.type,\n        url: this.props.url || null,\n        currVersions: this.props.currVersions,\n        email: $(\"#feedbackEmail\").val() || null,\n        msg: $(\"#feedbackText\").val(),\n        uid: Sefaria._uid || null\n    };\n    let postData = {json: JSON.stringify(feedback)};\n    const url = \"/api/send_feedback\";\n\n    this.setState({feedbackSent: true});\n\n    $.post(url, postData, function (data) {\n        if (data.error) {\n            alert(data.error);\n        } else {\n            console.log(data);\n            Sefaria.track.event(\"Tools\", \"Send Feedback\", this.props.url);\n        }\n    }.bind(this)).fail(function (xhr, textStatus, errorThrown) {\n        alert(Sefaria._(\"Unfortunately, there was an error sending this feedback. Please try again or try reloading this page.\"));\n        this.setState({feedbackSent: true});\n    });\n  }\n  validateEmail(email) {\n    const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n    return re.test(email);\n  }\n  setType(event) {\n    this.setState({type: event.target.value});\n  }\n  render() {\n    if (this.state.feedbackSent) {\n        return (\n            <div className=\"feedbackBox sans-serif\">\n                <p className=\"int-en\">Feedback sent!</p>\n                <p className=\"int-he\">משוב נשלח!</p>\n            </div>\n        )\n    }\n    return (\n        <div className=\"feedbackBox sans-serif\">\n            <p className=\"int-en\">Have some feedback? We would love to hear it.</p>\n            <p className=\"int-he\">אנחנו מעוניינים במשוב ממך</p>\n\n            {this.state.alertmsg ?\n                <div>\n                    <p className=\"int-en\">{this.state.alertmsg}</p>\n                    <p className=\"int-he\">{this.state.alertmsg}</p>\n                </div>\n                : null\n            }\n\n            <Dropdown\n              name=\"feedbackType\"\n              options={[\n                        {value: \"content_issue\",   label: Sefaria._(\"Report an issue with the text\")},\n                        {value: \"translation_request\",   label: Sefaria._(\"Request translation\")},\n                        {value: \"bug_report\",      label: Sefaria._(\"Report a bug\")},\n                        {value: \"help_request\",    label: Sefaria._(\"Get help\")},\n                        {value: \"feature_request\", label: Sefaria._(\"Request a feature\")},\n                        {value: \"good_vibes\",      label: Sefaria._(\"Give thanks\")},\n                        {value: \"other\",           label: Sefaria._(\"Other\")},\n                      ]}\n              placeholder={Sefaria._(\"Select Type\")}\n              onChange={this.setType}\n            />\n\n            <textarea className=\"feedbackText\" placeholder={Sefaria._(\"Describe the issue...\")} id=\"feedbackText\"></textarea>\n\n            {!Sefaria._uid ?\n                <div><input className=\"sidebarInput noselect\" placeholder={Sefaria._(\"Email Address\")} id=\"feedbackEmail\" /></div>\n                : null }\n\n             <div className=\"button\" role=\"button\" onClick={() => this.sendFeedback()}>\n                 <span className=\"int-en\">Submit</span>\n                 <span className=\"int-he\">שליחה</span>\n             </div>\n        </div>\n    );\n  }\n}\n\n\nclass ReaderMessage extends Component {\n  // Component for determining user feedback on new element\n  constructor(props) {\n    super(props)\n    var showNotification = Sefaria._inBrowser && !document.cookie.includes(this.props.messageName+\"Accepted\");\n    this.state = {showNotification: showNotification};\n  }\n  setFeedback(status) {\n    Sefaria.track.uiFeedback(this.props.messageName+\"Accepted\", status);\n    $.cookie((this.props.messageName+\"Accepted\"), 1, {path: \"/\"});\n    this.setState({showNotification: false});\n  }\n  render() {\n    if (!this.state.showNotification) { return null; }\n    return (\n      <div className=\"readerMessageBox\">\n        <div className=\"readerMessage\">\n          <div className=\"int-en\">{this.props.message}</div>\n          <div className=\"button small\" role=\"button\" onClick={() => this.setFeedback('Like')}>{this.props.buttonLikeText}</div>\n          <div className=\"button small\" role=\"button\" onClick={() => this.setFeedback('Dislike')}>{this.props.buttonDislikeText}</div>\n        </div>\n      </div>);\n  }\n}\nReaderMessage.propTypes = {\n  messageName: PropTypes.string.isRequired,\n  message: PropTypes.string.isRequired,\n  buttonLikeText: PropTypes.string.isRequired,\n  buttonDislikeText: PropTypes.string.isRequired,\n};\n\n\nclass CookiesNotification extends Component {\n  constructor(props) {\n    super(props);\n    const showNotification = /*!Sefaria._debug && */Sefaria._inBrowser && !document.cookie.includes(\"cookiesNotificationAccepted\");\n\n    this.state = {showNotification: showNotification};\n  }\n  setCookie() {\n    $.cookie(\"cookiesNotificationAccepted\", 1, {path: \"/\", expires: 20*365});\n    this.setState({showNotification: false});\n  }\n  render() {\n    if (!this.state.showNotification) { return null; }\n    return (\n      <div className=\"cookiesNotification\">\n\n          <span className=\"int-en\">\n            <span>We use cookies to give you the best experience possible on our site. Click OK to continue using {Sefaria._siteSettings.SITE_NAME[\"en\"]}. <a href=\"/privacy-policy\">Learn More</a>.</span>\n            <span className='int-en button small white' onClick={this.setCookie}>OK</span>\n          </span>\n          <span className=\"int-he\">\n            <span>אנחנו משתמשים ב\"עוגיות\" כדי לתת למשתמשים את חוויית השימוש הטובה ביותר.\n              <a href=\"/privacy-policy\">קראו עוד בנושא</a>\n            </span>\n            <span className='int-he button small white' onClick={this.setCookie}>לחצו כאן לאישור</span>\n          </span>\n\n       </div>\n    );\n  }\n}\n\n\nconst CommunityPagePreviewControls = ({date}) => {\n\n  const dateStr = (date, offset) => {\n    const d = new Date(date);\n    d.setDate(d.getDate() + offset)\n\n    return (\n      (d.getMonth() + 1) + \"/\" +\n      d.getDate() + \"/\" +\n      d.getFullYear().toString().slice(2)\n    );\n  };\n\n  const tomorrow = dateStr(date, 1);\n  const yesterday = dateStr(date, -1)\n\n  return (\n    <div id=\"communityPagePreviewControls\">\n      <InterfaceText>You are previewing the Community page for </InterfaceText>\n      <a className=\"date\" href={\"/admin/community-preview?date=\" + date}>\n        <InterfaceText>{date}</InterfaceText>\n      </a>\n      <div>\n        <a href={\"/admin/community-preview?date=\" + yesterday}>\n          <InterfaceText>{\"« \" + yesterday}</InterfaceText>\n        </a>\n        <a href={\"/admin/community-preview?date=\" + tomorrow}>\n          <InterfaceText>{tomorrow + \" »\"}</InterfaceText>\n        </a>\n      </div>\n      <div>\n        <a href={\"/admin/reset/community?next=\" + date}>\n          <InterfaceText>Refresh Cache</InterfaceText>\n        </a>\n      </div>\n    </div>\n  );\n};\n\n\nconst SheetTitle = (props) => (\n  <span className=\"title\"\n    role=\"heading\"\n    aria-level=\"1\"\n    contentEditable={props.editable}\n    suppressContentEditableWarning={true}\n    onBlur={props.editable ? props.blurCallback : null}\n    style={{\"direction\": Sefaria.hebrew.isHebrew(props.title.stripHtml()) ? \"rtl\" :\"ltr\"}}\n  >\n  {props.title ? props.title.stripHtmlConvertLineBreaks() : \"\"}\n  </span>\n);\nSheetTitle.propTypes = {\n  title: PropTypes.string,\n};\n\n\nconst SheetAuthorStatement = (props) => (\n  <div className=\"authorStatement sans-serif\" contentEditable={false} style={{ userSelect: 'none' }}>\n    {props.children}\n  </div>\n);\nSheetAuthorStatement.propTypes = {\n  authorImage:      PropTypes.string,\n  authorStatement:  PropTypes.string,\n  authorUrl:        PropTypes.string,\n};\n\n\nconst CollectionStatement = ({name, slug, image, children}) => (\n  slug ?\n    <div className=\"collectionStatement sans-serif\" contentEditable={false} style={{ userSelect: 'none' }}>\n      <div className=\"collectionListingImageBox imageBox\">\n        <a href={\"/collections/\" + slug}>\n          <img className={classNames({collectionListingImage:1, \"img-circle\": 1, default: !image})} src={image || \"/static/icons/collection.svg\"} alt=\"Collection Logo\"/>\n        </a>\n      </div>\n      <a href={\"/collections/\" + slug}>{children ? children : name}</a>\n    </div>\n    :\n    <div className=\"collectionStatement sans-serif\" contentEditable={false} style={{ userSelect: 'none', display: 'none' }}>\n      {children}\n    </div>\n);\n\nconst AdminToolHeader = function({title, validate, close}) {\n  /*\n  Save and Cancel buttons with a header using the `title` text.  Save button calls 'validate' and cancel button calls 'close'.\n   */\n  return    <div className=\"headerWithButtons\">\n              <h1 className=\"pageTitle\">\n                <InterfaceText>{title}</InterfaceText>\n              </h1>\n              <div className=\"end\">\n                <a onClick={close} id=\"cancel\" className=\"button small transparent control-elem\">\n                  <InterfaceText>Cancel</InterfaceText>\n                </a>\n                <div onClick={validate} id=\"saveAccountSettings\" className=\"button small blue control-elem\" tabIndex=\"0\" role=\"button\">\n                  <InterfaceText>Save</InterfaceText>\n                </div>\n              </div>\n            </div>\n}\n\n\nconst CategoryChooser = function({categories, update}) {\n  /*\n  Allows user to start from the top of the TOC and select a precise path through the category TOC using option menus.\n  'categories' is initial list of categories specifying a path and 'update' is called with new categories after the user changes selection\n   */\n  const categoryMenu = useRef();\n\n  const handleChange = function(e) {\n    let newCategories = [];\n    for (let i=0; i<categoryMenu.current.children.length; i++) {\n      let el = categoryMenu.current.children[i].children[0];\n      let elValue = el.options[el.selectedIndex].value;\n      let possCategories = newCategories.concat([elValue]);\n      if (!Sefaria.tocObjectByCategories(possCategories)) {\n        // if possCategories are [\"Talmud\", \"Prophets\"], break out and leave newCategories as [\"Talmud\"]\n        break;\n      }\n      newCategories.push(elValue);\n    }\n    update(newCategories); //tell parent of new values\n  }\n\n  let menus = [];\n\n  //create a menu of first level categories\n  let options = Sefaria.toc.map(function(child, key) {\n    if (categories.length > 0 && categories[0] === child.category) {\n      return <option key={key+1} value={categories[0]} selected>{categories[0]}</option>;\n    }\n    else {\n      return <option key={key+1} value={child.category}>{child.category}</option>\n    }\n  });\n  menus.push(options);\n\n  //now add to menu second and/or third level categories found in categories\n  for (let i=0; i<categories.length; i++) {\n    let options = [];\n    const tocObject = Sefaria.tocObjectByCategories(categories.slice(0, i+1));\n    const subcats = !tocObject?.contents ? [] : tocObject.contents.filter(x => x.hasOwnProperty(\"category\")); //Indices have 'categories' field and Categories have 'category' field which is their lastPath\n    for (let j=0; j<subcats.length; j++) {\n      const selected = categories.length >= i && categories[i+1] === subcats[j].category;\n      options.push(<option key={j} value={subcats[j].category} selected={selected}>{subcats[j].category}</option>);\n    }\n    if (options.length > 0) {\n      menus.push(options);\n    }\n  }\n  return <div ref={categoryMenu}>\n          {menus.map((menu, index) =>\n            <div className=\"categoryChooserMenu\">\n              <select key={`subcats-${index}`} id={`subcats-${index}`} onChange={handleChange}>\n              <option key=\"chooseCategory\" value=\"Choose a category\">Table of Contents</option>\n              {menu}\n              </select>\n            </div>)}\n         </div>\n}\n\n\nconst TitleVariants = function({titles, update, options}) {\n  /*\n  Wrapper for ReactTags component.  `titles` is initial list of objects to populate ReactTags component.\n  each item in `titles` should have an 'id' and 'name' field and can have others as well\n  and `update` is method to call after deleting or adding to titles. `options` is an object that can have\n  the fields `onTitleDelete`, `onTitleAddition`, and `onTitleValidate` allowing overloading of TitleVariant's methods\n   */\n  if (titles.length > 0 && typeof titles[0] === 'string') {  // normalize titles\n    titles = titles.map((item, i) => ({[\"name\"]: item, [\"id\"]: i}));\n  }\n  const onTitleDelete = function(i) {\n    const newTitles = titles.filter(t => t !== titles[i]);\n    update(newTitles);\n  }\n  const onTitleAddition = function(title) {\n    title.id = Math.max(titles.map(x => x.id)) + 1;  // assign unique id\n    const newTitles = [].concat(titles, title);\n    update(newTitles);\n  }\n  const onTitleValidate = function (title) {\n    const validTitle = titles.every((item) => item.name !== title.name);\n    if (!validTitle) {\n      alert(title.name+\" already exists.\");\n    }\n    return validTitle;\n  }\n\n  return <div className=\"publishBox\">\n                <ReactTags\n                    allowNew={true}\n                    tags={titles}\n                    onDelete={options?.onTitleDelete ? options.onTitleDelete : onTitleDelete}\n                    placeholderText={Sefaria._(\"Add a title...\")}\n                    delimiters={[\"Enter\", \"Tab\"]}\n                    onAddition={options?.onTitleAddition ? options.onTitleAddition : onTitleAddition}\n                    onValidate={options?.onTitleValidate ? options.onTitleValidate : onTitleValidate}\n                  />\n         </div>\n}\n\nconst SheetMetaDataBox = (props) => (\n  <div className=\"sheetMetaDataBox\">\n    {props.children}\n  </div>\n);\n\nconst DivineNameReplacer = ({setDivineNameReplacement, divineNameReplacement}) => {\n  return (\n      <div className=\"divineNameReplacer\">\n        <p className=\"sans-serif\"><InterfaceText>Select how you would like to display the divine name in this sheet:</InterfaceText></p>\n\n            <Dropdown\n              name=\"divinename\"\n              options={[\n                        {value: \"noSub\",   label: Sefaria._(\"No Substitution\")},\n                        {value: \"yy\",   label: 'יי'},\n                        {value: \"h\",      label:'ה׳'},\n                        {value: \"ykvk\",    label: 'יקוק'},\n                      ]}\n              placeholder={Sefaria._(\"Select Type\")}\n              onChange={(e) => setDivineNameReplacement((e.target.value))}\n              preselected={divineNameReplacement}\n            />\n      </div>\n  )\n\n}\nconst Autocompleter = ({getSuggestions, showSuggestionsOnSelect, inputPlaceholder, inputValue, changeInputValue, selectedCallback,\n                         buttonTitle, autocompleteClassNames }) => {\n  /*\n  Autocompleter component used in AddInterfaceInput and TopicSearch components.  Component contains an input box, a\n  select menu that shows autcomplete suggestions, and a button.  To submit an autocomplete suggestion, user can press enter in the input box, or click on the button.\n  `getSuggestions` is a callback function that is called whenever the user types in the input box, which causes the select menu to be populated.\n  It returns an object with the necessary props of \"currentSuggestions\" and \"showAddButton\" and optional props \"previewText\" and \"helperPromptText\" (latter are used in Editor.jsx)\n  `showSuggestionsOnSelect` is a boolean; if true, when the user selects an option from the suggestions,`getSuggestions` will be called. Useful when autocompleting a Ref in AddInterfaceInput.\n  `inputPlaceholder` is the placeholder for the input component.\n  `inputValue` and `changeInputValue` are passed from the parent so that when there is a change in the input box, the parent knows about it.  Useful in TopicSearch for the case \"Create new topic: [new topic]\"\n  `selectedCallback` is a callback function called when the user submits an autocomplete suggestion.\n  `autocompleteClassNames` are styling options\n   */\n  const [currentSuggestions, setCurrentSuggestions] = useState(null);\n  const [previewText, setPreviewText] = useState(null);\n  const [helperPromptText, setHelperPromptText] = useState(null);\n  const [showAddButton, setShowAddButton] = useState(false);\n  const [showCurrentSuggestions, setShowCurrentSuggestions] = useState(true);\n  const [inputClassNames, setInputClassNames] = useState(classNames({selected: 0}));\n  const suggestionEl = useRef(null);\n  const inputEl = useRef(null);\n  const buttonClassNames = classNames({button: 1, small: 1});\n\n  const getWidthOfInput = () => {\n    //Create a temporary div w/ all of the same styles as the input since we can't measure the input\n    let tmp = document.createElement(\"div\");\n    const inputEl = document.querySelector('.addInterfaceInput input');\n    const styles = window.getComputedStyle(inputEl);\n    //Reduce function required b/c cssText returns \"\" on Firefox\n    const cssText = Object.values(styles).reduce(\n        (css, propertyName) =>\n            `${css}${propertyName}:${styles.getPropertyValue(\n                propertyName\n            )};`\n    );\n    tmp.style.cssText = cssText\n\n    //otherwise it will always return the width of container instead of the content\n    tmp.style.removeProperty('width')\n    tmp.style.removeProperty('min-width')\n    tmp.style.removeProperty('min-inline-size')\n    tmp.style.removeProperty('inline-size')\n\n    tmp.innerHTML = inputEl.value.trim().replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n    document.body.appendChild(tmp);\n    const theWidth = tmp.getBoundingClientRect().width;\n    document.body.removeChild(tmp);\n    return theWidth;\n  }\n\n  useEffect(\n    () => {\n         const element = document.querySelector('.textPreviewSegment.highlight');\n         if (element) {element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' })}\n    }, [previewText]\n  )\n\n  const resizeInputIfNeeded = () => {\n    const currentWidth = getWidthOfInput();\n    if (currentWidth > 350) {document.querySelector('.addInterfaceInput input').style.width = `${currentWidth+20}px`}\n  }\n\n  const processSuggestions = (resultsPromise) => {\n    resultsPromise.then(results => {\n      setCurrentSuggestions(results.currentSuggestions);\n      setShowAddButton(results.showAddButton);\n      setHelperPromptText(results.helperPromptText);\n      if (!!results.previewText) {\n        generatePreviewText(results.previewText);\n      }\n      if (!!results.helperPromptText) {\n        document.querySelector('.addInterfaceInput input+span.helperCompletionText').style.insetInlineStart = `${getWidthOfInput()}px`;\n      }\n    });\n  }\n\n  const onChange = (input) => {\n    setInputClassNames(classNames({selected: 0}));\n    setShowCurrentSuggestions(true);\n    processSuggestions(getSuggestions(input));\n    resizeInputIfNeeded();\n  }\n\n  const handleOnClickSuggestion = (title) => {\n      changeInputValue(title);\n      setShowCurrentSuggestions(showSuggestionsOnSelect);\n      if (showSuggestionsOnSelect) {\n        processSuggestions(getSuggestions(title));\n      }\n      setInputClassNames(classNames({selected: 1}));\n      resizeInputIfNeeded();\n      inputEl.current.focus();\n  }\n\n  const Suggestion = ({title, color}) => {\n    return(<option\n              className=\"suggestion\"\n              onClick={(e)=>{\n                  e.stopPropagation()\n                  handleOnClickSuggestion(title)\n                }\n              }\n              style={{\"borderInlineStartColor\": color}}\n           >{title}</option>)\n\n  }\n  const mapSuggestions = (suggestions) => {\n    const div = suggestions.map((suggestion, index) => (\n\n        (<Suggestion\n           title={suggestion.name}\n           color={suggestion.border_color}\n           key={index}\n        />)\n\n    ))\n\n  return(div)\n  }\n\n  const handleSelection = () => {\n    selectedCallback(inputValue, currentSuggestions);\n    setPreviewText(null);\n    setShowAddButton(false);\n  }\n\n  const onKeyDown = e => {\n    if (e.key === 'Enter' && showAddButton) {\n      handleSelection(inputValue, currentSuggestions);\n    }\n\n    else if (e.key === 'ArrowDown' && currentSuggestions && currentSuggestions.length > 0) {\n      suggestionEl.current.focus();\n      (suggestionEl.current).firstChild.selected = 'selected';\n    }\n    else\n    {\n      changeInputValue(inputEl.current.value);\n    }\n  }\n\n\n  const generatePreviewText = (ref) => {\n        Sefaria.getText(ref, {context:1, stripItags: 1}).then(text => {\n           let segments = Sefaria.makeSegments(text, true);\n           segments = Sefaria.stripImagesFromSegments(segments);\n           const previewHTML =  segments.map((segment, i) => {\n            {\n              const heOnly = !segment.en;\n              const enOnly = !segment.he;\n              const overrideLanguage = (enOnly || heOnly) ? (heOnly ? \"hebrew\" : \"english\") : null;\n\n              return(\n                  <div\n                      className={classNames({'textPreviewSegment': 1, highlight: segment.highlight, heOnly: heOnly, enOnly: enOnly})}\n                      key={segment.ref}>\n                    <sup><ContentText\n                        text={{\"en\": segment.number, \"he\": Sefaria.hebrew.encodeHebrewNumeral(segment.number)}}\n                        defaultToInterfaceOnBilingual={true}\n                    /></sup> <ContentText html={{\"he\": segment.he+ \" \", \"en\": segment.en+ \" \" }} defaultToInterfaceOnBilingual={!overrideLanguage} overrideLanguage={overrideLanguage} bilingualOrder={[\"en\", \"he\"]}/>\n                  </div>\n              )\n            }\n          })\n          setPreviewText(previewHTML);\n        })\n  }\n\n   const checkEnterOnSelect = (e) => {\n      if (e.key === 'Enter') {\n          handleOnClickSuggestion(e.target.value);\n      }\n    }\n\n  return(\n    <div className={autocompleteClassNames} onClick={(e) => {e.stopPropagation()}} title={Sefaria._(buttonTitle)}>\n      <input\n          type=\"text\"\n          placeholder={Sefaria._(inputPlaceholder)}\n          onKeyDown={(e) => onKeyDown(e)}\n          onClick={(e) => {e.stopPropagation()}}\n          onChange={(e) => onChange(e.target.value)}\n          onBlur={(e) => setPreviewText(null) }\n          value={inputValue}\n          ref={inputEl}\n          className={inputClassNames}\n\n      /><span className=\"helperCompletionText sans-serif-in-hebrew\">{helperPromptText}</span>\n      {showAddButton ? <button className={buttonClassNames} onClick={(e) => {\n                    handleSelection(inputValue, currentSuggestions)\n                }}>{buttonTitle}</button> : null}\n\n      {showCurrentSuggestions && currentSuggestions && currentSuggestions.length > 0 ?\n          <div className=\"suggestionBoxContainer\">\n          <select\n              ref={suggestionEl}\n              className=\"suggestionBox\"\n              size={currentSuggestions.length}\n              multiple\n              onKeyDown={(e) => checkEnterOnSelect(e)}\n          >\n            {mapSuggestions(currentSuggestions)}\n          </select>\n          </div>\n          : null\n      }\n\n      {previewText ?\n          <div className=\"textPreviewContainer\">\n            <div className=\"textPreview\">\n              <div className=\"inner\">{previewText}</div>\n            </div>\n          </div>\n\n          : null\n\n      }\n\n    </div>\n    )\n}\n\nconst ImageWithCaption = ({photoLink, caption }) => {\n  \n  return (\n    <div>\n        <img class=\"imageWithCaptionPhoto\" src={photoLink}/>\n        <div class=\"imageCaption\"> \n          <InterfaceText text={caption} />\n        </div>\n      </div>);\n}\n\nconst AppStoreButton = ({ platform, href, altText }) => {\n  const isIOS = platform === 'ios';\n  const aClasses = classNames({button: 1, small: 1, white: 1, appButton: 1, ios: isIOS});\n  const iconSrc = `/static/icons/${isIOS ? 'ios' : 'android'}.svg`;\n  const text = isIOS ? 'iOS' : 'Android';\n  return (\n      <a target=\"_blank\" className={aClasses} href={href}>\n        <img src={iconSrc} alt={altText} />\n        <InterfaceText>{text}</InterfaceText>\n      </a>\n  );\n};\n\n\nexport {\n  AppStoreButton,\n  CategoryHeader,\n  SimpleInterfaceBlock,\n  DangerousInterfaceBlock,\n  SimpleContentBlock,\n  SimpleLinkedBlock,\n  BlockLink,\n  CategoryColorLine,\n  CategoryAttribution,\n  CollectionStatement,\n  CookiesNotification,\n  CollectionListing,\n  ColorBarBox,\n  Dropdown,\n  DropdownButton,\n  DropdownModal,\n  DropdownOptionList,\n  FeedbackBox,\n  FilterableList,\n  FollowButton,\n  GlobalWarningMessage,\n  InterruptingMessage,\n  Banner,\n  InterfaceText,\n  EnglishText,\n  HebrewText,\n  CommunityPagePreviewControls,\n  LanguageToggleButton,\n  Link,\n  LoadingMessage,\n  LoadingRing,\n  LoginPrompt,\n  NBox,\n  Note,\n  ProfileListing,\n  ProfilePic,\n  ReaderMessage,\n  CloseButton,\n  DisplaySettingsButton,\n  MenuButton,\n  SearchButton,\n  SaveButton,\n  SignUpModal,\n  SheetListing,\n  SheetAccessIcon,\n  SheetTopicLink,\n  TabView,\n  TextBlockLink,\n  ToggleSet,\n  ToolTipped,\n  TwoOrThreeBox,\n  ResponsiveNBox,\n  SheetMetaDataBox,\n  SheetAuthorStatement,\n  SheetTitle,\n  InterfaceLanguageMenu,\n  Autocompleter,\n  DonateLink,\n  DivineNameReplacer,\n  AdminToolHeader,\n  CategoryChooser,\n  TitleVariants,\n  requestWithCallBack,\n  OnInView,\n  TopicPictureUploader,\n  ImageWithCaption\n};\n","import React, { useState, useEffect, useRef} from 'react';\nimport PropTypes  from 'prop-types';\nimport ReactDOM  from 'react-dom';\nimport Component from 'react-class';\nimport classNames  from 'classnames';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport {\n  SearchButton,\n  GlobalWarningMessage,\n  ProfilePic,\n  InterfaceLanguageMenu,\n  InterfaceText,\n  LanguageToggleButton,\n  DonateLink\n} from './Misc';\n\n\nclass Header extends Component {\n  constructor(props) {\n    super(props)\n    this.state = {\n      mobileNavMenuOpen: false,\n    };\n  }\n  componentDidMount() {\n    window.addEventListener('keydown', this.handleFirstTab);\n  }\n  handleFirstTab(e) {\n    if (e.keyCode === 9) { // tab (i.e. I'm using a keyboard)\n      document.body.classList.add('user-is-tabbing');\n      window.removeEventListener('keydown', this.handleFirstTab);\n    }\n  }\n  toggleMobileNavMenu() {\n    this.setState({mobileNavMenuOpen: !this.state.mobileNavMenuOpen});\n  }\n  render() {\n    if (this.props.hidden && !this.props.mobileNavMenuOpen) {\n      return null;\n    }\n    const altText = `${Sefaria._siteSettings[\"SITE_NAME\"][\"en\"]} Logo`;\n    const logo = Sefaria.interfaceLang == \"hebrew\" ?\n      <img src={`/static${Sefaria._siteSettings.HE_LOGO}`} alt={altText}/> :\n      <img src={`/static${Sefaria._siteSettings.LOGO}`} alt={altText}/>;\n\n    const headerContent = (\n      <>\n        <div className=\"headerNavSection\">\n          <a className=\"home\" href=\"/\" >{logo}</a>\n          <a href=\"/texts\" className=\"textLink\"><InterfaceText context=\"Header\">Texts</InterfaceText></a>\n          <a href=\"/topics\" className=\"textLink\"><InterfaceText>Topics</InterfaceText></a>\n          { Sefaria._siteSettings.SITE_NAME.en == \"ContextUS\" ?\n            <a href=\"/topics/category/authors\" className=\"textLink\"><InterfaceText>Authors</InterfaceText></a> : null}\n          { Sefaria._siteSettings.TORAH_SPECIFIC ?\n            <a href=\"/community\" className=\"textLink\"><InterfaceText>Community</InterfaceText></a> : null}\n          <DonateLink classes={\"textLink donate\"} link={\"header\"} source={\"Header\"}><InterfaceText>Donate</InterfaceText></DonateLink>\n          {/*{ !Sefaria._siteSettings.TORAH_SPECIFIC ?*/}\n          {/*  <a href=\"/topics/authors\" className=\"textLink\"><InterfaceText>Authors</InterfaceText></a> : null}*/}\n        </div>\n\n        <div className=\"headerLinksSection\">\n          <SearchBar\n            onRefClick={this.props.onRefClick}\n            showSearch={this.props.showSearch}\n            openTopic={this.props.openTopic}\n            openURL={this.props.openURL}\n            hideHebrewKeyboard={!Sefaria._siteSettings.TORAH_SPECIFIC}\n          />\n\n          { Sefaria._uid ?\n            <LoggedInButtons headerMode={this.props.headerMode}/>\n            : <LoggedOutButtons headerMode={this.props.headerMode}/>\n          }\n          { !Sefaria._uid && Sefaria._siteSettings.TORAH_SPECIFIC ?\n              <InterfaceLanguageMenu \n                currentLang={Sefaria.interfaceLang}\n                translationLanguagePreference={this.props.translationLanguagePreference}\n                setTranslationLanguagePreference={this.props.setTranslationLanguagePreference} /> : null}\n        </div>\n      </>\n    );\n\n    const mobileHeaderContent = (\n      <>\n        <div>\n          <button onClick={this.props.onMobileMenuButtonClick} aria-label={Sefaria._(\"Menu\")} className=\"menuButton\">\n            <i className=\"fa fa-bars\"></i>\n          </button>\n        </div>\n\n        <div className=\"mobileHeaderCenter\">\n          { Sefaria._siteSettings.TORAH_SPECIFIC ?\n          <a className=\"home\" href=\"/texts\" >{logo}</a> : null }\n        </div>\n\n        {this.props.hasLanguageToggle && Sefaria._siteSettings.TORAH_SPECIFIC ?\n        <div className={this.props.firstPanelLanguage + \" mobileHeaderLanguageToggle\"}>\n          <LanguageToggleButton toggleLanguage={this.props.toggleLanguage} />\n        </div> :\n        <div></div>}\n      </>\n    );\n\n    const headerClasses = classNames({header: 1, mobile: !this.props.multiPanel});\n    const headerInnerClasses = classNames({\n      headerInner: 1,\n      boxShadow: this.props.hasBoxShadow,\n      mobile: !this.props.multiPanel\n    });\n    return (\n      <div className={headerClasses} role=\"banner\">\n        <div className={headerInnerClasses}>\n          {this.props.multiPanel ? headerContent : mobileHeaderContent}\n        </div>\n\n        {this.props.multiPanel ? null :\n        <MobileNavMenu\n          visible={this.props.mobileNavMenuOpen}\n          onRefClick={this.props.onRefClick}\n          showSearch={this.props.showSearch}\n          openTopic={this.props.openTopic}\n          openURL={this.props.openURL}\n          close={this.props.onMobileMenuButtonClick} />\n        }\n        <GlobalWarningMessage />\n      </div>\n    );\n  }\n}\nHeader.propTypes = {\n  multiPanel:   PropTypes.bool.isRequired,\n  headerMode:   PropTypes.bool.isRequired,\n  onRefClick:   PropTypes.func.isRequired,\n  showSearch:   PropTypes.func.isRequired,\n  openTopic:    PropTypes.func.isRequired,\n  openURL:      PropTypes.func.isRequired,\n  hasBoxShadow: PropTypes.bool.isRequired,\n};\n\n\nclass SearchBar extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      searchFocused: false\n    };\n    this._searchOverridePre = Sefaria._('Search for') +': \"';\n    this._searchOverridePost = '\"';\n    this._type_icon_map = {\n      \"Collection\": \"collection.svg\",\n      \"AuthorTopic\": \"iconmonstr-pen-17.svg\",\n      \"TocCategory\": \"iconmonstr-view-6.svg\",\n      \"PersonTopic\": \"iconmonstr-hashtag-1.svg\",\n      \"Topic\": \"iconmonstr-hashtag-1.svg\",\n      \"ref\": \"iconmonstr-book-15.svg\",\n      \"search\": \"iconmonstr-magnifier-2.svg\",\n      \"Term\": \"iconmonstr-script-2.svg\",\n      \"User\": \"iconmonstr-user-2%20%281%29.svg\"\n    }\n  }\n  componentDidMount() {\n    this.initAutocomplete();\n    window.addEventListener('keydown', this.handleFirstTab);\n  }\n  _type_icon(item) {\n    if (item.type === \"User\" && item.pic !== \"\") {\n      return item.pic;\n    } else {\n      return `/static/icons/${this._type_icon_map[item.type]}`;\n    }\n  }\n  _searchOverrideRegex() {\n    return RegExp(`^${RegExp.escape(this._searchOverridePre)}(.*)${RegExp.escape(this._searchOverridePost)}`);\n  }\n  // Returns true if override is caught.\n  catchSearchOverride(query) {\n    const override = query.match(this._searchOverrideRegex());\n    if (override) {\n      if (Sefaria.site) {\n        Sefaria.track.event(\"Search\", \"Search Box Navigation - Book Override\", override[1]);\n      }\n      this.closeSearchAutocomplete();\n      this.showSearch(override[1]);\n      $(ReactDOM.findDOMNode(this)).find(\"input.search\").val(override[1]);\n      return true;\n    }\n    return false;\n  }\n  initAutocomplete() {\n    $.widget( \"custom.sefariaAutocomplete\", $.ui.autocomplete, {\n      _renderItem: function(ul, item) {\n        const override = item.label.match(this._searchOverrideRegex());\n        const is_hebrew = Sefaria.hebrew.isHebrew(item.label);\n        return $( \"<li></li>\" )\n          .addClass('ui-menu-item')\n          .data( \"item.autocomplete\", item )\n          .toggleClass(\"search-override\", !!override)\n          .toggleClass(\"hebrew-result\", !!is_hebrew)\n          .toggleClass(\"english-result\", !is_hebrew)\n          .append(`<img alt=\"${item.type}\" class=\"ac-img-${item.type === \"User\" && item.pic === \"\" ? \"UserPlaceholder\" : item.type}\" src=\"${this._type_icon(item)}\">`)\n          .append( $(`<a href=\"${this.getURLForObject(item.type, item.key)}\" role='option' data-type-key=\"${item.type}-${item.key}\"></a>` ).text( item.label ) )\n          .appendTo( ul );\n      }.bind(this)\n    });\n    const anchorSide = Sefaria.interfaceLang === \"hebrew\" ? \"right+\" : \"left-\";\n    const sideGap = this.props.fullWidth ? 55 : Sefaria.interfaceLang === \"hebrew\" ? 38 : 40;\n    $(ReactDOM.findDOMNode(this)).find(\"input.search\").sefariaAutocomplete({\n      position: {my: anchorSide + sideGap + \" top+18\", at: anchorSide + \"0 bottom\"},\n      minLength: 3,\n      open: function($event, ui) {\n          const $widget = $(\"ul.ui-autocomplete\");\n          $(\".readerApp > .header\").append($widget);\n      },\n      select: ( event, ui ) => {\n        event.preventDefault();\n\n        if (this.catchSearchOverride(ui.item.label)) {\n          return false;\n        }\n\n        this.redirectToObject(ui.item.type, ui.item.key);\n        $(\".ui-state-focus\").removeClass(\"ui-state-focus\");\n\n        return false;\n      },\n      focus: ( event, ui ) => {\n        event.preventDefault();\n        $(ReactDOM.findDOMNode(this)).find(\"input.search\").val(ui.item.label);\n        $(\".ui-state-focus\").removeClass(\"ui-state-focus\");\n        $(`.ui-menu-item a[data-type-key=\"${ui.item.type}-${ui.item.key}\"]`).parent().addClass(\"ui-state-focus\");\n      },\n      source: (request, response) => Sefaria.getName(request.term)\n        .then(d => {\n          const comps = d[\"completion_objects\"].map(o => {\n            const c = {...o};\n            c[\"value\"] = `${o['title']}${o[\"type\"] === \"ref\" ? \"\" :` (${o[\"type\"]})`}`;\n            c[\"label\"] = o[\"title\"];\n            return c;\n          });\n          if (comps.length > 0) {\n            const q = `${this._searchOverridePre}${request.term}${this._searchOverridePost}`;\n            response([{value: \"SEARCH_OVERRIDE\", label: q, type: \"search\"}].concat(comps));\n          } else {\n            response([])\n          }\n        }, e => response([]))\n    });\n  }\n  showVirtualKeyboardIcon(show){\n    if(document.getElementById('keyboardInputMaster')){ //if keyboard is open, ignore.\n      return; //this prevents the icon from flashing on every key stroke.\n    }\n    if(Sefaria.interfaceLang === 'english' && !this.props.hideHebrewKeyboard){\n      $(ReactDOM.findDOMNode(this)).find(\".keyboardInputInitiator\").css({\"display\": show ? \"inline\" : \"none\"});\n    }\n  }\n  focusSearch(e) {\n    const parent = document.getElementById('searchBox');\n    this.setState({searchFocused: true});\n    this.showVirtualKeyboardIcon(true);\n  }\n  blurSearch(e) {\n    // check that you're actually focusing in on element outside of searchBox\n    // see 2nd answer https://stackoverflow.com/questions/12092261/prevent-firing-the-blur-event-if-any-one-of-its-children-receives-focus/47563344\n    const parent = document.getElementById('searchBox');\n    if (!parent.contains(e.relatedTarget)) {\n      if (!document.getElementById('keyboardInputMaster')) {\n        // if keyboard is open, don't just close it and don't close search\n        this.setState({searchFocused: false});\n      }\n      this.showVirtualKeyboardIcon(false);\n    }\n  }\n  showSearch(query) {\n    query = query.trim();\n    if (typeof sjs !== \"undefined\") {\n      query = encodeURIComponent(query);\n      window.location = `/search?q=${query}`;\n      return;\n    }\n    this.props.showSearch(query);\n\n    $(ReactDOM.findDOMNode(this)).find(\"input.search\").sefariaAutocomplete(\"close\");\n    this.props.onNavigate && this.props.onNavigate();\n  }\n  getURLForObject(type, key) {\n    if (type === \"Collection\") {\n      return `/collections/${key}`;\n    } else if (type === \"TocCategory\") {\n      return `/texts/${key.join('/')}`;\n    } else if (type in {\"Topic\": 1, \"PersonTopic\": 1, \"AuthorTopic\": 1}) {\n      return `/topics/${key}`;\n    } else if (type === \"ref\") {\n      return `/${key.replace(/ /g, '_')}`;\n    } else if (type === \"User\") {\n      return `/profile/${key}`;\n    }\n  }\n  redirectToObject(type, key) {\n    Sefaria.track.event(\"Search\", `Search Box Navigation - ${type}`, key);\n    this.closeSearchAutocomplete();\n    this.clearSearchBox();\n    const url = this.getURLForObject(type, key);\n    const handled = this.props.openURL(url);\n    if (!handled) {\n      window.location = url;\n    }\n    this.props.onNavigate && this.props.onNavigate();\n  }\n  submitSearch(query) {\n    Sefaria.getName(query)\n      .then(d => {\n        // If the query isn't recognized as a ref, but only for reasons of capitalization. Resubmit with recognizable caps.\n        const repairedCaseVariant = Sefaria.repairCaseVariant(query, d);\n        if (repairedCaseVariant !== query) {\n          this.submitSearch(repairedCaseVariant);\n          return;\n        }\n        const repairedQuery = Sefaria.repairGershayimVariant(query, d);\n        if (repairedQuery !== query) {\n          this.submitSearch(repairedQuery);\n          return;\n        }\n\n        if (d[\"is_ref\"]) {\n          var action = d[\"is_book\"] ? \"Search Box Navigation - Book\" : \"Search Box Navigation - Citation\";\n          Sefaria.track.event(\"Search\", action, query);\n          this.clearSearchBox();\n          this.props.onRefClick(d[\"ref\"]);  //todo: pass an onError function through here to the panel onError function which redirects to search\n          this.props.onNavigate && this.props.onNavigate();\n\n        } else if (!!d[\"topic_slug\"]) {\n          Sefaria.track.event(\"Search\", \"Search Box Navigation - Topic\", query);\n          this.clearSearchBox();\n          this.props.openTopic(d[\"topic_slug\"]);\n          this.props.onNavigate && this.props.onNavigate();\n\n        } else if (d[\"type\"] === \"Person\" || d[\"type\"] === \"Collection\" || d[\"type\"] === \"TocCategory\") {\n          this.redirectToObject(d[\"type\"], d[\"key\"]);\n        } else {\n          Sefaria.track.event(\"Search\", \"Search Box Search\", query);\n          this.closeSearchAutocomplete();\n          this.showSearch(query);\n        }\n      });\n  }\n  closeSearchAutocomplete() {\n    $(ReactDOM.findDOMNode(this)).find(\"input.search\").sefariaAutocomplete(\"close\");\n  }\n  clearSearchBox() {\n    $(ReactDOM.findDOMNode(this)).find(\"input.search\").val(\"\").sefariaAutocomplete(\"close\");\n  }\n  handleSearchKeyUp(event) {\n    if (event.keyCode !== 13 || $(\".ui-state-focus\").length > 0) { return; }\n    const query = $(event.target).val();\n    if (!query) { return; }\n    if (this.catchSearchOverride(query)) { return; }\n    this.submitSearch(query);\n  }\n  handleSearchButtonClick(event) {\n    const query = $(ReactDOM.findDOMNode(this)).find(\".search\").val();\n    if (query) {\n      this.submitSearch(query);\n    } else {\n      $(ReactDOM.findDOMNode(this)).find(\".search\").focus();\n    }\n  }\n  render() {\n    const inputClasses = classNames({\n      search: 1,\n      serif: 1,\n      keyboardInput: Sefaria.interfaceLang === \"english\",\n      hebrewSearch: Sefaria.interfaceLang === \"hebrew\"\n    });\n    const searchBoxClasses = classNames({searchBox: 1, searchFocused: this.state.searchFocused});\n\n    return (\n      <div id=\"searchBox\" className={searchBoxClasses}>\n        <SearchButton onClick={this.handleSearchButtonClick} />\n        <input className={inputClasses}\n          id=\"searchInput\"\n          placeholder={Sefaria._(\"Search for a text\")}\n          onKeyUp={this.handleSearchKeyUp}\n          onFocus={this.focusSearch}\n          onBlur={this.blurSearch}\n          maxLength={75}\n          title={Sefaria._(\"Search for Texts or Keywords Here\")} />\n      </div>\n    );\n  }\n}\nSearchBar.propTypes = {\n  onRefClick:         PropTypes.func.isRequired,\n  showSearch:         PropTypes.func.isRequired,\n  openTopic:          PropTypes.func.isRequired,\n  openURL:            PropTypes.func.isRequired,\n  fullWidth:          PropTypes.bool,\n  hideHebrewKeyboard: PropTypes.bool,\n};\n\n\nconst LoggedOutButtons = ({mobile, loginOnly}) => {\n  const [isClient, setIsClient] = useState(false);\n  const [next, setNext] = useState(\"/\");\n  const [loginLink, setLoginLink] = useState(\"/login?next=/\");\n  const [registerLink, setRegisterLink] = useState(\"/register?next=/\");\n  useEffect(()=>{\n    setIsClient(true);\n  }, []);\n  useEffect(()=> {\n    if(isClient){\n      setNext(encodeURIComponent(Sefaria.util.currentPath()));\n      setLoginLink(\"/login?next=\"+next);\n      setRegisterLink(\"/register?next=\"+next);\n    }\n  })\n  const classes = classNames({accountLinks: !mobile, anon: !mobile});\n  return (\n    <div className={classes}>\n      <a className=\"login loginLink\" href={loginLink} key={`login${isClient}`}>\n         {mobile ? <img src=\"/static/icons/login.svg\" /> : null }\n         <InterfaceText>Log in</InterfaceText>\n       </a>\n      {loginOnly ? null :\n      <a className=\"login signupLink\" href={registerLink} key={`register${isClient}`}>\n         {mobile ? <img src=\"/static/icons/register.svg\" /> : null }\n         <InterfaceText>Sign up</InterfaceText>\n      </a> }\n      { Sefaria._siteSettings.TORAH_SPECIFIC ? <HelpButton /> : null}\n    </div>\n  );\n}\n\n\nconst LoggedInButtons = ({headerMode}) => {\n  const [isClient, setIsClient] = useState(false);\n  useEffect(() => {\n    if(headerMode){\n      setIsClient(true);\n    }\n  }, []);\n  const unread = headerMode ? ((isClient && Sefaria.notificationCount > 0) ? 1 : 0) : Sefaria.notificationCount > 0 ? 1 : 0\n  const notificationsClasses = classNames({notifications: 1, unread: unread});\n  return (\n    <div className=\"loggedIn accountLinks\">\n      <a href=\"/texts/saved\" aria-label=\"See My Saved Texts\">\n        <img src=\"/static/icons/bookmarks.svg\" alt={Sefaria._('Bookmarks')}/>\n      </a>\n      {Sefaria._siteSettings.TORAH_SPECIFIC ?\n          <a href=\"/notifications\" aria-label=\"See New Notifications\" key={`notificationCount-C-${unread}`} className={notificationsClasses}>\n          <img src=\"/static/icons/notification.svg\" alt={Sefaria._('Notifications')} />\n          </a> : null}\n      { Sefaria._siteSettings.TORAH_SPECIFIC ? <HelpButton /> : null}\n      <ProfilePicMenu len={24} url={Sefaria.profile_pic_url} name={Sefaria.full_name} key={`profile-${isClient}-${Sefaria.full_name}`}/>\n    </div>\n  );\n}\n\n\nconst MobileNavMenu = ({onRefClick, showSearch, openTopic, openURL, close, visible}) => {\n  const classes = classNames({\n    mobileNavMenu: 1,\n    closed: !visible,\n  });\n  const aboutMessage = `About ${Sefaria._siteSettings.SITE_NAME[\"en\"]}`;\n  return (\n    <div className={classes}>\n      <div className=\"searchLine\">\n        <SearchBar\n          onRefClick={onRefClick}\n          showSearch={showSearch}\n          openTopic={openTopic}\n          openURL={openURL}\n          onNavigate={close}\n          fullWidth={true}\n          hideHebrewKeyboard={true} />\n      </div>\n      <a href=\"/texts\" onClick={close} className=\"textsPageLink\">\n        <img src=\"/static/icons/book.svg\" />\n        <InterfaceText context=\"Header\">Texts</InterfaceText>\n      </a>\n      <a href=\"/topics\" onClick={close}>\n        <img src=\"/static/icons/topic.svg\" />\n        <InterfaceText>Topics</InterfaceText>\n      </a>\n      {Sefaria._siteSettings.TORAH_SPECIFIC ?\n          <>\n          <a href=\"/community\" onClick={close}>\n            <img src=\"/static/icons/community.svg\" />\n            <InterfaceText>Community</InterfaceText>\n          </a>\n          <a href=\"/calendars\" onClick={close}>\n            <img src=\"/static/icons/calendar.svg\" />\n            <InterfaceText>Learning Schedules</InterfaceText>\n          </a>\n          <a href=\"/collections\" onClick={close}>\n            <img src=\"/static/icons/collection.svg\"/>\n            <InterfaceText>Collections</InterfaceText>\n          </a>\n          </> : null}\n      {/*{!Sefaria._siteSettings.TORAH_SPECIFIC ?*/}\n      {/*    <>*/}\n      {/*    <a href=\"/authors\" onClick={close}>*/}\n      {/*      <img src=\"/static/icons/community.svg\" />*/}\n      {/*      <InterfaceText>Authors</InterfaceText>*/}\n      {/*    </a>*/}\n      {/*    </> : null}*/}\n\n      <DonateLink classes={\"blue\"} source=\"MobileNavMenu\">\n        <img src=\"/static/img/heart.png\" alt=\"donation icon\" />\n        <InterfaceText>Donate</InterfaceText>\n      </DonateLink>\n\n      <div className=\"mobileAccountLinks\">\n        {Sefaria._uid ?\n        <>\n          <a href=\"/my/profile\" onClick={close}>\n            <ProfilePic len={22} url={Sefaria.profile_pic_url} name={Sefaria.full_name} />\n            <InterfaceText>Profile</InterfaceText>\n          </a>\n          <a href=\"/texts/saved\" onClick={close}>\n            <img src=\"/static/icons/bookmarks.svg\" alt={Sefaria._('Bookmarks')} />\n            <InterfaceText>Saved & History</InterfaceText>\n          </a>\n          {Sefaria._siteSettings.TORAH_SPECIFIC ?\n          <a href=\"/notifications\" onClick={close}>\n            <img src=\"/static/icons/notification.svg\" alt={Sefaria._('Notifications')} />\n            <InterfaceText>Notifications</InterfaceText>\n          </a> : null}\n        </> : null }\n\n        <a href=\"/about\">\n          <img src=\"/static/icons/info.svg\" />\n          <InterfaceText>{aboutMessage}</InterfaceText>\n        </a>\n        \n        {Sefaria._uid ?\n        <>\n          <a href=\"/settings/account\">\n          <img src=\"/static/icons/settings.svg\" />\n          <InterfaceText>Account Settings</InterfaceText>\n        </a>\n        </> : null }\n\n        {Sefaria._siteSettings.TORAH_SPECIFIC ?\n          <MobileInterfaceLanguageToggle /> : null}\n\n        {Sefaria._siteSettings.TORAH_SPECIFIC ?\n            <a href=\"/help\">\n              <img src=\"/static/icons/help.svg\" />\n              <InterfaceText>Get Help</InterfaceText>\n            </a> : null}\n\n        {Sefaria._uid ?\n        <a href=\"/logout\" className=\"logout\">\n          <img src=\"/static/icons/logout.svg\" />\n          <InterfaceText>Logout</InterfaceText>\n        </a>\n        :\n        <LoggedOutButtons mobile={true} loginOnly={true}/> }\n\n      </div>\n      {Sefaria._siteSettings.TORAH_SPECIFIC ?\n        <DonateLink classes={\"blue\"} source=\"MobileNavMenu\" link={\"header\"}>\n          <img src=\"/static/img/heart.png\" alt=\"donation icon\" />\n          <InterfaceText>Donate</InterfaceText>\n        </DonateLink>\n          : null}\n    </div>\n  );\n};\n\n\nconst ProfilePicMenu = ({len, url, name}) => {\n  const [isOpen, setIsOpen] = useState(false);\n  const wrapperRef = useRef(null);\n\n  const menuClick = (e) => {\n    var el = e.target;\n    while (el && el.nodeName !== 'A') {\n      el = el.parentNode;\n    }\n    if (el) {\n      resetOpen();\n    }\n  };\n  const profilePicClick = (e) => {\n    e.preventDefault();\n    resetOpen();\n  };\n  const resetOpen = () => {\n    setIsOpen(isOpen => !isOpen);\n  };\n  const handleHideDropdown = (event) => {\n    if (event.key === 'Escape') {\n      setIsOpen(false);\n    }\n  };\n  const handleClickOutside = (event) => {\n    if (\n        wrapperRef.current &&\n        !wrapperRef.current.contains(event.target)\n    ) {\n      setIsOpen(false);\n    }\n  };\n\n  useEffect(() => {\n    document.addEventListener('keydown', handleHideDropdown, true);\n    document.addEventListener('click', handleClickOutside, true);\n    return () => {\n      document.removeEventListener('keydown', handleHideDropdown, true);\n      document.removeEventListener('click', handleClickOutside, true);\n    };\n  }, []);\n  const getCurrentPage = () => {\n    return encodeURIComponent(Sefaria.util.currentPath());\n  };\n  return (\n    <div className=\"myProfileBox\" ref={wrapperRef}>\n        <a href=\"/my/profile\" className=\"my-profile\" onClick={profilePicClick}>\n          <ProfilePic len={len} url={url} name={name}/>\n        </a>\n        <div className=\"interfaceLinks\">\n          {isOpen ?\n          <div className=\"interfaceLinks-menu profile-menu\" onClick={menuClick}>\n            <div className=\"interfaceLinks-header profile-menu\">{name}</div>\n            <div className=\"profile-menu-middle\">\n              <div><a className=\"interfaceLinks-row\" id=\"my-profile-link\" href=\"/my/profile\">\n                <InterfaceText>Profile</InterfaceText>\n              </a></div>\n              <div><a className=\"interfaceLinks-row\" id=\"new-sheet-link\" href=\"/sheets/new\">\n                <InterfaceText>Create a New Sheet</InterfaceText>\n              </a></div>\n              <div><a className=\"interfaceLinks-row\" id=\"account-settings-link\" href=\"/settings/account\">\n                <InterfaceText>Account Settings</InterfaceText>\n              </a></div>\n              {Sefaria._siteSettings.TORAH_SPECIFIC ?\n                <div className=\"interfaceLinks-row languages\">\n                  <a className={`${(Sefaria.interfaceLang == 'hebrew') ? 'active':''}`} href={`/interface/hebrew?next=${getCurrentPage()}`} id=\"select-hebrew-interface-link\">עברית</a>\n                  <a className={`${(Sefaria.interfaceLang == 'english') ? 'active':''}`} href={`/interface/english?next=${getCurrentPage()}`} id=\"select-english-interface-link\">English</a>\n                </div> : null}\n              {Sefaria._siteSettings.TORAH_SPECIFIC ? <div><a className=\"interfaceLinks-row bottom\" id=\"help-link\" href=\"/help\">\n                                                      <InterfaceText>Help</InterfaceText>\n                                                      </a></div> : null}\n            </div>\n            <hr className=\"interfaceLinks-hr\"/>\n            <div><a className=\"interfaceLinks-row logout\" id=\"logout-link\" href=\"/logout\">\n              <InterfaceText>Logout</InterfaceText>\n            </a></div>\n          </div> : null}\n        </div>\n    </div>\n  );\n};\n\n\nconst MobileInterfaceLanguageToggle = () => {\n  const currentURL = encodeURIComponent(Sefaria.util.currentPath());\n\n  const links = Sefaria.interfaceLang == \"hebrew\" ?\n    <>\n      <a href={\"/interface/hebrew?next=\" + currentURL} className=\"int-he\">עברית</a>\n      <span className=\"separator\">•</span>\n      <a href={\"/interface/english?next=\" + currentURL} className=\"int-en inactive\">English</a>\n    </>\n    :\n    <>\n      <a href={\"/interface/english?next=\" + currentURL} className=\"int-en\">English</a>\n      <span className=\"separator\">•</span>\n      <a href={\"/interface/hebrew?next=\" + currentURL} className=\"int-he inactive\">עברית</a>\n    </>;\n\n  return (\n    <div className=\"mobileInterfaceLanguageToggle\">\n      <img src=\"/static/icons/globe-wire.svg\" />\n      {links}\n    </div>\n  );\n};\n\n\nconst HelpButton = () => {\n  const url = Sefaria._v({he: \"/collections/%D7%A9%D7%90%D7%9C%D7%95%D7%AA-%D7%A0%D7%A4%D7%95%D7%A6%D7%95%D7%AA-%D7%91%D7%A1%D7%A4%D7%A8%D7%99%D7%90\", en:\"/collections/sefaria-faqs\"});\n  return (\n    <div className=\"help\">\n      <a href={url}>\n        <img src=\"/static/img/help.svg\" alt={Sefaria._(\"Help\")}/>\n      </a>\n    </div>\n  );\n};\n\n\nexport default Header;","import {\n  LoadingMessage\n} from './Misc';\nimport React  from 'react';\nimport ReactDOM  from 'react-dom';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport TextRange  from './TextRange';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport Component from 'react-class';\nimport {ContentText} from \"./ContentText\";\n\n\nclass TextColumn extends Component {\n  // An infinitely scrollable column of text, composed of TextRanges for each section.\n  constructor(props) {\n    super(props);\n    this.state = {\n      showScrollPlaceholders: false\n    };\n    this.debouncedAdjustHighlightedAndVisible = Sefaria.util.debounce(this.adjustHighlightedAndVisible, 100);\n    this.scrollPlaceholderHeight = 90;\n    this.scrollPlaceholderMargin = 30;\n    this.highlightThreshhold = props.multiPanel ? 140 : 70;\n  }\n  componentDidMount() {\n    this._isMounted          = true;\n    this.node                = ReactDOM.findDOMNode(this)\n    this.$container          = $(this.node);\n    this.initialScrollTopSet = false;\n    this.windowMiddle        = $(window).outerHeight() / (this.props.mode === \"TextAndConnections\" ? 4 : 2);\n\n    // Set on mount, so placeholders aren't rendered server side to prevent intial layout shift\n    this.setState({showScrollPlaceholders: true});\n\n       const params = {\n         content_type: Sefaria.index(this.props.bookTitle).primary_category,\n         item_id: this.props.bookTitle\n       }\n      console.log(params)\n      gtag(\"event\", \"select_content\", params)\n\n    this.node.addEventListener(\"scroll\", this.handleScroll);\n  }\n  componentWillUnmount() {\n    this._isMounted = false;\n    this.node.removeEventListener(\"scroll\", this.handleScroll);\n  }\n  componentDidUpdate(prevProps, prevState) {\n    const layoutWidth = this.$container.find(\".textInner\").width();\n    const layoutWidthChanged = this.prevLayoutWidth && this.prevLayoutWidth !== layoutWidth;\n    this.prevLayoutWidth = layoutWidth;\n\n    if (prevProps.mode === \"Text\" && this.props.mode === \"TextAndConnections\") {\n      // When opening mobile connections panel, scroll to highlighted\n      // console.log(\"scroll to highlight for mobile connections open\")\n      this.scrollToHighlighted();\n\n    } else if (this.state.showScrollPlaceholders && !prevState.showScrollPlaceholders && !this.initialScrollTopSet) {\n      // After scroll placeholders are first rendered, scroll down so top placeholder\n      // is out of view and scrolling up is possible.\n      // console.log(\"scrolling for ScrollPlaceholders first render\")\n      this.setInitialScrollPosition();\n\n    } else if (this.props.srefs.length === 1 &&\n        Sefaria.util.inArray(this.props.srefs[0], prevProps.srefs) === -1 &&\n        !prevProps.srefs.some(r => Sefaria.refContains(this.props.srefs[0], r))) {\n      // If we are switching to a single ref not in the current TextColumn,\n      // treat it as a fresh open.\n      // console.log(\"setting initialScroll for brand new ref\")\n      this.setInitialScrollPosition();\n\n    } else if (prevProps.srefs.length === this.props.srefs.length &&\n      !prevProps.srefs.compare(this.props.srefs)) {\n      // When the highlighted segment has changed, scroll to it.\n      // refs length should be equal so as not to scroll when infinite scroll changes refs\n      this.scrollToHighlighted();\n\n    } else if ((this.props.settings.language !== prevProps.settings.language) ||\n        (prevProps.currVersions.en !== this.props.currVersions.en) ||\n        (prevProps.currVersions.he !== this.props.currVersions.he)) {\n      // When the content the changes but we are anchored on a line, scroll to it\n      // console.log(\"scroll to highlighted on text content change\")\n      this.scrollToHighlighted();\n    } else if (layoutWidthChanged) {\n      // When the width of the text column changes, keep highlighted text in place\n      // console.log(\"restore scroll by percentage for layout Width Change\")\n      this.restoreScrollPositionByPercentage();\n    }\n  }\n  handleScroll(event) {\n    // console.log(\"scroll\");\n    if (this.justScrolled) {\n      // console.log(\"passed scroll\");\n      this.justScrolled = false;\n      return;\n    }\n    // console.log(\"handled Scroll\");\n    this.debouncedAdjustHighlightedAndVisible();\n    this.adjustInfiniteScroll();\n  }\n  calculatePositionWithinElement(event){\n    const rect = event.target.getBoundingClientRect();\n    const x = event.clientX - rect.left; //x position within the element.\n    const y = event.clientY - rect.top;  //y position within the element.\n    return [x,y]\n  }\n  handleClick(event) {\n    const pos = this.calculatePositionWithinElement(event)\n    this.setState({lastClickXY:pos})\n  }\n  handleDoubleClick(event) {\n    if (event.detail > 1) {\n    const pos = this.calculatePositionWithinElement(event)\n      // might be problematic if there is a slight move in the double-click shaky hands. can be fixed with an error of a few px on both axes.\n      if (this.state.lastClickXY[0] !== pos[0] || this.state.lastClickXY[1] !== pos[1]){\n        event.preventDefault();\n      }\n    }\n  }\n\n  handleTextSelection() {\n    //Please note that because this function is triggered by an event listener on the document object, that will always be the event target\n    // (should someone choose to add reference to the event itself in the future in this function) and not a more specific element.\n    const selection = window.getSelection();\n    let refs = [];\n    if (selection.type === \"Range\") {\n      //console.log(\"handling range\");\n      const $start  = $(Sefaria.util.getSelectionBoundaryElement(true)).closest(\".segment\");\n      const $end    = $(Sefaria.util.getSelectionBoundaryElement(false)).closest(\".segment\");\n      let $segments = this.$container.find(\".segment\");\n      let start     = $segments.index($start);\n      let end       = $segments.index($end);\n      //if one of the endpoints isn't actually in a segment node (for example its in a title), adjust selection endpoints\n      start = start === -1 ? end : start;\n      end = end === -1 ? start : end;\n      $segments = $segments.slice(start, end+1);\n\n      $segments.each(function() {\n        refs.push($(this).attr(\"data-ref\"));\n      });\n\n      //console.log(\"Setting highlights by Text Selection\");\n      //console.log(refs);\n      if (refs.length > 0) {\n        this.props.setTextListHighlight(refs);\n      }\n    }\n    //const selectedWords = selection.toString(); //this doesnt work in Chrome, as it does not skip elements marked with css `user-select: none` as it should.\n    const selectedWords = Sefaria.util.getNormalizedSelectionString(); //this gets around the above issue\n    if (selectedWords !== this.props.selectedWords) {\n      //console.log(\"setting selecting words\")\n      this.props.setSelectedWords(selectedWords);\n    }\n  }\n  handleTextLoad(ref) {\n\n    // TextRanges in the column may be initial rendered in \"loading\" state without data.\n    // When the data loads we may need to change scroll position or render addition ranges.\n    // console.log(\"handle text load: \", ref);\n    if (this.$container.find(\".basetext.loading\").length) {\n      // Don't mess with scroll positions until all sections of text have loaded,\n      // prevent race conditions when mutliple section may load out of order.\n      return;\n    }\n\n    if (!this.initialScrollTopSet) {\n      this.setInitialScrollPosition();\n      this.initialScrollTopSet = true;\n    }\n\n    // When content loads check if we already need to load another section below, which\n    // occurs when the loaded section is very short and whitespace is already visible below it.\n    // Only check down, a text load should never trigger an infinite scroll up\n    // console.log(\"Checking infinite scroll down\");\n    this.adjustInfiniteScroll(true);\n\n    if (this.loadingContentAtTop) {\n      // If the text that was just loaded was at the top of the page, restore the scroll\n      // position to keep what the user was looking at in place.\n      this.restoreScrollPositionAfterTopLoad();\n    }\n\n    const $texts  = this.$container.find(\".basetext\")\n\n    if ($texts.length == 1) {\n      this.scrollToHighlighted();\n    }\n\n  }\n  setInitialScrollPosition() {\n    // Sets scroll initial scroll position when a text is loaded which is either down to\n    // the highlighted segments, or is just down far enough to hide the scroll placeholder above.\n\n    if (this.node.scrollHeight < this.node.clientHeight) { return; }\n\n    if (this.$container.find(\".segment.invisibleHighlight\").length) {\n      // If there is a highlight the initial position scrolls to it.\n      this.scrollToHighlighted();\n\n    } else {\n      // When a text is first loaded, scroll it down a small amount so that it is\n      // possible to scroll up and trigginer infinites scroll up. This also hides\n      // \"Loading...\" div which sit above the text.\n      const top = this.scrollPlaceholderHeight;\n      // console.log(\"set Initial Scroll Postion: \", top);\n      this.setScrollTop(top);\n    }\n  }\n  scrollToHighlighted() {\n    // Scroll to the first highlighted segment\n    if (!this._isMounted) { return; }\n    const $container   = this.$container;\n    const $readerPanel = $container.closest(\".readerPanel\");\n    const $highlighted = $container.find(\".segment.invisibleHighlight\").first();\n    if ($highlighted.length) {\n      const adjust = this.scrollPlaceholderHeight + this.scrollPlaceholderMargin;\n      let top = $highlighted.position().top + adjust - this.highlightThreshhold;\n      top = top > this.scrollPlaceholderHeight ? top : this.scrollPlaceholderHeight;\n      this.setScrollTop(top);\n      // console.log(\"scroll to highlighted: \", top);\n      if ($readerPanel.attr(\"id\") == $(\".readerPanel:last\").attr(\"id\")) {\n        $highlighted.focus();\n      }\n    }\n  }\n  restoreScrollPositionAfterTopLoad() {\n    // After one or more new TextRanges have just loaded in the first position, scroll\n    // down to the TextRange that was visible before, so the TextColumn doesn't jump.\n    // console.log(\"checking restore scroll after up\");\n    const $texts  = this.$container.find(\".basetext\");\n    if ($texts.length < 2 || $texts.eq(0).hasClass(\"loading\") ) { return; }\n\n    this.loadingContentAtTop = false;\n    const targetTop = $texts.eq(this.numSectionsLoadedAtTop).position().top;\n    const adjust = this.scrollPlaceholderHeight + this.scrollPlaceholderMargin;\n    const top = targetTop + (2*this.node.scrollTop) - adjust;\n    this.setScrollTop(top);\n    // console.log(\"scroll to restore after infinite up: \" + top)\n  }\n  restoreScrollPositionByPercentage() {\n    // After the layout width of the column changes, restore the scroll to the same percentage\n    // of it's scroll position it had before. This approximates keeping the currently visible\n    // content in place, even thought its scroll position has changed due to the new layout.\n    if (!this.prevScrollPercentage) { return; }\n    const target = this.node.scrollHeight * this.prevScrollPercentage;\n    this.setScrollTop(target);\n  }\n  setScrollTop(top) {\n    // Set the scroll top of the column, including the flag to prevent extra handling\n    // of scroll event.\n    this.justScrolled = true;\n    this.node.scrollTop = top;\n  }\n  adjustInfiniteScroll(downOnly=false) {\n    // Add or remove TextRanges from the top or bottom, depending on scroll position\n    // console.log(\"adjust Infinite Scroll\");\n    if (!this._isMounted) { return; }\n    if (this.node.scrollHeight <= this.node.clientHeight) { return; }\n    const $node        = this.$container;\n\n    let refs         = this.props.srefs.slice();\n    const $lastText    = $node.find(\".textRange.basetext\").last();\n    if (!$lastText.length) { console.log(\"no last basetext\"); return; }\n    const lastTop      = $lastText.position().top;\n    const lastBottom   = lastTop + $lastText.outerHeight();\n    const windowHeight = $node.outerHeight();\n    const windowTop    = this.node.scrollTop;\n    let data;\n    if (windowTop < 75 && !this.loadingContentAtTop && !downOnly) {\n      // UP: add the previous section above then adjust scroll position so page doesn't jump\n      // console.log(\"Inifite Scroll UP\");\n      let topRef = refs[0];\n      data   = Sefaria.ref(topRef);   // data for current ref\n      if (data && data.prev) {\n        refs.splice(refs, 0, data.prev);  // Splice in at least the previous one (-1)\n        this.numSectionsLoadedAtTop = 1;\n\n        let prevData, earlierData;\n\n        // Now, only add sources if we have data for them\n        if(prevData = Sefaria.ref(data.prev)) {\n          earlierData = Sefaria.ref(prevData.prev);\n        }\n\n        while(earlierData && this.numSectionsLoadedAtTop < 10) {\n          refs.splice(refs, 0, earlierData.ref);\n          this.numSectionsLoadedAtTop += 1;\n          earlierData = Sefaria.ref(earlierData.prev);\n        }\n\n        //console.log(\"Up! Add previous section. Windowtop is: \" + windowTop);\n        this.loadingContentAtTop = true;\n        this.props.updateTextColumn(refs);\n      }\n    } else if ( lastBottom < windowHeight + 80 ) {\n      // DOWN: add the next section to bottom\n      if ($lastText.hasClass(\"loading\")) {\n        //console.log(\"last text is loading - don't add next section\");\n        return;\n      }\n      //console.log(\"Down! Add next section\");\n      let currentRef = refs.slice(-1)[0];\n      data       = Sefaria.ref(currentRef);\n      if (data && data.next) {\n        refs.push(data.next); // Append at least the next one\n        let numSectionsAddToBottom = 1;\n        let nextData, laterData;\n\n        // Now, only add sources if we have data for them\n        if(nextData = Sefaria.ref(data.next)) {\n          laterData = Sefaria.ref(nextData.next);\n        }\n\n        while(laterData && numSectionsAddToBottom < 10) {\n          refs.push(laterData.ref);\n          laterData = Sefaria.ref(laterData.next);\n          numSectionsAddToBottom += 1;\n        }\n\n        this.props.updateTextColumn(refs);\n      }\n    }\n  }\n  adjustHighlightedAndVisible() {\n    //console.log(\"adjustHighlightedAndVisible\");\n    // Adjust which ref is currently consider visible for header and URL,\n    // and while the TextList is open, update which segment should be highlighted.\n    // Keeping the highlightedRefs value in the panel ensures it will return\n    // to the right location after closing other panels.\n    if (!this._isMounted) { return; }\n\n    this.prevScrollPercentage = this.node.scrollTop / this.node.scrollHeight;\n\n    // When using tab to navigate (i.e. a11y) set ref to currently focused ref\n    let $segment = null;\n    if ($(\"body\").hasClass(\"user-is-tabbing\") && $(\".segment:focus\").length > 0) {\n      $segment = $(\".segment:focus\").eq(0);\n    } else {\n      const $container = this.$container;\n      $container.find(\".basetext .segment\").each(function(i, segment) {\n        const top = $(segment).offset().top - $container.offset().top;\n        const bottom = $(segment).outerHeight() + top;\n        if (bottom > this.windowMiddle || top >= this.highlightThreshhold) {\n          $segment = $(segment);\n          return false;\n        }\n      }.bind(this));\n    }\n\n    if (!$segment) { return; }\n\n    const $section = $segment.closest(\".textRange\");\n    const sectionRef = $section.attr(\"data-ref\");\n    this.props.setCurrentlyVisibleRef(sectionRef);\n\n    // don't move around highlighted segment when scrolling a single panel,\n    const shouldShowHighlight = this.props.hasSidebar || this.props.mode === \"TextAndConnections\";\n    const ref = $segment.attr(\"data-ref\");\n    this.props.setTextListHighlight(ref, shouldShowHighlight);\n  }\n  render() {\n    let classes = classNames({textColumn: 1, connectionsOpen: this.props.mode === \"TextAndConnections\"});\n    const index = Sefaria.index(Sefaria.parseRef(this.props.srefs[0]).index);\n    const isDictionary = (index && index.categories[0] === \"Reference\");\n    let content =  this.props.srefs.map((sref) => {\n      const oref = Sefaria.getRefFromCache(sref);\n      const isCurrentlyVisible = oref && this.props.currentlyVisibleRef === oref.sectionRef;\n      return (<TextRange\n        panelPosition ={this.props.panelPosition}\n        sref={sref}\n        isCurrentlyVisible={isCurrentlyVisible}\n        currVersions={this.props.currVersions}\n        highlightedRefs={this.props.highlightedRefs}\n        showHighlight={this.props.showHighlight}\n        textHighlights={this.props.textHighlights}\n        hideTitle={isDictionary}\n        basetext={true}\n        withContext={true}\n        loadLinks={true}\n        prefetchNextPrev={true}\n        prefetchMultiple={isDictionary?20:0}\n        showParashahHeaders={true}\n        settings={this.props.settings}\n        setOption={this.props.setOption}\n        showBaseText={this.props.showBaseText}\n        onSegmentClick={this.props.onSegmentClick}\n        onCitationClick={this.props.onCitationClick}\n        onNamedEntityClick={this.props.onNamedEntityClick}\n        onTextLoad={this.handleTextLoad}\n        filter={this.props.filter}\n        panelsOpen={this.props.panelsOpen}\n        layoutWidth={this.props.layoutWidth}\n        unsetTextHighlight={this.props.unsetTextHighlight}\n        navigatePanel={this.props.navigatePanel}\n        translationLanguagePreference={this.props.translationLanguagePreference}\n        updateCurrVersionsToMatchAPIResult={this.props.updateCurrVersionsToMatchAPIResult}\n        key={sref} />);\n    });\n\n    let pre, post, bookTitle;\n    if (content.length) {\n      // Add Next and Previous loading indicators\n      const first   = Sefaria.ref(this.props.srefs[0]);\n      const last    = Sefaria.ref(this.props.srefs.slice(-1)[0]);\n      const hasPrev = first && first.prev;\n      const noPrev  = first && !first.prev; // first is loaded, so we actually know there's nothing prev\n      const hasNext = last && last.next;\n\n      bookTitle = noPrev ?\n        <div className=\"bookMetaDataBox\" key=\"bookTitle\">\n          <div className=\"title\" role=\"heading\" aria-level=\"1\">\n            <ContentText text={{en: this.props.bookTitle, he: this.props.heBookTitle}} defaultToInterfaceOnBilingual={true} />\n          </div>\n        </div> : null;\n\n      pre = this.state.showScrollPlaceholders ?\n        (noPrev ? bookTitle :\n        <LoadingMessage className=\"base prev\" key={\"prev\"}/>) : null;\n\n      post = hasNext && this.state.showScrollPlaceholders ?\n        <LoadingMessage className=\"base next\" key={\"next\"}/> :\n        <LoadingMessage message={\" \"} heMessage={\" \"} className=\"base next final\" key={\"next\"}/>;\n    }\n\n    return (<div className={classes} onMouseUp={this.handleTextSelection} onClick={this.handleClick} onMouseDown={this.handleDoubleClick}>\n      {pre}\n      {content}\n      {post}\n    </div>);\n  }\n}\nTextColumn.propTypes = {\n  srefs:                  PropTypes.array.isRequired,\n  currVersions:           PropTypes.object.isRequired,\n  highlightedRefs:        PropTypes.array,\n  basetext:               PropTypes.bool,\n  withContext:            PropTypes.bool,\n  loadLinks:              PropTypes.bool,\n  prefetchNextPrev:       PropTypes.bool,\n  openOnClick:            PropTypes.bool,\n  lowlight:               PropTypes.bool,\n  multiPanel:             PropTypes.bool,\n  mode:                   PropTypes.string,\n  settings:               PropTypes.object,\n  interfaceLang:          PropTypes.string,\n  showBaseText:           PropTypes.func,\n  updateTextColumn:       PropTypes.func,\n  onSegmentClick:         PropTypes.func,\n  onCitationClick:        PropTypes.func,\n  onNamedEntityClick:     PropTypes.func,\n  setTextListHighlight:   PropTypes.func,\n  setCurrentlyVisibleRef: PropTypes.func,\n  setSelectedWords:       PropTypes.func,\n  onTextLoad:             PropTypes.func,\n  panelsOpen:             PropTypes.number,\n  hasSidebar:             PropTypes.bool,\n  textHighlights:         PropTypes.array,\n  unsetTextHighlight:     PropTypes.func,\n  translationLanguagePreference: PropTypes.string,\n  navigatePanel:          PropTypes.func,\n};\n\n\nexport default TextColumn;\n","import React  from 'react';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport Sefaria  from './sefaria/sefaria';\nimport {\n  CategoryColorLine,\n  MenuButton,\n  DisplaySettingsButton,\n  SearchButton,\n} from './Misc';\nimport {ContentText} from \"./ContentText\";\n\nconst ComparePanelHeader = ({ search, category, openDisplaySettings, navHome, catTitle, heCatTitle, \n  onBack, openSearch\n}) => {\n  if (search) {\n    const [query, setQuery] = React.useState(\"\");\n    const handleSearchKeyUp = event => {if (event.keyCode === 13 && query) { openSearch(query);}};\n    const handleSearchButtonClick = () => {if (query) { openSearch(query);}};\n    return (\n      <div className=\"readerNavTop search\">\n        <CategoryColorLine category=\"System\" />\n        <div className=\"readerNavTopStart\">\n          <MenuButton onClick={onBack} compare={true} />\n          <div className=\"searchBox\">\n            <SearchButton onClick={handleSearchButtonClick} />\n            <input\n              id=\"searchInput\" className=\"readerSearch\"\n              title={Sefaria._(\"Search for Texts or Keywords Here\")}\n              placeholder={Sefaria._(\"Search\")}\n              onChange={e => setQuery(e.target.value)} value={query}\n              onKeyUp={handleSearchKeyUp}\n            />\n          </div>\n        </div>\n        {Sefaria.interfaceLang !== \"hebrew\" ? \n        <DisplaySettingsButton onClick={openDisplaySettings} />\n        : null}\n      </div>\n    );\n  } else {\n    return (\n      <div className={classNames({readerNavTop: 1, searchOnly: 1})}>\n        <CategoryColorLine category={category} />\n        <MenuButton onClick={onBack} compare={true} /> \n        <h2 className=\"readerNavTopCategory\">\n          <ContentText text={{en: catTitle, he: heCatTitle}} />\n        </h2>\n        \n        {(Sefaria.interfaceLang === \"hebrew\" || !openDisplaySettings) ?\n        <DisplaySettingsButton placeholder={true} />\n        : <DisplaySettingsButton onClick={openDisplaySettings} />}\n      </div>\n    );\n  }\n}\n\n\nexport default ComparePanelHeader;","import React, { useContext, useState }  from 'react';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport Sefaria  from './sefaria/sefaria';\nimport { ContentLanguageContext } from './context';\nimport { NavSidebar } from './NavSidebar';\nimport Footer  from './Footer';\nimport ComparePanelHeader from './ComparePanelHeader';\nimport {\n  CategoryAttribution,\n  CategoryColorLine,\n  ResponsiveNBox,\n  LanguageToggleButton,\n  InterfaceText,\n  CategoryHeader\n} from './Misc';\nimport {ContentText} from \"./ContentText\";\n\n\n// Navigation Menu for a single category of texts (e.g., \"Tanakh\", \"Bavli\")\nconst TextCategoryPage = ({category, categories, setCategories, toggleLanguage,\n  openDisplaySettings, onCompareBack, openTextTOC, multiPanel, initialWidth, compare }) => {\n  const contentLang = useContext(ContentLanguageContext).language;\n  // Show Talmud with Toggles\n  const cats  = categories[0] === \"Talmud\" && categories.length === 1 ?\n                      [\"Talmud\", \"Bavli\"]\n                      : (categories[0] === \"Tosefta\" && categories.length === 1) ?\n                      [\"Tosefta\", \"Vilna Edition\"]\n                      : categories;\n  const aboutCats = categories[0] === \"Talmud\" && categories.length === 2 ?\n                      [\"Talmud\"] : categories;\n  \n  let catTitle = '', heCatTitle = '';\n\n  if ((cats[0] === \"Talmud\" || cats[0] === \"Tosefta\") && cats.length === 2) {\n    category   = cats[0]; \n    catTitle   = cats[0];\n    heCatTitle = Sefaria.hebrewTerm(cats[0]);\n  } else {\n    if (category === \"Commentary\") {\n      const onCat = cats.slice(-2)[0];\n      catTitle   = onCat + \" Commentary\";\n      heCatTitle = Sefaria.hebrewTerm(onCat) + \" \" + Sefaria.hebrewTerm(\"Commentary\");\n    } else {\n      catTitle   = category;\n      heCatTitle = Sefaria.hebrewTerm(category);\n    }\n  }\n\n  const tocObject = Sefaria.tocObjectByCategories(cats);\n  const catContents = Sefaria.tocItemsByCategories(cats);\n  const nestLevel   = category === \"Commentary\" ? 1 : 0;\n  const aboutModule = [\n    multiPanel ? {type: \"AboutTextCategory\", props: {cats: aboutCats}} : {type: null},\n  ];\n\n  const sidebarModules = aboutModule.concat(getSidebarModules(cats));\n  const categoryToggle = (<SubCategoryToggle categories={cats} setCategories={setCategories} />);\n  const title = compare ? categoryToggle :\n    <div className=\"navTitle\">\n        <CategoryHeader data={cats} type=\"cats\">\n            <h1>\n            <ContentText text={{en: catTitle, he: heCatTitle}} defaultToInterfaceOnBilingual={true} />\n            </h1>\n        </CategoryHeader>\n      {categoryToggle}\n      {multiPanel && Sefaria.interfaceLang !== \"hebrew\"  && Sefaria._siteSettings.TORAH_SPECIFIC ? \n      <LanguageToggleButton toggleLanguage={toggleLanguage} /> : null }\n    </div>;\n\n  const comparePanelHeader = compare ? (\n    <ComparePanelHeader\n      category={cats[0]}\n      openDisplaySettings={openDisplaySettings}\n      onBack={() => setCategories(aboutCats.slice(0, -1))}\n      catTitle={catTitle}\n      heCatTitle={heCatTitle} />\n  ) : null;\n\n  const footer         = compare ? null : <Footer />;\n  const navMenuClasses = classNames({readerNavCategoryMenu: 1, readerNavMenu: 1, noLangToggleInHebrew: 1, compare: compare});\n  return (\n    <div className={navMenuClasses}>\n      <CategoryColorLine category={categories[0]} />\n      { comparePanelHeader }\n      <div className=\"content\">\n        <div className=\"sidebarLayout\">\n          <div className=\"contentInner followsContentLang\">\n            { title }\n            {!multiPanel ? \n            <div className=\"categoryDescription top sans-serif\">\n              <ContentText text={{en: tocObject.enDesc, he: tocObject.heDesc}} defaultToInterfaceOnBilingual={true} />\n            </div> : null}\n            <CategoryAttribution categories={cats} asEdition={true} />\n            <TextCategoryContents\n              contents={catContents}\n              categories={cats}\n              category={category}\n              setCategories={setCategories}\n              openTextTOC={openTextTOC}\n              initialWidth={initialWidth}\n              nestLevel={nestLevel} />\n          </div>\n          {!compare ? <NavSidebar modules={sidebarModules} /> : null}\n        </div>\n        {footer}\n      </div>\n    </div>\n  );\n};\nTextCategoryPage.propTypes = {\n  category:            PropTypes.string.isRequired,\n  categories:          PropTypes.array.isRequired,\n  setCategories:       PropTypes.func.isRequired,\n  toggleLanguage:      PropTypes.func.isRequired,\n  openDisplaySettings: PropTypes.func.isRequired,\n  initialWidth:        PropTypes.number,\n  compare:             PropTypes.bool,\n};\n\n// Recursive content of text category listing (including category title and lists of texts/subcategories)\nconst TextCategoryContents = ({category, contents, categories, setCategories, openTextTOC, initialWidth, nestLevel}) => {\n  const content = [];\n  const cats = categories || [];\n  const contentLang = useContext(ContentLanguageContext).language;\n  const sortedContents = contentLang === \"hebrew\" ? hebrewContentSort(contents) : contents;\n\n  for (const item of sortedContents) {\n\n    if (item.category) {\n      // Category\n      const newCats = cats.concat(item.category);\n\n      // Special Case categories which should nest but normally wouldn't given their depth   [\"Mishneh Torah\", \"Shulchan Arukh\", \"Tur\"]\n      if (item.isPrimary || nestLevel > 0) {\n\n        // There's just one text in this category, render the text.\n        if(item.contents && item.contents.length === 1 && !(\"category\" in item.contents[0])) {\n          const chItem = item.contents[0];\n          if (chItem.hidden) { continue; }\n          const onClick = e => {\n            if (openTextTOC) {\n              e.preventDefault();\n              openTextTOC(chItem.title);\n            }\n          };\n          content.push(\n            <TextMenuItem\n              item={chItem}\n              categories={categories}\n              onClick={onClick}\n              nestLevel={nestLevel} />\n          );\n\n        // Create a link to a subcategory\n        } else {\n          content.push((\n            <MenuItem\n              href        = {\"/texts/\" + newCats.join(\"/\")}\n              onClick     = {(e) => {e.preventDefault(); setCategories(newCats)}}\n              cats        = {newCats}\n              title       = {item.category}\n              heTitle     = {item.heCategory}\n              enDesc      = {item.enShortDesc}\n              heDesc      = {item.heShortDesc}\n            />\n          ));\n        }\n\n      // Add a nested subcategory\n      } else {\n        let shortDesc = contentLang === \"hebrew\" ? item.heShortDesc : item.enShortDesc;\n        const hasDesc  = !!shortDesc;\n        const longDesc = hasDesc && shortDesc.split(\" \").length > 5;\n        shortDesc = hasDesc && !longDesc ? `(${shortDesc})` : shortDesc;\n        content.push(\n          <div className='category' key={\"cat.\" + nestLevel + \".\" + item.category}>\n            <CategoryHeader data={newCats} type=\"cats\">\n                 <h2>\n                 <ContentText text={{en: item.category, he: item.heCategory}} defaultToInterfaceOnBilingual={true} />\n                 {hasDesc && !longDesc ?\n                 <span className=\"categoryDescription\">\n                   <ContentText text={{en: shortDesc, he: shortDesc}} defaultToInterfaceOnBilingual={true} />\n                 </span> : null }\n               </h2>\n            </CategoryHeader>\n            {hasDesc && longDesc ?\n              <div className=\"categoryDescription long sans-serif\">\n                <ContentText text={{en: shortDesc, he: shortDesc}} defaultToInterfaceOnBilingual={true} />\n              </div> : null }\n            <TextCategoryContents\n              contents      = {item.contents}\n              categories    = {newCats}\n              category      = {item.category}\n              setCategories = {setCategories}\n              openTextTOC   = {openTextTOC}\n              initialWidth  = {initialWidth}\n              nestLevel     = {nestLevel + 1}\n            />\n          </div>\n        );\n      }\n\n    // Add a Collection\n    } else if (item.isCollection) {\n        content.push(\n          <MenuItem\n            href        = {\"/collections/\" + item.slug}\n            nestLevel   = {nestLevel}\n            title       = {item.title}\n            heTitle     = {item.heTitle}\n            enDesc      = {item.enShortDesc}\n            heDesc      = {item.heShortDesc} />\n        );\n\n    // Skip hidden texts\n    } else if (item.hidden) {\n        continue;\n\n    // Add a Text\n    } else {\n        const onClick = e => {\n          if (openTextTOC) {\n            e.preventDefault();\n            openTextTOC(item.title);\n          }\n        };\n        content.push((\n          <TextMenuItem \n            item={item}\n            categories={categories}\n            onClick={onClick}\n            nestLevel={nestLevel} />\n        ));\n    }\n  }\n\n  const boxedContent = [];\n  let currentRun   = [];\n  let i;\n  for (i = 0; i < content.length; i++) {\n    // Walk through content looking for runs of texts/subcats to group together into a table\n    if (content[i].type === \"div\") { // this is a subcategory\n      if (currentRun.length) {\n        boxedContent.push((<ResponsiveNBox content={currentRun} intialWidth={initialWidth} key={i} />));\n        currentRun = [];\n      }\n      boxedContent.push(content[i]);\n    } else  { // this is a single text\n      currentRun.push(content[i]);\n    }\n  }\n  if (currentRun.length) {\n    boxedContent.push((<ResponsiveNBox content={currentRun} initialWidth={initialWidth} key={i} />));\n  }\n  return (<div>{boxedContent}</div>);\n\n};\nTextCategoryContents.propTypes = {\n  category:     PropTypes.string.isRequired,\n  contents:     PropTypes.array.isRequired,\n  categories:   PropTypes.array.isRequired,\n  initialWidth: PropTypes.number,\n  nestLevel:    PropTypes.number\n};\nTextCategoryContents.defaultProps = {\n  contents: []\n};\n\n\nconst MenuItem = ({href, nestLevel, title, heTitle, cats, onClick, enDesc, heDesc}) => {\n  const keytype  = !!cats ? \"cat\" : \"text\";\n  const classes = classNames({ navBlockTitle: 1 });\n  return (\n    <div className=\"navBlock\">\n      <a href={href}\n        className   = {classes}\n        onClick     = {onClick}\n        data-cat    = {cats ? cats.slice(-1) : null} // This is only used for Selenium test, would like to get rid of it\n        key         = {keytype + \".\" + nestLevel + \".\" + title}\n      >\n        <ContentText text={{en: title, he: heTitle}} />\n      </a>\n      {enDesc || heDesc ? \n      <div className=\"navBlockDescription\">\n        <ContentText text={{en: enDesc, he: heDesc}} />\n      </div> : null }\n    </div>\n  );\n};\n\n\nconst TextMenuItem = ({item, categories, nestLevel, onClick}) => {\n  const [title, heTitle] = getRenderedTextTitleString(item.title, item.heTitle, categories);\n  return (\n    <MenuItem\n      href        = {\"/\" + Sefaria.normRef(item.title)}\n      onClick     = {onClick}\n      nestLevel   = {nestLevel}\n      title       = {title}\n      heTitle     = {heTitle}\n      enDesc      = {item.enShortDesc}\n      heDesc      = {item.heShortDesc}\n    />\n  );\n};\n\n\nconst SubCategoryToggle = ({categories, setCategories}) => {\n    const toggleEnableMap = {\n      \"Talmud\": {\n          categoryPathDepth: 2,\n          subCategories: [\"Bavli\", \"Yerushalmi\"],\n          subCategoriesDisplay: [{en: \"Babylonian\", he: \"בבלי\"}, {en: \"Jerusalem\", he: \"ירושלמי\"}]\n      },\n      \"Tosefta\": {\n          categoryPathDepth: 2,\n          subCategories: [\"Vilna Edition\", \"Lieberman Edition\"],\n          subCategoriesDisplay: [{en: \"Vilna\", he: \"דפוס וילנא\"}, {en: \"Lieberman\", he: \"מהדורת ליברמן\"}]\n      },\n    };\n    if (!categories.length || !(categories[0] in toggleEnableMap) || categories.length !== toggleEnableMap[categories[0]][\"categoryPathDepth\"]) {\n        return null;\n    }\n    let options = toggleEnableMap[categories[0]][\"subCategories\"].map((element, index) => {\n        let oClasses = classNames({navToggle: 1, active: categories[1] === element});\n        let toggleFunc = () => setCategories([categories[0], element]); //this may need some adjustment if there ever was another toggle not at dpeth 2\n        return(\n            <span className={oClasses} onClick={toggleFunc}>\n              <ContentText text={toggleEnableMap[categories[0]][\"subCategoriesDisplay\"][index]} />\n            </span>\n        )\n    });\n    return (\n      <div className=\"navToggles\">\n          {options}\n      </div>\n    );\n};\n\n\nconst getRenderedTextTitleString = (title, heTitle, categories) => {\n    if (title === \"Pesach Haggadah\") {\n        return [\"Pesach Haggadah Ashkenaz\", \"הגדה של פסח אשכנז\"]\n    }\n    const whiteList = Sefaria._siteSettings.TORAH_SPECIFIC ? ['Imrei Yosher on Ruth', 'Duties of the Heart (abridged)', 'Midrash Mishlei',\n        'Midrash Tehillim', 'Midrash Tanchuma', 'Midrash Aggadah', 'Pesach Haggadah Edot Hamizrah'] : [\"Farand's Records of the Constitutional Convention\",\n        \"Plutarch's Lives\"];\n\n    if (whiteList.indexOf(title) > -1 || categories.slice(-1)[0] === \"Siddur\") {\n        return [title, heTitle];\n    }\n\n    const replaceTitles = {\n        \"en\": ['Jerusalem Talmud', 'Tosefta Kifshutah'].concat(categories),\n        \"he\": ['תלמוד ירושלמי', 'תוספתא כפשוטה'].concat(categories.map(Sefaria.hebrewTerm))\n    };\n    const replaceOther = {\n        \"en\" : [\", \", \"; \", \" on \", \" to \", \" of \"],\n        \"he\" : [\", \", \" על \"]\n    };\n    const replaceSuffixes = {\n        \"en\" : [\" (Lieberman)\"],\n        \"he\" : [\" (ליברמן)\"]\n    };\n\n    //this will replace a category name at the beginning of the title string and any connector strings (0 or 1) that follow.\n    const titleRe = new RegExp(`^(${replaceTitles['en'].join(\"|\")})(${replaceOther['en'].join(\"|\")})?`);\n    const heTitleRe = new RegExp(`^(${replaceTitles['he'].join(\"|\")})(${replaceOther['he'].join(\"|\")})?`);\n    title   = categories.indexOf(title) > -1 ? title : title.replace(titleRe, \"\");\n    const heCategories = categories.map(c => Sefaria.hebrewTerm(c));\n    heTitle = heCategories.indexOf(heTitle) > -1 ? heTitle : heTitle.replace(heTitleRe, \"\");\n\n    //couldnt get this to work in one regex (eliminating both prefix stuff above and the suffix stuff below),\n    // any engineer seeing this feel free to try and streamline\n    const suffixTitleRe = new  RegExp(`(${replaceSuffixes['en'].join(\"|\").replace(/[()]/g, '\\\\$&')})$`);\n    const suffixHeTitleRe = new  RegExp(`(${replaceSuffixes['he'].join(\"|\").replace(/[()]/g, '\\\\$&')})$`);\n    title   = title.replace(suffixTitleRe, \"\");\n    heTitle = heTitle.replace(suffixHeTitleRe, \"\");\n\n    return [title, heTitle];\n};\n\n\nconst hebrewContentSort = (enCats) => {\n    // Sorts contents of this category by Hebrew Alphabetical\n    //console.log(cats);\n    const heCats = enCats.slice().map(function(item, indx) {\n      item.enOrder = indx;\n      return item;\n    });\n\n    // If all of the cats have a base_text_order, don't re-sort.\n    if (heCats.every(c => !!c.base_text_order))   {\n        return heCats;\n    }\n    heCats.sort(function(a, b) {\n      if (\"order\" in a || \"order\" in b) {\n          //positive order first, then no order, negative order last\n        const aOrder = \"order\" in a ? -1/a.order : 0;\n        const bOrder = \"order\" in b ? -1/b.order : 0;\n        return aOrder > bOrder ? 1 : -1;\n\n      } else if ((\"category\" in a) !== (\"category\" in b)) {\n        return a.enOrder > b.enOrder ? 1 : -1;\n\n      //} else if (a.heComplete !== b.heComplete) {\n      //  return a.heComplete ? -1 : 1;\n\n      } else if (a.heTitle && b.heTitle) {\n        return a.heTitle > b.heTitle ? 1 : -1;\n\n      }\n      return a.enOrder > b.enOrder ? 1 : -1;\n    });\n    //console.log(heCats)\n    return heCats;\n};\n\n\nconst getSidebarModules = (categories) => {\n  const path = categories.join(\"|\");\n\n  const modules = {\n    \"Tanakh\": [\n      {type: \"WeeklyTorahPortion\"},\n    ],\n    \"Talmud|Bavli\": [\n      {type: \"DafYomi\"},\n    ]\n  };\n\n  const customModules = path in modules ? modules[path] : [];\n\n  const defaultModules = [\n    {type: \"Promo\"},\n    {type: \"SupportJMC\"},\n  ]; \n\n  return customModules.concat(defaultModules);\n};\n\n\nexport default TextCategoryPage;","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport Sefaria  from './sefaria/sefaria';\nimport $  from './sefaria/sefariaJquery';\nimport { NavSidebar, Modules } from './NavSidebar';\nimport TextCategoryPage  from './TextCategoryPage';\nimport Footer  from './Footer';\nimport ComparePanelHeader from './ComparePanelHeader';\nimport {\n  TextBlockLink,\n  TwoOrThreeBox,\n  NBox,\n  ResponsiveNBox,\n  LanguageToggleButton,\n  InterfaceText,\n  CategoryHeader\n} from './Misc';\nimport {ContentText} from \"./ContentText\";\n\n\nconst TextsPage = ({categories, settings, setCategories, onCompareBack, openSearch,\n  toggleLanguage, openTextTOC, openDisplaySettings, multiPanel, initialWidth, compare}) => {\n  // List of Texts in a Category\n  if (categories.length) {\n    return (\n      <div className=\"readerNavMenu\">\n        <TextCategoryPage\n          categories={categories}\n          category={categories.slice(-1)[0]}\n          setCategories={setCategories}\n          openTextTOC={openTextTOC}\n          toggleLanguage={toggleLanguage}\n          openDisplaySettings={openDisplaySettings}\n          compare={compare}\n          multiPanel={multiPanel}\n          initialWidth={initialWidth} />\n      </div>\n    );\n  }\n\n  // Root Library Menu\n  let categoryListings = Sefaria.toc.map(cat => {\n    const style = {\"borderColor\": Sefaria.palette.categoryColor(cat.category)};\n    const openCat = e => {e.preventDefault(); setCategories([cat.category])};\n\n    return (\n      <div className=\"navBlock withColorLine\" style={style}>\n        <a href={`/texts/${cat.category}`} className=\"navBlockTitle\" data-cat={cat.category} onClick={openCat}>\n          <ContentText text={{en: cat.category, he: cat.heCategory}} defaultToInterfaceOnBilingual={true} />\n        </a>\n        <div className=\"navBlockDescription\">\n          <ContentText text={{en: cat.enShortDesc, he: cat.heShortDesc}} defaultToInterfaceOnBilingual={true} />\n        </div>\n      </div>\n    );\n  });\n\n  categoryListings = (\n    <div className=\"readerNavCategories\">\n        <ResponsiveNBox content={categoryListings} initialWidth={initialWidth} />\n    </div>);\n\n  let topTexts = compare ? null : [\n          <div className=\"navBlock withColorLine\" style={{\"borderColor\": Sefaria.palette.categoryColor(\"Toward Independence\")}}>\n              <a href=\"/US_Declaration_of_Independence\" className=\"navBlockTitle\">\n                  <span className=\"en\" lang=\"en\">Declaration of Independence</span>\n              </a>\n          </div>,\n          <div className=\"navBlock withColorLine\" style={{\"borderColor\": Sefaria.palette.categoryColor(\"Constituting America\")}}>\n              <a href=\"/United_States_Constitution\" className=\"navBlockTitle\">\n                  <span className=\"en\" lang=\"en\">United States Constitution</span>\n              </a>\n          </div>\n      ];\n\n  topTexts = compare ? null :\n          <div className=\"readerNavCategories\">\n              <ResponsiveNBox content={topTexts} initialWidth={initialWidth} />\n          </div>;\n\n  const topTitle = compare ? null :\n        <div className=\"navTitle tight sans-serif\">\n            <h1><InterfaceText>Explore the Foundational Documents</InterfaceText></h1>\n        </div>;\n\n  const comparePanelHeader = compare ?\n    <ComparePanelHeader\n      search={true}\n      onBack={onCompareBack}\n      openDisplaySettings={openDisplaySettings}\n      openSearch={openSearch}\n    /> : null;\n\n  const title = compare ? null :\n    <div className=\"navTitle tight sans-serif\">\n        <CategoryHeader type=\"cats\" buttonsToDisplay={[\"subcategory\", \"reorder\"]}>\n            <h1><InterfaceText>Browse the Library</InterfaceText></h1>\n        </CategoryHeader>\n      { multiPanel && Sefaria.interfaceLang !== \"hebrew\" && Sefaria._siteSettings.TORAH_SPECIFIC ?\n      <LanguageToggleButton toggleLanguage={toggleLanguage} /> : null }\n    </div>\n\n  const about = compare || multiPanel || !Sefaria._siteSettings.TORAH_SPECIFIC ? null :\n    <Modules type={\"AboutSefaria\"} props={{hideTitle: true}}/>;\n\n  const dedication = Sefaria._siteSettings.TORAH_SPECIFIC && !compare ? <Dedication /> : null;\n\n  const libraryMessage = Sefaria._siteSettings.LIBRARY_MESSAGE && !compare && !Sefaria._siteSettings.TORAH_SPECIFIC ?\n    <div className=\"libraryMessage\" dangerouslySetInnerHTML={ {__html: Sefaria._siteSettings.LIBRARY_MESSAGE} }></div>\n    : null;\n\n  const sidebarModules = [\n    multiPanel ? {type: \"AboutContext\"} : {type: null},\n/*    {type: \"Promo\"},\n    {type: \"LearningSchedules\"},\n    {type: \"JoinTheCommunity\"},\n    {type: \"Resources\"},*/\n  ];\n\n  const footer = compare ? null : <Footer />;\n  const classes = classNames({readerNavMenu:1, compare: compare, noLangToggleInHebrew: 1 });\n  return (\n    <div className={classes} key=\"0\">\n      {comparePanelHeader}\n      <div className=\"content\">\n        <div className=\"sidebarLayout\">\n          <div className=\"contentInner\">\n            { libraryMessage }\n            { topTitle }\n            { dedication }\n            { topTexts }\n            { title }\n            { about }\n            { categoryListings }\n          </div>\n          {!compare ? <NavSidebar modules={sidebarModules} /> : null}\n        </div>\n        {footer}\n      </div>\n    </div>\n  );\n};\nTextsPage.propTypes = {\n  categories:          PropTypes.array.isRequired,\n  settings:            PropTypes.object.isRequired,\n  setCategories:       PropTypes.func.isRequired,\n  openSearch:          PropTypes.func.isRequired,\n  openDisplaySettings: PropTypes.func,\n  toggleLanguage:      PropTypes.func,\n  multiPanel:          PropTypes.bool,\n  compare:             PropTypes.bool,\n};\n\n\nconst Dedication = () => {\n    //Get the local date 6 hours from now (so that dedication changes at 6pm local time\n    let dedDate = new Date();\n    dedDate.setHours(dedDate .getHours() + 6);\n    const tzoffset = (new Date()).getTimezoneOffset() * 60000;\n    const date = new Date(dedDate - tzoffset).toISOString().substring(0, 10);\n\n    const [dedicationData, setDedicationData] = useState(Sefaria._tableOfContentsDedications[date]);\n\n    function get_google_sheet_data() {\n      const url =\n        'https://docs.google.com/spreadsheets/d/11c9Yw9FdfLnfbIWqvUztCt-QICW5790dfFGgXH7IB1k/edit#gid=0';\n      const query = new google.visualization.Query(url);\n      query.setQuery('select A, B, C');\n      query.send(processSheetsData);\n    }\n\n    function processSheetsData(response) {\n      const data = response.getDataTable();\n      const columns = data.getNumberOfColumns();\n      const rows = data.getNumberOfRows();\n      for (let r = 0; r < rows; r++) {\n        let row = [];\n        for (let c = 0; c < columns; c++) {\n          row.push(data.getFormattedValue(r, c));\n        }\n        Sefaria._tableOfContentsDedications[row[0]] = {\"en\": row[1], \"he\": row[2]};\n      }\n      setDedicationData(Sefaria._tableOfContentsDedications[date]);\n    }\n\n    useEffect( () => {\n        if (!dedicationData) {\n            google.charts.load('current');\n            google.charts.setOnLoadCallback(get_google_sheet_data);\n        }\n    }, []);\n\n    return (\n        dedicationData && (dedicationData.en || dedicationData.he) ?\n        <div className=\"dedication\">\n          <span>\n              <InterfaceText markdown={{en: dedicationData?.en, he: dedicationData?.he}}/>\n          </span>\n        </div>\n        : null\n    );\n};\n\n\nexport default TextsPage;\n","import React, { useState, useEffect, useRef } from 'react';\nimport ReactDOM  from 'react-dom';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport Component from 'react-class';\n\nimport {\n\tLoadingMessage\n} from './Misc';\n\nclass MediaList extends Component {\n\trender() {\n\t\tlet audios = Sefaria.mediaByRef(this.props.srefs)\n\t\tlet content = [];\n\t\t  content = audios.map(audio => {\n\t\t\treturn <Audio\n\t\t\t\taudioUrl = {audio.media_url}\n\t\t\t\tstartTime = {audio.start_time}\n\t\t\t\tendTime = {audio.end_time}\n\t\t\t\tsource = {audio.source}\n\t\t\t\tsource_he = {audio.source_he}\n\t\t\t\tlicense = {audio.license}\n\t\t\t\tsource_site = {audio.source_site}\n\t\t\t\tdescription = {audio.description}\n\t\t\t\tdescription_he = {audio.description_he}\n\t\t\t\tanchor = {audio.anchorRef}\n\t\t\t\tkey = {audio.anchorRef}\n\t\t\t\t/>\n\t\t  });\n\t\t if (!content.length) {\n\t\t\treturn <div className=\"mediaList empty\">\n                  <LoadingMessage />\n                </div>;\n\t\t }\n\n\t\treturn <div className=\"mediaList\">\n\t\t\t\t<div className=\"mediaTitle\">\n\t\t\t\t\t<div className=\"en\">Torah Reading </div>\n\t\t\t\t\t<div className=\"he\">קריאה בתורה</div>\n\t\t\t\t</div>\n\t\t\t\t  {content}\n\t\t\t   </div>;\n\t}\n}\nMediaList.propTypes = {\n  srefs: PropTypes.array.isRequired,\n};\n\n\nconst Audio = ({audioUrl, startTime, endTime, source, source_he, license, source_site, description, description_he, anchor}) => {\n   const audioElement = useRef();\n   const [currTime, setCurrTime] = useState(startTime);\n   const [playing, setPlaying] = useState(false);\n   const [clipEndTime, setClipEndTime] = useState(endTime);\n   const [clipStartTime, setClipStartTime] = useState(startTime);\n\t const [audioUrlWithTime, setAudioUrlWithTime] = useState(`${audioUrl}#t=${startTime},${endTime}`)\n   const handleChange = (value) => {\n\t\t   setCurrTime(value.currentTarget.value);\n\t\t   audioElement.current.currentTime = value.currentTarget.value\n\t\t};\n\n    function formatTime(totalSeconds) {\n\t\t\t\tif (totalSeconds == \"NaN\" || totalSeconds < 0) {\n\t\t\t\t\treturn(\"0:00\")\n\t\t\t\t}\n\n        const seconds = Math.floor(totalSeconds % 60);\n        const minutes = Math.floor(totalSeconds / 60);\n\n        const padWithZero = number => {\n            const string = number.toString();\n            if (number < 10) {\n                return \"0\" + string;\n            }\n            return string;\n        };\n        return (minutes) + \":\" + padWithZero(seconds);\n    }\n\n\n\t useEffect(() => {\n\t\t const setAudioTime = () => {\n\t\t\t setCurrTime(audioElement.current.currentTime)\n\t\t };\n\t\t const setAudioData = () => {\n\t\t\t audioElement.current.currentTime = startTime;\n\t\t };\n\n\t\t audioElement.current.load()\n\n\n\t\t audioElement.current.addEventListener(\"loadeddata\", setAudioData);\n\t\t audioElement.current.addEventListener(\"timeupdate\", setAudioTime);\n\n\t\t return () => {\n\t\t\t audioElement.current.removeEventListener(\"timeupdate\", setAudioTime);\n\t\t\t audioElement.current.removeEventListener(\"loadeddata\", setAudioData);\n\t\t }\n\t },\n\t [clipStartTime, clipEndTime]\n);\n\n\n   useEffect(() => {\n\t\t\t playing ? audioElement.current.play() : audioElement.current.pause();\n   }, [playing]);\n\n\n\t useEffect(() => {\n\t\t if (currTime > clipEndTime) {\n\t\t\t\t setPlaying(false);\n\t\t\t\t setCurrTime(startTime);\n\t\t\t\t audioElement.current.currentTime = startTime\n\t\t }\n   }, [currTime]);\n\n\n\n      return (\n\t\t<div className=\"media\"  key={anchor+\"_\"+\"audio\"}>\n\t\t\t  <div className=\"title en\">{source}</div>\n\t\t\t\t<div className=\"title he\">{source_he}</div>\n\t\t\t  <div className=\"description int-en\">{description}</div>\n\t\t\t\t<div className=\"description int-he\">{description_he}</div>\n\t\t\t  <div className=\"panel\">\n          <div className=\"playTimeContainer\">\n            <input type=\"image\" src = {playing ? \"static/img/pause.svg\" : \"static/img/play.svg\"} alt={playing ? \"Pause Audio\" : \"Play Audio\"} onClick={() => setPlaying(!playing)} id=\"pause\"/>\n            <span>{formatTime((clipEndTime-clipStartTime) - (clipEndTime - currTime)) + \" / \" + formatTime(clipEndTime-clipStartTime)}</span>\n          </div>\n\t\t\t\t  <div className=\"sliderContainer\"><input type=\"range\" min={startTime} max={endTime} value = {currTime} step=\"any\" className=\"slider\" onChange={(value) => {handleChange(value)}}/></div>\n\t\t\t  </div>\n\t\t\t  <audio id=\"my-audio\" ref={audioElement} preload=\"metadata\">\n\t\t\t\t <source src={audioUrlWithTime} type=\"audio/mpeg\"/>\n\t\t\t  </audio>\n\t\t\t  <div className=\"meta\">\n\t\t\t\t<span className=\"int-en\">License: {license}</span>\n\t\t\t\t<span className=\"int-he\">עסק רשיון: {license}</span>\n        <br/>\n\t\t\t\t<span className=\"int-en\">Source: <a href={source_site} target=\"_blank\">{source}</a></span>\n\t\t\t\t<span className=\"int-he\">מקור: <a href={source_site} target=\"_blank\">{source_he}</a></span>\n\t\t\t  </div>\n\n\t\t</div>\n   )\n};\n\nexport {\n  MediaList\n}\n","import { useState, useEffect } from \"react\";\nimport {SheetAuthorStatement, InterfaceText, ProfilePic, EnglishText, HebrewText} from \"./Misc\";\nimport Sefaria from \"./sefaria/sefaria\";\nimport ReactTags from 'react-tag-autocomplete'\nimport { useDebounce } from \"./Hooks\";\n\nconst AboutSheet = ({ masterPanelSheetId, toggleSignUpModal }) => {\n\n    const sheet = Sefaria.sheets.loadSheetByID(masterPanelSheetId);\n    const canEdit = sheet.owner === Sefaria._uid;\n    const reactTags = React.createRef()\n\n    const title = sheet.title.stripHtmlConvertLineBreaks();\n    const [tags, setTags] = useState(\n        sheet.topics.map((topic, i) => ({\n            id: i,\n            name: topic[\"asTyped\"],\n            slug: topic[\"slug\"],\n        })\n        )\n    )\n    const [sheetSaves, setSheetSaves] = useState([]);\n    const [suggestions, setSuggestions] = useState([]);\n    const [lastModified, setLastModified] = useState(sheet.dateModified)\n    const [isPublished, setIsPublished] = useState(sheet.status === \"public\");\n    const [validation, setValidation] = useState({\n        validationMsg: \"\",\n        validationFailed: \"none\"\n    });\n    const [summary, setSummary] = useState(sheet.summary);\n    const getRefSavedHistory = Sefaria.makeCancelable(Sefaria.getRefSavedHistory(\"Sheet \" + masterPanelSheetId));\n    const debouncedSummary = Sefaria._uid == sheet.owner ? useDebounce(summary, 250) : null;\n    useEffect(() => {\n        getRefSavedHistory.promise.then(data => {\n            for (let hist of data) {\n                setSheetSaves([...sheetSaves, hist[\"uid\"]]);\n            }\n        }).catch((reason) => {\n            console.log('Error', reason.isCanceled ? 'canceled' : reason);\n        });\n        return () => {\n            getRefSavedHistory.cancel();\n        };\n    }, [masterPanelSheetId]);\n\n    useEffect(() => {\n        if (debouncedSummary == null) {return}\n        saveSummary();\n    }, [debouncedSummary])\n\n    const handleSummaryChange = (event) => {\n        const newSummary = event.target.value\n        if (event.target.value.length > 280) {\n            setValidation({\n                validationMsg: Sefaria._(\"The summary description is limited to 280 characters.\"),\n                validationFailed: \"summary\"\n            });\n        }\n        else {\n            setValidation({\n                validationMsg: \"\",\n                validationFailed: \"none\"\n            });\n        }\n        setSummary(newSummary)\n    }\n\n    const updateSuggestedTags = (input) => {\n        if (input == \"\") return\n        Sefaria.getName(input, false, 0).then(d => {\n            const topics = d.completion_objects\n                .filter(obj => obj.type === \"Topic\")\n                .map((filteredObj, index) => ({\n                    id: index,\n                    name: filteredObj.title,\n                    slug: filteredObj.key\n                })\n                )\n            return topics\n        }).then(topics => setSuggestions(topics))\n    }\n\n\n    const updateTopics = async (newTags) => {\n        let updatedSheet = await (new Promise((resolve, reject) => Sefaria.sheets.loadSheetByID(sheet.id, sheet => resolve(sheet))));\n\n        const topics = newTags.map(tag => ({\n            asTyped: tag.name,\n            slug: tag.slug,\n        })\n        )\n        updatedSheet.topics = topics;\n        updatedSheet.lastModified = lastModified;\n        delete updatedSheet._id;\n        delete updatedSheet.error;\n        const postJSON = JSON.stringify(updatedSheet);\n        postSheet(postJSON)\n    }\n\n\n    const saveSummary = async () => {\n        let updatedSheet = await (new Promise((resolve, reject) => Sefaria.sheets.loadSheetByID(sheet.id, sheet => resolve(sheet))));\n        updatedSheet.summary = summary;\n        updatedSheet.lastModified = lastModified;\n        delete updatedSheet._id;\n        const postJSON = JSON.stringify(updatedSheet);\n        postSheet(postJSON)\n    }\n\n\n    const isFormValidated = () => {\n        if ((!summary || summary.trim() == '') && tags.length == 0) {\n            setValidation({\n                validationMsg: Sefaria._(\"Please add a description and topics to publish your sheet.\"),\n                validationFailed: \"both\"\n            });\n            return false\n        }\n        else if (!summary || summary.trim() == '') {\n            setValidation({\n                validationMsg: Sefaria._(\"Please add a description to publish your sheet.\"),\n                validationFailed: \"summary\"\n            });\n            return false\n        }\n\n        else if (tags.length == 0) {\n            setValidation({\n                validationMsg: Sefaria._(\"Please add topics to publish your sheet.\"),\n                validationFailed: \"topics\"\n            });\n            return false\n        }\n\n        else {\n            setValidation({\n                validationMsg: \"\",\n                validationFailed: \"none\"\n            });\n            return true\n        }\n    }\n\n    const togglePublish = async () => {\n        if (!isPublished) {\n            if (!(isFormValidated())) { return }\n        }\n\n        const newPublishState = isPublished ? \"unlisted\" : \"public\";\n        let updatedSheet = await (new Promise((resolve, reject) => Sefaria.sheets.loadSheetByID(sheet.id, sheet => resolve(sheet))));\n        updatedSheet.status = newPublishState;\n        updatedSheet.lastModified = lastModified;\n        delete updatedSheet._id;\n        setIsPublished(!isPublished);\n        const postJSON = JSON.stringify(updatedSheet);\n        postSheet(postJSON);\n\n    }\n\n    const onTagDelete = (i) => {\n        const newTags = tags.slice(0);\n        newTags.splice(i, 1);\n        setTags(newTags);\n        updateTopics(newTags);\n    }\n\n\n    const onTagAddition = (tag) => {\n        const newTags = [].concat(tags, tag);\n        setTags(newTags);\n        updateTopics(newTags);\n    }\n\n    const onTagValidate = (tag) => {\n        return tags.every((item) => item.name !== tag.name)\n    }\n\n    const postSheet = (postJSON) => {\n        $.post(\"/api/sheets/\", { \"json\": postJSON }, (data) => {\n            if (data.id) {\n                console.log('saved...')\n                setLastModified(data.dateModified)\n                Sefaria.sheets._loadSheetByID[data.id] = data;\n            } else {\n                console.log(data);\n            }\n        })\n    }\n\n    const publishSettingsReadOnly = <div> {sheet.summary ? <div className=\"description\" dangerouslySetInnerHTML={{ __html: sheet.summary }}></div> : null}\n        {sheet.collections.length > 0 ?\n            <div className=\"aboutLinks\">\n                <h3 className=\"aboutSheetHeader\"><InterfaceText>Public Collections</InterfaceText></h3>\n                <div>\n                    <ul className=\"aboutSheetLinks\">\n                        {sheet.collections.map((collection, i) => (\n                            <li key={i}><a href={\"/collections/\" + collection.slug}><InterfaceText>{collection.name}</InterfaceText></a></li>\n                        ))}\n                    </ul>\n                </div>\n            </div> : null\n\n        }\n        {!!Sefaria._uid ? <CollectionsEditor sheetId={sheet.id}/> : null }\n\n\n        {sheet.topics && sheet.topics.length > 0 ?\n            <div className=\"readings\">\n                <h3 className=\"aboutSheetHeader\"><InterfaceText>Topics</InterfaceText></h3>\n                <div>\n                    <ul className=\"aboutSheetLinks\">\n                        {sheet.topics.map((topic, i) => (\n                            <li key={i}>\n                                <a href={\"/topics/\" + topic.slug} target=\"_blank\">\n                                    <InterfaceText text={{ en: topic.en, he: topic.he }} />\n                                </a>\n                            </li>\n                        ))\n                        }\n                    </ul>\n                </div>\n            </div> : null}\n\n    </div>;\n\n    const publishSettingsEditMode = <div className=\"publishSettingsEditMode\"><div className={isPublished ? \"publishBox transparentBackground sans-serif\" : \"publishBox sans-serif\"}>\n        {!isPublished ? <p><InterfaceText>Publish your sheet on {Sefaria._siteSettings.SITE_NAME.en} for others to discover.</InterfaceText></p> : null}\n        <h3 className=\"aboutSheetHeader\"><InterfaceText>Summary</InterfaceText></h3>\n        <textarea\n            className={validation.validationFailed === \"both\" || validation.validationFailed === \"summary\" ? \"error\" : \"\"}\n            rows=\"3\"\n            maxLength=\"281\"\n            placeholder={Sefaria._(\"Write a short description of your sheet...\")}\n            value={summary} onChange={handleSummaryChange}></textarea>\n        <h3 className=\"aboutSheetHeader\"><InterfaceText>Topics</InterfaceText></h3>\n        <div className={validation.validationFailed == \"both\" || validation.validationFailed == \"topics\" ? \"error\" : \"\"}>\n            <ReactTags\n                ref={reactTags}\n                allowNew={true}\n                tags={tags}\n                suggestions={suggestions}\n                onDelete={onTagDelete}\n                placeholderText={Sefaria._(\"Add a topic...\")}\n                delimiters={[\"Enter\", \"Tab\", \",\"]}\n                onAddition={onTagAddition}\n                onValidate={onTagValidate}\n                onInput={updateSuggestedTags}\n            />\n        </div>\n        {validation.validationFailed == \"none\" ? null : <p className=\"error\"><InterfaceText>{validation.validationMsg}</InterfaceText></p>}\n\n        {!isPublished ? <div className={\"publishButton\"}>\n            <button className=\"button notPublished\" onClick={togglePublish}>\n                <InterfaceText>Publish</InterfaceText>\n            </button>\n        </div> : null}\n\n    </div>\n        <CollectionsEditor sheetId={sheet.id}/>\n        {isPublished ?\n            <div className={\"publishButton\"}>\n                <div className=\"publishedText\">\n                    <InterfaceText>\n                        <EnglishText>Your Sheet is <span className=\"publishedTextBold\">published</span> on Sefaria and visible to others.</EnglishText>\n                        <HebrewText>דף המקורות שלך <span className=\"publishedTextBold\">מפורסם</span> בספריא וגלוי למשתמשים אחרים</HebrewText>\n                    </InterfaceText>\n                </div>\n                <button className=\"button published\" onClick={togglePublish}>\n                    <InterfaceText>Unpublish</InterfaceText>\n                </button>\n            </div>\n            : null\n        }\n    </div>\n\n    return (<div className=\"aboutSheetPanel\">\n        <div className=\"aboutSheetTopHeaders\">\n            <h2 className=\"aboutHeader\">{title}</h2>\n            <h3 className=\"aboutSheetSubtitle\"><InterfaceText>Sheet</InterfaceText></h3>\n        </div>\n        <SheetAuthorStatement\n            authorUrl={sheet.ownerProfileUrl}\n            authorStatement={sheet.ownerName}\n        >\n            <ProfilePic\n                url={sheet.ownerImageUrl}\n                len={30}\n                name={sheet.ownerName}\n                outerStyle={{ width: \"30px\", height: \"30px\", display: \"inline-block\", verticalAlign: \"middle\", marginInlineEnd: \"10px\" }}\n            />\n            <a href={sheet.ownerProfileUrl}>\n                <InterfaceText>{sheet.ownerName}</InterfaceText>\n            </a>\n        </SheetAuthorStatement>\n        <div className=\"aboutSheetMetadata\">\n            <div>\n                <span>{Sefaria.util.localeDate(sheet.dateCreated)}</span>\n                <span>{sheet.views} {Sefaria._(\"Views\")}</span>\n                <span>{sheetSaves.length} {Sefaria._(\"Saves\")}</span>\n            </div>\n            {/* {sheet.status !== 'public' ? (<div><span className=\"unlisted\"><img src=\"/static/img/eye-slash.svg\"/><span>{Sefaria._(\"Not Published\")}</span></span></div>) : undefined} */}\n        </div>\n        {\n            canEdit ? publishSettingsEditMode : publishSettingsReadOnly\n        }\n\n\n    </div>\n    )\n\n}\n\n\nconst CollectionsEditor = ({ sheetId }) => {\n    // A box that lets you control which of your collections `sheetId` belongs to\n\n    const initialCollectionsSort = (cs, csSelected) => {\n        // When first opened, sort checked collections to top, but don't reshuffle when user clicks check of open modal\n        if (!cs || !csSelected) { return null; }\n        return cs.sort((a, b) => {\n            let aSel, bSel;\n            [aSel, bSel] = [a, b].map(x => !!csSelected.filter(y => y.slug === x.slug).length)\n            if (aSel == bSel) { return a.lastModified > b.lastModified ? -1 : 1; }\n            else { return aSel ? -1 : 1; }\n        });\n    };\n    const [collectionsSelected, setCollectionsSelected] = useState(Sefaria.getUserCollectionsForSheetFromCache(sheetId));\n    let initialCollections = Sefaria.getUserCollectionsFromCache(Sefaria._uid);\n    initialCollections = initialCollections ? initialCollectionsSort(initialCollections.slice(), collectionsSelected) : null;\n    const [collections, setCollections] = useState(initialCollections);\n    const [dataLoaded, setDataLoaded] = useState(!!collections && !!collectionsSelected);\n    const [newName, setNewName] = useState(\"\");\n    const [changed, setChanged] = useState(false);\n\n    // Make sure we have loaded the user's list of collections, \n    // and which collections this sheet belongs to for this user\n    useEffect(() => {\n        if (!dataLoaded) {\n            Promise.all([\n                Sefaria.getUserCollections(Sefaria._uid),\n                Sefaria.getUserCollectionsForSheet(sheetId)\n            ])\n                .then(() => {\n                    const initialCollectionsSelected = Sefaria.getUserCollectionsForSheetFromCache(sheetId);\n                    const initialSortedCollections = initialCollectionsSort(Sefaria.getUserCollectionsFromCache(Sefaria._uid), initialCollectionsSelected);\n                    setCollections(initialSortedCollections);\n                    setCollectionsSelected(initialCollectionsSelected);\n                    setDataLoaded(true);\n                });\n        }\n    }, []);\n\n    const onCheckChange = (collection, checked) => {\n        // When a checkmark changes, add or remove this sheet from that collection\n        let url, newCollectionsSelected;\n        if (checked) {\n            newCollectionsSelected = [...collectionsSelected, collection];\n            url = `/api/collections/${collection.slug}/add/${sheetId}`;\n        } else {\n            newCollectionsSelected = collectionsSelected.filter(x => x.slug !== collection.slug);\n            url = `/api/collections/${collection.slug}/remove/${sheetId}`;\n        }\n\n        $.post(url, data => handleCollectionInclusionChange(data));\n        Sefaria._userCollectionsForSheet[sheetId] = newCollectionsSelected;\n        setCollectionsSelected(newCollectionsSelected);\n    };\n\n    const handleCollectionInclusionChange = (data) => {\n        // When a sheet has been added or removed, update collections list data in cache\n        let newCollections = Sefaria.getUserCollectionsFromCache(Sefaria._uid).filter(c => c.slug != data.collection.slug);\n        // Put the new collection first since it's just been modified\n        newCollections = [data.collectionListing, ...newCollections];\n        // Update in cache, but not in Component state -- prevents the list from jumping around\n        // while you're looking at it, but show this collection first next time you see the list.\n        Sefaria._userCollections[Sefaria._uid] = newCollections;\n        // Update cache for this collection's full listing, which has now changed\n        Sefaria._collections[data.collection.slug] = data.collection;\n        // Update sheet cache\n        Sefaria.sheets._loadSheetByID[sheetId] = data.sheet;\n        Sefaria.sheets.updateUserSheets(data.sheetListing, Sefaria._uid, true, true);\n        setChanged(true);\n    };\n\n    const onNameChange = event => setNewName(event.target.value);\n\n    const onCreateClick = () => {\n        const collection = { name: newName };\n        $.post(\"/api/collections\", { json: JSON.stringify(collection) }, (data) => {\n            if (\"error\" in data) {\n                alert(data.error);\n                return;\n            }\n            setNewName(\"\");\n            const newCollections = [data.collection, ...collections];\n            Sefaria._userCollections[Sefaria._uid] = newCollections;\n            setCollections(newCollections);\n            onCheckChange(data.collection, true);\n        });\n    };\n\n    return <div>      <div className=\"collectionsEditorTop\">\n        <h3 className=\"aboutSheetHeader\"><InterfaceText>My Collections</InterfaceText></h3>\n    </div><div className=\"collectionsWidget\">\n            <div className=\"collectionsWidgetList serif\">\n                {!dataLoaded ? null :\n                    collections.map((collection, i) => {\n                        return <label className=\"checkmarkLabel\" key={i + collection.name}>\n                            <input\n                                type=\"checkbox\"\n                                onChange={event => onCheckChange(collection, event.target.checked)}\n                                checked={collectionsSelected.filter(x => x.slug === collection.slug).length ? \"checked\" : \"\"} />\n                            <span className=\"checkmark\"></span>\n                            {collection.name}\n                        </label>\n                    })}\n                {dataLoaded && collections.length == 0 ?\n                    <span className={\"emptyMessage\"}>\n                        <InterfaceText>\n                            You can use collections to organize your sheets or public sheets you like. Collections can shared privately or made public on Sefaria.\n                        </InterfaceText>\n                    </span> : null}\n            </div>\n            <div className=\"collectionsEditorCreate\">\n                <span className=\"collectionsWidgetPlus\">+</span>\n                <div className=\"collectionsWidgetCreateInputBox\">\n                    <input className=\"collectionsWidgetCreateInput\" placeholder={Sefaria._(\"Create new collection\")} value={newName} onChange={onNameChange} />\n                </div>\n                {newName.length ?\n                    <div className=\"button extraSmall white collectionsWidgetCreateButton\" onClick={onCreateClick}>\n                        <InterfaceText>Create</InterfaceText>\n                    </div>\n                    : null}\n            </div>\n        </div>\n    </div>\n};\n\n\nexport default AboutSheet;\n","import React  from 'react';\nimport Sefaria  from './sefaria/sefaria';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport Component      from 'react-class';\nimport {\n    ColorBarBox,\n    InterfaceText\n} from './Misc'\n\n\nclass SearchTextResult extends Component {\n    constructor(props) {\n        super(props);\n\n        this.state = {\n            duplicatesShown: false\n        };\n    }\n    toggleDuplicates(event) {\n        this.setState({\n            duplicatesShown: !this.state.duplicatesShown\n        });\n    }\n    getHighlights() {\n        // Gets list of highlights (text in <b> tags) in the current match\n        // Returns list of strings\n        let highlights = [];\n        let longestLength = 0;\n        const highlightReg = /((?:[\\s,.?!:;]){0,}<b>[^<]+<\\/b>[\\s,.?!:;]{0,})+/g;  // capture consecutive <b> tags in one match\n        if (!this.props.data.highlight) { return []; }\n        const vals = Object.values(this.props.data.highlight);\n        if (vals.length === 0) { return []; }\n        // vals should have only one entry. either 'naive_lemmatizer' or 'exact'\n        for (let h of vals[0]) {\n            let matches = null;\n            while ((matches = highlightReg.exec(h)) !== null) {\n                const matchText = matches[0].replace(/<\\/?b>/g, '');\n                if (matchText.length > longestLength) { longestLength = matchText.length; }\n                highlights.push(matchText);\n            }\n        }\n        // in order to decrease spurious highlights (e.g. for a lone \"The\") we only take the longest match\n        // commenting out for now. Not sure we want this.\n        // highlights = highlights.filter(h => h.length === longestLength);\n        return highlights;\n    }\n    async handleResultClick(event) {\n        if (this.props.onResultClick) {\n            event.preventDefault();\n            const s = this.props.data._source;\n            const textHighlights = this.getHighlights();\n            //console.log(textHighlights);\n            // in case a change to a title was made and ElasticSearch cronjob hasn't run,\n            // there won't be an index, so normalize \"Bereishit Rabbah 3\" => \"Bereshit Rabbah 3\" by calling API\n            let parsedRef = Sefaria.parseRef(s.ref);\n            if (parsedRef.index.length === 0) {\n                const d = await Sefaria.getRef(s.ref);\n                parsedRef.ref = d.ref;\n            }\n\n            if (this.props.searchInBook) {\n                Sefaria.track.event(\"Search\", \"Sidebar Search Result Click\", `${this.props.query} - ${parsedRef.ref}/${s.version}/${s.lang}`);\n            } else {\n                Sefaria.track.event(\"Search\", \"Search Result Text Click\", `${this.props.query} - ${parsedRef.ref}/${s.version}/${s.lang}`);\n            }\n            this.props.onResultClick(parsedRef.ref, {[s.lang]: s.version}, {textHighlights});\n        }\n    }\n    get_snippet_markup(data) {\n        var snippet;\n        var field;\n        if (data.highlight) {\n          field = Object.keys(data.highlight)[0]; //there should only be one key\n          snippet = data.highlight[field].join(\"...\");\n        } else {\n          field = \"exact\";\n          snippet = data._source[field];\n        }\n        // if (data.highlight && data.highlight[field]) {\n\n        // } else {\n        //     snippet = s[field];  // We're filtering out content, because it's *huge*, especially on Sheets\n        // }\n        const lang = Sefaria.hebrew.isHebrew(snippet) ? \"he\" : \"en\";\n        snippet = snippet.replace(/^[ .,;:!-)\\]]+/, \"\");\n        return { markup:{__html:snippet}, lang };\n    }\n    render() {\n        var data = this.props.data;\n        var s = this.props.data._source;\n        const href = `/${Sefaria.normRef(s.ref)}?v${s.lang}=${Sefaria.util.encodeVtitle(s.version)}&qh=${this.props.query}`;\n\n        const more_results_caret =\n            (this.state.duplicatesShown)\n                ? <i className=\"fa fa-caret-down fa-angle-down\"></i>\n                : <i className=\"fa fa-caret-down\"></i>;\n\n        const more_results_indicator = (!(data.duplicates)) ? \"\" :\n            <div className='similar-trigger-box' onClick={this.toggleDuplicates}>\n                    <span className='similar-title int-he'>\n                        {data.duplicates.length} {(data.duplicates.length > 1) ? \" גרסאות נוספות\" : \" גרסה נוספת\"}\n                    </span>\n                <span className='similar-title int-en'>\n                        {data.duplicates.length} more version{(data.duplicates.length > 1) ? \"s\" : null}\n                    </span>\n                {more_results_caret}\n            </div>;\n\n        const shown_duplicates = (data.duplicates && this.state.duplicatesShown) ?\n            (<div className='similar-results'>\n                {data.duplicates.filter(result => !!result._source.version).map(function (result) {\n                    var key = result._source.ref + \"-\" + result._source.version;\n                    return <SearchTextResult\n                        data={result}\n                        key={key}\n                        query={this.props.query}\n                        onResultClick={this.props.onResultClick}\n                    />;\n                }.bind(this))}\n            </div>) : null;\n\n        const snippetMarkup = this.get_snippet_markup(data);\n        const snippetClasses = classNames({snippet: 1, en: snippetMarkup.lang == \"en\", he: snippetMarkup.lang == \"he\"});\n        return (\n            <div className=\"result textResult\">\n                <a href={href} onClick={this.handleResultClick}>\n                    <div className=\"result-title\">\n                        <InterfaceText text={{en: s.ref, he: s.heRef}}/>\n                    </div>\n                </a>\n                <ColorBarBox tref={s.ref}>\n                    <div className={snippetClasses} dangerouslySetInnerHTML={snippetMarkup.markup}></div>\n                </ColorBarBox>\n                <div className=\"version\">\n                    {Sefaria.interfaceLang === 'hebrew' && s.hebrew_version_title || s.version}\n                </div>\n\n                {more_results_indicator}\n                {shown_duplicates}\n            </div>\n        );\n    }\n}\nSearchTextResult.propTypes = {\n    query: PropTypes.string,\n    data: PropTypes.object,\n    onResultClick: PropTypes.func\n};\n\n\nexport default SearchTextResult;\n","import React  from 'react';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport Component      from 'react-class';\nimport {\n    ColorBarBox, InterfaceText,\n    ProfilePic,\n} from './Misc';\n\n\nclass SearchSheetResult extends Component {\n    handleSheetClick(e) {\n      var s = this.props.data._source;\n      if (this.props.onResultClick) {\n        e.preventDefault()\n        this.props.onResultClick(\"Sheet \" + s.sheetId);\n      }\n      Sefaria.track.event(\"Search\", \"Search Result Sheet Click\", `${this.props.query} - ${s.sheetId}`);\n    }\n    handleProfileClick(e) {\n      const s = this.props.data._source;\n      Sefaria.track.event(\"Search\", \"Search Result Sheet Owner Click\", `${this.props.query} - ${s.sheetId} - ${s.owner_name}`);\n    }\n    get_snippet_markup(data) {\n      let snippet = data.highlight.content.join(\"...\"); // data.highlight ? data.highlight.content.join(\"...\") : s.content;\n      snippet = snippet.replace(/^[ .,;:!-)\\]]+/, \"\");\n      const lang = Sefaria.hebrew.isHebrew(snippet) ? \"he\" : \"en\";\n      return { markup: {__html: snippet}, lang };\n    }\n    render() {\n        const data = this.props.data;\n        const s = data._source;\n        var clean_title = $(\"<span>\" + s.title + \"</span>\").text();\n        var href = \"/sheets/\" + s.sheetId;\n        const snippetMarkup = this.get_snippet_markup(data);\n        const snippetClasses = classNames({snippet: 1, en: snippetMarkup.lang == \"en\", he: snippetMarkup.lang == \"he\"});\n        const ownerIsHe = Sefaria.hebrew.isHebrew(s.owner_name);\n        const titleIsHe = Sefaria.hebrew.isHebrew(clean_title);\n        const tags = s.tags && s.tags.length ? Sefaria.util.zip(s.tags, s.topic_slugs, s.topics_he) : [];\n        return (\n            <div className='result sheetResult'>\n                <a href={href} onClick={this.handleSheetClick}>\n                    <div className={classNames({'result-title': 1, 'in-en': !titleIsHe, 'in-he': titleIsHe})}>\n                        <span dir={titleIsHe ? \"rtl\" : \"ltr\"}>{clean_title}</span>\n                    </div>\n                    <ColorBarBox tref={\"Sheet 1\"}>\n                      <div className={snippetClasses}>\n                          <span dir={snippetMarkup.lang === 'he' ? \"rtl\" : \"ltr\"} dangerouslySetInnerHTML={snippetMarkup.markup} ></span>\n                      </div>\n                    </ColorBarBox>\n                </a>\n                <div className=\"sheetData sans-serif\">\n                    <a className=\"ownerData sans-serif\" href={s.profile_url} onClick={this.handleProfileClick}>\n                        <ProfilePic\n                            url={s.owner_image}\n                            name={s.owner_name}\n                            len={30}\n                        />\n                        <span className={classNames({'ownerName': 1, 'in-en': !ownerIsHe, 'in-he': ownerIsHe})}>{s.owner_name}</span>\n                    </a>\n                    <span className='tagsViews'>\n                    {tags.map((topic, i) => {\n                        return (\n                          <a href={`/topics/${topic[1]}`} target=\"_blank\" key={`link${topic[1]}${i}`}>\n                              <InterfaceText text={{en: topic[0], he: topic[2]}} />\n                          </a>\n                        );\n                      })}\n                    </span>\n                </div>\n            </div>\n        );\n    }\n}\nSearchSheetResult.propTypes = {\n  query: PropTypes.string,\n  data: PropTypes.object,\n  onResultClick: PropTypes.func\n};\n\n\nexport default SearchSheetResult;\n","import React, { useEffect, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport Sefaria from './sefaria/sefaria';\nimport $ from './sefaria/sefariaJquery';\nimport SearchState from './sefaria/searchState';\nimport classNames  from 'classnames';\nimport PropTypes from 'prop-types';\nimport Component from 'react-class';\nimport {\n  InterfaceText,\n  LoadingMessage,\n  CloseButton,\n  ToggleSet,\n} from './Misc';\n\nclass SearchFilters extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      isExactSearch: props.searchState.field === props.searchState.fieldExact\n    }\n  }\n  componentWillReceiveProps(newProps) {\n    // Save current filters\n    // todo: check for cases when we want to rebuild / not\n    const { field, fieldExact } = this.props.searchState;\n    if ((newProps.query != this.props.query)\n        || (newProps.searchState.availableFilters.length !== this.props.searchState.availableFilters.length)) {\n\n      this.setState({\n        isExactSearch: field === fieldExact\n      });\n    }\n  }\n  getSelectedTitles(lang) {\n    let results = [];\n    for (let i = 0; i < this.props.searchState.availableFilters.length; i++) {\n      const tempSelected = this.props.searchState.availableFilters[i].getSelectedTitles(lang);\n      results = results.concat(tempSelected);\n    }\n    return results;\n  }\n  toggleExactSearch() {\n    let newExactSearch = !this.state.isExactSearch;\n    if (newExactSearch) {\n      this.props.updateAppliedOptionField(this.props.searchState.fieldExact);\n    } else {\n      this.props.updateAppliedOptionField(this.props.searchState.fieldBroad);\n    }\n    this.setState({isExactSearch: newExactSearch});\n  }\n  render() {\n    const filters = (this.props.type === 'text' ?\n      <TextSearchFilters\n        toggleExactSearch={this.toggleExactSearch}\n        openedCategory={this.state.openedCategory}\n        openedCategoryBooks={this.state.openedCategoryBooks}\n        updateAppliedFilter={this.props.updateAppliedFilter}\n        availableFilters={this.props.searchState.availableFilters}\n        isExactSearch={this.props.searchState.fieldExact === this.props.searchState.field}\n      /> :\n      <SheetSearchFilters\n        updateAppliedFilter={this.props.updateAppliedFilter}\n        availableFilters={this.props.searchState.availableFilters}\n      />\n    );\n\n    const {searchState, type, updateAppliedOptionSort} = this.props;\n    const sortOptions = SearchState.metadataByType[type].sortTypeArray.map(data => ({\n      name: data.type,\n      content: <InterfaceText>{data.name}</InterfaceText>,\n      role: \"radio\",\n      ariaLabel: Sefaria._(\"Sort by\") + \" \" + Sefaria._(data.name),\n    }));\n\n    return Sefaria.multiPanel && !this.props.compare ? (\n      <div className=\"searchFilters navSidebarModule\">\n        {filters}\n      </div>\n    ) : (\n      <>\n        <div className=\"mobileSearchFiltersHeader sans-serif\">\n          <CloseButton onClick={this.props.closeMobileFilters} />\n          <InterfaceText>Filters</InterfaceText>\n          <div></div>\n        </div>\n        <div className=\"searchFilters navSidebarModule\">\n          <div className=\"searchFilterGroup\">\n            <h2>\n              <InterfaceText>Sort by</InterfaceText>\n            </h2>\n            <ToggleSet\n              ariaLabel=\"Sort by\"\n              name=\"sortBy\"\n              options={sortOptions}\n              setOption={(set, sortType) => updateAppliedOptionSort(sortType)}\n              currentValue={searchState.sortType}\n              blueStyle={true} />\n          </div>\n\n          {filters}\n        </div>\n        <div className=\"mobileSearchFiltersFooter\">\n          <div className=\"button fillWidth\" onClick={this.props.closeMobileFilters}>\n            <InterfaceText>Show Results</InterfaceText>\n          </div>\n        </div>\n      </>\n    );\n  }\n}\nSearchFilters.propTypes = {\n  query:                    PropTypes.string,\n  searchState:              PropTypes.object,\n  total:                    PropTypes.number,\n  updateAppliedFilter:      PropTypes.func,\n  updateAppliedOptionField: PropTypes.func,\n  updateAppliedOptionSort:  PropTypes.func,\n  isQueryRunning:           PropTypes.bool,\n  type:                     PropTypes.string,\n};\n\n\nclass TextSearchFilters extends Component {\n  render() {\n    return (\n      <div className=\"searchFilterBoxes\">\n        <SearchFilterGroup\n          name=\"Texts\"\n          searchable={true}\n          filters={this.props.availableFilters}\n          updateSelected={this.props.updateAppliedFilter}\n          expandable={true} />\n\n        <div className=\"searchFilterGroup\">\n          <h2>\n            <InterfaceText>Options</InterfaceText>\n          </h2>\n          <SearchFilterExactBox\n            selected={this.props.isExactSearch}\n            checkBoxClick={this.props.toggleExactSearch} />\n        </div>\n      </div>\n    );\n  }\n}\nTextSearchFilters.propTypes = {\n  availableFilters:    PropTypes.array,\n  openedCategory:      PropTypes.object,\n  updateAppliedFilter: PropTypes.func,\n  openedCategoryBooks: PropTypes.array,\n  isExactSearch:       PropTypes.bool,\n  toggleExactSearch:   PropTypes.func,\n};\n\n\nconst SearchFilterGroup = ({name, filters, updateSelected, expandable, paged, searchable}) => {\n  if (!filters || !filters.length) { return null; }\n\n  useEffect(() => {\n    const filterValue = document.getElementById(`filter${name}`)?.value ? document.getElementById(`filter${name}`)?.value : \"\";\n    updateFilters(filterValue);\n  }, [filters])\n\n  const [displayedFilters, setFilters] = useState(filters);\n  const [showClearInputButton, setShowClearInputButton] = useState(false)\n\n  let content = displayedFilters.map(filter => (\n    <SearchFilter\n      filter={filter}\n      updateSelected={updateSelected}\n      expandable={expandable}\n      filterSearchValue={document.getElementById(`filter${name}`)?.value}\n      key={filter.aggKey}/>\n  ));\n\n  if (name === 'Collections') {content.sort((a,b) => {\n    const title = Sefaria.interfaceLang==='english' ? 'title' : 'heTitle';\n    return !a.props.filter[title] - !b.props.filter[title]; //first the collections with title in the interface's language\n  })}\n\n  if (paged) {\n    content = <PagedList items={content} />\n  }\n\n  const hasWordStartingWithOrSelected = (item, filterValue) => {\n    let escapedFilterValue = filterValue.replace(\"-\", \"\\-\");\n    escapedFilterValue = escapedFilterValue.replace(/[^\\w\\s\\-]/g, \"\");\n    if (item.selected || item.title.match(new RegExp(`(?:^|.+\\\\s)${escapedFilterValue}.*`, \"i\")) || item.heTitle.match(new RegExp(`(?:^|.+\\\\s)${escapedFilterValue}.*`, \"i\"))) {\n      return true;\n    } else if (item.children.filter(x => hasWordStartingWithOrSelected(x, escapedFilterValue)).length > 0) {\n      return true;\n    }\n    else {\n      return false;\n    }\n  }\n\n  const wordSelected = (item) => {\n    if (item.selected) {\n      return -1;\n    } else {\n      return 1;\n    }\n  }\n\n  const updateFilters = text => {\n    if (text && text != \"\") {\n      if (!expandable) {\n        setFilters(filters.filter(x => hasWordStartingWithOrSelected(x, text)).sort(x => wordSelected(x)));\n      } else { // don't sort\n        setFilters(filters.filter(x => hasWordStartingWithOrSelected(x, text)));\n      }\n      setShowClearInputButton(true);\n    } else {\n      if (!expandable) {\n        setFilters(filters.sort(x => wordSelected(x)));\n      } else {\n        setFilters(filters);\n      }\n      setShowClearInputButton(false);\n    }\n  }\n  const clearInput = () => {\n    document.getElementById(`filter${name}`).value = \"\";\n    updateFilters(\"\");\n  }\n  // need hebrew for placeholder/title\n  const clearInputButton = <button aria-label=\"Clear input\" onClick={clearInput}><img src=\"/static/icons/heavy-x.svg\" className=\"searchFilterIcon\" aria-hidden=\"true\" tabIndex=\"0\"></img></button>;\n  const search = searchable ? <div className=\"searchBox\"><input id={`filter${name}`} className=\"searchFiltersInput\" placeholder={Sefaria._(`Search ${name}`)} title={`Type to Filter ${name} Shown`} onChange={e => updateFilters(e.target.value)}></input>{showClearInputButton ? clearInputButton : null}</div>  : null;\n\n  return (\n    <div className=\"searchFilterGroup\">\n      <h2>\n        <InterfaceText context=\"SearchFilters\">{name}</InterfaceText>\n      </h2>\n      {search}\n      {content}\n    </div>\n  );\n};\n\n\nclass SearchFilterExactBox extends Component {\n  handleClick() {\n    this.props.checkBoxClick();\n  }\n  handleKeyPress(e) {\n    if (e.charCode == 13) { // enter\n      this.handleClick(e);\n    }\n  }\n  render() {\n    return (\n      <li>\n        <div className=\"checkboxAndText\">\n          <input type=\"checkbox\" id=\"searchFilterExactBox\" className=\"filter\" checked={this.props.selected} onChange={this.handleClick}/>\n          <label tabIndex=\"0\" onClick={this.handleClick} onKeyDown={this.handleKeyDown} onKeyPress={this.handleKeyPress}><span></span></label>\n        \n         <span className={\"filter-title\"}>\n            <InterfaceText>Exact Matches Only</InterfaceText>\n          </span>\n        </div>\n      </li>\n    );\n  }\n}\nSearchFilterExactBox.propTypes = {\n  selected:      PropTypes.bool,\n  checkBoxClick: PropTypes.func\n};\n\n\nclass SearchFilter extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      expanded: false,\n      selected: props.filter.selected\n    };\n  }\n  componentWillReceiveProps(newProps) {\n    if (newProps.filter.selected != this.state.selected) {\n      this.setState({selected: newProps.filter.selected});\n    }\n  }\n  componentDidMount() {\n    // Can't set indeterminate in the render phase.  https://github.com/facebook/react/issues/1798\n    ReactDOM.findDOMNode(this).querySelector(\"input\").indeterminate = this.props.filter.isPartial();\n    if (this.props.filter.isPartial()) {\n      ReactDOM.findDOMNode(this).querySelector(\"label\").setAttribute(\"aria-checked\", \"mixed\");\n    }\n    else {\n      ReactDOM.findDOMNode(this).querySelector(\"label\").setAttribute(\"aria-checked\", this.state.selected==1);\n    }\n  }\n  componentDidUpdate() {\n    ReactDOM.findDOMNode(this).querySelector(\"input\").indeterminate = this.props.filter.isPartial();\n    if (this.props.filter.isPartial()) {\n      ReactDOM.findDOMNode(this).querySelector(\"label\").setAttribute(\"aria-checked\", \"mixed\");\n    }\n    else {\n      ReactDOM.findDOMNode(this).querySelector(\"label\").setAttribute(\"aria-checked\", this.state.selected==1);\n    }\n  }\n  handleFilterClick(evt) {\n    this.props.updateSelected(this.props.filter)\n  }\n  toggleExpanded() {\n    this.props.expandable && this.setState({expanded: !this.state.expanded});    \n  }\n  handleKeyPress(e) {\n    if (e.charCode == 13) { // enter\n      this.handleFilterClick(e);\n    }\n  }\n  handleExpandKeyPress(e) {\n    if (e.charCode == 13) { // enter\n      this.toggleExpanded();\n    }\n  }\n  autoExpand(filter) {\n    return this.props.filterSearchValue !== undefined && this.props.filterSearchValue !== null && this.props.filterSearchValue !== \"\" && this.props.expandable && filter.getLeafNodes(this.props.filterSearchValue).length > 0;\n  }\n  render() {\n    const { filter, expandable } = this.props;\n    const toggleMessage = \"Press enter to toggle search filter for \" + filter.title + \".\";\n    const expandMessage = \"Press enter to toggle the list of specific books within \" + filter.title + \" to filter by.\"\n\n    return (\n      <>\n        <li>\n          <div className=\"checkboxAndText\">\n            <input type=\"checkbox\" id={filter.aggKey} className=\"filter\" checked={this.state.selected == 1} onChange={this.handleFilterClick}/>\n            <label \n              onClick={this.handleFilterClick} \n              id={\"label-for-\"+this.props.filter.aggKey} \n              tabIndex=\"0\"\n              onKeyDown={this.handleKeyDown} \n              onKeyPress={this.handleKeyPress} \n              aria-label={toggleMessage}>\n              <span></span>\n            </label>\n            <span\n              className=\"searchFilterTitle\"\n              onClick={expandable ? this.toggleExpanded : this.handleFilterClick}\n              onKeyPress={expandable ? this.handleExpandKeyPress : this.handleKeyPress}\n              tabIndex={expandable ? \"0\" : null}\n              aria-label={expandable ? expandMessage : toggleMessage} >\n              <InterfaceText text={{en: filter.title, he: filter.heTitle}} />&nbsp;\n              <span className=\"filter-count\"><InterfaceText>{`(${filter.docCount})`}</InterfaceText></span>\n            </span>\n          </div>\n          {this.props.expandable ? <i className=\"fa fa-angle-down\" onClick={this.toggleExpanded} /> : null}\n        </li>\n        {this.state.expanded || this.autoExpand(filter) ? \n        <li>\n          <div className=\"searchFilterBooks\">\n            {filter.getLeafNodes(this.props.filterSearchValue).map(subFilter => (\n              <SearchFilter\n                filter={subFilter}\n                updateSelected={this.props.updateSelected}\n                key={subFilter.aggKey} />\n            ))}\n          </div>\n        </li> : null}\n      </>\n    );\n  }\n}\nSearchFilter.propTypes = {\n  filter:         PropTypes.object.isRequired,\n  expandable:     PropTypes.bool,\n  updateSelected: PropTypes.func.isRequired,\n};\n\n\nclass SheetSearchFilters extends Component {\n  render() {\n    const collectionFilters = this.props.availableFilters.filter(filter => filter.aggType === 'collections' && (filter.title || filter.heTitle));\n    const tagFilters = this.props.availableFilters.filter(filter => filter.aggType.match(/^topics/) && (filter.title || filter.heTitle));\n\n    return (\n      <div className=\"searchFilterBoxes\" role=\"dialog\">\n        <SearchFilterGroup\n          name=\"Topics\"\n          filters={tagFilters}\n          updateSelected={this.props.updateAppliedFilter}\n          paged={true} \n          searchable={true}\n          />\n\n        <SearchFilterGroup\n          name=\"Collections\"\n          filters={collectionFilters}\n          updateSelected={this.props.updateAppliedFilter}\n          paged={true} />\n      </div>\n    );\n  }\n}\nSheetSearchFilters.propTypes = {\n  updateAppliedFilter: PropTypes.func.isRequired,\n  availableFilters:    PropTypes.array.isRequired,\n};\n\n\nconst PagedList = ({items, initial=8, pageSize=20}) => {\n  const [cutoff, setCutoff] = useState(initial);\n  return (\n    <>\n      {items.slice(0, cutoff)}\n      {items.length > cutoff ?\n      <button className=\"showMore sans-serif\" onClick={() => {setCutoff(cutoff + pageSize);}}>\n        <InterfaceText context=\"SearchFilters\">See More</InterfaceText>\n      </button>\n      : null}\n    </>\n  );\n};\n\n\nexport default SearchFilters;","import React, { useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport Component from 'react-class';\nimport extend from 'extend';\nimport classNames from 'classnames';\nimport $ from './sefaria/sefariaJquery';\nimport Sefaria from './sefaria/sefaria';\nimport { SearchTotal } from \"./sefaria/searchTotal\";\nimport SearchTextResult from './SearchTextResult';\nimport SearchSheetResult from './SearchSheetResult';\nimport SearchFilters from './SearchFilters';\nimport SearchState from './sefaria/searchState';\nimport Strings from \"./sefaria/strings.js\"\nimport {\n  DropdownModal,\n  DropdownButton,\n  DropdownOptionList,\n  InterfaceText,\n  LoadingMessage,\n} from './Misc';\n\n\n\n\n\nconst SourcesSheetsDiv = (props) => {\n    let sourcesSheetsCounts = [];\n    let sheetsURL, sourcesURL;\n    if (props?.numSources > 0 && props?.numSheets > 0) { // if there's both, we need to specify two different URLs\n        sheetsURL = props.url + \"?tab=sheets\";\n        sourcesURL = props.url + \"?tab=sources\";\n    }\n    else {\n        sheetsURL = props.url;\n        sourcesURL = props.url;\n    }\n\n    if (props?.numSources > 0) {\n        const sourcesDiv = <span><a href={sourcesURL}><InterfaceText>{props.numSources}</InterfaceText> <InterfaceText>Sources</InterfaceText></a></span>;\n        sourcesSheetsCounts.push(sourcesDiv);\n    }\n    if (props?.numSheets > 0) {\n        const sheetsDiv = <span><a href={sheetsURL}><InterfaceText>{props.numSheets}</InterfaceText> <InterfaceText>Sheets</InterfaceText></a></span>;\n        sourcesSheetsCounts.push(sheetsDiv);\n    }\n\n    if (sourcesSheetsCounts.length === 0) {\n        return null;\n    }\n    else {\n        return <div className=\"topicSourcesSheets systemText\">{sourcesSheetsCounts.reduce((prev, curr) => [prev, \" ∙ \",  curr])}</div>;\n    }\n}\n\n\nconst SearchTopic = (props) => {\n    const sourcesSheetsDiv = <SourcesSheetsDiv url={props.topic.url} numSheets={props.topic.numSheets} numSources={props.topic.numSources}/>;\n    const topicTitle = <div className=\"topicTitle\">\n                          <h1>\n                          <a href={props.topic.url} onClick={() => Sefaria.track.event(\"Search\", \"topic in search click\", props.topic.analyticCat+\"|\"+props.topic.title)}><InterfaceText text={{en:props.topic.title, he:props.topic.heTitle}}/></a>\n                          </h1>\n                        </div>;\n    const topicCategory = <div className=\"topicCategory sectionTitleText\">\n                            <InterfaceText text={{en:props.topic.topicCat, he:props.topic.heTopicCat}}/>\n                          </div>;\n    return <div className=\"searchTopic\">\n                {topicTitle}\n                {topicCategory}\n                {\"enDesc\" in props.topic ?\n                    <div className=\"topicDescSearchResult systemText\">\n                       <InterfaceText markdown={{en:props.topic.enDesc, he:props.topic.heDesc}}/>\n                    </div> : null}\n                {sourcesSheetsDiv}\n        </div>\n}\n\n\nclass SearchResultList extends Component {\n    constructor(props) {\n      super(props);\n      this.types = this.props.types || ['text', 'sheet'];\n      this.querySize = {\"text\": 50, \"sheet\": 20};\n      this.state = {\n        runningQueries: this._typeObjDefault(null),\n        isQueryRunning: this._typeObjDefault(false),\n        moreToLoad:     this._typeObjDefault(true),\n        totals:         this._typeObjDefault(new SearchTotal()),\n        pagesLoaded:    this._typeObjDefault(0),\n        hits:           this._typeObjDefault([]),\n        error:          false,\n        topics:         []\n      }\n\n      // Load search results from cache so they are available for immediate render\n      this.types.map(t => {\n        const args = this._getQueryArgs(props, t);\n        let cachedQuery = Sefaria.search.getCachedQuery(args);\n        while (cachedQuery) {\n          // Load all pages of results that are available in cache, so if page X was\n          // previously loaded it will be returned.\n          //console.log(\"Loaded cached query for\")\n          //console.log(args);\n          this.state.hits[t] = this.state.hits[t].concat(cachedQuery.hits.hits);\n          this.state.totals[t] = cachedQuery.hits.total;\n          this.state.pagesLoaded[t] += 1;\n          args.start = this.state.pagesLoaded[t] * this.querySize[t];\n          if (t === \"text\") {\n            // Since texts only have one filter type, aggregations are only requested once on first page\n            args.aggregationsToUpdate = [];\n          }\n          cachedQuery = Sefaria.search.getCachedQuery(args);\n        }\n      });\n      this.updateTotalResults();\n    }\n    componentDidMount() {\n        this._executeAllQueries();\n        $(ReactDOM.findDOMNode(this)).closest(\".content\").on(\"scroll.infiteScroll\", this.handleScroll);\n    }\n    componentWillUnmount() {\n        this._abortRunningQueries();  // todo: make this work w/ promises\n        $(ReactDOM.findDOMNode(this)).closest(\".content\").off(\"scroll.infiniteScroll\", this.handleScroll);\n    }\n    componentWillReceiveProps(newProps) {\n      if(this.props.query !== newProps.query) {\n        this.setState({\n          totals: this._typeObjDefault(new SearchTotal()),\n          hits: this._typeObjDefault([]),\n          moreToLoad: this._typeObjDefault(true),\n        });\n        this._executeAllQueries(newProps);\n      } else {\n        this.types.forEach(t => {\n          if (this._shouldUpdateQuery(this.props, newProps, t)) {\n            let state = {\n              hits: extend(this.state.hits, {[t]: []}),\n              pagesLoaded: extend(this.state.pagesLoaded, {[t]: 0}),\n              moreToLoad: extend(this.state.moreToLoad, {[t]: true})\n            };\n            this.setState(state);\n            this._executeQuery(newProps, t);\n          }\n        });\n      }\n    }\n    async addRefTopic(topic) {\n        const book = await Sefaria.getIndexDetails(topic.key);\n        return {\n            enDesc: book.enDesc || book.enShortDesc,\n            heDesc: book.heDesc || book.heShortDesc,\n            title: book.title,\n            heTitle: book.heTitle,\n            topicCat: book.categories[0],\n            heTopicCat: Sefaria.toc.filter(cat => cat.category === book.categories[0])[0].heCategory,\n            url: \"/\" + book.title,\n            analyticCat: \"Book\"\n        }\n    }\n    addTOCCategoryTopic(topic) {\n        const topicKeyArr = topic.key.slice();\n        const lastCat = topicKeyArr.pop(topicKeyArr - 1); //go up one level in order to get the bottom level's description\n        const relevantCats = topicKeyArr.length === 0 ? Sefaria.toc : Sefaria.tocItemsByCategories(topicKeyArr);\n        const relevantSubCat = relevantCats.filter(cat => \"category\" in cat && cat.category === lastCat)[0];\n        return {\n            analyticCat: \"Category\",\n            url: \"/texts/\" + topic.key.join(\"/\"),\n            topicCat: \"Texts\",\n            heTopicCat: Sefaria.hebrewTerm(\"Texts\"),\n            enDesc: relevantSubCat.enDesc,\n            heDesc: relevantSubCat.heDesc,\n            title: relevantSubCat.category,\n            heTitle: relevantSubCat.heCategory\n        }\n    }\n    async addGeneralTopic(topic) {\n        const d = await Sefaria.getTopic(topic.key, {annotated: false});\n        let searchTopic = {\n            analyticCat: \"Topic\",\n            title: d.primaryTitle[\"en\"],\n            heTitle: d.primaryTitle[\"he\"],\n            numSources: 0,\n            numSheets: 0,\n            url: \"/topics/\" + topic.key\n        }\n        const typeObj = Sefaria.topicTocCategory(topic.key);\n        if (!typeObj) {\n            searchTopic.topicCat = \"Topics\";\n            searchTopic.heTopicCat = Sefaria.hebrewTranslation(\"Topics\");\n        } else {\n            searchTopic.topicCat = typeObj[\"en\"];\n            searchTopic.heTopicCat = typeObj[\"he\"];\n        }\n        if (\"description\" in d) {\n            searchTopic.enDesc = d.description[\"en\"];\n            searchTopic.heDesc = d.description[\"he\"];\n        }\n        if (d.tabs?.sources) {\n            searchTopic.numSources = d.tabs.sources.refs.length;\n        }\n        if (d.tabs?.sheets) {\n            searchTopic.numSheets = d.tabs.sheets.refs.length;\n        }\n        return searchTopic;\n    }\n    async addCollection(collection) {\n        const d = await Sefaria.getCollection(collection.key);\n        return {\n            analyticCat: \"Collection\",\n            title: d.name,\n            heTitle: d.name,\n            url: \"/collections/\" + collection.key,\n            topicCat: \"Collections\",\n            heTopicCat: Sefaria.hebrewTranslation(\"Collections\"),\n            enDesc: d.description,\n            heDesc: d.description,\n            numSheets: d.sheets.length\n        }\n    }\n    async _executeTopicQuery() {\n        const d = await Sefaria.getName(this.props.query)\n        let topics = d.completion_objects.filter(obj => obj.title.toUpperCase() === this.props.query.toUpperCase());\n        const hasAuthor = topics.some(obj => obj.type === \"AuthorTopic\");\n        if (hasAuthor) {\n            topics = topics.filter(obj => obj.type !== \"TocCategory\");  //TocCategory is unhelpful if we have author\n        }\n        let searchTopics = await Promise.all(topics.map(async t => {\n            if (t.type === 'ref') {\n                return await this.addRefTopic(t);\n            } else if (t.type === 'TocCategory') {\n                return this.addTOCCategoryTopic(t);\n            } else if (t.type === 'Collection') {\n                return await this.addCollection(t);\n            } else {\n                return await this.addGeneralTopic(t);\n            }\n        }));\n        this.setState({topics: searchTopics});\n    }\n    updateRunningQuery(type, ajax) {\n      this.state.runningQueries[type] = ajax;\n      this.state.isQueryRunning[type] = !!ajax;\n      this.setState(this.state);\n    }\n    totalResults() {\n      return this.types.reduce((accum, type) => (this.state.totals[type].combine(accum)), new SearchTotal());\n    }\n    updateTotalResults() {\n      this.props.updateTotalResults(this.totalResults());\n    }\n    _typeObjDefault(defaultValue) {\n      // es6 version of dict comprehension...\n      return this.types.reduce((obj, k) => { obj[k] = defaultValue; return obj; }, {});\n    }\n    _abortRunningQueries() {\n      this.types.forEach(t => this._abortRunningQuery(t));\n    }\n    _abortRunningQuery(type) {\n      if(this.state.runningQueries[type]) {\n          this.state.runningQueries[type].abort();  //todo: make work with promises\n      }\n      this.updateRunningQuery(type, null);\n    }\n    handleScroll() {\n      var tab = this.props.tab;\n\n      if (!this.state.moreToLoad[tab]) { return; }\n      if (this.state.runningQueries[tab]) { return; }\n\n      var $scrollable = $(ReactDOM.findDOMNode(this)).closest(\".content\");\n      var margin = 300;\n      if($scrollable.scrollTop() + $scrollable.innerHeight() + margin >= $scrollable[0].scrollHeight) {\n        this._loadNextPage(tab);\n      }\n    }\n    _shouldUpdateQuery(oldProps, newProps, type) {\n      const oldSearchState = this._getSearchState(type, oldProps);\n      const newSearchState = this._getSearchState(type, newProps);\n      return !oldSearchState.isEqual({ other: newSearchState, fields: ['appliedFilters', 'field', 'sortType'] }) ||\n        ((oldSearchState.filtersValid !== newSearchState.filtersValid) && oldSearchState.appliedFilters.length > 0);  // Execute a second query to apply filters after an initial query which got available filters\n    }\n    _getSearchState(type, props) {\n      props = props || this.props;\n      if (!props.query) {\n          return;\n      }\n      return props[`${type}SearchState`];\n    }\n    _executeAllQueries(props) {\n      this._executeTopicQuery();\n      this.types.forEach(t => this._executeQuery(props, t));\n    }\n    _getAggsToUpdate(filtersValid, aggregation_field_array, aggregation_field_lang_suffix_array, appliedFilterAggTypes, type) {\n      // Returns a list of aggregations type which we should request from the server.\n\n      // If there is only on possible filter (i.e. path for text) and filters are valid, no need to request again for any filter interactions\n      if (filtersValid && aggregation_field_array.length === 1) { return []; }\n\n      return Sefaria.util\n        .zip(aggregation_field_array, aggregation_field_lang_suffix_array)\n        .map(([agg, suffix_map]) => `${agg}${suffix_map ? suffix_map[Sefaria.interfaceLang] : ''}`); // add suffix based on interfaceLang to filter, if present in suffix_map\n    }\n    _executeQuery(props, type) {\n      //This takes a props object, so as to be able to handle being called from componentWillReceiveProps with newProps\n      props = props || this.props;\n      if (!props.query) {\n          return;\n      }\n      this._abortRunningQuery(type);\n\n      let args = this._getQueryArgs(props, type);\n\n      // If there are no available filters yet, don't apply filters.  Split into two queries:\n      // 1) Get all potential filters and counts\n      // 2) Apply filters (Triggered from componentWillReceiveProps)\n\n      const request_applied = args.applied_filters;\n      const searchState = this._getSearchState(type, props);\n      const { appliedFilters, appliedFilterAggTypes } = searchState;\n      const { aggregation_field_array, build_and_apply_filters } = SearchState.metadataByType[type];\n\n      args.success = data => {\n              this.updateRunningQuery(type, null);\n              if (this.state.pagesLoaded[type] === 0) { // Skip if pages have already been loaded from cache, but let aggregation processing below occur\n                const currTotal = data.hits.total;\n                let state = {\n                  hits: extend(this.state.hits, {[type]: data.hits.hits}),\n                  totals: extend(this.state.totals, {[type]: currTotal}),\n                  pagesLoaded: extend(this.state.pagesLoaded, {[type]: 1}),\n                  moreToLoad: extend(this.state.moreToLoad, {[type]: currTotal.getValue() > this.querySize[type]})\n                };\n                this.setState(state, () => {\n                  this.updateTotalResults();\n                  this.handleScroll();\n                });\n                const filter_label = (request_applied && request_applied.length > 0) ? (' - ' + request_applied.join('|')) : '';\n                const query_label = props.query + filter_label;\n                Sefaria.track.event(\"Search\", `${this.props.searchInBook? \"SidebarSearch \": \"\"}Query: ${type}`, query_label, data.hits.total.getValue());\n              }\n\n              if (data.aggregations) {\n                let availableFilters = [];\n                let registry = {};\n                let orphans = [];\n                for (let aggregation of args.aggregationsToUpdate) {\n                  if (!!data.aggregations[aggregation]) {\n                    const { buckets } = data.aggregations[aggregation];\n                    const {\n                      availableFilters: tempAvailable,\n                      registry: tempRegistry,\n                      orphans: tempOrphans\n                    } = Sefaria.search[build_and_apply_filters](buckets, appliedFilters, appliedFilterAggTypes, aggregation);\n                    availableFilters.push(...tempAvailable);  // array concat\n                    registry = extend(registry, tempRegistry);\n                    orphans.push(...tempOrphans);\n                  }\n                }\n                this.props.registerAvailableFilters(type, availableFilters, registry, orphans, args.aggregationsToUpdate);\n              }\n            };\n      args.error = this._handleError;\n\n      const runningQuery = Sefaria.search.execute_query(args);\n      this.updateRunningQuery(type, runningQuery);\n    }\n    _getQueryArgs(props, type) {\n      props = props || this.props;\n\n      const searchState = this._getSearchState(type, props);\n      const { field, fieldExact, sortType, filtersValid, appliedFilters, appliedFilterAggTypes } = searchState;\n      const request_applied = filtersValid && appliedFilters;\n      const { aggregation_field_array,  aggregation_field_lang_suffix_array } = SearchState.metadataByType[type];\n      const aggregationsToUpdate = this._getAggsToUpdate(filtersValid, aggregation_field_array, aggregation_field_lang_suffix_array, appliedFilterAggTypes, type);\n\n      return {\n        query: props.query,\n        type,\n        applied_filters: request_applied,\n        appliedFilterAggTypes,\n        aggregationsToUpdate,\n        size: this.querySize[type],\n        field,\n        sort_type: sortType,\n        exact: fieldExact === field,\n      };\n    }\n    _loadNextPage(type) {\n      console.log(\"load next page\")\n      const args = this._getQueryArgs(this.props, type);\n      args.start = this.state.pagesLoaded[type] * this.querySize[type];\n      args.error = () => console.log(\"Failure in SearchResultList._loadNextPage\");\n      args.success =  data => {\n          var nextHits = this.state.hits[type].concat(data.hits.hits);\n\n          this.state.hits[type] = nextHits;\n          this.state.pagesLoaded[type] += 1;\n          if (this.state.pagesLoaded[type] * this.querySize[type] >= this.state.totals[type].getValue() ) {\n            this.state.moreToLoad[type] = false;\n          }\n\n          this.setState(this.state);\n          this.updateRunningQuery(type, null);\n        };\n\n      const runningNextPageQuery = Sefaria.search.execute_query(args);\n      this.updateRunningQuery(type, runningNextPageQuery, false);\n    }\n    _handleError(jqXHR, textStatus, errorThrown) {\n      if (textStatus == \"abort\") {\n        // Abort is immediately followed by new query, above.  Worried there would be a race if we call updateCurrentQuery(null) from here\n        //this.updateCurrentQuery(null);\n        return;\n      }\n      this.setState({error: true});\n      this.updateRunningQuery(null, null);\n    }\n    showSheets() {\n      this.props.updateTab('sheet');\n    }\n    showTexts() {\n      this.props.updateTab('text');\n    }\n    render () {\n        if (!(this.props.query)) {  // Push this up? Thought is to choose on the SearchPage level whether to show a ResultList or an EmptySearchMessage.\n            return null;\n        }\n\n        const { tab }     = this.props;\n        const searchState = this._getSearchState(tab);\n        let results       = [];\n\n        if (tab == \"text\") {\n          results = Sefaria.search.mergeTextResultsVersions(this.state.hits.text);\n          results = results.filter(result => !!result._source.version).map(result =>\n            <SearchTextResult\n              data={result}\n              query={this.props.query}\n              key={result._id}\n              searchInBook={this.props.searchInBook}\n              onResultClick={this.props.onResultClick} />\n          );\n          if (this.state.topics.length > 0) {\n              let topics = this.state.topics.map(t => {\n                  Sefaria.track.event(\"Search\", \"topic in search display\", t.analyticCat+\"|\"+t.title);\n                  return <SearchTopic topic={t}/>\n              });\n              if (results.length > 0) {\n                  topics = <div id=\"searchTopics\">{topics}</div>\n                  results.splice(2, 0, topics);\n              }\n              else {\n                  results = topics;\n              }\n          }\n\n\n        } else if (tab === \"sheet\") {\n          results = this.state.hits.sheet.map(result =>\n            <SearchSheetResult\n              data={result}\n              query={this.props.query}\n              key={result._id}\n              onResultClick={this.props.onResultClick} />\n          );\n        }\n\n        const loadingMessage   = (<LoadingMessage message=\"Searching...\" heMessage=\"מבצע חיפוש...\" />);\n        const noResultsMessage = (<LoadingMessage message=\"0 results.\" heMessage=\"0 תוצאות.\" />);\n\n        const queryFullyLoaded = !this.state.moreToLoad[tab] && !this.state.isQueryRunning[tab];\n        const haveResults      = !!results.length;\n        results                = haveResults ? results : noResultsMessage;\n\n        return (\n          <div>\n            <div className=\"searchTopMatter\">\n              {!this.props.searchInBook ?\n              <SearchTabs\n                clickTextButton={this.showTexts}\n                clickSheetButton={this.showSheets}\n                textTotal={this.state.totals[\"text\"]}\n                sheetTotal={this.state.totals[\"sheet\"]}\n                currentTab={tab} /> : null\n              }\n              {Sefaria.multiPanel && !this.props.compare ?\n              <SearchSortBox\n                type={tab}\n                updateAppliedOptionSort={this.props.updateAppliedOptionSort}\n                sortType={searchState.sortType} />\n              :\n              <SearchFilterButton\n                openMobileFilters={this.props.openMobileFilters}\n                nFilters={searchState.appliedFilters.length} />}\n            </div>\n            <div className=\"searchResultList\">\n              { queryFullyLoaded || haveResults ? results : null }\n              { this.state.isQueryRunning[tab] ? loadingMessage : null }\n            </div>\n          </div>\n        );\n    }\n}\nSearchResultList.propTypes = {\n  query:                    PropTypes.string,\n  tab:                      PropTypes.oneOf([\"text\", \"sheet\"]),\n  textSearchState:          PropTypes.object,\n  sheetSearchState:         PropTypes.object,\n  onResultClick:            PropTypes.func,\n  updateTab:                PropTypes.func,\n  updateAppliedOptionSort:  PropTypes.func,\n  registerAvailableFilters: PropTypes.func,\n};\n\n\nconst SearchTabs = ({clickTextButton, clickSheetButton, textTotal, sheetTotal, currentTab}) => (\n  <div className=\"type-buttons sans-serif\">\n    <SearchTab label={\"Sources\"} total={textTotal} onClick={clickTextButton} active={currentTab === \"text\"} />\n    <SearchTab label={\"Sheets\"} total={sheetTotal} onClick={clickSheetButton} active={currentTab === \"sheet\"} />\n  </div>\n);\n\n\nconst SearchTab = ({label, total, onClick, active}) => {\n  const classes = classNames({\"search-dropdown-button\": 1, active});\n\n  return (\n    <div className={classes} onClick={onClick} onKeyPress={e => {e.charCode === 13 ? onClick(e) : null}} role=\"button\" tabIndex=\"0\">\n      <div className=\"type-button-title\">\n        <InterfaceText>{label}</InterfaceText>&nbsp;\n        <InterfaceText>{`(${total.asString()})`}</InterfaceText>\n      </div>\n    </div>\n  );\n};\n\n\nconst SearchSortBox = ({type, updateAppliedOptionSort, sortType}) => {\n  const [isOpen, setIsOpen] = useState(false);\n\n  const handleClick = (newSortType) => {\n    if (sortType === newSortType) {\n      return;\n    }\n    updateAppliedOptionSort(type, newSortType);\n    setIsOpen(false);\n  }\n  const filterTextClasses = classNames({ searchFilterToggle: 1, active: isOpen });\n  return (\n    <DropdownModal close={() => {setIsOpen(false)}} isOpen={isOpen}>\n      <DropdownButton\n        isOpen={isOpen}\n        toggle={() => {setIsOpen(!isOpen)}}\n        enText={\"Sort\"}\n        heText={\"מיון\"}\n        buttonStyle={true}\n      />\n      <DropdownOptionList\n        isOpen={isOpen}\n        options={SearchState.metadataByType[type].sortTypeArray}\n        currOptionSelected={sortType}\n        handleClick={handleClick}\n      />\n    </DropdownModal>\n  );\n}\nSearchSortBox.propTypes = {\n  type:                    PropTypes.string.isRequired,\n  updateAppliedOptionSort: PropTypes.func,\n  sortType:                PropTypes.string,\n};\n\n\nconst SearchFilterButton = ({openMobileFilters, nFilters}) => (\n  <div className={classNames({button: 1, extraSmall: 1, grey: !nFilters})} onClick={openMobileFilters}>\n    <InterfaceText>Filter</InterfaceText>\n    {!!nFilters ? <>&nbsp;({nFilters.toString()})</> : null}\n  </div>\n);\n\n\nexport default SearchResultList;\n","import { useState, useEffect } from \"react\";\nimport {InterfaceText, EnglishText, HebrewText} from \"./Misc\";\nimport Sefaria from \"./sefaria/sefaria\";\nimport SearchState from './sefaria/searchState';\nimport SearchResultList  from './SearchResultList';\nimport DictionarySearch  from './DictionarySearch';\nimport classNames from 'classnames';\n\nimport {\n  SearchButton,\n} from './Misc';\n\n\nconst SidebarSearch = ({ title, updateAppliedOptionSort, navigatePanel, sidebarSearchQuery, setSidebarSearchQuery, onSidebarSearchClick, hideHebrewKeyboard }) => {\n  const [lexiconName, setLexiconName] = useState(Sefaria.getIndexDetailsFromCache(title)?.lexiconName)\n  const [searchFilterPathForBook, setSearchFilterPathForBook] = useState('');\n  const [query, setQuery] = useState(sidebarSearchQuery || '');\n  const isDictionary = !!lexiconName;\n  const [searchState, setSearchState] = useState(\n          new SearchState({\n                  type: 'text',\n                  appliedFilters:        [searchFilterPathForBook],\n                  field:                 \"naive_lemmatizer\",\n                  appliedFilterAggTypes: [\"path\"],\n                  sortType:              \"chronological\",\n          })\n      )\n\n  useEffect(() => {\n      if (!hideHebrewKeyboard) {\n          attachKeyboard();\n      }\n      const searchInput = document.getElementById('searchQueryInput')\n      if (searchInput) {\n          searchInput.value = query\n      }\n  }, []);\n\n  useEffect(() => {\n      Sefaria.bookSearchPathFilterAPI(title).then((path) => {\n        setSearchFilterPathForBook(path)\n      })\n      setSidebarSearchQuery(query)\n  }, [query])\n\n  useEffect(() => {\n      setSearchState(\n        new SearchState({\n                type: 'text',\n                appliedFilters:        [searchFilterPathForBook],\n                field:                 \"naive_lemmatizer\",\n                appliedFilterAggTypes: [\"path\"],\n                sortType:              \"chronological\",\n                filtersValid: true,\n        })\n      )\n  }, [searchFilterPathForBook])\n\n   const attachKeyboard = () => {\n      const inputElement = document.querySelector('.sidebarSearch input');\n      if (inputElement && (!inputElement.VKI_attached)) {\n        VKI_attach(inputElement);\n      }\n    }\n\n\n  const inputClasses = classNames({\n    search: 1,\n    serif: 1,\n    keyboardInput: Sefaria.interfaceLang === \"english\",\n    hebrewSearch: Sefaria.interfaceLang === \"hebrew\"\n    });\n  // const searchBoxClasses = classNames({searchBox: 1, searchFocused: this.state.searchFocused});\n  const searchBoxClasses = classNames({searchBox: 1});\n\n  const handleSearchButtonClick = () => {\n    const searchBoxValue = document.getElementById('searchQueryInput').value\n    if (searchBoxValue !== query) {\n      setSearchFilterPathForBook('')\n      setQuery(document.getElementById('searchQueryInput').value)\n    }\n  }\n\n\n  return (\n    <div className=\"sidebarSearch lexicon-content\">\n    <div className={searchBoxClasses}>\n\n    { isDictionary ?\n       <DictionarySearch\n            lexiconName={lexiconName}\n            title={title}\n            navigatePanel={navigatePanel}\n            contextSelector=\".lexicon-content\"/>\n      :\n      <>\n        <SearchButton onClick={handleSearchButtonClick} />\n        <input className={inputClasses}\n          placeholder={Sefaria._(\"Search in this text\")}\n          id=\"searchQueryInput\"\n          maxLength={75}\n          onKeyUp={\n            (event) => {\n              if (event.keyCode === 13) {\n                handleSearchButtonClick()\n              }\n            }\n          }\n          title={Sefaria._(\"Search in this text\")} />\n      </>\n      }\n\n    </div>\n\n\n      {query ?\n        <SearchResultList\n          query={query}\n          compare={false}\n          searchInBook={true}\n          tab=\"text\"\n          types={[\"text\"]}\n          textSearchState={searchState}\n          updateTotalResults={n => console.log(n)}\n          registerAvailableFilters={n => console.log(n)}\n          updateAppliedOptionSort={updateAppliedOptionSort}\n          onResultClick={onSidebarSearchClick}\n        /> :\n\n        null\n\n    }\n\n\n    </div>\n  );\n\n\n\n}\n\n\n\n\nexport default SidebarSearch;\n","import {InterfaceText, EnglishText, HebrewText, LanguageToggleButton, CloseButton } from \"./Misc\";\nimport {RecentFilterSet} from \"./ConnectionFilters\";\nimport React  from 'react';\nimport ReactDOM  from 'react-dom';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport Component      from 'react-class';\n\n\nclass ConnectionsPanelHeader extends Component {\n  constructor(props) {\n    super(props);\n    this.previousModes = {\n        // mapping from modes to previous modes\n        \"Translation Open\":\"Translations\",\n        \"extended notes\":\"Translations\",\n        \"WebPagesList\": \"WebPages\"\n    };\n  }\n  componentDidMount() {\n    this.setMarginForScrollbar();\n  }\n  getPreviousMode() {\n      return !!this.props.previousMode ? this.props.previousMode : this.previousModes[this.props.connectionsMode];\n  }\n  setMarginForScrollbar() {\n    // Scrollbars take up spacing, causing the centering of ConnectsionPanel to be slightly off center\n    // compared to the header. This functions sets appropriate margin to compensate.\n    const width      = Sefaria.util.getScrollbarWidth();\n    const $container = $(ReactDOM.findDOMNode(this));\n    if (this.props.interfaceLang === \"hebrew\") {\n      $container.css({marginRight: 0, marginLeft: width});\n    } else {\n      $container.css({marginRight: width, marginLeft: 0});\n    }\n  }\n  onClick(e) {\n    e.preventDefault();\n    const previousMode = this.getPreviousMode();\n    if (previousMode) {\n      this.props.setConnectionsMode(previousMode);\n    } else {\n      this.props.setConnectionsCategory(this.props.previousCategory);\n    }\n  }\n  render() {\n      /** TODO: fix for interfacetext */\n    const previousMode = this.getPreviousMode();\n    let title;\n    if (this.props.connectionsMode === \"Resources\") {\n      // Top Level Menu\n      title = <div className=\"connectionsHeaderTitle sans-serif\">\n                    <InterfaceText text={{en: \"Resources\" , he:\"קישורים וכלים\" }} />\n                  </div>;\n\n    } else if ((this.props.previousCategory && this.props.connectionsMode === \"TextList\") || previousMode) {\n      // In a text list, back to Previous Category\n      const prev = previousMode ? previousMode.splitCamelCase() : this.props.previousCategory;\n      const prevHe = previousMode ? Sefaria._(prev) : Sefaria._(this.props.previousCategory);\n      const url = Sefaria.util.replaceUrlParam(\"with\", prev);\n      title = <a href={url} className=\"connectionsHeaderTitle sans-serif active\" onClick={this.onClick}>\n                    <InterfaceText>\n                        <EnglishText>\n                            <i className=\"fa fa-chevron-left\"></i>\n                            {this.props.multiPanel ? prev : null }\n                        </EnglishText>\n                        <HebrewText>\n                            <i className=\"fa fa-chevron-right\"></i>\n                            {this.props.multiPanel ? prevHe : null }\n                        </HebrewText>\n                    </InterfaceText>\n                  </a>;\n    } else {\n      // Anywhere else, back to Top Level\n      const url = Sefaria.util.replaceUrlParam(\"with\", \"all\");\n      const onClick = function(e) {\n        e.preventDefault();\n        this.props.setConnectionsMode(\"Resources\");\n      }.bind(this);\n      title = <a href={url} className=\"connectionsHeaderTitle sans-serif active\" onClick={onClick}>\n                    <InterfaceText>\n                        <EnglishText>\n                            <i className=\"fa fa-chevron-left\"></i>\n                            Resources\n                        </EnglishText>\n                        <HebrewText>\n                            <i className=\"fa fa-chevron-right\"></i>\n                            קישורים וכלים\n                        </HebrewText>\n                    </InterfaceText>\n                  </a>;\n    }\n    if (this.props.multiPanel) {\n      const toggleLang = Sefaria.util.getUrlVars()[\"lang2\"] === \"en\" ? \"he\" : \"en\";\n      const langUrl = Sefaria.util.replaceUrlParam(\"lang2\", toggleLang);\n      const closeUrl = Sefaria.util.removeUrlParam(\"with\");\n      return (<div className=\"connectionsPanelHeader\">\n                {title}\n                <div className=\"rightButtons\">\n                  {Sefaria.interfaceLang !== \"hebrew\" && Sefaria._siteSettings.TORAH_SPECIFIC ?\n                    <LanguageToggleButton toggleLanguage={this.props.toggleLanguage} url={langUrl} />\n                    : null }\n                  <CloseButton icon=\"circledX\" onClick={this.props.closePanel} url={closeUrl} />\n                </div>\n              </div>);\n    } else {\n      const style = !this.props.multiPanel && this.props.connectionsMode === \"TextList\" ? {\"borderTopColor\": Sefaria.palette.categoryColor(this.props.previousCategory)} : {}\n      const cStyle = !this.props.multiPanel && this.props.connectionsMode === \"Resources\" ? {\"justifyContent\": \"center\"} : style;\n      // Modeling the class structure when ConnectionsPanelHeader is created inside ReaderControls in the multiPanel case\n      let classes = classNames({readerControls: 1, connectionsHeader: 1, fullPanel: this.props.multiPanel});\n      return (<div className={classes} style={style}>\n                <div className=\"readerControlsInner\">\n                  <div className=\"readerTextToc\">\n                    <div className=\"connectionsPanelHeader\" style={cStyle}>\n                      {title}\n                      {!this.props.multiPanel && this.props.previousCategory && this.props.connectionsMode === \"TextList\" ?\n                      <RecentFilterSet\n                        srefs={this.props.baseRefs}\n                        asHeader={true}\n                        filter={this.props.filter}\n                        recentFilters={this.props.recentFilters}\n                        textCategory={this.props.previousCategory}\n                        setFilter={this.props.setFilter} />\n                        : null }\n                    </div>\n                  </div>\n                </div>\n        </div>);\n    }\n  }\n}\nConnectionsPanelHeader.propTypes = {\n    connectionsMode:        PropTypes.string.isRequired, // \"Resources\", \"ConnectionsList\", \"TextList\" etc\n    previousCategory:       PropTypes.string,\n    multiPanel:             PropTypes.bool,\n    filter:                 PropTypes.array,\n    recentFilters:          PropTypes.array,\n    baseRefs:               PropTypes.array,\n    setFilter:              PropTypes.func,\n    setConnectionsMode:     PropTypes.func.isRequired,\n    setConnectionsCategory: PropTypes.func.isRequired,\n    closePanel:             PropTypes.func.isRequired,\n    toggleLanguage:         PropTypes.func,\n    interfaceLang:          PropTypes.string.isRequired\n};\n\n\nexport default ConnectionsPanelHeader;\n","import {\n  LoadingMessage,\n  LoginPrompt,\n} from './Misc';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport $ from './sefaria/sefariaJquery';\nimport Sefaria from './sefaria/sefaria';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Component from 'react-class';\nimport sanitizeHtml  from 'sanitize-html';\n\n\nclass AddToSourceSheetBox extends Component {\n  // In the main app, the function `addToSourceSheet` is executed in the ReaderApp,\n  // and collects the needed data from highlights and app state.\n  // It is used in external apps, liked gardens.  In those cases, it's wrapped in AddToSourceSheetWindow,\n  // refs and text are passed directly, and the add to source sheets API is invoked from within this object.\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      sheetsLoaded: false,\n      selectedSheet: null,\n      sheetListOpen: false,\n      showConfirm: false,\n      showLogin: false,\n    };\n  }\n  componentDidMount() {\n    this.loadSheets();\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (!prevProps.srefs.compare(this.props.srefs) || prevProps.nodeRef !=this.props.nodeRef) {\n      this.setState({showConfirm: false});\n    }\n  }\n  loadSheets() {\n    if (!Sefaria._uid) {\n      this.onSheetsLoad();\n    } else {\n      Sefaria.sheets.userSheets(Sefaria._uid, this.onSheetsLoad);\n    }\n  }\n  onSheetsLoad() {\n    this.setDefaultSheet();\n    this.setState({sheetsLoaded: true});\n  }\n  setDefaultSheet() {\n    if (this.state.selectedSheet) { return; }\n    if (!Sefaria._uid) {\n        this.setState({selectedSheet: {title: \"Your Sheet\"}});\n    } else {\n      var sheets = Sefaria.sheets.userSheets(Sefaria._uid);\n      if (!sheets.length) {\n        this.setState({selectedSheet: {title: \"Create a New Sheet\"}});\n      } else {\n        this.setState({selectedSheet: sheets[0]});\n      }\n    }\n  }\n  toggleSheetList() {\n    if (!Sefaria._uid) {\n      this.props.toggleSignUpModal()\n    } else {\n      this.setState({sheetListOpen: !this.state.sheetListOpen});\n    }\n  }\n  selectSheet(sheet) {\n    this.setState({selectedSheet: sheet, sheetListOpen: false});\n  }\n  copyNodeToSourceSheet() {\n    if (!Sefaria._uid) { this.props.toggleSignUpModal() }\n    if (!this.state.selectedSheet || !this.state.selectedSheet.id) { return; }\n    if (!this.props.nodeRef) {\n      this.props.addToSourceSheet(this.state.selectedSheet.id, this.confirmAdd);\n    } else {\n      const url     = \"/api/sheets/\" + this.state.selectedSheet.id + \"/copy_source\";\n      $.post(url, {\n          sheetID: this.props.nodeRef.split(\".\")[0],\n          nodeID:this.props.nodeRef.split(\".\")[1]\n      }, this.confirmAdd);\n    }\n  }\n  addToSourceSheet() {\n    if (!Sefaria._uid) { this.props.toggleSignUpModal() }\n    if (!this.state.selectedSheet || !this.state.selectedSheet.id) { return; }\n      const url     = \"/api/sheets/\" + this.state.selectedSheet.id + \"/add\";\n      const language = this.props.contentLanguage;\n      let source = {};\n      if(this.props.en || this.props.he){ // legacy code to support a call to this component in Gardens.\n        if(this.props.srefs){ //we are saving a ref + ref's text, generally all fields should be present.\n          source.refs = this.props.srefs;\n          source.en = this.props.en;\n          source.he = this.props.he;\n        }else{ // an outside free text is being passed in. theoretically supports any interface that passes this in. In practice only legacy Gardens code.\n          if (this.props.en && this.props.he) {\n            source.outsideBiText = {he: this.props.he, en: this.props.en};\n          } else {\n            source.outsideText = this.props.en || this.props.he;\n          }\n        }\n      } else if (this.props.srefs) { //regular use - this is currently the case when the component is loaded in the sidepanel or in the modal component via profiles and notes pages\n        source.refs = this.props.srefs;\n        const { en, he } = this.props.currVersions ? this.props.currVersions : {\"en\": null, \"he\": null}; //the text we are adding may be non-default version\n        if (he) { source[\"version-he\"] = he; }\n        if (en) { source[\"version-en\"] = en; }\n\n        // If something is highlighted and main panel language is not bilingual:\n        // Use passed in language to determine which version this highlight covers.\n        var selectedWords = this.props.selectedWords; //if there was highlighted single panel\n        if (selectedWords && language != \"bilingual\") {\n          source[language.slice(0,2)] = selectedWords;\n        }\n      }\n      if (this.checkContentForImages(source.refs)) {\n        let postData = {source: JSON.stringify(source)};\n        if (this.props.note) {\n          postData.note = this.props.note;\n        }\n        $.post(url, postData, this.confirmAdd);\n      }\n  }\n  checkContentForImages(refs) {\n    // validate texts corresponding to refs have no images before posting them to sheet\n    for (let i = 0; i < refs.length; i++) {\n      let ref = Sefaria.getRefFromCache(refs[i]);\n      if (ref && (Sefaria.isFullSegmentImage(ref.he) || Sefaria.isFullSegmentImage(ref.text))) {\n        alert(\"We do not currently support adding images to source sheets.\");\n        return false;\n      }\n    }\n    return true;\n  }\n  createSheet(refs) {\n    const title = $(ReactDOM.findDOMNode(this)).find(\"input\").val();\n    if (!title) { return; }\n    const sheet = {\n      title: title,\n      options: {numbered: 0},\n      sources: []\n    };\n    let postJSON = JSON.stringify(sheet);\n    $.post(\"/api/sheets/\", {\"json\": postJSON}, function(data) {\n      Sefaria.sheets.updateUserSheets(data, Sefaria._uid, false);\n      this.selectSheet(data);\n    }.bind(this));\n  }\n  confirmAdd() {\n    if (this.props.srefs) {\n      Sefaria.track.event(\"Tools\", \"Add to Source Sheet Save\", this.props.srefs.join(\"/\"));\n    } else {\n      Sefaria.track.event(\"Tools\", \"Add to Source Sheet Save\", \"Outside Source\");\n    }\n    Sefaria.sheets.updateUserSheets(this.state.selectedSheet, Sefaria._uid, true);\n    this.setState({showConfirm: true});\n    const channel = new BroadcastChannel('refresh-editor');\n    channel.postMessage(\"refresh\");\n  }\n  makeTitleRef(){\n    const refTitles = (this.props.srefs.length > 0 && (!this.props.srefs[0].startsWith(\"Sheet\"))) ? {\n      \"en\" : Sefaria.joinRefList(this.props.srefs, \"en\"),\n      \"he\" : Sefaria.joinRefList(this.props.srefs, \"he\"),\n    } : null;\n    if(this.props.nodeRef){ //this whole if clause is ust to make sure that when a sheet is in the main panel, a human readable citation regarding the sheet is shown in the sheet box.\n      const sheetID = parseInt(this.props.nodeRef.split(\".\")[0]);\n      const nodeID = this.props.nodeRef.split(\".\")[1];\n      const sheet = Sefaria.sheets.loadSheetByID(sheetID);\n      const sheetTitle = sanitizeHtml(sheet.title, {\n        allowedTags: [],\n        disallowedTagsMode: 'discard',\n      });\n      let titleRetval = {\n        \"en\": `${sheetTitle}, Section #${nodeID}`,\n        \"he\": `${sheetTitle}, סעיף ${nodeID}`\n      }\n      if (refTitles){ //show the refs also of a source, just to be nice\n        titleRetval[\"en\"] += `(${refTitles[\"en\"]})`;\n        titleRetval[\"he\"] += `(${refTitles[\"he\"]})`;\n      }\n      return titleRetval;\n    }else{\n      return refTitles;\n    }\n  }\n  render() {\n    if (this.state.showConfirm) {\n      return (<ConfirmAddToSheet sheet={this.state.selectedSheet} srefs={this.props.srefs} nodeRef={this.props.nodeRef}/>);\n    } else if (this.state.showLogin) {\n      return (<div className=\"addToSourceSheetBox sans-serif\">\n                <LoginPrompt />\n              </div>);\n    }\n    const titleRef = this.makeTitleRef();\n    const sheets     = Sefaria._uid ? Sefaria.sheets.userSheets(Sefaria._uid) : null;\n    let sheetsList = Sefaria._uid && sheets ? sheets.map((sheet) => {\n      let classes     = classNames({dropdownOption: 1, noselect: 1, selected: this.state.selectedSheet && this.state.selectedSheet.id == sheet.id});\n      let title = sheet.title ? sheet.title.stripHtml() : Sefaria._(\"Untitled Source Sheet\");\n      let selectSheet = this.selectSheet.bind(this, sheet);\n      return (<div className={classes} onClick={selectSheet} key={sheet.id}>{title}</div>);\n    }) : (Sefaria._uid ? <LoadingMessage /> : null);\n\n    // Uses\n    return (\n      <div className=\"addToSourceSheetBox noselect\">\n        <div className=\"addToSourceSheetBoxTitle sans-serif\">\n          <span className=\"int-en\">Selected Citation</span>\n          <span className=\"int-he\">מקור להוספה</span>\n        </div>\n        <div className=\"selectedRef\">\n          <span className=\"en\">{titleRef[\"en\"]}</span>\n          <span className=\"he\">{titleRef[\"he\"]}</span>\n        </div>\n        <div className=\"addToSourceSheetBoxTitle sans-serif\">\n          <span className=\"int-en\">Add to</span>\n          <span className=\"int-he\">יעד להוספה</span>\n        </div>\n        <div className=\"dropdown\">\n          <div className={`dropdownMain noselect ${this.state.sheetListOpen ? \"open\" : \"\"}`} onClick={this.toggleSheetList}>\n            {this.state.sheetsLoaded ? (this.state.selectedSheet.title === null ? Sefaria._(\"Untitled Source Sheet\") : this.state.selectedSheet.title.stripHtml()) : <LoadingMessage messsage=\"Loading your sheets...\" heMessage=\"טוען את דפי המקורות שלך\"/>}          </div>\n          {this.state.sheetListOpen ?\n          <div className=\"dropdownListBox noselect\">\n            <div className=\"dropdownList noselect\">\n              {sheetsList}\n            </div>\n            <div className=\"newSheet noselect\">\n              <input className=\"newSheetInput noselect\" placeholder={Sefaria._(\"Name New Sheet\")}/>\n              <div className=\"button small noselect\" onClick={this.createSheet} >\n                <span className=\"int-en\">Create</span>\n                <span className=\"int-he\">יצירה</span>\n              </div>\n             </div>\n          </div>\n          : null}\n        </div>\n        <div className=\"button noselect fillWidth\" onClick={this.props.nodeRef ? this.copyNodeToSourceSheet : this.addToSourceSheet}>\n          <span className=\"int-en noselect\">Add to Sheet</span>\n          <span className=\"int-he noselect\">הוספה לדף המקורות</span>\n        </div>\n      </div>);\n  }\n}\nAddToSourceSheetBox.propTypes = {\n  srefs:              PropTypes.array,\n  fullPanel:          PropTypes.bool,\n  en:                 PropTypes.string,\n  he:                 PropTypes.string,\n  note:               PropTypes.string\n};\n\n\nclass ConfirmAddToSheet extends Component {\n  render() {\n    let sref = null;\n    let srefTitles = {};\n    if(!this.props.nodeRef){\n      sref = `/${Sefaria.normRefList(this.props.srefs)}`;\n      srefTitles = {\n        \"en\": Sefaria.joinRefList(this.props.srefs, \"en\"),\n        \"he\": Sefaria.joinRefList(this.props.srefs, \"he\"),\n      };\n    }else{\n      sref = `/sheets/${this.props.nodeRef}`;\n      let sheetTitle = sanitizeHtml(Sefaria.sheets.loadSheetByID(this.props.nodeRef.split(\".\")[0]).title, {\n        allowedTags: [],\n        disallowedTagsMode: 'discard',\n      });\n      srefTitles = {\n        \"en\": `Section from \"${sheetTitle}\"`,\n        \"he\": `הקטע מתוך  \"${sheetTitle}\"`,\n      };\n    }\n    return (<div className=\"confirmAddToSheet addToSourceSheetBox\">\n              <div className=\"message\">\n                <span className=\"int-en\">\n                  <a href={sref}>{srefTitles[\"en\"]}</a>\n                  &nbsp;has been added to&nbsp;\n                   <a href={\"/sheets/\" + this.props.sheet.id} target=\"_blank\">{this.props.sheet.title}</a>.\n                </span>\n                <span className=\"int-he\">\n                  <a href={sref}>{srefTitles[\"he\"]}</a>\n                   &nbsp;נוסף בהצלחה לדף המקורות&nbsp;\n                  <a href={\"/sheets/\" + this.props.sheet.id} target=\"_blank\">{this.props.sheet.title}</a>.\n                </span>\n              </div>\n            </div>);\n  }\n}\nConfirmAddToSheet.propTypes = {\n  srefs: PropTypes.array,\n  nodeRef: PropTypes.string,\n  sheet: PropTypes.object.isRequired\n};\n\n\nclass AddToSourceSheetWindow extends Component {\n  close () {\n    if (this.props.close) {\n      this.props.close();\n    }\n  }\n  render () {\n    var nextParam = \"?next=\" + encodeURIComponent(Sefaria.util.currentPath());\n\n    return (<div className=\"addToSourceSheetModal\">\n      <div className=\"sourceSheetBoxTitle\">\n        <img src=\"/static/icons/circled-x.svg\" className=\"closeButton\" aria-hidden=\"true\" alt=\"Close\" onClick={this.close}/>\n        {Sefaria._uid ? null : <span>\n            In order to add this source to a sheet, please <a href={\"/login\" + nextParam}>log in.</a>\n        </span>}\n        <div className=\"clearFix\"></div>\n      </div>\n      {Sefaria._uid ?\n        <AddToSourceSheetBox\n          srefs = {this.props.srefs}\n          en = {this.props.en}\n          he = {this.props.he}\n          note = {this.props.note}\n        /> : null }\n      </div>);\n  }\n}\nAddToSourceSheetWindow.propTypes = {\n  srefs:        PropTypes.array,\n  close:        PropTypes.func,\n  en:           PropTypes.string,\n  he:           PropTypes.string,\n  note:         PropTypes.string,\n};\n\nexport {\n  AddToSourceSheetBox,\n  AddToSourceSheetWindow,\n};\nSefaria.AddToSourceSheetWindow = AddToSourceSheetWindow;","import {\n  InterfaceText,\n  LoadingMessage,\n  ToolTipped,\n} from './Misc';\nimport React  from 'react';\nimport Sefaria  from './sefaria/sefaria';\nimport DictionarySearch  from './DictionarySearch';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport Component      from 'react-class';\n\n\nclass LexiconBox extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      searchedWord: null,   // This is used only to counteract the influence of a ref, currently, but should really be show in the search box after search, and bubble up to state.\n      entries: [],\n      loaded: false\n    };\n  }\n  componentDidMount() {\n    if (this.props.selectedNamedEntity) {\n      this.getNamedEntity(this.props.selectedNamedEntity);\n    } else if (this.props.selectedWords){\n      this.getLookups(this.props.selectedWords, this.props.oref);\n    } \n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (this.props.selectedWords && this.props.selectedWords !== prevProps.selectedWords) {\n      this.clearLookups();\n      this.props.clearNamedEntity();\n      this.getLookups(this.props.selectedWords, this.props.oref);\n    } else if (this.props.selectedNamedEntity && this.props.selectedNamedEntity !== prevProps.selectedNamedEntity) {\n      this.clearLookups();\n      this.props.clearSelectedWords();\n      this.getNamedEntity(this.props.selectedNamedEntity);\n    }\n  }\n  clearLookups() {\n    this.setState({\n      searchedWord: null,\n      namedEntity: null,\n      loaded: false,\n      entries: []\n    });\n  }\n  searchWord(word) {\n    this.clearLookups();\n    this.props.clearNamedEntity();\n    this.setState({searchedWord: word});\n    this.getLookups(word);\n  }\n  getLookups(words, oref) {\n    if(this.shouldActivate(words)) {\n      let ref = oref ? oref.ref : undefined;\n      // console.log('getting data: ', words, oref.ref);\n      Sefaria.getLexiconWords(words, ref).then(data => {\n        this.setState({\n          loaded: true,\n          entries: data\n        });\n\n        let action = (data.length === 0)? \"Open No Result\": \"Open\";\n        action += oref ? \" / \" + oref.categories.join(\"/\") + \"/\" + oref.book : \"\";\n        Sefaria.track.event(\"Lexicon\", action, words);\n\n        // console.log('gotten data from Sefaria.js, state re-set: ', this, data);\n      });\n    }\n  }\n\n  getNamedEntity(slug) {\n    Sefaria.getTopic(slug, {annotated: false}).then(data => {\n      this.setState({\n        loaded: true,\n        namedEntity: data,\n      });\n    })\n  }\n\n  shouldActivate(selectedWords){\n    if (this.state.searchedWord) {\n      return true;\n    }\n    if(selectedWords && selectedWords.match(/[\\s:\\u0590-\\u05ff.]+/)) {\n      const wordList = selectedWords.split(/[\\s:\\u05c3\\u05be\\u05c0.]+/);\n      const inputLength = wordList.length;\n      return (inputLength <= 3);\n    } else {\n        return null;\n    }\n  }\n  render() {\n  /*\n    if (!this.props.selectedWords) {\n      return (\n        <div className=\"lexicon-instructions\">\n          <span className=\"int-en\">Highlight words to look up definitions.</span>\n          <span className=\"int-he\">סמן מילים כדי לחפש הגדרות</span>\n        </div>);\n    }\n  */\n\n    const refCats = (this.props.oref && (!this.state.searchedWord)) ? this.props.oref.categories.join(\", \") : null; //TODO: the way to filter by categories is very limiting.\n    const enEmpty = 'No definitions found for \"' + this.props.selectedWords + '\".';\n    const heEmpty = 'לא נמצאו תוצאות \"' + this.props.selectedWords + '\".';\n    let content = \"\";\n    if (!!this.props.selectedNamedEntity) {\n      if (!this.state.loaded || !this.state.namedEntity) {\n        // not sure why I also need to check for this.state.namedEntity but I've seen situations where loaded is true and namedEntity is null\n        content = (<LoadingMessage message=\"Looking up words...\" heMessage=\"מחפש מילים...\"/>);\n      } else {\n          // TODO. remove hard-coding\n          let dataSourceText = \"\";\n          if (this.props.srefs[0].indexOf(\"Jerusalem Talmud\") !== -1) {\n            dataSourceText = `${Sefaria._('This topic is connected to ')}\"${Sefaria._r(this.props.srefs[0])}\" ${Sefaria._('by')} ${Sefaria._('Sefaria')}.`;\n          } else {\n            dataSourceText = `${Sefaria._('This topic is connected to ')}\"${Sefaria._r(this.props.srefs[0])}\" ${Sefaria._('based on')} ${Sefaria._('research of Dr. Michael Sperling')}.`;\n          }\n          \n          const neArray = this.state.namedEntity.possibilities || [this.state.namedEntity]; \n          const namedEntityContent = neArray.map(ne => (<div key={ne.slug} className=\"named-entity-wrapper\">\n            <div className=\"named-entity-title-bar\">\n              <a className=\"contentText topicLexiconTitle\" href={`/topics/${ne.slug}`} target=\"_blank\">\n                <span className=\"en\">{ne.primaryTitle.en}</span>\n                <span className=\"he\">{ne.primaryTitle.he}</span>\n              </a>\n              <ToolTipped altText={dataSourceText} classes={\"saveButton tooltip-toggle three-dots-button\"}>\n                <img src=\"/static/img/three-dots.svg\" alt={dataSourceText}/>\n              </ToolTipped>\n            </div>\n            {\n              ne.timePeriod ? (\n                <div className=\"named-entity-time-period\">\n                  <div className=\"smallText\">\n                    <span className=\"int-en\">{ne.timePeriod.name.en}</span>\n                    <span className=\"int-he\">{ne.timePeriod.name.he}</span>\n                  </div>\n                  <div className=\"smallText\">\n                    <span className=\"int-en\">{ne.timePeriod.yearRange.en}</span>\n                    <span className=\"int-he\">{ne.timePeriod.yearRange.he}</span>\n                  </div>\n                </div>\n              ) : null\n            }\n            <div className=\"contentText named-entity-description\">\n              <InterfaceText markdown={{en: ne.description ? ne.description.en : `No description known for '${ne.primaryTitle.en}'`,\n                                        he: ne.description ? ne.description.he : `לא קיים מידע עבור '${ne.primaryTitle.he}'`}} />\n            </div>\n          </div>));\n          content = (!!this.state.namedEntity.possibilities ? (\n            <div>\n              <div className=\"named-entity-ambiguous\">\n                <i className=\"systemText\">\n                  <span className=\"int-en\">{`\"${this.props.selectedNamedEntityText}\" could refer to one of the following rabbis:`}</span>\n                  <span className=\"int-he\">{`ייתכן ש-\"${this.props.selectedNamedEntityText}\" מתייחס לאחד הרבנים הבאים:`}</span>\n                </i>\n              </div>\n              { namedEntityContent }\n            </div>\n          ) : namedEntityContent);\n      }\n    } else if(this.shouldActivate(this.props.selectedWords)) {\n      if(!this.state.loaded) {\n          // console.log(\"lexicon not yet loaded\");\n          content = (<LoadingMessage message=\"Looking up words...\" heMessage=\"מחפש מילים...\"/>);\n      } else if(this.state.entries.length === 0) {\n          if (this.props.selectedWords.length > 0) {\n            content = (<LoadingMessage message={enEmpty} heMessage={heEmpty}/>);\n          }\n      } else {\n          let entries = this.state.entries;\n          content =  entries.filter(e => (!refCats) || e['parent_lexicon_details']['text_categories'].length === 0 || e['parent_lexicon_details']['text_categories'].indexOf(refCats) > -1).map(function(entry, i) {\n                return (<LexiconEntry\n                    data={entry}\n                    onEntryClick={this.props.onEntryClick}\n                    onCitationClick={this.props.onCitationClick}\n                    key={i} />)\n              }.bind(this));\n          content = content.length ? content : <LoadingMessage message={enEmpty} heMessage={heEmpty} />;\n      }\n    }\n\n    return (\n        <div className=\"lexicon-content\">\n         <DictionarySearch\n              interfaceLang={this.props.interfaceLang}\n              showWordList={this.searchWord}\n              contextSelector=\".lexicon-content\"/>\n          <div className=\"lexicon-results\">\n            { content }\n          </div>\n        </div>\n      );\n  }\n}\nLexiconBox.propTypes = {\n  interfaceLang:    PropTypes.string.isRequired,\n  selectedWords: PropTypes.string,\n  oref:          PropTypes.object,\n  srefs:         PropTypes.array,\n  onEntryClick:  PropTypes.func,\n  onCitationClick: PropTypes.func\n};\n\n\nclass LexiconEntry extends Component {\n  isBDB(entry) {\n    return RegExp(/^BDB.*?Dict/).test(entry['parent_lexicon']);\n  }\n  defaultHeadwordString(entry) {\n    let headwords = [entry['headword']];\n    if ('alt_headwords' in entry) {\n      headwords = headwords.concat(entry['alt_headwords']);\n    }\n    return headwords\n          .map((e,i) => <span className=\"headword\" key={i} dir=\"rtl\">{e}</span>)\n          .reduce((prev, curr) => [prev, ', ', curr]);\n  }\n  bdbHeadwordString(entry) {\n    const peculiar = entry.peculiar ? '‡ ' : '';\n    const allCited = entry.all_cited ? '† ' : '';\n    const ordinal = entry.ordinal ? `${entry[\"ordinal\"]} ` : '';\n    const hw = (<span dir=\"rtl\">{entry['headword'].replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]*$/, '')}</span>);\n    const occurrences = entry.occurrence ? (<sub>{entry['occurrences']}</sub>) : '';\n    const alts = entry.alt_headwords ? entry['alt_headwords']\n        .map(alt => {\n            const ahw = <span dir=\"rtl\">{alt['word']}</span>;\n            const aocc = ('occurrences' in alt) ? <sub>{alt['occurrences']}</sub> : '';\n          return <span>, {ahw}{aocc}</span>\n        })\n        .reduce((prev, curr) => [prev, curr]) : '';\n    const allHeadwords = entry.headword_suffix ? <span>[{hw}<span className=\"headword-suffix\" dangerouslySetInnerHTML={ {__html: entry['headword_suffix']}} />]{occurrences}</span>:\n        (entry['brackets'] == 'all') ? <span>[{hw}{occurrences}{alts}]</span> :\n        (entry['brackets'] == 'first_word') ? <span>[{hw}{occurrences}]{alts}</span> :\n            <span>{hw}{occurrences}{alts}</span>;\n    return (<span className=\"headword\">{peculiar}{allCited}{ordinal}<span className=\"headword\">{allHeadwords}</span></span>);\n  }\n  renderLexiconEntrySenses(content) {\n    var grammar     = ('grammar' in content) ? '('+ content['grammar']['verbal_stem'] + ')' : \"\";\n    var def         = ('definition' in content) ? (<span className=\"def\"  dangerouslySetInnerHTML={ {__html: content['definition']}}></span>) : \"\";\n    var alternative = ('alternative' in content) ? (<span className=\"alternative\"  dangerouslySetInnerHTML={ {__html: content['alternative']}}></span>) : \"\";\n    var notes       = ('notes' in content) ? (<span className=\"notes\" dangerouslySetInnerHTML={ {__html: content['notes']}}></span>) : \"\";\n    var sensesElems = ('senses' in content) ? content['senses'].map((sense, i) => {\n      return <div key={i}>{this.renderLexiconEntrySenses(sense)}</div>;\n    }) : \"\";\n    var senses = sensesElems.length ? (<ol className=\"senses\">{sensesElems}</ol>) : \"\";\n    return (\n      <li className=\"sense\">\n        {grammar}\n        {def}\n        {alternative}\n        {notes}\n        {senses}\n      </li>\n    );\n  }\n  renderBDBEntrySenses(content) {\n    const note = content.note ? <em>Note.</em> : '';\n    const preNun = content.pre_num || '';\n    const allCited = content.all_cited ? '†' : '';\n    const num = content.num || '';\n    const form = content.form || '';\n    const occurrences = content.occurrences || '';\n    const def = content.definition || '';\n    if (content.definition) {\n      const text = `${note} ${preNun} ${allCited}<b>${num}${form}</b><sub>${occurrences}</sub> ${def}`;\n      return (\n      <span className=\"def\"  dangerouslySetInnerHTML={ {__html: text}}></span>);\n    }\n    const pre = `${note} ${preNun} ${allCited}`\n    const sensesElems = content.senses ? content.senses.map((sense, i) => {\n      return <div>{i==0 && pre}{i==0 && <b>{num}{form}</b>}{i==0 && <sub>{occurrences}</sub>}{this.renderBDBEntrySenses(sense)}</div>;\n    }) : \"\";\n    const senses = sensesElems.length ? (<div>{sensesElems}</div>) : \"\";\n    return (<div>{senses}</div>);\n  }\n  getRef() {\n    var ind = this.props.data.parent_lexicon_details.index_title;\n    return ind ? `${ind}, ${this.props.data.headword}`: \"\";\n\n  }\n  handleClick(event) {\n    if ($(event.target).hasClass(\"refLink\")) {\n        //Click of citation\n        event.preventDefault();\n        let ref = Sefaria.humanRef($(event.target).attr(\"data-ref\"));\n        this.props.onCitationClick(ref, this.props.sref);\n        event.stopPropagation();\n        Sefaria.track.event(\"Reader\", \"Citation Link Click\", ref);\n    } else if (this.props.onEntryClick) {\n      //Click on the body of the TextRange itself from TextList\n      this.props.onEntryClick(this.getRef());\n      Sefaria.track.event(\"Reader\", \"Click Dictionary Entry from Lookup\", this.getRef());\n    }\n  }\n  handleKeyPress(event) {\n    if (event.charCode == 13) {\n      this.handleClick(event);\n    }\n  }\n  renderLexiconAttribution () {\n    var entry = this.props.data;\n    var lexicon_dtls = entry['parent_lexicon_details'];\n\n    var sourceContent = <div>\n      <span className=\"int-en\">Source: </span>\n      <span className=\"int-he\">מקור: </span>\n      {'source' in lexicon_dtls ? lexicon_dtls['source'] : lexicon_dtls['source_url']}\n    </div>;\n\n    var attributionContent = <div>\n      <span className=\"int-en\">Creator: </span>\n      <span className=\"int-he\">יוצר: </span>\n      {'attribution' in lexicon_dtls ? lexicon_dtls['attribution'] : lexicon_dtls['attribution_url']}\n    </div>;\n\n    return (\n        <div>\n          {('source_url' in lexicon_dtls) ?\n            <a target=\"_blank\" href={ lexicon_dtls['source_url'] }>{sourceContent}</a> :\n            sourceContent}\n          {('attribution_url' in lexicon_dtls) ?\n            <a target=\"_blank\" href={ lexicon_dtls['attribution_url'] }>{attributionContent}</a> :\n            attributionContent}\n        </div>\n    );\n  }\n  render() {\n    var entry = this.props.data;\n    var headwordClassNames = classNames('headword', entry['parent_lexicon_details'][\"to_language\"].slice(0,2));\n    var definitionClassNames = classNames('definition-content', entry['parent_lexicon_details'][\"to_language\"].slice(0,2));\n\n    var headwordString = this.isBDB(entry) ? this.bdbHeadwordString(entry) : this.defaultHeadwordString(entry)\n\n    var morphologyHtml = ('morphology' in entry['content']) ?  (<span className=\"morphology\">&nbsp;({entry['content']['morphology']})</span>) :\"\";\n\n    var langHtml = \"\";\n    if ('language_code' in entry || 'language_reference' in entry) {\n      langHtml = (<span className=\"lang-ref\">&nbsp;\n        {('language_code' in entry) ? entry['language_code'] : \"\"}\n        {('language_reference' in entry) ? <span className=\"language_reference\" dangerouslySetInnerHTML={ {__html: entry['language_reference']}}></span> : \"\"}\n      </span>);\n    }\n\n    var entryHeadHtml = (<span className=\"headline\" dir=\"ltr\">\n      {headwordString}\n      {morphologyHtml}\n      {langHtml}\n      </span>);\n\n    var endnotes = ('notes' in entry) ? <span className=\"notes\" dangerouslySetInnerHTML={ {__html: entry['notes']}}></span> : \"\";\n    var derivatives = ('derivatives' in entry) ? <span className=\"derivatives\" dangerouslySetInnerHTML={ {__html: entry['derivatives']}}></span> : \"\";\n\n    var senses = this.isBDB(entry) ?  this.renderBDBEntrySenses(entry['content'])\n        : this.renderLexiconEntrySenses(entry['content']);\n    var attribution = this.renderLexiconAttribution();\n    return (\n        <div className=\"entry\" onClick={this.handleClick} onKeyPress={this.handleKeyPress} data-ref={this.getRef()}>\n          <div className={headwordClassNames}>{entryHeadHtml}</div>\n          <div className={definitionClassNames}><ol className=\"definition\">{senses}{endnotes}{derivatives}</ol></div>\n          <div className=\"attribution\">{attribution}</div>\n        </div>\n    );\n  }\n}\nLexiconEntry.propTypes = {\n  data: PropTypes.object.isRequired,\n  onEntryClick:  PropTypes.func,\n  onCitationClick: PropTypes.func\n};\n\n\nexport default LexiconBox;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Sefaria from './sefaria/sefaria';\nimport VersionBlock, {VersionsBlocksList} from './VersionBlock/VersionBlock';\nimport Component             from 'react-class';\nimport {InterfaceText} from \"./Misc\";\nimport {ContentText} from \"./ContentText\";\nimport { Modules } from './NavSidebar';\n\n\nclass AboutBox extends Component {\n  constructor(props) {\n    super(props);\n    this._includeOtherVersionsLangs = [\"he\"];\n    this.state = {\n      versionLangMap: null,\n      currentVersionsByActualLangs: Sefaria.transformVersionObjectsToByActualLanguageKeys(this.props.currObjectVersions),\n      details: Sefaria.getIndexDetailsFromCache(props.title),\n    }\n  }\n  setTextMetaData() {\n    if (this.props.title == \"Sheet\") {\n      const sheetID = (Sefaria.sheets.extractIdFromSheetRef(this.props.srefs));\n      if (!Sefaria.sheets.loadSheetByID(sheetID)) {\n          Sefaria.sheets.loadSheetByID(sheetID, function (data) {\n              this.setState({ details: data });\n          }.bind(this));\n      }\n      else {\n          this.setState({\n            details: Sefaria.sheets.loadSheetByID(sheetID),\n          });\n      }\n    }else {\n      Sefaria.getIndexDetails(this.props.title).then(data => {\n        this.setState({details: data});\n      });\n    }\n  }\n  componentDidMount() {\n      this.setTextMetaData();\n      Sefaria.getSourceVersions(this.props.sectionRef).then(this.onVersionsLoad);\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (prevProps.title !== this.props.title || prevProps.masterPanelLanguage != this.props.masterPanelLanguage) {\n      this.setState({details: null});\n      this.setTextMetaData();\n      Sefaria.getSourceVersions(this.props.sectionRef).then(this.onVersionsLoad);\n    }\n  }\n  onVersionsLoad(versions) {\n    //rearrange the current selected versions to be mapped by their real language,\n    // then sort the current version to the top of its language list\n    let versionsByLang = versions;\n    let currentVersionsByActualLangs = Sefaria.transformVersionObjectsToByActualLanguageKeys(this.props.currObjectVersions);\n    for(let [lang,ver] of Object.entries(currentVersionsByActualLangs)){\n      if (this._includeOtherVersionsLangs.includes(lang)){ //remove current version if its \"he\"\n        versionsByLang[lang] = versionsByLang[lang].filter((v) => v.versionTitle != ver.versionTitle);\n      }\n    }\n    this.setState({versionLangMap: versionsByLang, currentVersionsByActualLangs:currentVersionsByActualLangs});\n  }\n  openVersionInSidebar(versionTitle, versionLanguage) {\n    this.props.setConnectionsMode(\"Translation Open\", {previousMode: \"About\"});\n    this.props.setFilter(Sefaria.getTranslateVersionsKey(versionTitle, versionLanguage));\n  }\n  isSheet(){\n    return this.props.srefs[0].startsWith(\"Sheet\");\n  }\n  render() {\n    const d = this.state.details;\n    let detailsSection = null;\n    if (this.isSheet()) {\n      if (d) {\n          detailSection = (<div className=\"detailsSection\">\n                  <h2 className=\"aboutHeader\">\n                      <span className=\"int-en\">About This Text</span>\n                      <span className=\"int-he\">אודות ספר זה</span>\n                  </h2>\n                  <div className=\"aboutTitle\">\n                      {d.title.stripHtml()}\n                  </div>\n                  <div className=\"aboutSubtitle\">\n                      By: <a href={d.ownerProfileUrl}>{d.ownerName}</a>\n                  </div>\n                  <div className=\"aboutDesc\">\n                      <span dangerouslySetInnerHTML={ {__html: d.summary} } />\n                  </div>\n              </div>\n          )\n      }\n      return <section className=\"aboutBox\">{detailSection}</section>;\n    }\n\n    const category = Sefaria.index(this.state?.details?.title)?.primary_category;\n    const isDictionary = d?.lexiconName;\n    const sourceVersion = this.state.currentVersionsByActualLangs?.he;\n    const translationVersions = Object.entries(this.state.currentVersionsByActualLangs).filter(([lang, version]) => lang != \"he\").map(([lang, version])=> version);\n    const multiple_translations = translationVersions?.length > 1;\n    const no_source_versions = multiple_translations || translationVersions?.length == 1 && !sourceVersion;\n    const sourceVersionSectionTitle = {en: \"Current Version\", he:\"מהדורה נוכחית\"};\n    const translationVersionsSectionTitle = multiple_translations ? {en: \"Current Translations\", he:\"תרגומים נוכחיים\"} : {en: \"Current Translation\", he:\"תרגום נוכחי\"};\n    const alternateVersionsSectionTitle = no_source_versions ? {en: \"Source Versions\", he:\"מהדורות בשפת המקור\"} : {en: \"Alternate Source Versions\", he:\"מהדורות נוספות בשפת המקור\"}\n\n    let detailSection = null;\n    if (d) {\n      let authorsElems = {};\n      if (d.authors && d.authors.length) {\n        for (let lang of ['en', 'he']) {\n          const authorArray = d.authors.filter((elem) => !!elem[lang]);\n          authorsElems[lang] = authorArray.map((author, iauthor) => <span>{iauthor > 0 ? \", \" : \"\"}<a key={author.slug} href={`/topics/${author.slug}`}>{author[lang]}</a></span> );\n        }\n      }\n      let placeTextEn, placeTextHe;\n      if (d.compPlaceString) {\n        placeTextEn = d.compPlaceString.en;\n        placeTextHe = d.compPlaceString.he;\n      } else if (d.compPlace){\n        placeTextEn = d.compPlace;\n        placeTextHe = d.compPlace;\n      } else if (d.pubPlace) {\n        placeTextEn = d.pubPlace;\n        placeTextHe = d.pubPlace;\n      }\n\n      let dateTextEn, dateTextHe;\n      if (d.compDateString) {\n        dateTextEn = d.compDateString.en;\n        dateTextHe = d.compDateString.he\n      } else if (d.pubDateString) {\n        dateTextEn = d.pubDateString.en;\n        dateTextHe = d.pubDateString.he;\n      }\n      const bookPageUrl = \"/\" + Sefaria.normRef(d.title);  //comment for the sake of commit\n      detailSection = (\n        <div className=\"detailsSection sans-serif\">\n          <h2 className=\"aboutHeader\">\n            <InterfaceText>About This Text</InterfaceText>\n          </h2>\n          <a href={bookPageUrl} className=\"aboutTitle serif\">\n            <ContentText text={{en: d.title, he:d.heTitle}}/>\n          </a>\n          <span className=\"tocCategory\">\n              <ContentText text={{en:category, he:Sefaria.hebrewTerm(category)}}/>\n          </span>\n          { authorsElems?.en?.length ?\n            <div className=\"aboutAuthor\">\n              <span className=\"aboutAuthorInner\">\n                  <span className=\"authorLabel\">\n                      <ContentText text={{en:\"Author:\", he: \"מחבר:\"}} />\n                  </span>\n                  <span className=\"authorName\">\n                      <ContentText text={authorsElems} />\n                  </span>\n              </span>\n            </div> : null\n          }\n          <div className=\"aboutDesc\">\n            <ContentText markdown={{en: d?.enDesc, he: d?.heDesc || d?.heShortDesc}}/>\n          </div>\n\n          { !!placeTextEn || !!dateTextEn ?\n            <div className=\"aboutComposed\">\n              <span className=\"en\">{`Composed: ${!!placeTextEn ? placeTextEn : \"\"} ${!!dateTextEn ? dateTextEn : \"\"}`}</span>\n              <span className=\"he\">{`נוצר/נערך: ${!!placeTextHe ? placeTextHe : \"\"} ${!!dateTextHe ? dateTextHe : \"\"}`}</span>\n            </div> : null\n          }\n        </div>\n      );\n    }\n    const versionSectionHe =\n      (!!sourceVersion ?\n      <div className=\"currVersionSection\">\n        <h2 className=\"aboutHeader\">\n            <InterfaceText text={sourceVersionSectionTitle} />\n        </h2>\n        <VersionBlock\n          key={`${sourceVersion.versionTitle}|${sourceVersion.actualLanguage}`}\n          rendermode=\"about-box\"\n          sidebarDisplay = {true}\n          version={sourceVersion}\n          currObjectVersions={this.props.currObjectVersions}\n          currentRef={this.props.srefs[0]}\n          firstSectionRef={\"firstSectionRef\" in sourceVersion ? sourceVersion.firstSectionRef : null}\n          />\n      </div>\n      : null );\n    const versionSectionEn =\n      (!!translationVersions?.length ?\n      <div className=\"currVersionSection\">\n        <h2 className=\"aboutHeader\">\n          <InterfaceText text={translationVersionsSectionTitle} />\n        </h2>\n          {\n              translationVersions.map((ve) => (\n                  <VersionBlock\n                  key={`${ve.versionTitle}|${ve.actualLanguage}`}\n                  rendermode=\"about-box\"\n                  sidebarDisplay = {true}\n                  version={ve}\n                  currObjectVersions={this.props.currObjectVersions}\n                  currentRef={this.props.srefs[0]}\n                  firstSectionRef={\"firstSectionRef\" in ve ? ve.firstSectionRef : null}\n                  viewExtendedNotes={this.props.viewExtendedNotes}\n                   />\n              ))\n          }\n      </div> : null );\n    const alternateSectionHe =\n      (this.state.versionLangMap?.he?.length > 0 ?\n          <div className=\"alternateVersionsSection\">\n            <h2 className=\"aboutHeader\">\n              <InterfaceText text={alternateVersionsSectionTitle} />\n            </h2>\n            <VersionsBlocksList key={`versions-${Object.values(this.props.currObjectVersions).map((v) => v?.versionTitle ?? \"\").join(\"|\")}`}\n              versionsByLanguages={this.state.versionLangMap}\n              currObjectVersions={this.props.currObjectVersions}\n              showLanguageHeaders={false}\n              currentRef={this.props.srefs[0]}\n              openVersionInReader={this.props.openVersionInReader}\n              openVersionInSidebar={this.openVersionInSidebar}\n              viewExtendedNotes={this.props.viewExtendedNotes}\n            />\n      </div> : null );\n\n    return (\n      <section className=\"aboutBox\">\n        {detailSection}\n        { this.props.masterPanelLanguage === \"english\" ?\n          (<div>{versionSectionEn}{versionSectionHe}{alternateSectionHe}</div>) :\n          (<div>{versionSectionHe}{versionSectionEn}{alternateSectionHe}</div>)\n        }\n        <Modules type={\"RelatedTopics\"} props={{title: this.props.title}} />\n        { !isDictionary ? <Modules type={\"DownloadVersions\"} props={{sref: this.props.title}} /> : null}\n      </section>\n    );\n  }\n}\nAboutBox.propTypes = {\n  currObjectVersions:  PropTypes.object.isRequired,\n  masterPanelLanguage: PropTypes.oneOf([\"english\", \"hebrew\", \"bilingual\"]),\n  title:               PropTypes.string.isRequired,\n  srefs:               PropTypes.array.isRequired,\n};\n\n\nexport default AboutBox;","import React  from 'react';\nimport PropTypes  from 'prop-types';\nimport Sefaria  from './sefaria/sefaria';\nimport {VersionsBlocksList}  from './VersionBlock/VersionBlock';\nimport Component             from 'react-class';\nimport {EnglishText, HebrewText, InterfaceText, LoadingMessage} from \"./Misc\";\nimport {RecentFilterSet} from \"./ConnectionFilters\";\nimport TextRange from \"./TextRange\";\nimport {AddConnectionToSheetButton, ConnectionButtons, OpenConnectionTabButton} from \"./TextList\";\n\nclass TranslationsBox extends Component {\n  constructor(props) {\n    super(props);\n    this._excludedLangs = [\"he\"];\n    this.state = {\n      versionLangMap: null,  // object with version languages as keys and array of versions in that lang as values\n      currentVersionsByActualLangs: Sefaria.transformVersionObjectsToByActualLanguageKeys(this.props.currObjectVersions),\n    };\n  }\n  componentDidMount() {\n    if(!this.isSheet()) {\n      Sefaria.getAllTranslationsWithText(this.props.srefs[0]).then(this.onVersionsLoad);\n    }\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (!this.isSheet() && prevProps.srefs[0] !== this.props.srefs[0]) {\n      Sefaria.getAllTranslationsWithText(this.props.srefs[0]).then(this.onVersionsLoad);\n    }\n  }\n  onVersionsLoad(versions) {\n    //rearrange the current selected versions to be mapped by their real language,\n    // then sort the current version to the top of its language list\n    let versionsByLang = versions;\n    let currentVersionsByActualLangs = Sefaria.transformVersionObjectsToByActualLanguageKeys(this.props.currObjectVersions);\n    for(let [lang,ver] of Object.entries(currentVersionsByActualLangs)){\n      if (!this._excludedLangs.includes(lang)) {\n        versionsByLang[lang]?.sort((a, b) => {\n          return a.versionTitle === ver.versionTitle ? -1 : b.versionTitle === ver.versionTitle ? 1 : 0;\n        });\n      }\n    }\n    this.setState({versionLangMap: versionsByLang, currentVersionsByActualLangs:currentVersionsByActualLangs});\n  }\n  openVersionInSidebar(versionTitle, versionLanguage) {\n    this.props.setConnectionsMode(\"Translation Open\");\n    this.props.setFilter(Sefaria.getTranslateVersionsKey(versionTitle, versionLanguage));\n  }\n  isSheet(){\n    return this.props.srefs[0].startsWith(\"Sheet\");\n  }\n  render() {\n    if (this.isSheet()) {\n      return (\n          <div className=\"versionsBox\">\n            <LoadingMessage message=\"There are no Translations for this sheet source\" heMessage=\"למקור זה אין תרגומים\"/>\n          </div>\n      );\n    }\n    if (this.props.mode === \"Translation Open\") { // A single translation open in the sidebar\n      return (\n        <VersionsTextList\n          srefs={this.props.srefs}\n          vFilter={this.props.vFilter}\n          recentVFilters={this.props.recentVFilters}\n          setFilter={this.props.setFilter}\n          onRangeClick={this.props.onRangeClick}\n          setConnectionsMode={this.props.setConnectionsMode}\n          onCitationClick={this.props.onCitationClick}\n          translationLanguagePreference={this.props.translationLanguagePreference}\n        />\n      );\n    }else if(this.props.mode === \"Translations\"){\n      if (!this.state.versionLangMap) {\n        return (\n          <div className=\"versionsBox\">\n            <LoadingMessage />\n          </div>\n        );\n      }\n      return (\n          <>\n            <TranslationsHeader />\n            <VersionsBlocksList\n                versionsByLanguages={this.state.versionLangMap}\n                currObjectVersions={this.props.currObjectVersions}\n                sortPrioritizeLanugage={\"en\"}\n                currentRef={this.props.srefs[0]}\n                openVersionInReader={this.props.openVersionInReader}\n                openVersionInSidebar={this.openVersionInSidebar}\n                viewExtendedNotes={this.props.viewExtendedNotes}\n                inTranslationBox={true}\n                showNotes={false}\n                srefs={this.props.srefs}\n                onRangeClick={this.props.onRangeClick}\n            />\n          </>\n      );\n    }\n  }\n}\nTranslationsBox.propTypes = {\n  currObjectVersions:       PropTypes.object.isRequired,\n  mode:                     PropTypes.oneOf([\"Translations\", \"Translation Open\"]),\n  vFilter:                  PropTypes.array,\n  recentVFilters:           PropTypes.array,\n  srefs:                    PropTypes.array.isRequired,\n  setConnectionsMode:       PropTypes.func.isRequired,\n  setFilter:                PropTypes.func.isRequired,\n  openVersionInReader:      PropTypes.func.isRequired,\n  sectionRef:               PropTypes.string.isRequired,\n  onRangeClick:             PropTypes.func.isRequired,\n  onCitationClick:          PropTypes.func.isRequired,\n  translationLanguagePreference: PropTypes.string,\n  inTranslationBox:            PropTypes.bool,\n};\n\n\nconst TranslationsHeader = () => (\n  <div className=\"translationsHeader\">\n    <h3>\n      <InterfaceText>Translations</InterfaceText>\n    </h3>\n    <div className=\"translationsDesc sans-serif\">\n      <InterfaceText>\n        <EnglishText>Sefaria acquires translations to enrich your learning experience. Preview or choose a different translation below.</EnglishText>\n        <HebrewText>ספריא עושה מאמצים להוסיף תרגומים שונים לספרים כדי להעשיר את חווית הלמידה שלכם. כאן ניתן להחליף לתרגום אחר או לראות תצוגה מקדימה שלו לצד הטקסט הנוכחי.</HebrewText>\n      </InterfaceText>\n      <a href=\"/sheets/511573\" target=\"_blank\" className=\"inTextLink\">\n        <InterfaceText>\n          <EnglishText>Learn more ›</EnglishText>\n          <HebrewText>למידע נוסף ›</HebrewText>\n        </InterfaceText>\n      </a>\n    </div>\n  </div>\n);\n\n\nclass VersionsTextList extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      loaded: false,\n    };\n  }\n  componentDidMount() {\n    this.preloadText(this.props.vFilter);\n  }\n  componentWillReceiveProps(nextProps) {\n    this.preloadText(nextProps.vFilter);\n  }\n  preloadText(filter) {\n    if (filter.length) {\n      this.setState({loaded: false});\n      const sectionRef = this.getSectionRef();\n      const [vTitle, language] = Sefaria.deconstructVersionsKey(filter[0]);\n      let enVersion = null, heVersion = null;\n      if (language === \"en\") { enVersion = vTitle; }\n      else                   { heVersion = vTitle; }\n      Sefaria.getText(sectionRef, {enVersion, heVersion}).then(() => {this.setState({loaded: true})});\n    }\n  }\n  getSectionRef() {\n    const ref = this.props.srefs[0]; // TODO account for selections spanning sections\n    const sectionRef = Sefaria.sectionRef(ref) || ref;\n    return sectionRef;\n  }\n  render() {\n    const [vTitle, language] = Sefaria.deconstructVersionsKey(this.props.vFilter[0]);\n    const currSelectedVersions = {[language]: vTitle};\n    const onRangeClick = (sref) => {this.props.onRangeClick(sref, false, currSelectedVersions)};\n    return !this.state.loaded || !this.props.vFilter.length ?\n      (<LoadingMessage />) :\n      (<div className=\"versionsTextList\">\n        <RecentFilterSet\n          srefs={this.props.srefs}\n          asHeader={false}\n          filter={this.props.vFilter}\n          recentFilters={this.props.recentVFilters}\n          setFilter={this.props.setFilter}/>\n        <TextRange\n          sref={Sefaria.humanRef(this.props.srefs)}\n          currVersions={currSelectedVersions}\n          useVersionLanguage={true}\n          hideTitle={true}\n          numberLabel={0}\n          basetext={false}\n          onCitationClick={this.props.onCitationClick}\n          translationLanguagePreference={this.props.translationLanguagePreference}\n        />\n        <ConnectionButtons>\n          <OpenConnectionTabButton srefs={this.props.srefs} openInTabCallback={onRangeClick}/>\n          <AddConnectionToSheetButton srefs={this.props.srefs} versions={{[language]: vTitle}} addToSheetCallback={this.props.setConnectionsMode}/>\n        </ConnectionButtons>\n      </div>);\n  }\n}\nVersionsTextList.propTypes = {\n  srefs:           PropTypes.array,\n  vFilter:         PropTypes.array,\n  recentVFilters:  PropTypes.array,\n  setFilter:       PropTypes.func.isRequired,\n  onRangeClick:    PropTypes.func.isRequired,\n  onCitationClick: PropTypes.func.isRequired,\n  translationLanguagePreference: PropTypes.string,\n};\n\n\nexport {TranslationsBox as default};\n","import React  from 'react';\nimport ReactDOM  from 'react-dom';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport Component from 'react-class'\nimport {Autocompleter, InterfaceText} from \"./Misc\";\nimport {TopicEditor} from \"./TopicEditor\";\n\n\nclass TopicSearch extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      showAdminEditor: false,\n      value: \"\",\n    };\n  }\n\n  getSuggestions = async (input) => {\n    let results = {\"currentSuggestions\": null,\n                        \"showAddButton\": false};\n    this.changeInputValue(input);\n    if (input === \"\") {\n      return results;\n    }\n    const word = input.trim();\n    const callback = (d) => {\n        let topics = [];\n        if (d[1].length > 0) {\n          topics = d[1].slice(0, 4).map(function (e) {\n                return {title: e.title, key: e.key}\n              });\n            }\n        topics.push({title: this.props.createNewTopicStr+word, key: \"\"})\n        return topics;\n     };\n    const completion_objects = await Sefaria.getTopicCompletions(word, callback);\n    results.currentSuggestions = completion_objects\n        .map(suggestion => ({\n          name: suggestion.title,\n          key: suggestion.key,\n          type: suggestion.type,\n          border_color: \"#ffffff\"\n        }))\n\n    results.showAddButton = true;\n    return results;\n  }\n\n  validate(input, suggestions) {\n    let match = false;\n    suggestions.map(topic => {\n      if (topic.name.toLowerCase() === input.toLowerCase()) {\n        this.post(topic.key);\n        match = true;\n        this.changeInputValue(\"\");\n      }\n    })\n    if (!match) {\n      alert(\"Please select an option through the dropdown menu.\");\n    }\n  }\n\n  post(slug) {\n      const postJSON = JSON.stringify({\"topic\": slug, 'interface_lang': Sefaria.interfaceLang});\n      const srefs = this.props.srefs;\n      const update = this.props.update;\n      const reset = this.reset;\n      $.post(\"/api/ref-topic-links/\" + Sefaria.normRef(this.props.srefs), {\"json\": postJSON}, async function (data) {\n        if (data.error) {\n          alert(data.error);\n        } else {\n          const sectionRef = await Sefaria.getRef(Sefaria.normRef(srefs)).sectionRef;\n          srefs.map(sref => {\n            if (!Sefaria._refTopicLinks[sref]) {\n              Sefaria._refTopicLinks[sref] = [];\n            }\n            Sefaria._refTopicLinks[sref].push(data);\n          });\n          if (!Sefaria._refTopicLinks[sectionRef]) {\n            Sefaria._refTopicLinks[sectionRef] = [];\n          }\n          Sefaria._refTopicLinks[sectionRef].push(data);\n          update();\n          reset();\n          alert(\"Topic added.\");\n        }\n      }).fail(function (xhr, status, errorThrown) {\n        alert(\"Unfortunately, there may have been an error saving this topic information: \" + errorThrown);\n      });\n  }\n\n  changeInputValue = (newValue) => {\n    if (newValue.startsWith(this.props.createNewTopicStr)) {\n        this.setState({showAdminEditor: true, value: newValue.replace(this.props.createNewTopicStr, \"\")});\n    }\n    else {\n        this.setState({value: newValue});\n    }\n  }\n\n  reset = () => {\n      this.setState({showAdminEditor: false, value: \"\"});\n  }\n\n\n  render() {\n        if (this.state.showAdminEditor) {\n            const topicData = {origEnTitle: this.state.value};\n            return <TopicEditor origData={topicData} close={this.reset} onCreateSuccess={this.post}/>;\n        }\n        else {\n            return (<Autocompleter selectedCallback={this.validate}\n                 getSuggestions={this.getSuggestions}\n                 inputPlaceholder={Sefaria.translation(this.props.contentLang, \"Search for a Topic\")}\n                 buttonTitle={Sefaria.translation(this.props.contentLang, \"Add Topic\")}\n                 inputValue={this.state.value}\n                 changeInputValue={this.changeInputValue}\n                 showSuggestionsOnSelect={false}\n                 autocompleteClassNames=\"topicSearch addInterfaceInput\"\n            />)\n        }\n  }\n}\nTopicSearch.propTypes = {\n  contextSelector:  PropTypes.string.isRequired, // CSS Selector for uniquely identifiable context that this is in.\n  srefs: PropTypes.array.isRequired, //srefs of TopicList\n  update: PropTypes.func.isRequired, //used to add topic to TopicList\n  createNewTopicStr: PropTypes.string.isRequired, // string that should be displayed when there's an option to create new topic\n  contentLang: PropTypes.string.isRequired //\n};\n\n\nexport default TopicSearch;","import PropTypes from 'prop-types';\nimport {InterfaceText} from \"./Misc\";\nimport Sefaria from \"./sefaria/sefaria\";\nimport React from \"react\";\n\n\nfunction arrangeAuthorName(authorName) {\n  return authorName.split(', ').reverse().join(' ');\n}\n\nfunction addAuthorToString(finalJoiner, accumulator, author, i, authors) {\n  const authorsNum = authors?.length;\n  let joiner = i === 0 ? '' : i === authorsNum - 1 ? finalJoiner : ', ';\n  return `${accumulator}${joiner}${arrangeAuthorName(author)}`;\n}\n\nfunction getAuthorsAsString(isHebrew, authors) {\n  const finalJoiner = isHebrew ? ' ו' : ' and ';\n  return authors?.reduce((...reduceArgs) => addAuthorToString(finalJoiner, ...reduceArgs), '');\n}\n\nconst AuthorString = ({authors, isHebrew}) => {\n  const authorsNum = authors?.length;\n  const author = authorsNum > 1 ? 'Authors' : 'Author';\n  const authorsNames = getAuthorsAsString(isHebrew, authors);\n  return (\n     authorsNames ? <div className=\"authors\">\n             <InterfaceText>{author}</InterfaceText>: {authorsNames}\n         </div> : null\n  );\n}\nAuthorString.propTypes = {\n  authors: PropTypes.array, //array of strings\n  isHebrew: PropTypes.bool,\n};\n\nconst WebPage = ({authors, isHebrew, favicon, url, domain, title, description, articleSource, anchorRef}) => {\n  return (<div className={\"webpage\" + (isHebrew ? \" hebrew\" : \"\")} key={url}>\n    <img className=\"icon\" src={favicon} />\n    <a className=\"title\" href={url} target=\"_blank\">{title}</a>\n    <div className=\"domain\">{domain}</div>\n    {description ? <div className=\"description\">{description}</div> : null}\n    <div className=\"webpageMetadata\">\n      <AuthorString authors={authors} isHebrew={isHebrew} />\n      {articleSource ? <div className=\"articleSource\">\n        <InterfaceText>Source</InterfaceText>: {articleSource.title}{articleSource.related_parts ? ` ${articleSource.related_parts}`: ''}\n      </div> : null}\n      <div className=\"citing\">\n        <InterfaceText>Citing</InterfaceText>: {Sefaria._r(anchorRef)}\n      </div>\n    </div>\n  </div>);\n}\nWebPage.propTypes = {\n  authors: PropTypes.array, //array of strings\n  isHebrew: PropTypes.bool,\n  favicon: PropTypes.string,\n  url: PropTypes.string,\n  domain: PropTypes.string,\n  title: PropTypes.string,\n  articleSource: PropTypes.object,\n  anchorRef: PropTypes.string,\n};\n\nexport default WebPage;\n","import {\n  Ad,\n  Dropdown,\n  LoadingMessage,\n  LoginPrompt,\n  LanguageToggleButton,\n  CloseButton,\n  SheetListing,\n  Note,\n  FeedbackBox,\n  ProfilePic,\n  DivineNameReplacer,\n  ToolTipped, InterfaceText, EnglishText, HebrewText,\n} from './Misc';\nimport {ContentText} from \"./ContentText\";\nimport {\n  MediaList\n} from './Media';\n\nimport { CategoryFilter, TextFilter } from './ConnectionFilters';\nimport React, { useRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport Sefaria from './sefaria/sefaria';\nimport $ from './sefaria/sefariaJquery';\nimport AboutSheet from './AboutSheet';\nimport SidebarSearch from './SidebarSearch';\nimport TextList from './TextList'\nimport ConnectionsPanelHeader from './ConnectionsPanelHeader';\nimport { AddToSourceSheetBox } from './AddToSourceSheet';\nimport LexiconBox from './LexiconBox';\nimport AboutBox from './AboutBox';\nimport TranslationsBox from './TranslationsBox';\nimport ExtendedNotes from './ExtendedNotes';\nimport classNames from 'classnames';\nimport Component from 'react-class';\nimport { TextTableOfContents } from \"./BookPage\";\nimport { CollectionsModal } from './CollectionsWidget';\nimport { event } from 'jquery';\nimport TopicSearch from \"./TopicSearch\";\nimport WebPage from './WebPage'\n\n\nclass ConnectionsPanel extends Component {\n  constructor(props) {\n    super(props);\n    this._savedHistorySegments = new Set();\n    this.state = {\n      flashMessage: null,\n      currObjectVersions: { en: null, he: null },\n      mainVersionLanguage: props.masterPanelLanguage === \"bilingual\" ? \"hebrew\" : props.masterPanelLanguage,\n      availableTranslations: [],\n      linksLoaded: false, // has the list of refs been loaded\n      connectionSummaryCollapsed: true,\n      currentlyVisibleSectionRef: Sefaria.sectionRef(this.props.currentlyVisibleRef),\n    };\n  }\n  toggleTopLevelCollapsed() {\n    this.setState({ connectionSummaryCollapsed: !this.state.connectionSummaryCollapsed });\n  }\n  componentDidMount() {\n    this._isMounted = true;\n    this.loadData();\n    this.getCurrentVersions();\n    this.debouncedCheckVisibleSegments = Sefaria.util.debounce(this.checkVisibleSegments, 100);\n    this.addScrollListener();\n  }\n\n  componentWillUnmount() {\n    this._isMounted = false;\n    this.removeScrollListener();\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (!prevProps.srefs.compare(this.props.srefs)) {\n      this.loadData();\n    }\n    // Turn on the lexicon when receiving new words if they are less than 3\n    // and don't span refs.\n    if (this.props.selectedWords &&\n      this.props.selectedWords !== prevProps.selectedWords &&\n      this.props.selectedWords.match(/[\\s:\\u0590-\\u05ff.]+/) &&\n      this.props.selectedWords.split(\" \").length < 3 &&\n      this.props.srefs.length === 1) {\n      this.props.setConnectionsMode(\"Lexicon\");\n    }\n    // Go back to main sidebar when words are unselected\n    if (prevProps.selectedWords && prevProps.mode === \"Lexicon\" && !this.props.selectedWords && !this.props.selectedNamedEntity) {\n      this.props.setConnectionsMode(\"Resources\");\n    }\n\n    if (prevProps.currVersions.en !== this.props.currVersions.en ||\n      prevProps.currVersions.he !== this.props.currVersions.he ||\n      prevProps.masterPanelLanguage !== this.props.masterPanelLanguage ||\n      prevProps.srefs[0] !== this.props.srefs[0]) {\n      this.getCurrentVersions();\n    }\n\n    if (prevProps.mode !== this.props.mode || prevProps.connectionsCategory !== this.props.connectionsCategory) {\n      this.removeScrollListener();\n\n      if(this.isScrollReset()) {\n        this.props.setSideScrollPosition(null);\n      }\n\n      else if (this.props.scrollPosition && this.isScrollMonitored()) {\n        $(\".content\").scrollTop(this.props.scrollPosition)\n            .trigger(\"scroll\");\n      }\n\n      this.addScrollListener();\n    }\n  }\n  isScrollMonitored() {\n    return [\"ConnectionsList\", \"WebPages\", \"Sheets\"].includes(this.props.mode);\n  }\n  isScrollReset() {\n    return [\"Resources\"].includes(this.props.mode);\n  }\n  addScrollListener() {\n    this.$scrollView = $(\".connectionsPanel .texts\");\n    if (this.$scrollView[0]) {\n      this.$scrollView[0].addEventListener(\"scroll\", this.handleScroll);\n    }\n  }\n  removeScrollListener() {\n    if (!!this.$scrollView && this.$scrollView[0]) {\n      this.$scrollView[0].removeEventListener(\"scroll\", this.handleScroll);\n    }\n  }\n  handleScroll(event) {\n    if(this.isScrollMonitored()) {\n      this.props.setSideScrollPosition($(event.target).scrollTop());\n    }\n    else if (this.props.mode === \"TextList\") {\n      this.debouncedCheckVisibleSegments();\n    }\n  }\n  checkVisibleSegments() {\n    if (!this._isMounted || !this.props.filter || !this.props.filter.length) { return; }\n    const initialFilter = this.props.filter;\n    const initialRefs = this.props.srefs;\n    this.$scrollView.find(\".textListTextRangeBox .textRange\").each((i, element) => {\n      if (!this.isSegmentVisible(element)) { return; }\n      const callback = this.onIntentTimer.bind(null, element, initialFilter, initialRefs);\n      this.props.checkIntentTimer(null, callback);  // instead of saving timer, we want to have multiple timers running because multiple segments can be on screen\n    });\n  }\n  onIntentTimer(element, initialFilter, initialRefs) {\n    if (\n      !this._isMounted ||\n      !this.isSegmentVisible(element) ||\n      this.didFilterChange(initialFilter, initialRefs, this.props.filter, this.props.srefs)\n    ) { return; }\n    const ref = element.getAttribute('data-ref');\n    if (this._savedHistorySegments.has(ref)) { return; }\n    const parsedRef = Sefaria.parseRef(ref);\n    // TODO: add version info once we support that in links\n    Sefaria.saveUserHistory({\n      ref,\n      versions: { en: null, he: null },\n      book: parsedRef.book,\n      language: this.props.contentLang,\n      secondary: true,\n    });\n    this._savedHistorySegments.add(ref);\n  }\n  isSheet() {\n    return this.props.srefs[0].startsWith(\"Sheet\");\n  }\n  isSegmentVisible(segment) {\n    const threshold = 100;\n    const $segment = $(segment);\n    const top = $segment.offset().top - this.$scrollView.offset().top;\n    const bottom = $segment.outerHeight() + top;\n    return top < this.$scrollView.outerHeight() - threshold && bottom > threshold;\n  }\n  didFilterChange(prevFilter, prevRefs, nextFilter, nextRefs) {\n    if (\n      !prevFilter || !nextFilter ||\n      !prevFilter.length || !nextFilter.length ||\n      prevFilter[0] !== nextFilter[0]\n    ) { return true; }\n    return !prevRefs.compare(nextRefs);\n  }\n  sectionRef() {\n    return Sefaria.sectionRef(Sefaria.humanRef(this.props.srefs)) || this.props.srefs;\n  }\n  loadData() {\n    let ref = this.sectionRef();\n    if (!Sefaria.related(ref)) {\n      Sefaria.related(ref, function (data) {\n        if (this._isMounted) {\n          this.setState({\n            linksLoaded: true,\n          });\n        }\n      }.bind(this));\n    }\n    else {\n      this.setState({\n        linksLoaded: true,\n      });\n    }\n    if (!this.isSheet()) {\n      Sefaria.getTranslations(ref).then(versions => this.setState({ availableTranslations: Object.values(versions).flat() })); //for counting translations\n      Sefaria.getRef(this.props.currentlyVisibleRef).then(data => { //this does not properly return a secionRef for a spanning/ranged ref\n        const currRef = (typeof data == \"string\") ? Sefaria.sectionRef(data) : data[\"sectionRef\"]; //this is an annoying consequence of getRef not actually returning a\n        // consistent response. Its either the ref from cache or the entire text api response if async.\n        this.setState({currentlyVisibleSectionRef: currRef});\n      });\n      //this.setState({currentlyVisibleSectionRef: Sefaria.sectionRef(this.props.currentlyVisibleRef)});\n\n    }\n  }\n  reloadData() {\n    this.setState({\n      linksLoaded: false,\n    });\n    Sefaria.clearLinks();\n    this.loadData();\n  }\n  flashMessage(msg) {\n    this.setState({ flashMessage: msg });\n    setTimeout(function () {\n      this.setState({ flashMessage: null });\n    }.bind(this), 3000);\n  }\n  onSave() {\n    this.reloadData();\n    this.props.setConnectionsMode(\"Resources\");\n    this.flashMessage(\"Success! You've created a new connection.\");\n  }\n  getData(cb) {\n    // Gets data about this text from cache, which may be null.\n    const versionPref = Sefaria.versionPreferences.getVersionPref(this.props.srefs[0]);\n    return Sefaria.getText(this.props.srefs[0], { context: 1, enVersion: this.props.currVersions.en, heVersion: this.props.currVersions.he, translationLanguagePreference: this.props.translationLanguagePreference, versionPref}).then(cb);\n  }\n  getVersionFromData(d, lang) {\n    //d - data received from this.getData()\n    //language - the language of the version\n    //console.log(d);\n    const currentVersionTitle = (lang === \"he\") ? d.heVersionTitle : d.versionTitle;\n    return {\n      ...d.versions.find(v => v.versionTitle === currentVersionTitle && v.language === lang),\n      title: d.indexTitle,\n      heTitle: d.heIndexTitle,\n      sources: lang === \"he\" ? d.heSources : d.sources,\n      merged: lang === \"he\" ? !!d.heSources : !!d.sources,\n    }\n  }\n  getCurrentVersions() {\n    const data = this.getData((data) => {\n      let currentLanguage = this.props.masterPanelLanguage;\n      if (currentLanguage === \"bilingual\") {\n        currentLanguage = \"hebrew\"\n      }\n      if (!data || data.error) {\n        this.setState({\n          currObjectVersions: { en: null, he: null },\n          mainVersionLanguage: currentLanguage,\n        });\n        return\n      }\n      if (currentLanguage === \"hebrew\" && !data.he.length) {\n        currentLanguage = \"english\"\n      }\n      if (currentLanguage === \"english\" && !data.text.length) {\n        currentLanguage = \"hebrew\"\n      }\n      this.setState({\n        currObjectVersions: {\n          en: ((this.props.masterPanelLanguage !== \"hebrew\" && !!data.text.length) || (this.props.masterPanelLanguage === \"hebrew\" && !data.he.length)) ? this.getVersionFromData(data, \"en\") : null,\n          he: ((this.props.masterPanelLanguage !== \"english\" && !!data.he.length) || (this.props.masterPanelLanguage === \"english\" && !data.text.length)) ? this.getVersionFromData(data, \"he\") : null,\n        },\n        mainVersionLanguage: currentLanguage,\n        sectionRef: data.sectionRef,\n      });\n    });\n  }\n  checkSrefs(srefs) {\n    // Mostly exists for properly displaying Ranging refs in TextList on page loads and on sheets\n    if (typeof (srefs) == \"object\" && srefs.length === 1) {\n      srefs = Sefaria.splitRangingRef(srefs[0]);\n    }\n    if (srefs.length === 1 && (Sefaria.sectionRef(srefs[0]) === srefs[0])) {\n      const oref = Sefaria.ref(srefs[0]);\n      srefs = Sefaria.makeSegments(oref).map(segment => segment.ref)\n    }\n    return (srefs)\n  }\n  showSheetNodeConnectionTools(ref, mode) {\n    const dontShowModes = [\"Share\", \"Feedback\", \"Sheets\"];\n    if (ref.indexOf(\"Sheet\") !== -1 && !dontShowModes.includes(mode)) {\n      return true\n    }\n\n    else {\n      return false\n    }\n  }\n  openVersionInSidebar(versionTitle, versionLanguage) {\n    this.props.setConnectionsMode(\"Translation Open\");\n    this.props.setFilter(Sefaria.getTranslateVersionsKey(versionTitle, versionLanguage));\n  }\n  render() {\n    let content = null;\n    if (!this.state.linksLoaded) {\n      content = <LoadingMessage />;\n    } else if (this.showSheetNodeConnectionTools(this.props.srefs, this.props.mode)) {\n      content = (<div>\n        <SheetNodeConnectionTools\n          multiPanel={this.props.multiPanel}\n          setConnectionsMode={this.props.setConnectionsMode}\n          openComparePanel={this.props.openComparePanel}\n          srefs={this.props.srefs}\n          nodeRef={this.props.nodeRef}\n        />\n      </div>);\n    } else if (this.props.mode === \"Resources\") {\n      const summary = Sefaria.linkSummary(this.props.srefs, this.props.nodeRef ? this.props.nodeRef.split(\".\")[0] : null);\n      const showConnectionSummary = summary.length > 0 || Sefaria.hasEssayLinks(this.props.srefs);\n      const resourcesButtonCounts = {\n        sheets: Sefaria.sheets.sheetsTotalCount(this.props.srefs),\n        webpages: Sefaria.webPagesByRef(this.props.srefs).length,\n        audio: Sefaria.mediaByRef(this.props.srefs).length,\n        topics: Sefaria.topicsByRefCount(this.props.srefs) || 0,\n        manuscripts: Sefaria.manuscriptsByRef(this.props.srefs).length,\n        translations: this.state.availableTranslations.length, //versions dont come from the related api, so this one looks a bit different than the others.\n      }\n      const showResourceButtons = Sefaria.is_moderator || Object.values(resourcesButtonCounts).some(elem => elem > 0);\n      const toolsButtonsCounts = {\n        notes: Sefaria.notesTotalCount(this.props.srefs),\n      }\n      content = (\n        <div>\n          {this.state.flashMessage ? <div className=\"flashMessage sans-serif\">{this.state.flashMessage}</div> : null}\n          {this.props.masterPanelMode === \"Sheet\" ?\n            <AboutSheetButtons\n              setConnectionsMode={this.props.setConnectionsMode}\n              masterPanelSheetId={this.props.masterPanelSheetId}\n            /> :\n            <div className=\"topToolsButtons\">\n              <ToolsButton en=\"About this Text\" he=\"אודות הטקסט\" image=\"about-text.svg\" urlConnectionsMode=\"About\" onClick={() => this.props.setConnectionsMode(\"About\")} />\n              <ToolsButton en=\"Table of Contents\" he=\"תוכן העניינים\" image=\"text-navigation.svg\" urlConnectionsMode=\"Navigation\" onClick={() => this.props.setConnectionsMode(\"Navigation\")} />\n              <ToolsButton en=\"Search in this Text\" he=\"חיפוש בטקסט\" image=\"compare.svg\" urlConnectionsMode=\"SidebarSearch\" onClick={() => this.props.setConnectionsMode(\"SidebarSearch\")} />\n              { Sefaria._siteSettings.TORAH_SPECIFIC && <ToolsButton en=\"Translations\" he=\"תרגומים\" image=\"translation.svg\"  urlConnectionsMode=\"Translations\" onClick={() => this.props.setConnectionsMode(\"Translations\")} count={resourcesButtonCounts.translations} />}\n            </div>\n          }\n          {showConnectionSummary ?\n            <ConnectionsPanelSection title=\"Related Texts\">\n              <ConnectionsSummary\n                currObjectVersions={this.state.currObjectVersions}\n                srefs={this.props.srefs}\n                showBooks={false}\n                multiPanel={this.props.multiPanel}\n                filter={this.props.filter}\n                nodeRef={this.props.nodeRef}\n                contentLang={this.props.contentLang}\n                setFilter={this.props.setFilter}\n                setConnectionsMode={this.props.setConnectionsMode}\n                setConnectionsCategory={this.props.setConnectionsCategory}\n                collapsed={this.state.connectionSummaryCollapsed}\n                toggleTopLevelCollapsed={this.toggleTopLevelCollapsed}\n              />\n            </ConnectionsPanelSection>\n            :\n            null\n          }\n          {showResourceButtons ?\n            <ConnectionsPanelSection title={\"Resources\"}>\n              {\n                //ironically we need the masterpanel mode to be sheet to indicate a sheet is loaded, but the\n                // title prop to be something other than \"Sheet\" to indicate that a real source is being\n                // looked at\n                (this.props.masterPanelMode == \"Sheet\" && this.props.title !== \"Sheet\") ?\n                    <>\n                      <ToolsButton en=\"About this Source\" he=\"אודות מקור זה\" image=\"about-text.svg\" urlConnectionsMode=\"About\" onClick={() => this.props.setConnectionsMode(\"About\")} />\n                      <ToolsButton en=\"Translations\" he=\"תרגומים\" image=\"translation.svg\" count={resourcesButtonCounts[\"translations\"]} urlConnectionsMode=\"Translations\" onClick={() => this.props.setConnectionsMode(\"Translations\")} />\n                    </>\n                  :\n                  null\n              }\n              <ResourcesList\n                setConnectionsMode={this.props.setConnectionsMode}\n                counts={resourcesButtonCounts}\n              />\n            </ConnectionsPanelSection>\n            :\n            null\n          }\n          <ConnectionsPanelSection title={\"Tools\"}>\n\n            {this.props.masterPanelMode === \"Sheet\" ? <SheetToolsList\n              toggleSignUpModal={this.props.toggleSignUpModal}\n              setConnectionsMode={this.props.setConnectionsMode}\n              masterPanelSheetId={this.props.masterPanelSheetId} /> : null}\n            <ToolsList\n              setConnectionsMode={this.props.setConnectionsMode}\n              masterPanelMode={this.props.masterPanelMode}\n              toggleSignUpModal={this.props.toggleSignUpModal}\n              openComparePanel={this.props.multiPanel ? this.props.openComparePanel : null}\n              counts={toolsButtonsCounts} />\n          </ConnectionsPanelSection>\n        </div>\n      );\n\n    } else if (this.props.mode == \"Navigation\") {\n      content = (\n        <TextTableOfContents\n          narrowPanel={this.props.narrowPanel}\n          title={this.props.title}\n          close={this.props.close}\n          currVersions={this.props.currVersions}\n          navigatePanel={this.props.navigatePanel}\n          currentlyVisibleRef={this.props.currentlyVisibleRef}\n          currentlyVisibleSectionRef={this.state.currentlyVisibleSectionRef}\n        />\n      );\n    } else if (this.props.mode === \"ConnectionsList\") {\n      content = (<ConnectionsSummary\n        srefs={this.props.srefs}\n        category={this.props.connectionsCategory}\n        showBooks={true}\n        multiPanel={this.props.multiPanel}\n        nodeRef={this.props.nodeRef}\n        contentLang={this.props.contentLang}\n        filter={this.props.filter}\n        setFilter={this.props.setFilter}\n        setConnectionsMode={this.props.setConnectionsMode}\n        setConnectionsCategory={this.props.setConnectionsCategory} />);\n\n    } else if (this.props.mode === \"TextList\" || this.props.mode === \"EssayList\") {\n      content = (<TextList\n        panelPosition={this.props.panelPosition}\n        srefs={this.checkSrefs(this.props.srefs)}\n        filter={this.props.filter}\n        recentFilters={this.props.recentFilters}\n        nodeRef={this.props.nodeRef}\n        fullPanel={this.props.fullPanel}\n        multiPanel={this.props.multiPanel}\n        contentLang={this.props.contentLang}\n        setFilter={this.props.setFilter}\n        setConnectionsMode={this.props.setConnectionsMode}\n        onTextClick={this.props.onTextClick}\n        onCitationClick={this.props.onCitationClick}\n        handleSheetClick={this.props.handleSheetClick}\n        openNav={this.props.openNav}\n        openDisplaySettings={this.props.openDisplaySettings}\n        closePanel={this.props.closePanel}\n        selectedWords={this.props.selectedWords}\n        checkVisibleSegments={this.checkVisibleSegments}\n        translationLanguagePreference={this.props.translationLanguagePreference}\n      />);\n\n    } else if (this.props.mode === \"Sheets\") {\n      const connectedSheet = this.props.nodeRef ? this.props.nodeRef.split(\".\")[0] : null;\n      content = (<div>\n        {this.props.srefs[0].indexOf(\"Sheet\") === -1 ?\n          <MySheetsList\n            srefs={this.props.srefs}\n            connectedSheet={connectedSheet}\n            fullPanel={this.props.fullPanel}\n            handleSheetClick={this.props.handleSheetClick}\n          />\n          : null\n        }\n        {this.props.srefs[0].indexOf(\"Sheet\") === -1 ?\n          <PublicSheetsList\n            srefs={this.props.srefs}\n            connectedSheet={connectedSheet}\n            fullPanel={this.props.fullPanel}\n            handleSheetClick={this.props.handleSheetClick}\n          /> : null\n        }\n      </div>);\n    } else if (this.props.mode == \"Add To Sheet\") {\n      let refForSheet, versionsForSheet, selectedWordsForSheet, nodeRef;\n      // add source from connections\n      if (this.props.connectionData && this.props.connectionData.hasOwnProperty(\"addSource\") && this.props.connectionData[\"addSource\"] == 'connectionsPanel') {\n        refForSheet = this.props.connectionData.hasOwnProperty(\"connectionRefs\") ? this.props.connectionData[\"connectionRefs\"] : this.props.srefs;\n        versionsForSheet = this.props.connectionData.hasOwnProperty(\"versions\") ? this.props.connectionData[\"versions\"] : { \"en\": null, \"he\": null };\n        selectedWordsForSheet = null;\n      } else { // add source from sheet itself\n        refForSheet = this.props.srefs;\n        versionsForSheet = this.props.currVersions;\n        selectedWordsForSheet = this.props.selectedWords;\n        nodeRef = this.props.nodeRef;\n      }\n      content = (<div>\n        <AddToSourceSheetBox\n          srefs={refForSheet}\n          currVersions={versionsForSheet} //sidebar doesn't actually do versions\n          contentLanguage={this.props.masterPanelLanguage}\n          selectedWords={selectedWordsForSheet}\n          nodeRef={nodeRef}\n          fullPanel={this.props.fullPanel}\n          toggleSignUpModal={this.props.toggleSignUpModal}\n          setConnectionsMode={this.props.setConnectionsMode} />\n      </div>);\n\n    }  else if (this.props.mode === \"Notes\") {\n      content = (<div>\n        <AddNoteBox\n          srefs={this.props.srefs}\n          fullPanel={this.props.fullPanel}\n          closePanel={this.props.closePanel}\n          onSave={() => this.props.setConnectionsMode(\"Notes\")}\n          onCancel={() => this.props.setConnectionsMode(\"Notes\")} />\n        {Sefaria._uid ?\n          <div>\n            <a href=\"/my/profile?tab=notes\" className=\"allNotesLink button white transparent bordered fillWidth\">\n              <span className=\"int-en\">Go to My Notes</span>\n              <span className=\"int-he\">הרשומות שלי</span>\n            </a>\n            <MyNotes\n              srefs={this.props.srefs}\n              editNote={this.props.editNote} />\n          </div> : null}\n      </div>);\n\n    } else if (this.props.mode === \"Lexicon\") {\n      content = (<LexiconBox\n        selectedWords={this.props.selectedWords}\n        selectedNamedEntity={this.props.selectedNamedEntity}\n        selectedNamedEntityText={this.props.selectedNamedEntityText}\n        oref={Sefaria.ref(this.props.srefs[0])}\n        srefs={this.props.srefs}\n        onEntryClick={this.props.onTextClick}\n        onCitationClick={this.props.onCitationClick}\n        clearSelectedWords={this.props.clearSelectedWords}\n        clearNamedEntity={this.props.clearNamedEntity}\n        interfaceLang={this.props.interfaceLang} />);\n\n    } else if (this.props.mode === \"Topics\") {\n      content = (\n        <TopicList\n          masterPanelMode={this.props.masterPanelMode}\n          contentLang={this.props.contentLang}\n          srefs={this.props.srefs}\n          interfaceLang={this.props.interfaceLang}\n          key={`Topics-${this.props.srefs.join(\"|\")}`}\n        />\n      );\n    } else if (this.props.mode === \"WebPages\" || this.props.mode === \"WebPagesList\") {\n      content = (<WebPagesList\n        srefs={this.props.srefs}\n        filter={this.props.mode == \"WebPages\" ? null : this.props.webPagesFilter}\n        setWebPagesFilter={this.props.setWebPagesFilter}\n        interfaceLang={this.props.interfaceLang}\n        key=\"WebPages\" />);\n\n    } else if (this.props.mode === \"Torah Readings\") {\n      content = (<MediaList\n        srefs={this.props.srefs}\n        interfaceLang={this.props.interfaceLang}\n        key=\"Media\" />);\n\n    } else if (this.props.mode === \"Advanced Tools\") {\n      content = (<AdvancedToolsList\n        srefs={this.props.srefs}\n        toggleSignUpModal={this.props.toggleSignUpModal}\n        canEditText={this.props.canEditText}\n        setConnectionsMode={this.props.setConnectionsMode}\n        currVersions={this.props.currVersions}\n        masterPanelLanguage={this.props.masterPanelLanguage} />);\n\n    } else if (this.props.mode === \"Share\") {\n      content = (<ShareBox\n        masterPanelSheetId={this.props.masterPanelSheetId}\n        url={window.location.href}\n        fullPanel={this.props.fullPanel}\n        closePanel={this.props.closePanel}\n        setConnectionsMode={this.props.setConnectionsMode} />);\n\n    } else if (this.props.mode === \"Feedback\") {\n      content = (<FeedbackBox\n        srefs={this.props.srefs}\n        url={window.location.href}\n        currVersions={this.props.currVersions}\n      />);\n\n    } else if (this.props.mode === \"Edit Note\") {\n      content = (<AddNoteBox\n        srefs={this.props.srefs}\n        noteId={this.props.noteBeingEdited._id}\n        noteText={this.props.noteBeingEdited.text}\n        noteTitle={this.props.noteBeingEdited.title}\n        noteIsPublic={this.props.noteBeingEdited.isPublic}\n        fullPanel={this.props.fullPanel}\n        closePanel={this.props.closePanel}\n        onSave={() => this.props.setConnectionsMode(\"Notes\")}\n        onCancel={() => this.props.setConnectionsMode(\"Notes\")}\n        onDelete={() => this.props.setConnectionsMode(\"Notes\")} />);\n\n    } else if (this.props.mode === \"Add Connection\") {\n      content = <AddConnectionBox\n        srefs={this.props.allOpenRefs}\n        openComparePanel={this.props.openComparePanel}\n        onSave={this.onSave}\n        onCancel={() => this.props.setConnectionsMode(\"Resources\")} />\n\n    } else if (this.props.mode === \"Login\") {\n      content = (<LoginPrompt fullPanel={this.props.fullPanel} />);\n\n    } else if (this.props.mode === \"About\") {\n      content = (<AboutBox\n        key={`About-${Object.values(this.state.currObjectVersions).map((v) => v?.versionTitle ?? \"\").join(\"|\")}`}\n        currObjectVersions={this.state.currObjectVersions}\n        masterPanelLanguage={this.props.masterPanelLanguage}\n        setConnectionsMode={this.props.setConnectionsMode}\n        mode={this.props.mode}\n        setFilter={this.props.setVersionFilter}\n        title={this.props.title}\n        srefs={this.props.srefs}\n        sectionRef={this.state.sectionRef}\n        openVersionInReader={this.props.selectVersion}\n        viewExtendedNotes={this.props.viewExtendedNotes}\n      />);\n\n    } else if (this.props.mode === \"Translations\" || this.props.mode === \"Translation Open\") {\n      content = (<TranslationsBox\n        key={`Translations`}\n        currObjectVersions={this.state.currObjectVersions}\n        setConnectionsMode={this.props.setConnectionsMode}\n        mode={this.props.mode}\n        setFilter={this.props.setVersionFilter}\n        vFilter={this.props.versionFilter}\n        recentVFilters={this.props.recentVersionFilters}\n        srefs={this.props.srefs}\n        sectionRef={this.state.sectionRef}\n        onRangeClick={this.props.onTextClick}\n        openVersionInReader={this.props.selectVersion}\n        viewExtendedNotes={this.props.viewExtendedNotes}\n        onCitationClick={this.props.onCitationClick}\n        translationLanguagePreference={this.props.translationLanguagePreference}\n      />);\n\n    } else if (this.props.mode === \"extended notes\") {\n      content = (<ExtendedNotes\n        currVersions={this.props.currVersions}\n        title={this.props.title} />);\n    } else if (this.props.mode === \"manuscripts\") {\n      content = (<ManuscriptImageList\n        manuscriptList={Sefaria.manuscriptsByRef(this.props.srefs)}\n        interfaceLang={this.props.interfaceLang}\n        contentLang={this.props.contentLang}\n      />);\n    } else if (this.props.mode === \"AboutSheet\") {\n      content = <AboutSheet\n        masterPanelSheetId={this.props.masterPanelSheetId}\n        toggleSignUpModal={this.props.toggleSignUpModal}\n      />\n    } else if (this.props.mode === \"DivineName\") {\n      content = <DivineNameReplacer\n          setDivineNameReplacement={this.props.setDivineNameReplacement}\n          divineNameReplacement={this.props.divineNameReplacement}\n      />\n    } else if (this.props.mode === \"SidebarSearch\") {\n    content = <SidebarSearch\n                title={this.props.title}\n                navigatePanel={this.props.navigatePanel}\n                sidebarSearchQuery={this.props.sidebarSearchQuery}\n                setSidebarSearchQuery={this.props.setSidebarSearchQuery}\n                onSidebarSearchClick={this.props.onSidebarSearchClick}\n                hideHebrewKeyboard={!Sefaria._siteSettings.TORAH_SPECIFIC}\n              />\n    }\n\n    const marginless = [\"Resources\", \"ConnectionsList\", \"Advanced Tools\", \"Share\", \"WebPages\", \"Topics\", \"manuscripts\"].indexOf(this.props.mode) != -1;\n    let classes = classNames({ connectionsPanel: 1, textList: 1, marginless: marginless, fullPanel: this.props.fullPanel, singlePanel: !this.props.fullPanel });\n    return (\n      <div className={classes} key={this.props.mode}>\n        {this.props.fullPanel ? null :\n          <ConnectionsPanelHeader\n            connectionsMode={this.props.mode}\n            previousCategory={this.props.connectionsCategory}\n            previousMode={this.props.connectionData?.previousMode}\n            setConnectionsMode={this.props.setConnectionsMode}\n            setConnectionsCategory={this.props.setConnectionsCategory}\n            multiPanel={this.props.multiPanel}\n            filter={this.props.filter}\n            recentFilters={this.props.recentFilters}\n            baseRefs={this.props.srefs}\n            setFilter={this.props.setFilter}\n            closePanel={this.props.closePanel}\n            toggleLanguage={this.props.toggleLanguage}\n            interfaceLang={this.props.interfaceLang} />}\n        <div className=\"texts content\">\n          <div className=\"contentInner\">{content}</div>\n        </div>\n      </div>);\n\n  }\n}\nConnectionsPanel.propTypes = {\n  srefs: PropTypes.array.isRequired,  // an array of ref strings\n  filter: PropTypes.array.isRequired,\n  recentFilters: PropTypes.array.isRequired,\n  mode: PropTypes.string.isRequired, // \"Resources\", \"ConnectionsList\", \"TextList\" etc., called `connectionsMode` above\n  connectionsCategory: PropTypes.string,            // with mode:\"ConnectionsList\", which category of connections to show\n  setFilter: PropTypes.func.isRequired,\n  setConnectionsMode: PropTypes.func.isRequired,\n  setConnectionsCategory: PropTypes.func.isRequired,\n  editNote: PropTypes.func.isRequired,\n  openComparePanel: PropTypes.func.isRequired,\n  title: PropTypes.string.isRequired,\n  currVersions: PropTypes.object.isRequired,\n  selectVersion: PropTypes.func.isRequired,\n  noteBeingEdited: PropTypes.object,\n  fullPanel: PropTypes.bool,\n  multiPanel: PropTypes.bool,\n  canEditText: PropTypes.bool,\n  onTextClick: PropTypes.func,\n  onCitationClick: PropTypes.func,\n  openNav: PropTypes.func,\n  openDisplaySettings: PropTypes.func,\n  closePanel: PropTypes.func,\n  toggleLanguage: PropTypes.func,\n  selectedWords: PropTypes.string,\n  selectedNamedEntity: PropTypes.string,\n  selectedNamedEntityText: PropTypes.string,\n  interfaceLang: PropTypes.string,\n  contentLang: PropTypes.string,\n  masterPanelLanguage: PropTypes.oneOf([\"english\", \"bilingual\", \"hebrew\"]),\n  masterPanelMode: PropTypes.string,\n  masterPanelSheetId: PropTypes.number,\n  versionFilter: PropTypes.array,\n  recentVersionFilters: PropTypes.array,\n  setVersionFilter: PropTypes.func.isRequired,\n  checkIntentTimer: PropTypes.func.isRequired,\n  clearSelectedWords: PropTypes.func.isRequired,\n  clearNamedEntity: PropTypes.func.isRequired,\n  translationLanguagePreference: PropTypes.string,\n  scrollPosition: PropTypes.number,\n  setSideScrollPosition: PropTypes.func.isRequired,\n};\n\n\nconst ResourcesList = ({ masterPanelMode, setConnectionsMode, counts }) => {\n  // A list of Resources in addition to connection\n  return (\n    <div className=\"toolButtonsList\">\n      <ToolsButton en=\"Sheets\" he=\"דפי מקורות\" image=\"sheet.svg\" count={counts[\"sheets\"]} urlConnectionsMode=\"Sheets\" onClick={() => setConnectionsMode(\"Sheets\")} />\n      {Sefaria._siteSettings.TORAH_SPECIFIC ? <ToolsButton en=\"Web Pages\" he=\"דפי אינטרנט\" image=\"webpages.svg\" count={counts[\"webpages\"]} urlConnectionsMode=\"WebPages\" onClick={() => setConnectionsMode(\"WebPages\")} /> : null}\n      <ToolsButton en=\"Topics\" he=\"נושאים\" image=\"hashtag-icon.svg\" count={counts[\"topics\"]} urlConnectionsMode=\"Topics\" onClick={() => setConnectionsMode(\"Topics\")} alwaysShow={Sefaria.is_moderator} />\n      {Sefaria._siteSettings.TORAH_SPECIFIC ? <ToolsButton en=\"Manuscripts\" he=\"כתבי יד\" image=\"manuscripts.svg\" count={counts[\"manuscripts\"]} urlConnectionsMode=\"manuscripts\" onClick={() => setConnectionsMode(\"manuscripts\")} /> : null}\n      {Sefaria._siteSettings.TORAH_SPECIFIC ? <ToolsButton en=\"Torah Readings\" he=\"קריאה בתורה\" image=\"torahreadings.svg\" count={counts[\"audio\"]} urlConnectionsMode=\"Torah Readings\" onClick={() => setConnectionsMode(\"Torah Readings\")} /> : null}\n    </div>\n  );\n}\nResourcesList.propTypes = {\n  setConnectionsMode: PropTypes.func.isRequired,\n  counts: PropTypes.object.isRequired,\n}\n\nconst ToolsList = ({ setConnectionsMode, toggleSignUpModal, openComparePanel, counts, masterPanelMode }) => {\n  // A list of Resources in addition to connection\n  return (\n    <div className=\"toolButtonsList\">\n      <ToolsButton en=\"Add to Sheet\" he=\"הוספה לדף מקורות\" image=\"sheetsplus.svg\" onClick={() => !Sefaria._uid ? toggleSignUpModal() : setConnectionsMode(\"Add To Sheet\", { \"addSource\": \"mainPanel\" })} />\n      {Sefaria._siteSettings.TORAH_SPECIFIC ? <ToolsButton en=\"Dictionaries\" he=\"מילונים\" image=\"dictionaries.svg\" urlConnectionsMode=\"Lexicon\" onClick={() => setConnectionsMode(\"Lexicon\")} /> : null}\n      {openComparePanel ? <ToolsButton en=\"Compare Text\" he=\"טקסט להשוואה\" image=\"compare-panel.svg\" onClick={openComparePanel} /> : null}\n      <ToolsButton en=\"Notes\" he=\"הערות\" image=\"notes.svg\" alwaysShow={true} count={counts[\"notes\"]} urlConnectionsMode=\"Notes\" onClick={() => !Sefaria._uid ? toggleSignUpModal(SignUpModalKind.Notes) : setConnectionsMode(\"Notes\")} />\n      {masterPanelMode !== \"Sheet\" ? <ToolsButton en=\"Share\" he=\"שיתוף\" image=\"share.svg\" onClick={() => setConnectionsMode(\"Share\")} /> : null}\n      <ToolsButton en=\"Feedback\" he=\"משוב\" image=\"feedback.svg\" onClick={() => setConnectionsMode(\"Feedback\")} />\n      <ToolsButton en=\"Advanced\" he=\"כלים מתקדמים\" image=\"advancedtools.svg\" onClick={() => setConnectionsMode(\"Advanced Tools\")} />\n    </div>\n  );\n}\nToolsList.propTypes = {\n  setConnectionsMode: PropTypes.func.isRequired,\n  toggleSignUpModal: PropTypes.func.isRequired,\n  counts: PropTypes.object.isRequired,\n}\n\nconst AboutSheetButtons = ({ setConnectionsMode, masterPanelSheetId }) => {\n\n  const [isOwner, setIsOwner] = useState(false);\n  useEffect(() => {\n    const sheet = Sefaria.sheets.loadSheetByID(masterPanelSheetId)\n    setIsOwner(sheet.owner === Sefaria._uid);\n    console.log(sheet)\n  }, []);\n\n  return (<div className=\"topToolsButtons\">\n    {isOwner ?\n        <ToolsButton en=\"Publish Settings\" he=\"הגדרות פרסום\" image=\"about-text.svg\" urlConnectionsMode=\"AboutSheet\" onClick={() => setConnectionsMode(\"AboutSheet\")} />\n        :\n        <ToolsButton en=\"About this Sheet\" he=\"אודות דף המקורות\" image=\"about-text.svg\" urlConnectionsMode=\"AboutSheet\" onClick={() => setConnectionsMode(\"AboutSheet\")} />\n    }\n\n\n    <ToolsButton en=\"Share\" he=\"שיתוף\" image=\"share.svg\" onClick={() => setConnectionsMode(\"Share\")} />\n  </div>);\n}\n\nconst SheetToolsList = ({ toggleSignUpModal, masterPanelSheetId, setConnectionsMode }) => {\n\n  // const [isOwner, setIsOwner] = useState(false);\n  // const [isPublished, setIsPublished] = useState(false);\n  const googleDriveState = {\n    export: { en: \"Export to Google Docs\", he: \"ייצוא לגוגל דוקס\" },\n    exporting: {en: \"Exporting to Google Docs...\", he: \"מייצא לגוגל דוקס...\", greyColor: true},\n    exportComplete: { en: \"Export Complete\", he: \"ייצוא הסתיים\", secondaryEn: \"Open in Google\", secondaryHe: \"לפתיחה בגוגל דוקס\", greyColor: true}\n  }\n  const copyState = {\n    copy: { en: \"Copy\", he: \"העתקה\" },\n    copying: { en: \"Copying...\", he: \"מעתיק...\", greyColor: true},\n    copied: { en: \"Sheet Copied\", he: \"הדף מועתק\", secondaryHe: \"צפייה בדף המקורות\", secondaryEn: \"View Copy\", greyColor: true },\n    error: { en: \"Sorry, there was an error.\", he: \"סליחה, ארעה שגיאה\" }\n  }\n  const [copyText, setCopyText] = useState(copyState.copy);\n  const urlHashObject = Sefaria.util.parseHash(Sefaria.util.parseUrl(window.location).hash).afterLoading;\n  const [googleDriveText, setGoogleDriveText] = urlHashObject === \"exportToDrive\" ? useState(googleDriveState.exporting) : useState(googleDriveState.export);\n  const [googleDriveLink, setGoogleDriveLink] = useState(\"\");\n  const [copiedSheetId, setCopiedSheetId] = useState(0);\n  const sheet = Sefaria.sheets.loadSheetByID(masterPanelSheetId);\n  const [showCollectionsModal, setShowCollectionsModal] = useState(false);\n\n  useEffect(() => {\n    if (googleDriveText.en == googleDriveState.exporting.en) {\n      history.replaceState(\"\", document.title, window.location.pathname + window.location.search); // remove exportToDrive hash once it's used to trigger export\n      $.ajax({\n        type: \"POST\",\n        url: \"/api/sheets/\" + sheet.id + \"/export_to_drive\",\n        success: function (data) {\n          if (\"error\" in data) {\n            console.log(data.error.message);\n            // Export Failed\n          } else {\n            // Export succeeded\n            setGoogleDriveLink(data.webViewLink);\n            setGoogleDriveText(googleDriveState.exportComplete)\n          }\n        },\n        statusCode: {\n          401: function () {\n            window.location.href = \"/gauth?next=\" + encodeURIComponent(window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search + \"#afterLoading=exportToDrive\");\n          }\n        }\n      });\n    }\n  }, [googleDriveText])\n\n  // const toggleCollectionsModal = () => {\n  //   if (!Sefaria._uid) {\n  //     toggleSignUpModal();\n  //   } else {\n  //     setShowCollectionsModal(!showCollectionsModal)\n  //   }\n  // }\n\n\n\n  const filterAndSaveCopiedSheetData = (data) => {\n    let newSheet = Sefaria.util.clone(data);\n    newSheet.status = \"unlisted\";\n    newSheet.title = newSheet.title + \" (Copy)\";\n\n    if (Sefaria._uid != newSheet.owner) {\n      newSheet.via = newSheet.id;\n      newSheet.viaOwner = newSheet.owner;\n      newSheet.owner = Sefaria._uid\n    }\n    delete newSheet.id;\n    delete newSheet.ownerName;\n    delete newSheet.views;\n    delete newSheet.dateCreated;\n    delete newSheet.dateModified;\n    delete newSheet.displayedCollection;\n    delete newSheet.collectionName;\n    delete newSheet.collectionImage;\n    delete newSheet.likes;\n    delete newSheet.promptedToPublish;\n    delete newSheet._id;\n\n    const postJSON = JSON.stringify(newSheet);\n    $.post(\"/api/sheets/\", { \"json\": postJSON }, (data) => {\n      if (data.id) {\n        setCopiedSheetId(data.id);\n        setCopyText(copyState.copied);\n      } else if (\"error\" in data) {\n        setCopyText(copyState.error);\n        console.log(data.error);\n      }\n    })\n  }\n\n  const copySheet = () => {\n    if (!Sefaria._uid) {\n      toggleSignUpModal();\n    } else if (copyText.en === copyState.copy.en) {\n      setCopyText(copyState.copying);\n      filterAndSaveCopiedSheetData(sheet);\n    } else if (copyText.en === copyState.copied.en) {\n      window.location.href = `/sheets/${copiedSheetId}`\n      // TODO: open copied sheet\n    }\n  }\n\n  const googleDriveExport = () => {\n    // $(\"#overlay\").show();\n    // sjs.alert.message('<span class=\"int-en\">Syncing with Google Docs...</span><span class=\"int-he\">מייצא לגוגל דרייב...</span>');\n    if (!Sefaria._uid) {\n      toggleSignUpModal();\n    }\n    else if (googleDriveText.en === googleDriveState.exportComplete.en) {\n      Sefaria.util.openInNewTab(googleDriveLink);\n    } else {\n      Sefaria.track.sheets(\"Export to Google Docs\");\n      setGoogleDriveText(googleDriveState.exporting)\n    }\n  }\n  return (<div>\n    <ToolsButton en={copyText.en} he={copyText.he} secondaryEn={copyText.secondaryEn} secondaryHe={copyText.secondaryHe} image=\"copy.png\" greyColor={!!copyText.secondaryEn || copyText.greyColor} onClick={() => copySheet()} />\n    {/* <ToolsButton en=\"Add to Collection\" he=\"תרגומים\" image=\"add-to-collection.svg\" onClick={() => toggleCollectionsModal()} /> */}\n    <ToolsButton en=\"Print\" he=\"הדפסה\" image=\"print.svg\" onClick={() => window.print()} />\n    <ToolsButton en={googleDriveText.en} he={googleDriveText.he} greyColor={!!googleDriveText.secondaryEn || googleDriveText.greyColor} secondaryEn={googleDriveText.secondaryEn} secondaryHe={googleDriveText.secondaryHe} image=\"googledrive.svg\" onClick={() => googleDriveExport()} />\n    {\n      Sefaria._siteSettings.TORAH_SPECIFIC && Sefaria._uid && (\n            sheet.owner === Sefaria._uid ||\n            sheet.options.collaboration == \"anyone-can-edit\"\n        ) ?\n      <ToolsButton en=\"Divine Name\" he=\"שמות קודש\" image=\"tools-translate.svg\" onClick={() => setConnectionsMode(\"DivineName\")} /> : null}\n\n  </div>\n  )\n}\nclass SheetNodeConnectionTools extends Component {\n  // A list of Resources in addition to connections\n  render() {\n    return (<div className=\"toolButtonsList\">\n      {this.props.multiPanel ?\n        <ToolsButton en=\"Other Text\" he=\"טקסט נוסף\" icon=\"search\" onClick={this.props.openComparePanel} />\n        : null}\n      <ToolsButton en=\"Sheets\" he=\"דפי מקורות\" image=\"sheet.svg\" urlConnectionsMode=\"Sheets\" count={this.props.sheetsCount} onClick={() => this.props.setConnectionsMode(\"Sheets\")} />\n      <ToolsButton en=\"Feedback\" he=\"משוב\" icon=\"comment\" onClick={() => this.props.setConnectionsMode(\"Feedback\")} />\n    </div>);\n  }\n}\nSheetNodeConnectionTools.propTypes = {\n  multiPanel: PropTypes.bool.isRequired,\n  setConnectionsMode: PropTypes.func.isRequired,\n  openComparePanel: PropTypes.func.isRequired,\n};\n\n\nclass ConnectionsSummary extends Component {\n  // A summary of available connections on `srefs`.\n  // If `category` is present, shows a single category, otherwise all categories.\n  // If `showBooks`, show specific text counts beneath each category.\n\n  render() {\n    const collapsedTopLevelLimit = 4;\n    const refs = this.props.srefs;\n    const excludedSheet = this.props.nodeRef ? this.props.nodeRef.split(\".\")[0] : null;\n    const oref = Sefaria.ref(refs[0]);\n    const isTopLevel = !this.props.category;\n    const baseCat = oref ? oref[\"categories\"][0] : null;\n    let summary = Sefaria.linkSummary(refs, excludedSheet);\n    let essaySummary = [];\n\n    if (!summary) { return null; }\n\n    if (this.props.category === \"Commentary\") {\n      // Show Quoting Commentary together with Commentary\n      summary = summary.filter(cat => (cat.category.indexOf(\"Commentary\") !== -1));\n      const order = [\"Commentary\", \"Quoting Commentary\"];\n      summary.sort((a, b) => {\n        const ia = order.indexOf(a.category);\n        const ib = order.indexOf(b.category);\n        return ia - ib;\n      });\n\n    } else if (this.props.category) {\n      // Single Category Summary\n      summary = summary.filter(function (cat) { return cat.category === this.props.category; }.bind(this));\n      if (summary.length === 0) {\n        summary = [{ category: this.props.category, books: [], count: 0, hasEnglish: false }];\n      }\n\n    } else if (isTopLevel) {\n      // Hide Quoting Commentary from the top level view\n      let topSummary = summary.filter(cat => (cat.category.indexOf(\"Commentary\") < 1));\n      // But include Quoting Commentary counts and english mark in top level Commentary section\n      let subCommentaryCats = summary.filter(cat => (cat.category.indexOf(\"Commentary\") > 1));\n      if (subCommentaryCats.length && summary[0].category !== \"Commentary\") {\n        // handle case of having Modern/Quoting Commentary, but no Commentary\n        topSummary = [{ category: \"Commentary\", count: 0, books: [], hasEnglish: false }].concat(topSummary);\n      } else if (subCommentaryCats.length && summary[0].category === \"Commentary\") {\n        // If Commentary object is present and we have sub commentary counts to add, replace the object\n        // so we can add to the count without changing the underlying object.\n        topSummary = [{ category: \"Commentary\", count: summary[0].count, books: [], hasEnglish: summary[0].hasEnglish }].concat(topSummary.slice(1))\n      }\n      subCommentaryCats.map(cat => {\n        topSummary[0].count += cat.count;\n        topSummary[0].hasEnglish = cat.hasEnglish || summary[0].hasEnglish;\n      });\n\n      summary = topSummary;\n      let essayLinks = this.props.currObjectVersions ? Sefaria.essayLinks(refs, this.props.currObjectVersions) : [];\n      if (essayLinks.length > 0) {\n        essayLinks.forEach(function (link, i) {\n          const essayTextFilter = <TextFilter\n              setConnectionsMode={this.props.setConnectionsMode}\n              srefs={this.props.srefs}\n              key={i}\n              book={link.index_title}\n              heBook={link.heTitle}\n              hasEnglish={link.sourceHasEn}\n              category={link.category}\n              updateRecent={true}\n              setFilter={this.props.setFilter}\n              hideCounts={true}\n              enDisplayText={link.displayedText[\"en\"]}\n              heDisplayText={link.displayedText[\"he\"]}\n              filterSuffix={\"Essay\"}\n              on={false}/>;\n          essaySummary.push(essayTextFilter);\n        }.bind(this));\n        essaySummary = <div className={\"essayGroup\"}>{essaySummary}</div>;\n      }\n    }\n    let connectionsSummary = summary.map(function (cat, i) {\n      const books = this.props.contentLang === \"hebrew\"\n        ? cat.books.concat().sort(Sefaria.linkSummaryBookSortHebrew.bind(null, baseCat))\n        : cat.books;\n      return (\n        <CategoryFilter\n          srefs={this.props.srefs}\n          category={cat.category}\n          heCategory={Sefaria.hebrewTerm(cat.category)}\n          showBooks={this.props.showBooks}\n          count={cat.count}\n          books={books}\n          hasEnglish={cat.hasEnglish}\n          filter={this.props.filter}\n          updateRecent={true}\n          setFilter={this.props.setFilter}\n          setConnectionsCategory={this.props.setConnectionsCategory}\n          on={Sefaria.util.inArray(cat.category, this.props.filter) !== -1}\n          key={cat.category} />\n      );\n    }.bind(this));\n\n    let summaryToggle = null;\n    if (isTopLevel && connectionsSummary.length > collapsedTopLevelLimit) {\n      if (this.props.collapsed) {\n        connectionsSummary = connectionsSummary.slice(0, collapsedTopLevelLimit) //get the first x items\n        summaryToggle = (\n          <ToolsButton en=\"More\" he=\"עוד\" image=\"more.svg\" onClick={this.props.toggleTopLevelCollapsed} control=\"interface\" typeface=\"system\" />\n        );\n      } else {\n        summaryToggle = (\n          <ToolsButton en=\"See Less\" he=\"פחות\" image=\"less.svg\" onClick={this.props.toggleTopLevelCollapsed} control=\"interface\" typeface=\"system\" />\n        )\n      }\n    }\n\n    return (\n      <div>\n        {isTopLevel ? essaySummary : null}\n        {connectionsSummary}\n        {summaryToggle}\n      </div>\n    );\n  }\n}\nConnectionsSummary.propTypes = {\n  srefs: PropTypes.array.isRequired, // an array of ref strings\n  category: PropTypes.string, // if present show connections for category, if null show category summary\n  filter: PropTypes.array,\n  fullPanel: PropTypes.bool,\n  multiPanel: PropTypes.bool,\n  contentLang: PropTypes.string,\n  showBooks: PropTypes.bool,\n  setConnectionsMode: PropTypes.func,\n  setFilter: PropTypes.func,\n  setConnectionsCategory: PropTypes.func.isRequired,\n  currObjectVersions: PropTypes.object\n};\n\n\nclass MySheetsList extends Component {\n  // List of my sheets for a ref in the Sidebar\n  render() {\n    const sheets = Sefaria.sheets.userSheetsByRef(this.props.srefs);\n    let content = sheets.length ? sheets.filter(sheet => {\n      // Don't show sheets as connections to themselves\n      return sheet.id !== this.props.connectedSheet;\n    }).filter(\n      // filters out duplicate sheets by sheet ID number\n      (sheet, index, self) =>\n        index === self.findIndex((s) => (\n          s.id === sheet.id\n        ))\n    ).map(sheet => {\n      return (<SheetListing sheet={sheet} key={sheet.sheetUrl} handleSheetClick={this.props.handleSheetClick} connectedRefs={this.props.srefs} />)\n    }, this) : null;\n    return content && content.length ? (<div className=\"sheetList\">{content}</div>) : null;\n  }\n}\nMySheetsList.propTypes = {\n  srefs: PropTypes.array.isRequired,\n  connectedSheet: PropTypes.string,\n};\n\n\nclass PublicSheetsList extends Component {\n  // List of public sheets for a ref in the sidebar\n  render() {\n    const sheets = Sefaria.sheets.sheetsByRef(this.props.srefs);\n    let content = sheets.length ? sheets.filter(sheet => {\n      // My sheets are shown already in MySheetList\n      return sheet.owner !== Sefaria._uid && sheet.id !== this.props.connectedSheet;\n    }).sort((a, b) => {\n      // First sort by language / interface language\n      let aHe, bHe;\n      [aHe, bHe] = [a.title, b.title].map(Sefaria.hebrew.isHebrew);\n      if (aHe !== bHe) { return (bHe ? -1 : 1) * (Sefaria.interfaceLang === \"hebrew\" ? -1 : 1); }\n      // Then by number of views\n      return b.views - a.views;\n    }).map(sheet => {\n      return (<SheetListing sheet={sheet} key={sheet.sheetUrl} handleSheetClick={this.props.handleSheetClick} connectedRefs={this.props.srefs} />)\n    }, this) : null;\n    return content && content.length ? (<div className=\"sheetList\">{content}</div>) : null;\n  }\n}\nPublicSheetsList.propTypes = {\n  srefs: PropTypes.array.isRequired,\n  connectedSheet: PropTypes.string,\n};\n\n\nconst TopicList = ({ masterPanelMode, srefs, interfaceLang, contentLang }) => {\n  // segment ref topicList can be undefined even if loaded\n  // but section ref topicList is null when loading and array when loaded\n  const [topics, setTopics] = useState(Sefaria.topicsByRef(srefs));\n  const updateTopics = function() {\n    setTopics(Sefaria.topicsByRef(srefs));\n  }\n  return (\n    <div className={`topicList ${contentLang === 'hebrew' ? 'topicsHe' : 'topicsEn'}`}>\n      {Sefaria.is_moderator && masterPanelMode === \"Text\" ? <TopicSearch contentLang={contentLang} contextSelector=\".topicList\"\n                                                                         srefs={srefs}\n                                                                         update={updateTopics}\n                                                                         createNewTopicStr={Sefaria.translation(contentLang, \"Create a new topic: \")}/>\n                                                                         : null}\n      {(!topics || !topics.length) ? (\n        <div className=\"webpageList empty\">\n          <div className=\"loadingMessage sans-serif\">\n            <ContentText text={{ en: \"No known Topics Here.\", he: \"אין קשרים ידועים.\" }} />\n          </div>\n        </div>\n      ) : topics.map(\n          (topic, i) => (\n          <TopicListItem\n            key={topic.topic}\n            id={i}\n            topic={topic}\n            interfaceLang={interfaceLang}\n            srefs={srefs}\n          />\n        )\n      )}\n    </div>\n  );\n}\n\nconst TopicListItem = ({ id, topic, interfaceLang, srefs }) => {\n  let dataSourceText = '';\n  const langKey = interfaceLang === 'english' ? 'en' : 'he';\n  if (!!topic.dataSources && Object.values(topic.dataSources).length > 0) {\n    dataSourceText = `${Sefaria._('This topic is connected to ')}\"${Sefaria._r(srefs[0])}\" ${Sefaria._('by')} ${Object.values(topic.dataSources).map(d => d[langKey]).join(' & ')}.`;\n  }\n  return (\n      <a href={`/topics/${topic.topic}`} className=\"topicButton\" target=\"_blank\" id={`topicItem-${id}`}>\n      <span className=\"topicButtonTitle\">\n        <span className=\"contentText\">\n          <span className=\"en\">{topic.title.en}</span>\n          <span className=\"he\">{topic.title.he}</span>\n        </span>\n        <ToolTipped altText={dataSourceText} classes={\"saveButton tooltip-toggle three-dots-button\"}>\n          <img src=\"/static/img/three-dots.svg\" alt={dataSourceText} />\n        </ToolTipped>\n      </span>\n      {\n        topic.description && (topic.description.en || topic.description.he) ? (\n\n          <span className=\"smallText\">\n            <ContentText markdown={{en: topic.description.en, he: topic.description.he}} />\n          </span>\n        ) : null\n      }\n    </a>\n  );\n}\n\nclass WebPagesList extends Component {\n  // List of web pages for a ref in the sidebar\n  setFilter(filter) {\n    this.props.setWebPagesFilter(filter);\n  }\n  webSitesSort(a, b) {\n    // First sort by site language / interface language\n    let aHe, bHe;\n    [aHe, bHe] = [a.name, b.name].map(Sefaria.hebrew.isHebrew);\n    if (aHe !== bHe) { return (bHe ? -1 : 1) * (Sefaria.interfaceLang === \"hebrew\" ? -1 : 1); }\n    // Then by number of pages\n    return b.count - a.count;\n  }\n  render() {\n    let webpages = Sefaria.webPagesByRef(this.props.srefs)\n    let content = [];\n\n    if (!this.props.filter) {\n      let sites = {};\n      webpages.map(page => {\n        if (page.siteName in sites) {\n          sites[page.siteName].count++;\n        } else {\n          sites[page.siteName] = { name: page.siteName, faviconUrl: page.favicon, count: 1 };\n        }\n      });\n      sites = Object.values(sites).sort(this.webSitesSort);\n      content = sites.map(site => {\n        return (<div className=\"website\" role=\"button\" tabindex=\"0\" onKeyUp={(event) => event.key==='Enter' && this.setFilter(site.name)} onClick={() => this.setFilter(site.name)} key={site.name}>\n          <img className=\"icon\" src={site.faviconUrl} />\n          <span className=\"siteName\">{site.name} <span className=\"connectionsCount\">({site.count})</span></span>\n        </div>);\n      });\n    } else {\n      webpages = webpages.filter(page => this.props.filter == \"all\" || page.siteName == this.props.filter);\n      content = webpages.map((webpage, i) => {\n        return (<WebPage {...webpage} key={i} />);\n      });\n    }\n\n    if (!content.length) {\n      const filterName = this.props.filter !== \"all\" ? this.props.filter : null;\n      const en = \"No web pages known\" + (filterName ? \" from \" + filterName : \"\") + \" here.\";\n      const he = \"אין דפי אינטרנט ידועים\" + (filterName ? \" מ\" + filterName : \"\") + \".\";\n      return <div className=\"webpageList empty\">\n        <LoadingMessage message={en} heMessage={he} />\n      </div>;\n    }\n\n    const linkerMessage = Sefaria._siteSettings.TORAH_SPECIFIC ?\n      <div className=\"webpagesLinkerMessage sans-serif\">\n        <InterfaceText>Sites that are listed here use the</InterfaceText> <a href=\"/linker\"><InterfaceText>Sefaria Linker</InterfaceText></a>\n      </div> : null;\n\n    return <div className=\"webpageList\">\n      {content}\n      {linkerMessage}\n    </div>;\n\n  }\n}\nWebPagesList.propTypes = {\n  srefs: PropTypes.array.isRequired,\n};\n\nconst AdvancedToolsList = ({srefs, canEditText, currVersions, setConnectionsMode, masterPanelLanguage, toggleSignUpModal}) => {\n    const editText = canEditText ? function () {\n      let refString = srefs[0];\n      let currentPath = Sefaria.util.currentPath();\n      let currentLangParam;\n      const langCode = masterPanelLanguage.slice(0, 2);\n      if (currVersions[langCode]) {\n        refString += \"/\" + encodeURIComponent(langCode) + \"/\" + encodeURIComponent(currVersions[langCode]);\n      }\n      let path = \"/edit/\" + refString;\n      let nextParam = \"?next=\" + encodeURIComponent(currentPath);\n      path += nextParam;\n      //console.log(path);\n      Sefaria.track.event(\"Tools\", \"Edit Text Click\", refString,\n        { hitCallback: () => window.location = path }\n      );\n    } : null;\n\n    const addTranslation = function () {\n      if (!Sefaria._uid) { toggleSignUpModal() }\n      else {\n        let nextParam = \"?next=\" + Sefaria.util.currentPath();\n        Sefaria.track.event(\"Tools\", \"Add Translation Click\", srefs[0],\n          { hitCallback: () => { window.location = \"/translate/\" + srefs[0] + nextParam } }\n        );\n      }\n    };\n\n    return (\n      <div>\n        { Sefaria._siteSettings.TORAH_SPECIFIC ? <ToolsButton en=\"Add Translation\" he=\"הוספת תרגום\" image=\"tools-translate.svg\" onClick={addTranslation} /> : null}\n        <ToolsButton en=\"Add Connection\" he=\"הוספת קישור לטקסט אחר\" image=\"tools-add-connection.svg\" onClick={() => !Sefaria._uid ? toggleSignUpModal() : setConnectionsMode(\"Add Connection\")} />\n        {editText ? (<ToolsButton en=\"Edit Text\" he=\"עריכת טקסט\" image=\"tools-edit-text.svg\" onClick={editText} />) : null}\n      </div>\n    );\n}\nAdvancedToolsList.propTypes = {\n  srefs:                PropTypes.array.isRequired,  // an array of ref strings\n  canEditText:          PropTypes.bool,\n  currVersions:         PropTypes.object,\n  setConnectionsMode:   PropTypes.func.isRequired,\n  masterPanelLanguage:  PropTypes.oneOf([\"english\", \"hebrew\", \"bilingual\"]),\n  toggleSignUpModal:    PropTypes.func,\n};\n\n\nconst ToolsButton = ({ en, he, onClick, urlConnectionsMode = null, icon, image,\n                       count = null, control = \"interface\", typeface = \"system\", alwaysShow = false,\n                       secondaryHe, secondaryEn, greyColor=false }) => {\n  const clickHandler = (e) => {\n    e.preventDefault();\n    gtag(\"event\", \"feature_clicked\", {name: `tools_button_${en}`})\n    onClick();\n  }\n  let iconElem = null;\n  if (icon) {\n    let iconName = \"fa-\" + icon;\n    let classes = { fa: 1, toolsButtonIcon: 1 };\n    classes[iconName] = 1;\n    iconElem = (<i className={classNames(classes)} />)\n  } else if (image) {\n    iconElem = (<img src={\"/static/img/\" + image} className=\"toolsButtonIcon\" alt=\"\" />);\n  }\n  //We only want to generate reloadable urls for states where we actually respond to said url. See ReaderApp.makeHistoryState()- sidebarModes.\n  const url = urlConnectionsMode ? Sefaria.util.replaceUrlParam(\"with\", urlConnectionsMode) : null;\n  const nameClass = en.camelize();\n  const wrapperClasses = classNames({ toolsButton: 1, [nameClass]: 1, [control + \"Control\"]: 1, [typeface + \"Typeface\"]: 1, noselect: 1, greyColor: greyColor })\n  return (\n    count == null || count > 0 || alwaysShow ?\n    <div className=\"toolsButtonContainer\">\n      <a href={url} className={wrapperClasses} data-name={en} onClick={clickHandler}>\n        {iconElem}\n        <span className=\"toolsButtonText\">\n          {control == \"interface\" ? <InterfaceText text={{ en: en, he: he }} /> : <ContentText text={{ en: en, he: he }} />}\n          {count ? (<span className=\"connectionsCount\">({count})</span>) : null}\n        </span>\n      </a>\n      {secondaryEn && secondaryHe ? <a className=\"toolsSecondaryButton\" onClick={clickHandler}><InterfaceText text={{ en: secondaryEn, he: secondaryHe }} /> <img className=\"linkArrow\" src={`/static/img/${Sefaria.interfaceLang === \"hebrew\" ? \"arrow-left-bold\" : \"arrow-right-bold\"}.svg`} aria-hidden=\"true\"></img></a> : null}\n      </div>\n      : null\n  );\n}\nToolsButton.propTypes = {\n  en: PropTypes.string.isRequired,\n  he: PropTypes.string.isRequired,\n  icon: PropTypes.string,\n  image: PropTypes.string,\n  count: PropTypes.number,\n  onClick: PropTypes.func,\n  greyColor: PropTypes.bool,\n  secondaryEn: PropTypes.string,\n  secondaryHe: PropTypes.string\n};\n\n\nclass ShareBox extends Component {\n  constructor(props) {\n    super(props);\n    if (this.props.masterPanelSheetId) {\n      const sheet = Sefaria.sheets.loadSheetByID(this.props.masterPanelSheetId);\n      this.state = {\n        sheet: sheet,\n        shareValue: sheet.options.collaboration ? sheet.options.collaboration : \"none\"\n      }\n    }\n    else {\n      this.state = {\n        sheet: null,\n        shareValue: null\n      }\n    }\n\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (this.state.shareValue != prevState.shareValue) {\n      new Promise((resolve, reject) => Sefaria.sheets.loadSheetByID(this.props.masterPanelSheetId, sheet => resolve(sheet))).then(updatedSheet => {\n        updatedSheet.options.collaboration = this.state.shareValue;\n        updatedSheet.lastModified = updatedSheet.dateModified\n        delete updatedSheet._id;\n        delete updatedSheet.error;\n        const postJSON = JSON.stringify(updatedSheet);\n        this.postSheet(postJSON)\n      })\n    }\n  }\n  focusInput() {\n    $(ReactDOM.findDOMNode(this)).find(\"input\").select();\n  }\n\n  postSheet(postJSON) {\n    $.post(\"/api/sheets/\", { \"json\": postJSON }, (data) => {\n      if (data.id) {\n        console.log('saved...')\n        Sefaria.sheets._loadSheetByID[data.id] = data;\n      } else {\n        console.log(data);\n      }\n    })\n  }\n  updateShareOptions(event) {\n    this.setState({ shareValue: event.target.value });\n  }\n  copySheetLink() {\n    const copyText = document.getElementById(\"sheetShareLink\");\n    copyText.select();\n    copyText.setSelectionRange(0, 99999); // For mobile devices\n\n    if (!navigator.clipboard) { // fallback if navigator.clipboard does not work\n      document.execCommand('copy');\n    } else {\n      navigator.clipboard.writeText(copyText.value);\n    }\n  }\n  render() {\n    const url = this.props.url;\n\n    const shareFacebook = function () {\n      Sefaria.util.openInNewTab(\"https://www.facebook.com/sharer/sharer.php?u=\" + encodeURIComponent(url));\n    };\n    const shareTwitter = function () {\n      Sefaria.util.openInNewTab(\"https://twitter.com/share?url=\" + encodeURIComponent(url));\n    };\n    const shareEmail = function () {\n      Sefaria.util.openInNewTab(\"mailto:?&subject=Text on Sefaria&body=\" + url);\n    };\n    const classes = classNames({ textList: 1, fullPanel: this.props.fullPanel });\n    return (\n      <div>\n        <ConnectionsPanelSection title=\"Share Link\">\n          <div className=\"shareInputBox\">\n            <button tabindex=\"0\" className=\"shareInputButton\" aria-label=\"Copy Link to Sheet\" onClick={this.copySheetLink.bind(this)}><img src=\"/static/icons/copy.svg\" className=\"copyLinkIcon\" aria-hidden=\"true\"></img></button>\n            <input tabindex=\"0\" className=\"shareInput\" id=\"sheetShareLink\" value={this.props.url} />\n          </div>\n          {this.state.sheet && Sefaria._uid === this.state.sheet.owner ?\n            <div className=\"shareSettingsBox\">\n              <InterfaceText>People with this link can</InterfaceText>\n              <select\n                className=\"shareDropdown\"\n                name=\"Share\"\n                onChange={this.updateShareOptions.bind(this)}\n                value={this.state.shareValue}>\n                <option value=\"none\">{Sefaria._(\"View\", \"Sheet Share\")}</option>\n                <option value=\"anyone-can-add\">{Sefaria._(\"Add\", \"Sheet Share\")}</option>\n                <option value=\"anyone-can-edit\">{Sefaria._(\"Edit\", \"Sheet Share\")}</option>\n              </select>\n            </div> : null}\n        </ConnectionsPanelSection>\n        <ConnectionsPanelSection title=\"More Options\">\n          <ToolsButton en=\"Share on Facebook\" he=\"פייסבוק\" icon=\"facebook-official\" onClick={shareFacebook} />\n          <ToolsButton en=\"Share on Twitter\" he=\"טוויטר\" icon=\"twitter\" onClick={shareTwitter} />\n          <ToolsButton en=\"Share by Email\" he=\"אימייל\" icon=\"envelope-o\" onClick={shareEmail} />\n        </ConnectionsPanelSection>\n      </div>);\n  }\n}\nShareBox.propTypes = {\n  url: PropTypes.string.isRequired,\n  setConnectionsMode: PropTypes.func.isRequired,\n  closePanel: PropTypes.func.isRequired,\n  fullPanel: PropTypes.bool,\n  masterPanelSheetId: PropTypes.number\n};\n\n\nclass AddNoteBox extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      isPrivate: !props.noteIsPublic,\n      saving: false\n    };\n  }\n  componentDidMount() {\n    this.focusNoteText();\n  }\n  focusNoteText() {\n    $(ReactDOM.findDOMNode(this)).find(\".noteText\").focus();\n  }\n  saveNote() {\n    const text = $(ReactDOM.findDOMNode(this)).find(\".noteText\").val();\n    if (!text) { return; }\n    let note = {\n      text: text,\n      refs: this.props.srefs,\n      type: \"note\",\n      public: !this.state.isPrivate\n    };\n\n    if (this.props.noteId) { note._id = this.props.noteId; }\n    const postData = { json: JSON.stringify(note) };\n    const url = \"/api/notes/\";\n    $.post(url, postData, function (data) {\n      if (data.error) {\n        alert(data.error);\n      } else if (data) {\n        if (this.props.noteId) {\n          Sefaria.clearPrivateNotes(data);\n        } else {\n          Sefaria.addPrivateNote(data);\n        }\n        Sefaria.track.event(\"Tools\", \"Note Save \" + ((this.state.isPrivate) ? \"Private\" : \"Public\"), this.props.srefs.join(\"/\"));\n        $(ReactDOM.findDOMNode(this)).find(\".noteText\").val(\"\");\n        this.props.onSave();\n      } else {\n        alert(Sefaria._(\"Sorry, there was a problem saving your note.\"));\n      }\n    }.bind(this)).fail(function (xhr, textStatus, errorThrown) {\n      alert(Sefaria._(\"Unfortunately, there was an error saving this note. Please try again or try reloading this page.\"));\n    });\n    this.setState({ saving: true });\n  }\n  setPrivate() {\n    this.setState({ isPrivate: true });\n  }\n  setPublic() {\n    this.setState({ isPrivate: false });\n  }\n  deleteNote() {\n    alert(Sefaria._(\"Something went wrong (that's all I know).\"));\n    if (!confirm(Sefaria._(\"Are you sure you want to delete this note?\"))) { return; }\n    Sefaria.deleteNote(this.props.noteId).then(this.props.onDelete);\n  }\n  render() {\n    if (!Sefaria._uid) {\n      return (<div className=\"addNoteBox\"><LoginPrompt /></div>);\n    }\n    //const privateClasses = classNames({ notePrivateButton: 1, active: this.state.isPrivate });\n    //const publicClasses = classNames({ notePublicButton: 1, active: !this.state.isPrivate });\n    return (\n      <div className=\"addNoteBox\">\n        <textarea className=\"noteText\" placeholder={Sefaria._(\"Write a note...\")} defaultValue={this.props.noteText}></textarea>\n        <div className=\"button fillWidth\" onClick={this.saveNote}>\n          <span className=\"int-en\">{this.props.noteId ? \"Save\" : \"Add Note\"}</span>\n          <span className=\"int-he\">{this.props.noteId ? \"שמירה\" : \"הוספת הערה\"}</span>\n        </div>\n        {this.props.noteId ?\n          <div className=\"button white fillWidth\" onClick={this.props.onCancel}>\n            <span className=\"int-en\">Cancel</span>\n            <span className=\"int-he\">בטל</span>\n          </div> : null}\n        {this.props.noteId ?\n          (<div className=\"deleteNote\" onClick={this.deleteNote}>\n            <span className=\"int-en\">Delete Note</span>\n            <span className=\"int-he\">מחיקת הערה</span>\n          </div>) : null}\n      </div>);\n\n    /* Leaving out public / private toggle until public notes are reintroduced\n    <div className=\"noteSharingToggle\">\n      <div className={privateClasses} onClick={this.setPrivate}>\n        <span className=\"int-en\"><i className=\"fa fa-lock\"></i> Private</span>\n        <span className=\"int-he\"><i className=\"fa fa-lock\"></i>רשומה פרטית</span>\n      </div>\n      <div className={publicClasses} onClick={this.setPublic}>\n        <span className=\"int-en\">Public</span>\n        <span className=\"int-he\">רשומה כללית</span>\n      </div>\n    </div>\n    */\n  }\n}\nAddNoteBox.propTypes = {\n  srefs: PropTypes.array.isRequired,\n  onSave: PropTypes.func.isRequired,\n  onCancel: PropTypes.func.isRequired,\n  onDelete: PropTypes.func,\n  noteId: PropTypes.string,\n  noteText: PropTypes.string,\n  noteTitle: PropTypes.string,\n  noteIsPublic: PropTypes.bool\n};\n\n\nclass MyNotes extends Component {\n  componentDidMount() {\n    this.loadNotes();\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (!prevProps.srefs.compare(this.props.srefs)) {\n      this.loadNotes();\n    }\n  }\n  loadNotes() {\n    // Rerender this component when privateNotes arrive.\n    Sefaria.privateNotes(this.props.srefs, this.rerender);\n  }\n  rerender() {\n    this.forceUpdate();\n  }\n  render() {\n    const myNotesData = Sefaria.privateNotes(this.props.srefs);\n    const myNotes = myNotesData ? myNotesData.map(function (note) {\n      let editNote = function () {\n        this.props.editNote(note);\n      }.bind(this);\n      return (<Note\n        text={note.text}\n        isPrivate={!note.public}\n        isMyNote={true}\n        ownerName={note.ownerName}\n        ownerProfileUrl={note.ownerProfileUrl}\n        ownerImageUrl={note.ownerImageUrl}\n        editNote={editNote}\n        key={note._id} />);\n    }.bind(this)) : null;\n\n    return myNotes ? (\n      <div className=\"noteList myNoteList\">\n        {myNotes}\n      </div>) : null;\n  }\n}\nMyNotes.propTypes = {\n  srefs: PropTypes.array.isRequired,\n  editNote: PropTypes.func.isRequired,\n}\n\n\nclass PublicNotes extends Component {\n  // List of Publc notes a ref or range or refs.\n  render() {\n    const notes = Sefaria.notes(this.props.srefs);\n    const content = notes ? notes.filter(function (note) {\n      // Exlude my notes, shown already in MyNotes.\n      return note.owner !== Sefaria._uid;\n    }).map(function (note) {\n      return (<Note\n        text={note.text}\n        ownerName={note.ownerName}\n        ownerProfileUrl={note.ownerProfileUrl}\n        ownerImageUrl={note.ownerImageUrl}\n        isPrivate={false}\n        key={note._id} />)\n    }) : null;\n\n    return content && content.length ? (<div className=\"noteList publicNoteList\">{content}</div>) : null;\n  }\n}\nPublicNotes.propTypes = {\n  srefs: PropTypes.array.isRequired,\n};\n\n\nclass AddConnectionBox extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      refs: this.props.srefs,\n      heRefs: this.getHeRefs(this.props.srefs),\n      type: \"\",\n    };\n  }\n  componentWillReceiveProps(nextProps) {\n    if (!this.props.srefs.compare(nextProps.srefs)) {\n      this.setState({\n        refs: nextProps.srefs,\n        heRefs: this.getHeRefs(nextProps.srefs),\n      })\n    }\n  }\n  getHeRefs(refs) {\n    let heRefs = refs.map(ref => {\n      let oRef = Sefaria.ref(ref);\n      if (!oRef) {\n        // If a range was selected, the ref cache may not have a Hebrew ref for us, so ask the API\n        Sefaria.getRef(ref).then(this.setHeRefs);\n        return \"...\";\n      }\n      return oRef.heRef;\n    });\n    return heRefs;\n  }\n  setHeRefs() {\n    this.setState({ heRefs: this.getHeRefs(this.state.refs) });\n  }\n  setType(event) {\n    this.setState({ type: event.target.value });\n  }\n  addConnection() {\n    let connection = {\n      refs: this.props.srefs,\n      type: this.state.type,\n    };\n    let postData = { json: JSON.stringify(connection) };\n    const url = \"/api/links/\";\n    $.post(url, postData, function (data) {\n      if (data.error) {\n        alert(data.error);\n      } else {\n        Sefaria.track.event(\"Tools\", \"Add Connection\", this.props.srefs.join(\"/\"));\n        Sefaria.clearLinks();\n        this.props.onSave();\n      }\n    }.bind(this)).fail(function (xhr, textStatus, errorThrown) {\n      alert(\"Unfortunately, there was an error saving this connection. Please try again or try reloading this page.\");\n    });\n    this.setState({ saving: true });\n  }\n  render() {\n    const refs = this.state.refs;\n    const heRefs = this.state.heRefs;\n    return (<div className=\"addConnectionBox\">\n\n      {this.props.srefs.length == 1 ?\n        <div>\n          <span className=\"int-en\">Choose a text to connect.</span>\n          <span className=\"int-he\">בחר טקסט לקישור</span>\n\n          <div className=\"button fillWidth\" onClick={this.props.openComparePanel}>\n            <span className=\"int-en\">Browse</span>\n            <span className=\"int-he\">סייר</span>\n          </div>\n        </div>\n        : null}\n\n      {this.props.srefs.length > 2 ?\n        <div>\n          <span className=\"int-en\">We currently only understand connections between two texts.</span>\n          <span className=\"int-he\">ניתן לקשר רק בין 2 טקסטים</span>\n        </div>\n        : null}\n\n      {this.props.srefs.length == 2 ?\n        <div>\n\n          <div className=\"addConnectionSummary\">\n            <span className=\"en\">{refs[0]}<br />&<br />{refs[1]}</span>\n            <span className=\"he\">{heRefs[0]}<br />&<br />{heRefs[1]}</span>\n          </div>\n\n          <Dropdown\n            name=\"connectionType\"\n            options={[\n              { value: \"\", label: Sefaria._(\"None\", \"AddConnectionBox\") },\n              { value: \"commentary\", label: Sefaria._(\"Commentary\", \"AddConnectionBox\") },\n              { value: \"quotation\", label: Sefaria._(\"Quotation\", \"AddConnectionBox\") },\n              { value: \"midrash\", label: Sefaria._(\"Midrash\", \"AddConnectionBox\") },\n              { value: \"ein mishpat\", label: Sefaria._(\"Ein Mishpat / Ner Mitsvah\", \"AddConnectionBox\") },\n              { value: \"mesorat hashas\", label: Sefaria._(\"Mesorat HaShas\", \"AddConnectionBox\") },\n              { value: \"reference\", label: Sefaria._(\"Reference\", \"AddConnectionBox\") },\n              { value: \"related\", label: Sefaria._(\"Related Passage\", \"AddConnectionBox\") }\n            ]}\n            placeholder={Sefaria._(\"Select Type\", \"AddConnectionBox\")}\n            onChange={this.setType} />\n\n          <div className=\"button fillWidth\" onClick={this.addConnection}>\n            <span className=\"int-en\">Add Connection</span>\n            <span className=\"int-he\">הוסף קישור</span>\n          </div>\n\n        </div>\n        : null}\n\n    </div>);\n  }\n}\nAddConnectionBox.propTypes = {\n  srefs: PropTypes.array.isRequired,\n  onSave: PropTypes.func.isRequired,\n  onCancel: PropTypes.func.isRequired\n}\n\nfunction ManuscriptImageList(props) {\n  const content = props.manuscriptList.map(x => <ManuscriptImage\n    manuscript={x}\n    interfaceLang={props.interfaceLang}\n    contentLang={props.contentLang}\n    key={`${x['manuscript_slug']}-${x['page_id']}`}\n  />);\n  return <div className={\"manuscriptList\"}>{content}</div>\n}\n\nfunction ManuscriptImage(props) {\n  let manuscript = props.manuscript;\n  const [cls, description] = props.interfaceLang === 'hebrew'\n    ? ['int-he', 'he_description'] : ['int-en', 'description'];\n  return <div className={\"manuscript\"} >\n    <a href={manuscript['image_url']} target=\"_blank\">\n      <img className={\"manuscriptImage\"} src={manuscript[\"thumbnail_url\"]} alt={\"Ancient Manuscript\"} />\n    </a>\n    {\n      (props.interfaceLang === 'hebrew')\n        ? <p className={\"hebrew manuscriptCaptionHe\"}>{manuscript.manuscript.he_title}</p>\n        : <p className={\"english manuscriptCaption\"}>{manuscript.manuscript.title}</p>\n    }\n    <div className=\"meta\">\n      <InterfaceText>Location: </InterfaceText><span>{manuscript['page_id'].replace(/_/g, ' ')}</span><br />\n      {\n        manuscript.manuscript[description]\n          ? <span>\n            <InterfaceText text={{ en: 'Courtesy of: ', he: 'הודות ל' }} />\n            <span className={cls}>{manuscript.manuscript[description]}<br /></span>\n          </span>\n          : ''\n      }\n      {\n        manuscript.manuscript['license']\n          ? <div className=\"manuscriptLicense\">\n              <InterfaceText>License</InterfaceText>\n              <InterfaceText>:</InterfaceText>\n              <a className=\"manuscriptLicenseLink\" href={Sefaria.getLicenseMap()[manuscript.manuscript['license']]} target=\"_blank\">\n                {Sefaria._(manuscript.manuscript['license'])}\n              </a>\n          </div>\n          : ''\n      }\n      <InterfaceText text={{ en: 'Source: ', he: 'מקור: ' }} />\n      <a className=\"versionDetailsLink\" href={manuscript.manuscript['source']} target=\"_blank\">\n        { Sefaria.util.parseUrl(manuscript.manuscript['source']).host.replace(\"www.\", \"\") }\n      </a>\n    </div>\n\n\n  </div>\n}\n\nManuscriptImage.propTypes = {\n  manuscript: PropTypes.object.isRequired,\n  interfaceLang: PropTypes.string.isRequired,\n  contentLang: PropTypes.string.isRequired,\n};\n\nManuscriptImageList.propTypes = {\n  manuscriptList: PropTypes.array.isRequired,\n  interfaceLang: PropTypes.string.isRequired,\n  contentLang: PropTypes.string.isRequired,\n};\n\n\nconst ConnectionsPanelSection = ({ title, children }) => {\n  return (\n    <>\n      <div className=\"connectionPanelSectionHeader sans-serif\">\n        <span className=\"connectionPanelSectionHeaderInner\">\n          <InterfaceText context=\"ConnectionPanelSection\">{title}</InterfaceText>\n        </span>\n      </div>\n      {children}\n    </>\n  );\n}\n\nexport {\n  ConnectionsPanel,\n  ConnectionsPanelHeader,\n};\n","import React  from 'react';\nimport ReactDOM  from 'react-dom';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport Footer  from './Footer';\nimport ComparePanelHeader from './ComparePanelHeader';\nimport SearchResultList  from './SearchResultList';\nimport SearchFilters from './SearchFilters';\nimport Component from 'react-class';\nimport {\n  CategoryColorLine,\n  InterfaceText,\n  LoadingMessage,\n} from './Misc';\n\nclass SearchPage extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      totalResults: null,\n      mobileFiltersOpen: false,\n    };\n  }\n  render () {\n    const classes        = classNames({readerNavMenu: 1, compare: this.props.compare});\n    const isQueryHebrew  = Sefaria.hebrew.isHebrew(this.props.query);\n    return (\n      <div className={classes} key={this.props.query}>\n        {this.props.compare ?\n        <ComparePanelHeader\n          search={true}\n          showDisplaySettings={false}\n          onBack={this.props.close}\n          openSearch={this.props.onQueryChange} /> : null}\n\n        <div className=\"content searchContent\">\n          <div className=\"sidebarLayout\">\n            <div className=\"contentInner\">\n              \n              <div className=\"searchTopLine\">\n                <h1 className={classNames({\"hebrewQuery\": isQueryHebrew, \"englishQuery\": !isQueryHebrew})}>\n                  <InterfaceText>Results for</InterfaceText>&nbsp;\n                  <InterfaceText html={{en: \"&ldquo;\", he: \"&#1524;\"}} />\n                  { this.props.query }\n                  <InterfaceText html={{en: \"&rdquo;\", he: \"&#1524;\"}} />\n                </h1>\n                {this.state.totalResults?.getValue() > 0 ?\n                <div className=\"searchResultCount sans-serif\">\n                  <InterfaceText>{this.state.totalResults.asString()}</InterfaceText>&nbsp;\n                  <InterfaceText>Results</InterfaceText>\n                </div>\n                : null }\n              </div>\n\n              <SearchResultList\n                query={this.props.query}\n                tab={this.props.tab}\n                compare={this.props.compare}\n                textSearchState={this.props.textSearchState}\n                sheetSearchState={this.props.sheetSearchState}\n                onResultClick={this.props.onResultClick}\n                updateTab={this.props.updateTab}\n                updateAppliedOptionSort={this.props.updateAppliedOptionSort}\n                registerAvailableFilters={this.props.registerAvailableFilters}\n                updateTotalResults={n => this.setState({totalResults: n})}\n                openMobileFilters={() => this.setState({mobileFiltersOpen: true})}\n              />\n            </div>\n\n            {(Sefaria.multiPanel && !this.props.compare) || this.state.mobileFiltersOpen ?\n            <div className={Sefaria.multiPanel && !this.props.compare ? \"navSidebar\" : \"mobileSearchFilters\"}>\n              {this.state.totalResults?.getValue() > 0 ?\n              <SearchFilters\n                query={this.props.query}\n                searchState={this.props[`${this.props.tab}SearchState`]}\n                updateAppliedFilter={this.props.updateAppliedFilter.bind(null, this.props.tab, this.props[`${this.props.tab}SearchState`])}\n                updateAppliedOptionField={this.props.updateAppliedOptionField.bind(null, this.props.tab)}\n                updateAppliedOptionSort={this.props.updateAppliedOptionSort.bind(null, this.props.tab)}\n                closeMobileFilters={() => this.setState({mobileFiltersOpen: false})}\n                compare={this.props.compare}\n                type={this.props.tab} />\n              : null }\n            </div>\n            : null }\n          </div>\n          { this.props.panelsOpen === 1 ? <Footer /> : null }\n        </div>\n      </div>\n    );\n  }\n}\nSearchPage.propTypes = {\n  interfaceLang:            PropTypes.oneOf([\"english\", \"hebrew\"]),\n  query:                    PropTypes.string,\n  tab:                      PropTypes.oneOf([\"text\", \"sheet\"]),\n  textSearchState:          PropTypes.object,\n  sheetSearchState:         PropTypes.object,\n  settings:                 PropTypes.object,\n  panelsOpen:               PropTypes.number,\n  close:                    PropTypes.func,\n  onResultClick:            PropTypes.func,\n  onQueryChange:            PropTypes.func,\n  updateTab:                PropTypes.func,\n  updateAppliedFilter:      PropTypes.func,\n  updateAppliedOptionField: PropTypes.func,\n  updateAppliedOptionSort:  PropTypes.func,\n  registerAvailableFilters: PropTypes.func,\n};\n\n\nexport default SearchPage;","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n  return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n  var ctor,prot;\n\n  if (isObject(o) === false) return false;\n\n  // If has modified constructor\n  ctor = o.constructor;\n  if (ctor === undefined) return true;\n\n  // If has modified prototype\n  prot = ctor.prototype;\n  if (isObject(prot) === false) return false;\n\n  // If constructor does not have an Object-specific method\n  if (prot.hasOwnProperty('isPrototypeOf') === false) {\n    return false;\n  }\n\n  // Most likely a plain Object\n  return true;\n}\n\nexport { isPlainObject };\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n  return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n  var ctor,prot;\n\n  if (isObject(o) === false) return false;\n\n  // If has modified constructor\n  ctor = o.constructor;\n  if (ctor === undefined) return true;\n\n  // If has modified prototype\n  prot = ctor.prototype;\n  if (isObject(prot) === false) return false;\n\n  // If constructor does not have an Object-specific method\n  if (prot.hasOwnProperty('isPrototypeOf') === false) {\n    return false;\n  }\n\n  // Most likely a plain Object\n  return true;\n}\n\nexport { isPlainObject };\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){var r;return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!(null===(r=n.constructor)||void 0===r?void 0:r[L])||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)||(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.g&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:i,o:null,g:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.R,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=i[s];\"string\"!=typeof p&&\"number\"!=typeof p&&(p=\"\"+p),0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},N:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.R,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.R,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.R=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=N(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.g&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,R:void 0,t:n,k:this,C:!1,g:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.R.set(n,!0),t.o.set(n,r),t.R.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.R.set(n,!1):r.R.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.R=new Map,i(n.t,(function(r){n.R.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=N(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,g:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{F:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){F(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=N(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.R[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&(void 0!==t||r in n.o)||Number.isNaN(t)&&Number.isNaN(n.o[r])||(n.o[r]=t,n.R[r]=!0),!0},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.R[r]=!1,E(n),k(n)):delete n.R[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.O=B,this.D=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=N(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?g(c):O(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw g(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.D&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=R(e));var i=w(this),o=N(this,e,void 0);return o[Q].C=!0,O(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.D=n},i.setUseProxies=function(r){r&&!B&&n(20),this.O=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { isPlainObject } from 'is-plain-object';\nimport { produce, createDraft, finishDraft, isDraft } from 'immer';\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\nvar DIRTY_PATHS = new WeakMap();\nvar DIRTY_PATH_KEYS = new WeakMap();\nvar FLUSHING = new WeakMap();\nvar NORMALIZING = new WeakMap();\nvar PATH_REFS = new WeakMap();\nvar POINT_REFS = new WeakMap();\nvar RANGE_REFS = new WeakMap();\n\nfunction ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$9(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * Create a new Slate `Editor` object.\r\n */\n\nvar createEditor = () => {\n  var editor = {\n    children: [],\n    operations: [],\n    selection: null,\n    marks: null,\n    isInline: () => false,\n    isVoid: () => false,\n    onChange: () => {},\n    apply: op => {\n      for (var ref of Editor.pathRefs(editor)) {\n        PathRef.transform(ref, op);\n      }\n\n      for (var _ref of Editor.pointRefs(editor)) {\n        PointRef.transform(_ref, op);\n      }\n\n      for (var _ref2 of Editor.rangeRefs(editor)) {\n        RangeRef.transform(_ref2, op);\n      }\n\n      var oldDirtyPaths = DIRTY_PATHS.get(editor) || [];\n      var oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || new Set();\n      var dirtyPaths;\n      var dirtyPathKeys;\n\n      var add = path => {\n        if (path) {\n          var key = path.join(',');\n\n          if (!dirtyPathKeys.has(key)) {\n            dirtyPathKeys.add(key);\n            dirtyPaths.push(path);\n          }\n        }\n      };\n\n      if (Path.operationCanTransformPath(op)) {\n        dirtyPaths = [];\n        dirtyPathKeys = new Set();\n\n        for (var path of oldDirtyPaths) {\n          var newPath = Path.transform(path, op);\n          add(newPath);\n        }\n      } else {\n        dirtyPaths = oldDirtyPaths;\n        dirtyPathKeys = oldDirtyPathKeys;\n      }\n\n      var newDirtyPaths = getDirtyPaths(op);\n\n      for (var _path of newDirtyPaths) {\n        add(_path);\n      }\n\n      DIRTY_PATHS.set(editor, dirtyPaths);\n      DIRTY_PATH_KEYS.set(editor, dirtyPathKeys);\n      Transforms.transform(editor, op);\n      editor.operations.push(op);\n      Editor.normalize(editor); // Clear any formats applied to the cursor if the selection changes.\n\n      if (op.type === 'set_selection') {\n        editor.marks = null;\n      }\n\n      if (!FLUSHING.get(editor)) {\n        FLUSHING.set(editor, true);\n        Promise.resolve().then(() => {\n          FLUSHING.set(editor, false);\n          editor.onChange();\n          editor.operations = [];\n        });\n      }\n    },\n    addMark: (key, value) => {\n      var {\n        selection\n      } = editor;\n\n      if (selection) {\n        if (Range.isExpanded(selection)) {\n          Transforms.setNodes(editor, {\n            [key]: value\n          }, {\n            match: Text.isText,\n            split: true\n          });\n        } else {\n          var marks = _objectSpread$9(_objectSpread$9({}, Editor.marks(editor) || {}), {}, {\n            [key]: value\n          });\n\n          editor.marks = marks;\n\n          if (!FLUSHING.get(editor)) {\n            editor.onChange();\n          }\n        }\n      }\n    },\n    deleteBackward: unit => {\n      var {\n        selection\n      } = editor;\n\n      if (selection && Range.isCollapsed(selection)) {\n        Transforms.delete(editor, {\n          unit,\n          reverse: true\n        });\n      }\n    },\n    deleteForward: unit => {\n      var {\n        selection\n      } = editor;\n\n      if (selection && Range.isCollapsed(selection)) {\n        Transforms.delete(editor, {\n          unit\n        });\n      }\n    },\n    deleteFragment: direction => {\n      var {\n        selection\n      } = editor;\n\n      if (selection && Range.isExpanded(selection)) {\n        Transforms.delete(editor, {\n          reverse: direction === 'backward'\n        });\n      }\n    },\n    getFragment: () => {\n      var {\n        selection\n      } = editor;\n\n      if (selection) {\n        return Node.fragment(editor, selection);\n      }\n\n      return [];\n    },\n    insertBreak: () => {\n      Transforms.splitNodes(editor, {\n        always: true\n      });\n    },\n    insertSoftBreak: () => {\n      Transforms.splitNodes(editor, {\n        always: true\n      });\n    },\n    insertFragment: fragment => {\n      Transforms.insertFragment(editor, fragment);\n    },\n    insertNode: node => {\n      Transforms.insertNodes(editor, node);\n    },\n    insertText: text => {\n      var {\n        selection,\n        marks\n      } = editor;\n\n      if (selection) {\n        if (marks) {\n          var node = _objectSpread$9({\n            text\n          }, marks);\n\n          Transforms.insertNodes(editor, node);\n        } else {\n          Transforms.insertText(editor, text);\n        }\n\n        editor.marks = null;\n      }\n    },\n    normalizeNode: entry => {\n      var [node, path] = entry; // There are no core normalizations for text nodes.\n\n      if (Text.isText(node)) {\n        return;\n      } // Ensure that block and inline nodes have at least one text child.\n\n\n      if (Element.isElement(node) && node.children.length === 0) {\n        var child = {\n          text: ''\n        };\n        Transforms.insertNodes(editor, child, {\n          at: path.concat(0),\n          voids: true\n        });\n        return;\n      } // Determine whether the node should have block or inline children.\n\n\n      var shouldHaveInlines = Editor.isEditor(node) ? false : Element.isElement(node) && (editor.isInline(node) || node.children.length === 0 || Text.isText(node.children[0]) || editor.isInline(node.children[0])); // Since we'll be applying operations while iterating, keep track of an\n      // index that accounts for any added/removed nodes.\n\n      var n = 0;\n\n      for (var i = 0; i < node.children.length; i++, n++) {\n        var currentNode = Node.get(editor, path);\n        if (Text.isText(currentNode)) continue;\n        var _child = node.children[i];\n        var prev = currentNode.children[n - 1];\n        var isLast = i === node.children.length - 1;\n        var isInlineOrText = Text.isText(_child) || Element.isElement(_child) && editor.isInline(_child); // Only allow block nodes in the top-level children and parent blocks\n        // that only contain block nodes. Similarly, only allow inline nodes in\n        // other inline nodes, or parent blocks that only contain inlines and\n        // text.\n\n        if (isInlineOrText !== shouldHaveInlines) {\n          Transforms.removeNodes(editor, {\n            at: path.concat(n),\n            voids: true\n          });\n          n--;\n        } else if (Element.isElement(_child)) {\n          // Ensure that inline nodes are surrounded by text nodes.\n          if (editor.isInline(_child)) {\n            if (prev == null || !Text.isText(prev)) {\n              var newChild = {\n                text: ''\n              };\n              Transforms.insertNodes(editor, newChild, {\n                at: path.concat(n),\n                voids: true\n              });\n              n++;\n            } else if (isLast) {\n              var _newChild = {\n                text: ''\n              };\n              Transforms.insertNodes(editor, _newChild, {\n                at: path.concat(n + 1),\n                voids: true\n              });\n              n++;\n            }\n          }\n        } else {\n          // Merge adjacent text nodes that are empty or match.\n          if (prev != null && Text.isText(prev)) {\n            if (Text.equals(_child, prev, {\n              loose: true\n            })) {\n              Transforms.mergeNodes(editor, {\n                at: path.concat(n),\n                voids: true\n              });\n              n--;\n            } else if (prev.text === '') {\n              Transforms.removeNodes(editor, {\n                at: path.concat(n - 1),\n                voids: true\n              });\n              n--;\n            } else if (_child.text === '') {\n              Transforms.removeNodes(editor, {\n                at: path.concat(n),\n                voids: true\n              });\n              n--;\n            }\n          }\n        }\n      }\n    },\n    removeMark: key => {\n      var {\n        selection\n      } = editor;\n\n      if (selection) {\n        if (Range.isExpanded(selection)) {\n          Transforms.unsetNodes(editor, key, {\n            match: Text.isText,\n            split: true\n          });\n        } else {\n          var marks = _objectSpread$9({}, Editor.marks(editor) || {});\n\n          delete marks[key];\n          editor.marks = marks;\n\n          if (!FLUSHING.get(editor)) {\n            editor.onChange();\n          }\n        }\n      }\n    }\n  };\n  return editor;\n};\n/**\r\n * Get the \"dirty\" paths generated from an operation.\r\n */\n\nvar getDirtyPaths = op => {\n  switch (op.type) {\n    case 'insert_text':\n    case 'remove_text':\n    case 'set_node':\n      {\n        var {\n          path\n        } = op;\n        return Path.levels(path);\n      }\n\n    case 'insert_node':\n      {\n        var {\n          node,\n          path: _path2\n        } = op;\n        var levels = Path.levels(_path2);\n        var descendants = Text.isText(node) ? [] : Array.from(Node.nodes(node), _ref3 => {\n          var [, p] = _ref3;\n          return _path2.concat(p);\n        });\n        return [...levels, ...descendants];\n      }\n\n    case 'merge_node':\n      {\n        var {\n          path: _path3\n        } = op;\n        var ancestors = Path.ancestors(_path3);\n        var previousPath = Path.previous(_path3);\n        return [...ancestors, previousPath];\n      }\n\n    case 'move_node':\n      {\n        var {\n          path: _path4,\n          newPath\n        } = op;\n\n        if (Path.equals(_path4, newPath)) {\n          return [];\n        }\n\n        var oldAncestors = [];\n        var newAncestors = [];\n\n        for (var ancestor of Path.ancestors(_path4)) {\n          var p = Path.transform(ancestor, op);\n          oldAncestors.push(p);\n        }\n\n        for (var _ancestor of Path.ancestors(newPath)) {\n          var _p = Path.transform(_ancestor, op);\n\n          newAncestors.push(_p);\n        }\n\n        var newParent = newAncestors[newAncestors.length - 1];\n        var newIndex = newPath[newPath.length - 1];\n        var resultPath = newParent.concat(newIndex);\n        return [...oldAncestors, ...newAncestors, resultPath];\n      }\n\n    case 'remove_node':\n      {\n        var {\n          path: _path5\n        } = op;\n\n        var _ancestors = Path.ancestors(_path5);\n\n        return [..._ancestors];\n      }\n\n    case 'split_node':\n      {\n        var {\n          path: _path6\n        } = op;\n\n        var _levels = Path.levels(_path6);\n\n        var nextPath = Path.next(_path6);\n        return [..._levels, nextPath];\n      }\n\n    default:\n      {\n        return [];\n      }\n  }\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  var target = _objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\n// Character (grapheme cluster) boundaries are determined according to\n// the default grapheme cluster boundary specification, extended grapheme clusters variant[1].\n//\n// References:\n//\n// [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n// [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n// [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html\n// [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt\n\n/**\r\n * Get the distance to the end of the first character in a string of text.\r\n */\nvar getCharacterDistance = function getCharacterDistance(str) {\n  var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var isLTR = !isRTL;\n  var codepoints = isRTL ? codepointsIteratorRTL(str) : str;\n  var left = CodepointType.None;\n  var right = CodepointType.None;\n  var distance = 0; // Evaluation of these conditions are deferred.\n\n  var gb11 = null; // Is GB11 applicable?\n\n  var gb12Or13 = null; // Is GB12 or GB13 applicable?\n\n  for (var char of codepoints) {\n    var code = char.codePointAt(0);\n    if (!code) break;\n    var type = getCodepointType(char, code);\n    [left, right] = isLTR ? [right, type] : [type, left];\n\n    if (intersects(left, CodepointType.ZWJ) && intersects(right, CodepointType.ExtPict)) {\n      if (isLTR) {\n        gb11 = endsWithEmojiZWJ(str.substring(0, distance));\n      } else {\n        gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance));\n      }\n\n      if (!gb11) break;\n    }\n\n    if (intersects(left, CodepointType.RI) && intersects(right, CodepointType.RI)) {\n      if (gb12Or13 !== null) {\n        gb12Or13 = !gb12Or13;\n      } else {\n        if (isLTR) {\n          gb12Or13 = true;\n        } else {\n          gb12Or13 = endsWithOddNumberOfRIs(str.substring(0, str.length - distance));\n        }\n      }\n\n      if (!gb12Or13) break;\n    }\n\n    if (left !== CodepointType.None && right !== CodepointType.None && isBoundaryPair(left, right)) {\n      break;\n    }\n\n    distance += char.length;\n  }\n\n  return distance || 1;\n};\nvar SPACE = /\\s/;\nvar PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\nvar CHAMELEON = /['\\u2018\\u2019]/;\n/**\r\n * Get the distance to the end of the first word in a string of text.\r\n */\n\nvar getWordDistance = function getWordDistance(text) {\n  var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var dist = 0;\n  var started = false;\n\n  while (text.length > 0) {\n    var charDist = getCharacterDistance(text, isRTL);\n    var [char, remaining] = splitByCharacterDistance(text, charDist, isRTL);\n\n    if (isWordCharacter(char, remaining, isRTL)) {\n      started = true;\n      dist += charDist;\n    } else if (!started) {\n      dist += charDist;\n    } else {\n      break;\n    }\n\n    text = remaining;\n  }\n\n  return dist;\n};\n/**\r\n * Split a string in two parts at a given distance starting from the end when\r\n * `isRTL` is set to `true`.\r\n */\n\nvar splitByCharacterDistance = (str, dist, isRTL) => {\n  if (isRTL) {\n    var at = str.length - dist;\n    return [str.slice(at, str.length), str.slice(0, at)];\n  }\n\n  return [str.slice(0, dist), str.slice(dist)];\n};\n/**\r\n * Check if a character is a word character. The `remaining` argument is used\r\n * because sometimes you must read subsequent characters to truly determine it.\r\n */\n\nvar isWordCharacter = function isWordCharacter(char, remaining) {\n  var isRTL = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  if (SPACE.test(char)) {\n    return false;\n  } // Chameleons count as word characters as long as they're in a word, so\n  // recurse to see if the next one is a word character or not.\n\n\n  if (CHAMELEON.test(char)) {\n    var charDist = getCharacterDistance(remaining, isRTL);\n    var [nextChar, nextRemaining] = splitByCharacterDistance(remaining, charDist, isRTL);\n\n    if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n      return true;\n    }\n  }\n\n  if (PUNCTUATION.test(char)) {\n    return false;\n  }\n\n  return true;\n};\n/**\r\n * Iterate on codepoints from right to left.\r\n */\n\n\nvar codepointsIteratorRTL = function* codepointsIteratorRTL(str) {\n  var end = str.length - 1;\n\n  for (var i = 0; i < str.length; i++) {\n    var char1 = str.charAt(end - i);\n\n    if (isLowSurrogate(char1.charCodeAt(0))) {\n      var char2 = str.charAt(end - i - 1);\n\n      if (isHighSurrogate(char2.charCodeAt(0))) {\n        yield char2 + char1;\n        i++;\n        continue;\n      }\n    }\n\n    yield char1;\n  }\n};\n/**\r\n * Is `charCode` a high surrogate.\r\n *\r\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\r\n */\n\nvar isHighSurrogate = charCode => {\n  return charCode >= 0xd800 && charCode <= 0xdbff;\n};\n/**\r\n * Is `charCode` a low surrogate.\r\n *\r\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\r\n */\n\n\nvar isLowSurrogate = charCode => {\n  return charCode >= 0xdc00 && charCode <= 0xdfff;\n};\n\nvar CodepointType;\n\n(function (CodepointType) {\n  CodepointType[CodepointType[\"None\"] = 0] = \"None\";\n  CodepointType[CodepointType[\"Extend\"] = 1] = \"Extend\";\n  CodepointType[CodepointType[\"ZWJ\"] = 2] = \"ZWJ\";\n  CodepointType[CodepointType[\"RI\"] = 4] = \"RI\";\n  CodepointType[CodepointType[\"Prepend\"] = 8] = \"Prepend\";\n  CodepointType[CodepointType[\"SpacingMark\"] = 16] = \"SpacingMark\";\n  CodepointType[CodepointType[\"L\"] = 32] = \"L\";\n  CodepointType[CodepointType[\"V\"] = 64] = \"V\";\n  CodepointType[CodepointType[\"T\"] = 128] = \"T\";\n  CodepointType[CodepointType[\"LV\"] = 256] = \"LV\";\n  CodepointType[CodepointType[\"LVT\"] = 512] = \"LVT\";\n  CodepointType[CodepointType[\"ExtPict\"] = 1024] = \"ExtPict\";\n  CodepointType[CodepointType[\"Any\"] = 2048] = \"Any\";\n})(CodepointType || (CodepointType = {}));\n\nvar reExtend = /^(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1AC0\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])$/;\nvar rePrepend = /^(?:[\\u0600-\\u0605\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u0D4E]|\\uD804[\\uDCBD\\uDCCD\\uDDC2\\uDDC3]|\\uD806[\\uDD3F\\uDD41\\uDE3A\\uDE84-\\uDE89]|\\uD807\\uDD46)$/;\nvar reSpacingMark = /^(?:[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BF\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0\\u0CC1\\u0CC3\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0D02\\u0D03\\u0D3F\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82\\u0D83\\u0DD0\\u0DD1\\u0DD8-\\u0DDE\\u0DF2\\u0DF3\\u0E33\\u0EB3\\u0F3E\\u0F3F\\u0F7F\\u1031\\u103B\\u103C\\u1056\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF7\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]|\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD45\\uDD46\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDDCE\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB1\\uDCB2\\uDCB9\\uDCBB\\uDCBC\\uDCBE\\uDCC1\\uDDB0\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF26]|\\uD806[\\uDC2C-\\uDC2E\\uDC38\\uDD31-\\uDD35\\uDD37\\uDD38\\uDD3D\\uDD40\\uDD42\\uDDD1-\\uDDD3\\uDDDC-\\uDDDF\\uDDE4\\uDE39\\uDE57\\uDE58\\uDE97]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4\\uDD8A-\\uDD8E\\uDD93\\uDD94\\uDD96\\uDEF5\\uDEF6]|\\uD81B[\\uDF51-\\uDF87\\uDFF0\\uDFF1]|\\uD834[\\uDD66\\uDD6D])$/;\nvar reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/;\nvar reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/;\nvar reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/;\nvar reLV = /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/;\nvar reLVT = /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/;\nvar reExtPict = /^(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])$/;\n\nvar getCodepointType = (char, code) => {\n  var type = CodepointType.Any;\n\n  if (char.search(reExtend) !== -1) {\n    type |= CodepointType.Extend;\n  }\n\n  if (code === 0x200d) {\n    type |= CodepointType.ZWJ;\n  }\n\n  if (code >= 0x1f1e6 && code <= 0x1f1ff) {\n    type |= CodepointType.RI;\n  }\n\n  if (char.search(rePrepend) !== -1) {\n    type |= CodepointType.Prepend;\n  }\n\n  if (char.search(reSpacingMark) !== -1) {\n    type |= CodepointType.SpacingMark;\n  }\n\n  if (char.search(reL) !== -1) {\n    type |= CodepointType.L;\n  }\n\n  if (char.search(reV) !== -1) {\n    type |= CodepointType.V;\n  }\n\n  if (char.search(reT) !== -1) {\n    type |= CodepointType.T;\n  }\n\n  if (char.search(reLV) !== -1) {\n    type |= CodepointType.LV;\n  }\n\n  if (char.search(reLVT) !== -1) {\n    type |= CodepointType.LVT;\n  }\n\n  if (char.search(reExtPict) !== -1) {\n    type |= CodepointType.ExtPict;\n  }\n\n  return type;\n};\n\nfunction intersects(x, y) {\n  return (x & y) !== 0;\n}\n\nvar NonBoundaryPairs = [// GB6\n[CodepointType.L, CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT], // GB7\n[CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T], // GB8\n[CodepointType.LVT | CodepointType.T, CodepointType.T], // GB9\n[CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ], // GB9a\n[CodepointType.Any, CodepointType.SpacingMark], // GB9b\n[CodepointType.Prepend, CodepointType.Any], // GB11\n[CodepointType.ZWJ, CodepointType.ExtPict], // GB12 and GB13\n[CodepointType.RI, CodepointType.RI]];\n\nfunction isBoundaryPair(left, right) {\n  return NonBoundaryPairs.findIndex(r => intersects(left, r[0]) && intersects(right, r[1])) === -1;\n}\n\nvar endingEmojiZWJ = /(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1AC0\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])*\\u200D$/;\n\nvar endsWithEmojiZWJ = str => {\n  return str.search(endingEmojiZWJ) !== -1;\n};\n\nvar endingRIs = /(?:\\uD83C[\\uDDE6-\\uDDFF])+$/g;\n\nvar endsWithOddNumberOfRIs = str => {\n  var match = str.match(endingRIs);\n\n  if (match === null) {\n    return false;\n  } else {\n    // A RI is represented by a surrogate pair.\n    var numRIs = match[0].length / 2;\n    return numRIs % 2 === 1;\n  }\n};\n\n/**\r\n * Shared the function with isElementType utility\r\n */\n\nvar isElement = value => {\n  return isPlainObject(value) && Node.isNodeList(value.children) && !Editor.isEditor(value);\n};\n\nvar Element = {\n  /**\r\n   * Check if a value implements the 'Ancestor' interface.\r\n   */\n  isAncestor(value) {\n    return isPlainObject(value) && Node.isNodeList(value.children);\n  },\n\n  /**\r\n   * Check if a value implements the `Element` interface.\r\n   */\n  isElement,\n\n  /**\r\n   * Check if a value is an array of `Element` objects.\r\n   */\n  isElementList(value) {\n    return Array.isArray(value) && value.every(val => Element.isElement(val));\n  },\n\n  /**\r\n   * Check if a set of props is a partial of Element.\r\n   */\n  isElementProps(props) {\n    return props.children !== undefined;\n  },\n\n  /**\r\n   * Check if a value implements the `Element` interface and has elementKey with selected value.\r\n   * Default it check to `type` key value\r\n   */\n  isElementType: function isElementType(value, elementVal) {\n    var elementKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'type';\n    return isElement(value) && value[elementKey] === elementVal;\n  },\n\n  /**\r\n   * Check if an element matches set of properties.\r\n   *\r\n   * Note: this checks custom properties, and it does not ensure that any\r\n   * children are equivalent.\r\n   */\n  matches(element, props) {\n    for (var key in props) {\n      if (key === 'children') {\n        continue;\n      }\n\n      if (element[key] !== props[key]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n};\n\nvar _excluded$4 = [\"text\"],\n    _excluded2$3 = [\"text\"];\n\nfunction ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$8(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar IS_EDITOR_CACHE = new WeakMap();\nvar Editor = {\n  /**\r\n   * Get the ancestor above a location in the document.\r\n   */\n  above(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      voids = false,\n      mode = 'lowest',\n      at = editor.selection,\n      match\n    } = options;\n\n    if (!at) {\n      return;\n    }\n\n    var path = Editor.path(editor, at);\n    var reverse = mode === 'lowest';\n\n    for (var [n, p] of Editor.levels(editor, {\n      at: path,\n      voids,\n      match,\n      reverse\n    })) {\n      if (!Text.isText(n) && !Path.equals(path, p)) {\n        return [n, p];\n      }\n    }\n  },\n\n  /**\r\n   * Add a custom property to the leaf text nodes in the current selection.\r\n   *\r\n   * If the selection is currently collapsed, the marks will be added to the\r\n   * `editor.marks` property instead, and applied when text is inserted next.\r\n   */\n  addMark(editor, key, value) {\n    editor.addMark(key, value);\n  },\n\n  /**\r\n   * Get the point after a location.\r\n   */\n  after(editor, at) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var anchor = Editor.point(editor, at, {\n      edge: 'end'\n    });\n    var focus = Editor.end(editor, []);\n    var range = {\n      anchor,\n      focus\n    };\n    var {\n      distance = 1\n    } = options;\n    var d = 0;\n    var target;\n\n    for (var p of Editor.positions(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n      at: range\n    }))) {\n      if (d > distance) {\n        break;\n      }\n\n      if (d !== 0) {\n        target = p;\n      }\n\n      d++;\n    }\n\n    return target;\n  },\n\n  /**\r\n   * Get the point before a location.\r\n   */\n  before(editor, at) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var anchor = Editor.start(editor, []);\n    var focus = Editor.point(editor, at, {\n      edge: 'start'\n    });\n    var range = {\n      anchor,\n      focus\n    };\n    var {\n      distance = 1\n    } = options;\n    var d = 0;\n    var target;\n\n    for (var p of Editor.positions(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n      at: range,\n      reverse: true\n    }))) {\n      if (d > distance) {\n        break;\n      }\n\n      if (d !== 0) {\n        target = p;\n      }\n\n      d++;\n    }\n\n    return target;\n  },\n\n  /**\r\n   * Delete content in the editor backward from the current selection.\r\n   */\n  deleteBackward(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      unit = 'character'\n    } = options;\n    editor.deleteBackward(unit);\n  },\n\n  /**\r\n   * Delete content in the editor forward from the current selection.\r\n   */\n  deleteForward(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      unit = 'character'\n    } = options;\n    editor.deleteForward(unit);\n  },\n\n  /**\r\n   * Delete the content in the current selection.\r\n   */\n  deleteFragment(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      direction = 'forward'\n    } = options;\n    editor.deleteFragment(direction);\n  },\n\n  /**\r\n   * Get the start and end points of a location.\r\n   */\n  edges(editor, at) {\n    return [Editor.start(editor, at), Editor.end(editor, at)];\n  },\n\n  /**\r\n   * Get the end point of a location.\r\n   */\n  end(editor, at) {\n    return Editor.point(editor, at, {\n      edge: 'end'\n    });\n  },\n\n  /**\r\n   * Get the first node at a location.\r\n   */\n  first(editor, at) {\n    var path = Editor.path(editor, at, {\n      edge: 'start'\n    });\n    return Editor.node(editor, path);\n  },\n\n  /**\r\n   * Get the fragment at a location.\r\n   */\n  fragment(editor, at) {\n    var range = Editor.range(editor, at);\n    var fragment = Node.fragment(editor, range);\n    return fragment;\n  },\n\n  /**\r\n   * Check if a node has block children.\r\n   */\n  hasBlocks(editor, element) {\n    return element.children.some(n => Editor.isBlock(editor, n));\n  },\n\n  /**\r\n   * Check if a node has inline and text children.\r\n   */\n  hasInlines(editor, element) {\n    return element.children.some(n => Text.isText(n) || Editor.isInline(editor, n));\n  },\n\n  /**\r\n   * Check if a node has text children.\r\n   */\n  hasTexts(editor, element) {\n    return element.children.every(n => Text.isText(n));\n  },\n\n  /**\r\n   * Insert a block break at the current selection.\r\n   *\r\n   * If the selection is currently expanded, it will be deleted first.\r\n   */\n  insertBreak(editor) {\n    editor.insertBreak();\n  },\n\n  /**\r\n   * Insert a soft break at the current selection.\r\n   *\r\n   * If the selection is currently expanded, it will be deleted first.\r\n   */\n  insertSoftBreak(editor) {\n    editor.insertSoftBreak();\n  },\n\n  /**\r\n   * Insert a fragment at the current selection.\r\n   *\r\n   * If the selection is currently expanded, it will be deleted first.\r\n   */\n  insertFragment(editor, fragment) {\n    editor.insertFragment(fragment);\n  },\n\n  /**\r\n   * Insert a node at the current selection.\r\n   *\r\n   * If the selection is currently expanded, it will be deleted first.\r\n   */\n  insertNode(editor, node) {\n    editor.insertNode(node);\n  },\n\n  /**\r\n   * Insert text at the current selection.\r\n   *\r\n   * If the selection is currently expanded, it will be deleted first.\r\n   */\n  insertText(editor, text) {\n    editor.insertText(text);\n  },\n\n  /**\r\n   * Check if a value is a block `Element` object.\r\n   */\n  isBlock(editor, value) {\n    return Element.isElement(value) && !editor.isInline(value);\n  },\n\n  /**\r\n   * Check if a value is an `Editor` object.\r\n   */\n  isEditor(value) {\n    if (!isPlainObject(value)) return false;\n    var cachedIsEditor = IS_EDITOR_CACHE.get(value);\n\n    if (cachedIsEditor !== undefined) {\n      return cachedIsEditor;\n    }\n\n    var isEditor = typeof value.addMark === 'function' && typeof value.apply === 'function' && typeof value.deleteBackward === 'function' && typeof value.deleteForward === 'function' && typeof value.deleteFragment === 'function' && typeof value.insertBreak === 'function' && typeof value.insertSoftBreak === 'function' && typeof value.insertFragment === 'function' && typeof value.insertNode === 'function' && typeof value.insertText === 'function' && typeof value.isInline === 'function' && typeof value.isVoid === 'function' && typeof value.normalizeNode === 'function' && typeof value.onChange === 'function' && typeof value.removeMark === 'function' && (value.marks === null || isPlainObject(value.marks)) && (value.selection === null || Range.isRange(value.selection)) && Node.isNodeList(value.children) && Operation.isOperationList(value.operations);\n    IS_EDITOR_CACHE.set(value, isEditor);\n    return isEditor;\n  },\n\n  /**\r\n   * Check if a point is the end point of a location.\r\n   */\n  isEnd(editor, point, at) {\n    var end = Editor.end(editor, at);\n    return Point.equals(point, end);\n  },\n\n  /**\r\n   * Check if a point is an edge of a location.\r\n   */\n  isEdge(editor, point, at) {\n    return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at);\n  },\n\n  /**\r\n   * Check if an element is empty, accounting for void nodes.\r\n   */\n  isEmpty(editor, element) {\n    var {\n      children\n    } = element;\n    var [first] = children;\n    return children.length === 0 || children.length === 1 && Text.isText(first) && first.text === '' && !editor.isVoid(element);\n  },\n\n  /**\r\n   * Check if a value is an inline `Element` object.\r\n   */\n  isInline(editor, value) {\n    return Element.isElement(value) && editor.isInline(value);\n  },\n\n  /**\r\n   * Check if the editor is currently normalizing after each operation.\r\n   */\n  isNormalizing(editor) {\n    var isNormalizing = NORMALIZING.get(editor);\n    return isNormalizing === undefined ? true : isNormalizing;\n  },\n\n  /**\r\n   * Check if a point is the start point of a location.\r\n   */\n  isStart(editor, point, at) {\n    // PERF: If the offset isn't `0` we know it's not the start.\n    if (point.offset !== 0) {\n      return false;\n    }\n\n    var start = Editor.start(editor, at);\n    return Point.equals(point, start);\n  },\n\n  /**\r\n   * Check if a value is a void `Element` object.\r\n   */\n  isVoid(editor, value) {\n    return Element.isElement(value) && editor.isVoid(value);\n  },\n\n  /**\r\n   * Get the last node at a location.\r\n   */\n  last(editor, at) {\n    var path = Editor.path(editor, at, {\n      edge: 'end'\n    });\n    return Editor.node(editor, path);\n  },\n\n  /**\r\n   * Get the leaf text node at a location.\r\n   */\n  leaf(editor, at) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var path = Editor.path(editor, at, options);\n    var node = Node.leaf(editor, path);\n    return [node, path];\n  },\n\n  /**\r\n   * Iterate through all of the levels at a location.\r\n   */\n  *levels(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      at = editor.selection,\n      reverse = false,\n      voids = false\n    } = options;\n    var {\n      match\n    } = options;\n\n    if (match == null) {\n      match = () => true;\n    }\n\n    if (!at) {\n      return;\n    }\n\n    var levels = [];\n    var path = Editor.path(editor, at);\n\n    for (var [n, p] of Node.levels(editor, path)) {\n      if (!match(n, p)) {\n        continue;\n      }\n\n      levels.push([n, p]);\n\n      if (!voids && Editor.isVoid(editor, n)) {\n        break;\n      }\n    }\n\n    if (reverse) {\n      levels.reverse();\n    }\n\n    yield* levels;\n  },\n\n  /**\r\n   * Get the marks that would be added to text at the current selection.\r\n   */\n  marks(editor) {\n    var {\n      marks,\n      selection\n    } = editor;\n\n    if (!selection) {\n      return null;\n    }\n\n    if (marks) {\n      return marks;\n    }\n\n    if (Range.isExpanded(selection)) {\n      var [match] = Editor.nodes(editor, {\n        match: Text.isText\n      });\n\n      if (match) {\n        var [_node] = match;\n\n        var _rest = _objectWithoutProperties(_node, _excluded$4);\n\n        return _rest;\n      } else {\n        return {};\n      }\n    }\n\n    var {\n      anchor\n    } = selection;\n    var {\n      path\n    } = anchor;\n    var [node] = Editor.leaf(editor, path);\n\n    if (anchor.offset === 0) {\n      var prev = Editor.previous(editor, {\n        at: path,\n        match: Text.isText\n      });\n      var block = Editor.above(editor, {\n        match: n => Editor.isBlock(editor, n)\n      });\n\n      if (prev && block) {\n        var [prevNode, prevPath] = prev;\n        var [, blockPath] = block;\n\n        if (Path.isAncestor(blockPath, prevPath)) {\n          node = prevNode;\n        }\n      }\n    }\n\n    var rest = _objectWithoutProperties(node, _excluded2$3);\n\n    return rest;\n  },\n\n  /**\r\n   * Get the matching node in the branch of the document after a location.\r\n   */\n  next(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      mode = 'lowest',\n      voids = false\n    } = options;\n    var {\n      match,\n      at = editor.selection\n    } = options;\n\n    if (!at) {\n      return;\n    }\n\n    var pointAfterLocation = Editor.after(editor, at, {\n      voids\n    });\n    if (!pointAfterLocation) return;\n    var [, to] = Editor.last(editor, []);\n    var span = [pointAfterLocation.path, to];\n\n    if (Path.isPath(at) && at.length === 0) {\n      throw new Error(\"Cannot get the next node from the root node!\");\n    }\n\n    if (match == null) {\n      if (Path.isPath(at)) {\n        var [parent] = Editor.parent(editor, at);\n\n        match = n => parent.children.includes(n);\n      } else {\n        match = () => true;\n      }\n    }\n\n    var [next] = Editor.nodes(editor, {\n      at: span,\n      match,\n      mode,\n      voids\n    });\n    return next;\n  },\n\n  /**\r\n   * Get the node at a location.\r\n   */\n  node(editor, at) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var path = Editor.path(editor, at, options);\n    var node = Node.get(editor, path);\n    return [node, path];\n  },\n\n  /**\r\n   * Iterate through all of the nodes in the Editor.\r\n   */\n  *nodes(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      at = editor.selection,\n      mode = 'all',\n      universal = false,\n      reverse = false,\n      voids = false\n    } = options;\n    var {\n      match\n    } = options;\n\n    if (!match) {\n      match = () => true;\n    }\n\n    if (!at) {\n      return;\n    }\n\n    var from;\n    var to;\n\n    if (Span.isSpan(at)) {\n      from = at[0];\n      to = at[1];\n    } else {\n      var first = Editor.path(editor, at, {\n        edge: 'start'\n      });\n      var last = Editor.path(editor, at, {\n        edge: 'end'\n      });\n      from = reverse ? last : first;\n      to = reverse ? first : last;\n    }\n\n    var nodeEntries = Node.nodes(editor, {\n      reverse,\n      from,\n      to,\n      pass: _ref => {\n        var [n] = _ref;\n        return voids ? false : Editor.isVoid(editor, n);\n      }\n    });\n    var matches = [];\n    var hit;\n\n    for (var [node, path] of nodeEntries) {\n      var isLower = hit && Path.compare(path, hit[1]) === 0; // In highest mode any node lower than the last hit is not a match.\n\n      if (mode === 'highest' && isLower) {\n        continue;\n      }\n\n      if (!match(node, path)) {\n        // If we've arrived at a leaf text node that is not lower than the last\n        // hit, then we've found a branch that doesn't include a match, which\n        // means the match is not universal.\n        if (universal && !isLower && Text.isText(node)) {\n          return;\n        } else {\n          continue;\n        }\n      } // If there's a match and it's lower than the last, update the hit.\n\n\n      if (mode === 'lowest' && isLower) {\n        hit = [node, path];\n        continue;\n      } // In lowest mode we emit the last hit, once it's guaranteed lowest.\n\n\n      var emit = mode === 'lowest' ? hit : [node, path];\n\n      if (emit) {\n        if (universal) {\n          matches.push(emit);\n        } else {\n          yield emit;\n        }\n      }\n\n      hit = [node, path];\n    } // Since lowest is always emitting one behind, catch up at the end.\n\n\n    if (mode === 'lowest' && hit) {\n      if (universal) {\n        matches.push(hit);\n      } else {\n        yield hit;\n      }\n    } // Universal defers to ensure that the match occurs in every branch, so we\n    // yield all of the matches after iterating.\n\n\n    if (universal) {\n      yield* matches;\n    }\n  },\n\n  /**\r\n   * Normalize any dirty objects in the editor.\r\n   */\n  normalize(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      force = false\n    } = options;\n\n    var getDirtyPaths = editor => {\n      return DIRTY_PATHS.get(editor) || [];\n    };\n\n    var getDirtyPathKeys = editor => {\n      return DIRTY_PATH_KEYS.get(editor) || new Set();\n    };\n\n    var popDirtyPath = editor => {\n      var path = getDirtyPaths(editor).pop();\n      var key = path.join(',');\n      getDirtyPathKeys(editor).delete(key);\n      return path;\n    };\n\n    if (!Editor.isNormalizing(editor)) {\n      return;\n    }\n\n    if (force) {\n      var allPaths = Array.from(Node.nodes(editor), _ref2 => {\n        var [, p] = _ref2;\n        return p;\n      });\n      var allPathKeys = new Set(allPaths.map(p => p.join(',')));\n      DIRTY_PATHS.set(editor, allPaths);\n      DIRTY_PATH_KEYS.set(editor, allPathKeys);\n    }\n\n    if (getDirtyPaths(editor).length === 0) {\n      return;\n    }\n\n    Editor.withoutNormalizing(editor, () => {\n      /*\r\n        Fix dirty elements with no children.\r\n        editor.normalizeNode() does fix this, but some normalization fixes also require it to work.\r\n        Running an initial pass avoids the catch-22 race condition.\r\n      */\n      for (var dirtyPath of getDirtyPaths(editor)) {\n        if (Node.has(editor, dirtyPath)) {\n          var entry = Editor.node(editor, dirtyPath);\n          var [node, _] = entry;\n          /*\r\n            The default normalizer inserts an empty text node in this scenario, but it can be customised.\r\n            So there is some risk here.\r\n                       As long as the normalizer only inserts child nodes for this case it is safe to do in any order;\r\n            by definition adding children to an empty node can't cause other paths to change.\r\n          */\n\n          if (Element.isElement(node) && node.children.length === 0) {\n            editor.normalizeNode(entry);\n          }\n        }\n      }\n\n      var max = getDirtyPaths(editor).length * 42; // HACK: better way?\n\n      var m = 0;\n\n      while (getDirtyPaths(editor).length !== 0) {\n        if (m > max) {\n          throw new Error(\"\\n            Could not completely normalize the editor after \".concat(max, \" iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\\n          \"));\n        }\n\n        var _dirtyPath = popDirtyPath(editor); // If the node doesn't exist in the tree, it does not need to be normalized.\n\n\n        if (Node.has(editor, _dirtyPath)) {\n          var _entry = Editor.node(editor, _dirtyPath);\n\n          editor.normalizeNode(_entry);\n        }\n\n        m++;\n      }\n    });\n  },\n\n  /**\r\n   * Get the parent node of a location.\r\n   */\n  parent(editor, at) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var path = Editor.path(editor, at, options);\n    var parentPath = Path.parent(path);\n    var entry = Editor.node(editor, parentPath);\n    return entry;\n  },\n\n  /**\r\n   * Get the path of a location.\r\n   */\n  path(editor, at) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      depth,\n      edge\n    } = options;\n\n    if (Path.isPath(at)) {\n      if (edge === 'start') {\n        var [, firstPath] = Node.first(editor, at);\n        at = firstPath;\n      } else if (edge === 'end') {\n        var [, lastPath] = Node.last(editor, at);\n        at = lastPath;\n      }\n    }\n\n    if (Range.isRange(at)) {\n      if (edge === 'start') {\n        at = Range.start(at);\n      } else if (edge === 'end') {\n        at = Range.end(at);\n      } else {\n        at = Path.common(at.anchor.path, at.focus.path);\n      }\n    }\n\n    if (Point.isPoint(at)) {\n      at = at.path;\n    }\n\n    if (depth != null) {\n      at = at.slice(0, depth);\n    }\n\n    return at;\n  },\n\n  hasPath(editor, path) {\n    return Node.has(editor, path);\n  },\n\n  /**\r\n   * Create a mutable ref for a `Path` object, which will stay in sync as new\r\n   * operations are applied to the editor.\r\n   */\n  pathRef(editor, path) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      affinity = 'forward'\n    } = options;\n    var ref = {\n      current: path,\n      affinity,\n\n      unref() {\n        var {\n          current\n        } = ref;\n        var pathRefs = Editor.pathRefs(editor);\n        pathRefs.delete(ref);\n        ref.current = null;\n        return current;\n      }\n\n    };\n    var refs = Editor.pathRefs(editor);\n    refs.add(ref);\n    return ref;\n  },\n\n  /**\r\n   * Get the set of currently tracked path refs of the editor.\r\n   */\n  pathRefs(editor) {\n    var refs = PATH_REFS.get(editor);\n\n    if (!refs) {\n      refs = new Set();\n      PATH_REFS.set(editor, refs);\n    }\n\n    return refs;\n  },\n\n  /**\r\n   * Get the start or end point of a location.\r\n   */\n  point(editor, at) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      edge = 'start'\n    } = options;\n\n    if (Path.isPath(at)) {\n      var path;\n\n      if (edge === 'end') {\n        var [, lastPath] = Node.last(editor, at);\n        path = lastPath;\n      } else {\n        var [, firstPath] = Node.first(editor, at);\n        path = firstPath;\n      }\n\n      var node = Node.get(editor, path);\n\n      if (!Text.isText(node)) {\n        throw new Error(\"Cannot get the \".concat(edge, \" point in the node at path [\").concat(at, \"] because it has no \").concat(edge, \" text node.\"));\n      }\n\n      return {\n        path,\n        offset: edge === 'end' ? node.text.length : 0\n      };\n    }\n\n    if (Range.isRange(at)) {\n      var [start, end] = Range.edges(at);\n      return edge === 'start' ? start : end;\n    }\n\n    return at;\n  },\n\n  /**\r\n   * Create a mutable ref for a `Point` object, which will stay in sync as new\r\n   * operations are applied to the editor.\r\n   */\n  pointRef(editor, point) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      affinity = 'forward'\n    } = options;\n    var ref = {\n      current: point,\n      affinity,\n\n      unref() {\n        var {\n          current\n        } = ref;\n        var pointRefs = Editor.pointRefs(editor);\n        pointRefs.delete(ref);\n        ref.current = null;\n        return current;\n      }\n\n    };\n    var refs = Editor.pointRefs(editor);\n    refs.add(ref);\n    return ref;\n  },\n\n  /**\r\n   * Get the set of currently tracked point refs of the editor.\r\n   */\n  pointRefs(editor) {\n    var refs = POINT_REFS.get(editor);\n\n    if (!refs) {\n      refs = new Set();\n      POINT_REFS.set(editor, refs);\n    }\n\n    return refs;\n  },\n\n  /**\r\n   * Return all the positions in `at` range where a `Point` can be placed.\r\n   *\r\n   * By default, moves forward by individual offsets at a time, but\r\n   * the `unit` option can be used to to move by character, word, line, or block.\r\n   *\r\n   * The `reverse` option can be used to change iteration direction.\r\n   *\r\n   * Note: By default void nodes are treated as a single point and iteration\r\n   * will not happen inside their content unless you pass in true for the\r\n   * `voids` option, then iteration will occur.\r\n   */\n  *positions(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      at = editor.selection,\n      unit = 'offset',\n      reverse = false,\n      voids = false\n    } = options;\n\n    if (!at) {\n      return;\n    }\n    /**\r\n     * Algorithm notes:\r\n     *\r\n     * Each step `distance` is dynamic depending on the underlying text\r\n     * and the `unit` specified.  Each step, e.g., a line or word, may\r\n     * span multiple text nodes, so we iterate through the text both on\r\n     * two levels in step-sync:\r\n     *\r\n     * `leafText` stores the text on a text leaf level, and is advanced\r\n     * through using the counters `leafTextOffset` and `leafTextRemaining`.\r\n     *\r\n     * `blockText` stores the text on a block level, and is shortened\r\n     * by `distance` every time it is advanced.\r\n     *\r\n     * We only maintain a window of one blockText and one leafText because\r\n     * a block node always appears before all of its leaf nodes.\r\n     */\n\n\n    var range = Editor.range(editor, at);\n    var [start, end] = Range.edges(range);\n    var first = reverse ? end : start;\n    var isNewBlock = false;\n    var blockText = '';\n    var distance = 0; // Distance for leafText to catch up to blockText.\n\n    var leafTextRemaining = 0;\n    var leafTextOffset = 0; // Iterate through all nodes in range, grabbing entire textual content\n    // of block nodes in blockText, and text nodes in leafText.\n    // Exploits the fact that nodes are sequenced in such a way that we first\n    // encounter the block node, then all of its text nodes, so when iterating\n    // through the blockText and leafText we just need to remember a window of\n    // one block node and leaf node, respectively.\n\n    for (var [node, path] of Editor.nodes(editor, {\n      at,\n      reverse,\n      voids\n    })) {\n      /*\r\n       * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks\r\n       */\n      if (Element.isElement(node)) {\n        // Void nodes are a special case, so by default we will always\n        // yield their first point. If the `voids` option is set to true,\n        // then we will iterate over their content.\n        if (!voids && editor.isVoid(node)) {\n          yield Editor.start(editor, path); // It's possible the start of the range we're iterating over is in a void, in which case\n          // we want to make sure we don't incorrectly yield the start of a subsequent text node for unit !== 'offset'\n\n          isNewBlock = false;\n          continue;\n        } // Inline element nodes are ignored as they don't themselves\n        // contribute to `blockText` or `leafText` - their parent and\n        // children do.\n\n\n        if (editor.isInline(node)) continue; // Block element node - set `blockText` to its text content.\n\n        if (Editor.hasInlines(editor, node)) {\n          // We always exhaust block nodes before encountering a new one:\n          //   console.assert(blockText === '',\n          //     `blockText='${blockText}' - `+\n          //     `not exhausted before new block node`, path)\n          // Ensure range considered is capped to `range`, in the\n          // start/end edge cases where block extends beyond range.\n          // Equivalent to this, but presumably more performant:\n          //   blockRange = Editor.range(editor, ...Editor.edges(editor, path))\n          //   blockRange = Range.intersection(range, blockRange) // intersect\n          //   blockText = Editor.string(editor, blockRange, { voids })\n          var e = Path.isAncestor(path, end.path) ? end : Editor.end(editor, path);\n          var s = Path.isAncestor(path, start.path) ? start : Editor.start(editor, path);\n          blockText = Editor.string(editor, {\n            anchor: s,\n            focus: e\n          }, {\n            voids\n          });\n          isNewBlock = true;\n        }\n      }\n      /*\r\n       * TEXT LEAF NODE - Iterate through text content, yielding\r\n       * positions every `distance` offset according to `unit`.\r\n       */\n\n\n      if (Text.isText(node)) {\n        var isFirst = Path.equals(path, first.path); // Proof that we always exhaust text nodes before encountering a new one:\n        //   console.assert(leafTextRemaining <= 0,\n        //     `leafTextRemaining=${leafTextRemaining} - `+\n        //     `not exhausted before new leaf text node`, path)\n        // Reset `leafText` counters for new text node.\n\n        if (isFirst) {\n          leafTextRemaining = reverse ? first.offset : node.text.length - first.offset;\n          leafTextOffset = first.offset; // Works for reverse too.\n        } else {\n          leafTextRemaining = node.text.length;\n          leafTextOffset = reverse ? leafTextRemaining : 0;\n        } // Yield position at the start of node (potentially).\n\n\n        if (isFirst || isNewBlock || unit === 'offset') {\n          yield {\n            path,\n            offset: leafTextOffset\n          };\n          isNewBlock = false;\n        } // Yield positions every (dynamically calculated) `distance` offset.\n\n\n        while (true) {\n          // If `leafText` has caught up with `blockText` (distance=0),\n          // and if blockText is exhausted, break to get another block node,\n          // otherwise advance blockText forward by the new `distance`.\n          if (distance === 0) {\n            if (blockText === '') break;\n            distance = calcDistance(blockText, unit, reverse); // Split the string at the previously found distance and use the\n            // remaining string for the next iteration.\n\n            blockText = splitByCharacterDistance(blockText, distance, reverse)[1];\n          } // Advance `leafText` by the current `distance`.\n\n\n          leafTextOffset = reverse ? leafTextOffset - distance : leafTextOffset + distance;\n          leafTextRemaining = leafTextRemaining - distance; // If `leafText` is exhausted, break to get a new leaf node\n          // and set distance to the overflow amount, so we'll (maybe)\n          // catch up to blockText in the next leaf text node.\n\n          if (leafTextRemaining < 0) {\n            distance = -leafTextRemaining;\n            break;\n          } // Successfully walked `distance` offsets through `leafText`\n          // to catch up with `blockText`, so we can reset `distance`\n          // and yield this position in this node.\n\n\n          distance = 0;\n          yield {\n            path,\n            offset: leafTextOffset\n          };\n        }\n      }\n    } // Proof that upon completion, we've exahusted both leaf and block text:\n    //   console.assert(leafTextRemaining <= 0, \"leafText wasn't exhausted\")\n    //   console.assert(blockText === '', \"blockText wasn't exhausted\")\n    // Helper:\n    // Return the distance in offsets for a step of size `unit` on given string.\n\n\n    function calcDistance(text, unit, reverse) {\n      if (unit === 'character') {\n        return getCharacterDistance(text, reverse);\n      } else if (unit === 'word') {\n        return getWordDistance(text, reverse);\n      } else if (unit === 'line' || unit === 'block') {\n        return text.length;\n      }\n\n      return 1;\n    }\n  },\n\n  /**\r\n   * Get the matching node in the branch of the document before a location.\r\n   */\n  previous(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      mode = 'lowest',\n      voids = false\n    } = options;\n    var {\n      match,\n      at = editor.selection\n    } = options;\n\n    if (!at) {\n      return;\n    }\n\n    var pointBeforeLocation = Editor.before(editor, at, {\n      voids\n    });\n\n    if (!pointBeforeLocation) {\n      return;\n    }\n\n    var [, to] = Editor.first(editor, []); // The search location is from the start of the document to the path of\n    // the point before the location passed in\n\n    var span = [pointBeforeLocation.path, to];\n\n    if (Path.isPath(at) && at.length === 0) {\n      throw new Error(\"Cannot get the previous node from the root node!\");\n    }\n\n    if (match == null) {\n      if (Path.isPath(at)) {\n        var [parent] = Editor.parent(editor, at);\n\n        match = n => parent.children.includes(n);\n      } else {\n        match = () => true;\n      }\n    }\n\n    var [previous] = Editor.nodes(editor, {\n      reverse: true,\n      at: span,\n      match,\n      mode,\n      voids\n    });\n    return previous;\n  },\n\n  /**\r\n   * Get a range of a location.\r\n   */\n  range(editor, at, to) {\n    if (Range.isRange(at) && !to) {\n      return at;\n    }\n\n    var start = Editor.start(editor, at);\n    var end = Editor.end(editor, to || at);\n    return {\n      anchor: start,\n      focus: end\n    };\n  },\n\n  /**\r\n   * Create a mutable ref for a `Range` object, which will stay in sync as new\r\n   * operations are applied to the editor.\r\n   */\n  rangeRef(editor, range) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      affinity = 'forward'\n    } = options;\n    var ref = {\n      current: range,\n      affinity,\n\n      unref() {\n        var {\n          current\n        } = ref;\n        var rangeRefs = Editor.rangeRefs(editor);\n        rangeRefs.delete(ref);\n        ref.current = null;\n        return current;\n      }\n\n    };\n    var refs = Editor.rangeRefs(editor);\n    refs.add(ref);\n    return ref;\n  },\n\n  /**\r\n   * Get the set of currently tracked range refs of the editor.\r\n   */\n  rangeRefs(editor) {\n    var refs = RANGE_REFS.get(editor);\n\n    if (!refs) {\n      refs = new Set();\n      RANGE_REFS.set(editor, refs);\n    }\n\n    return refs;\n  },\n\n  /**\r\n   * Remove a custom property from all of the leaf text nodes in the current\r\n   * selection.\r\n   *\r\n   * If the selection is currently collapsed, the removal will be stored on\r\n   * `editor.marks` and applied to the text inserted next.\r\n   */\n  removeMark(editor, key) {\n    editor.removeMark(key);\n  },\n\n  /**\r\n   * Manually set if the editor should currently be normalizing.\r\n   *\r\n   * Note: Using this incorrectly can leave the editor in an invalid state.\r\n   *\r\n   */\n  setNormalizing(editor, isNormalizing) {\n    NORMALIZING.set(editor, isNormalizing);\n  },\n\n  /**\r\n   * Get the start point of a location.\r\n   */\n  start(editor, at) {\n    return Editor.point(editor, at, {\n      edge: 'start'\n    });\n  },\n\n  /**\r\n   * Get the text string content of a location.\r\n   *\r\n   * Note: by default the text of void nodes is considered to be an empty\r\n   * string, regardless of content, unless you pass in true for the voids option\r\n   */\n  string(editor, at) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      voids = false\n    } = options;\n    var range = Editor.range(editor, at);\n    var [start, end] = Range.edges(range);\n    var text = '';\n\n    for (var [node, path] of Editor.nodes(editor, {\n      at: range,\n      match: Text.isText,\n      voids\n    })) {\n      var t = node.text;\n\n      if (Path.equals(path, end.path)) {\n        t = t.slice(0, end.offset);\n      }\n\n      if (Path.equals(path, start.path)) {\n        t = t.slice(start.offset);\n      }\n\n      text += t;\n    }\n\n    return text;\n  },\n\n  /**\r\n   * Convert a range into a non-hanging one.\r\n   */\n  unhangRange(editor, range) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      voids = false\n    } = options;\n    var [start, end] = Range.edges(range); // PERF: exit early if we can guarantee that the range isn't hanging.\n\n    if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range)) {\n      return range;\n    }\n\n    var endBlock = Editor.above(editor, {\n      at: end,\n      match: n => Editor.isBlock(editor, n)\n    });\n    var blockPath = endBlock ? endBlock[1] : [];\n    var first = Editor.start(editor, start);\n    var before = {\n      anchor: first,\n      focus: end\n    };\n    var skip = true;\n\n    for (var [node, path] of Editor.nodes(editor, {\n      at: before,\n      match: Text.isText,\n      reverse: true,\n      voids\n    })) {\n      if (skip) {\n        skip = false;\n        continue;\n      }\n\n      if (node.text !== '' || Path.isBefore(path, blockPath)) {\n        end = {\n          path,\n          offset: node.text.length\n        };\n        break;\n      }\n    }\n\n    return {\n      anchor: start,\n      focus: end\n    };\n  },\n\n  /**\r\n   * Match a void node in the current branch of the editor.\r\n   */\n  void(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    return Editor.above(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n      match: n => Editor.isVoid(editor, n)\n    }));\n  },\n\n  /**\r\n   * Call a function, deferring normalization until after it completes.\r\n   */\n  withoutNormalizing(editor, fn) {\n    var value = Editor.isNormalizing(editor);\n    Editor.setNormalizing(editor, false);\n\n    try {\n      fn();\n    } finally {\n      Editor.setNormalizing(editor, value);\n    }\n\n    Editor.normalize(editor);\n  }\n\n};\n\nvar Location = {\n  /**\r\n   * Check if a value implements the `Location` interface.\r\n   */\n  isLocation(value) {\n    return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value);\n  }\n\n};\nvar Span = {\n  /**\r\n   * Check if a value implements the `Span` interface.\r\n   */\n  isSpan(value) {\n    return Array.isArray(value) && value.length === 2 && value.every(Path.isPath);\n  }\n\n};\n\nvar _excluded$3 = [\"children\"],\n    _excluded2$2 = [\"text\"];\nvar IS_NODE_LIST_CACHE = new WeakMap();\nvar Node = {\n  /**\r\n   * Get the node at a specific path, asserting that it's an ancestor node.\r\n   */\n  ancestor(root, path) {\n    var node = Node.get(root, path);\n\n    if (Text.isText(node)) {\n      throw new Error(\"Cannot get the ancestor node at path [\".concat(path, \"] because it refers to a text node instead: \").concat(node));\n    }\n\n    return node;\n  },\n\n  /**\r\n   * Return a generator of all the ancestor nodes above a specific path.\r\n   *\r\n   * By default the order is bottom-up, from lowest to highest ancestor in\r\n   * the tree, but you can pass the `reverse: true` option to go top-down.\r\n   */\n  *ancestors(root, path) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    for (var p of Path.ancestors(path, options)) {\n      var n = Node.ancestor(root, p);\n      var entry = [n, p];\n      yield entry;\n    }\n  },\n\n  /**\r\n   * Get the child of a node at a specific index.\r\n   */\n  child(root, index) {\n    if (Text.isText(root)) {\n      throw new Error(\"Cannot get the child of a text node: \".concat(JSON.stringify(root)));\n    }\n\n    var c = root.children[index];\n\n    if (c == null) {\n      throw new Error(\"Cannot get child at index `\".concat(index, \"` in node: \").concat(JSON.stringify(root)));\n    }\n\n    return c;\n  },\n\n  /**\r\n   * Iterate over the children of a node at a specific path.\r\n   */\n  *children(root, path) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      reverse = false\n    } = options;\n    var ancestor = Node.ancestor(root, path);\n    var {\n      children\n    } = ancestor;\n    var index = reverse ? children.length - 1 : 0;\n\n    while (reverse ? index >= 0 : index < children.length) {\n      var child = Node.child(ancestor, index);\n      var childPath = path.concat(index);\n      yield [child, childPath];\n      index = reverse ? index - 1 : index + 1;\n    }\n  },\n\n  /**\r\n   * Get an entry for the common ancesetor node of two paths.\r\n   */\n  common(root, path, another) {\n    var p = Path.common(path, another);\n    var n = Node.get(root, p);\n    return [n, p];\n  },\n\n  /**\r\n   * Get the node at a specific path, asserting that it's a descendant node.\r\n   */\n  descendant(root, path) {\n    var node = Node.get(root, path);\n\n    if (Editor.isEditor(node)) {\n      throw new Error(\"Cannot get the descendant node at path [\".concat(path, \"] because it refers to the root editor node instead: \").concat(node));\n    }\n\n    return node;\n  },\n\n  /**\r\n   * Return a generator of all the descendant node entries inside a root node.\r\n   */\n  *descendants(root) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    for (var [node, path] of Node.nodes(root, options)) {\n      if (path.length !== 0) {\n        // NOTE: we have to coerce here because checking the path's length does\n        // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n        yield [node, path];\n      }\n    }\n  },\n\n  /**\r\n   * Return a generator of all the element nodes inside a root node. Each iteration\r\n   * will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the\r\n   * root node is an element it will be included in the iteration as well.\r\n   */\n  *elements(root) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    for (var [node, path] of Node.nodes(root, options)) {\n      if (Element.isElement(node)) {\n        yield [node, path];\n      }\n    }\n  },\n\n  /**\r\n   * Extract props from a Node.\r\n   */\n  extractProps(node) {\n    if (Element.isAncestor(node)) {\n      var properties = _objectWithoutProperties(node, _excluded$3);\n\n      return properties;\n    } else {\n      var properties = _objectWithoutProperties(node, _excluded2$2);\n\n      return properties;\n    }\n  },\n\n  /**\r\n   * Get the first node entry in a root node from a path.\r\n   */\n  first(root, path) {\n    var p = path.slice();\n    var n = Node.get(root, p);\n\n    while (n) {\n      if (Text.isText(n) || n.children.length === 0) {\n        break;\n      } else {\n        n = n.children[0];\n        p.push(0);\n      }\n    }\n\n    return [n, p];\n  },\n\n  /**\r\n   * Get the sliced fragment represented by a range inside a root node.\r\n   */\n  fragment(root, range) {\n    if (Text.isText(root)) {\n      throw new Error(\"Cannot get a fragment starting from a root text node: \".concat(JSON.stringify(root)));\n    }\n\n    var newRoot = produce({\n      children: root.children\n    }, r => {\n      var [start, end] = Range.edges(range);\n      var nodeEntries = Node.nodes(r, {\n        reverse: true,\n        pass: _ref => {\n          var [, path] = _ref;\n          return !Range.includes(range, path);\n        }\n      });\n\n      for (var [, path] of nodeEntries) {\n        if (!Range.includes(range, path)) {\n          var parent = Node.parent(r, path);\n          var index = path[path.length - 1];\n          parent.children.splice(index, 1);\n        }\n\n        if (Path.equals(path, end.path)) {\n          var leaf = Node.leaf(r, path);\n          leaf.text = leaf.text.slice(0, end.offset);\n        }\n\n        if (Path.equals(path, start.path)) {\n          var _leaf = Node.leaf(r, path);\n\n          _leaf.text = _leaf.text.slice(start.offset);\n        }\n      }\n\n      if (Editor.isEditor(r)) {\n        r.selection = null;\n      }\n    });\n    return newRoot.children;\n  },\n\n  /**\r\n   * Get the descendant node referred to by a specific path. If the path is an\r\n   * empty array, it refers to the root node itself.\r\n   */\n  get(root, path) {\n    var node = root;\n\n    for (var i = 0; i < path.length; i++) {\n      var p = path[i];\n\n      if (Text.isText(node) || !node.children[p]) {\n        throw new Error(\"Cannot find a descendant at path [\".concat(path, \"] in node: \").concat(JSON.stringify(root)));\n      }\n\n      node = node.children[p];\n    }\n\n    return node;\n  },\n\n  /**\r\n   * Check if a descendant node exists at a specific path.\r\n   */\n  has(root, path) {\n    var node = root;\n\n    for (var i = 0; i < path.length; i++) {\n      var p = path[i];\n\n      if (Text.isText(node) || !node.children[p]) {\n        return false;\n      }\n\n      node = node.children[p];\n    }\n\n    return true;\n  },\n\n  /**\r\n   * Check if a value implements the `Node` interface.\r\n   */\n  isNode(value) {\n    return Text.isText(value) || Element.isElement(value) || Editor.isEditor(value);\n  },\n\n  /**\r\n   * Check if a value is a list of `Node` objects.\r\n   */\n  isNodeList(value) {\n    if (!Array.isArray(value)) {\n      return false;\n    }\n\n    var cachedResult = IS_NODE_LIST_CACHE.get(value);\n\n    if (cachedResult !== undefined) {\n      return cachedResult;\n    }\n\n    var isNodeList = value.every(val => Node.isNode(val));\n    IS_NODE_LIST_CACHE.set(value, isNodeList);\n    return isNodeList;\n  },\n\n  /**\r\n   * Get the last node entry in a root node from a path.\r\n   */\n  last(root, path) {\n    var p = path.slice();\n    var n = Node.get(root, p);\n\n    while (n) {\n      if (Text.isText(n) || n.children.length === 0) {\n        break;\n      } else {\n        var i = n.children.length - 1;\n        n = n.children[i];\n        p.push(i);\n      }\n    }\n\n    return [n, p];\n  },\n\n  /**\r\n   * Get the node at a specific path, ensuring it's a leaf text node.\r\n   */\n  leaf(root, path) {\n    var node = Node.get(root, path);\n\n    if (!Text.isText(node)) {\n      throw new Error(\"Cannot get the leaf node at path [\".concat(path, \"] because it refers to a non-leaf node: \").concat(node));\n    }\n\n    return node;\n  },\n\n  /**\r\n   * Return a generator of the in a branch of the tree, from a specific path.\r\n   *\r\n   * By default the order is top-down, from lowest to highest node in the tree,\r\n   * but you can pass the `reverse: true` option to go bottom-up.\r\n   */\n  *levels(root, path) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    for (var p of Path.levels(path, options)) {\n      var n = Node.get(root, p);\n      yield [n, p];\n    }\n  },\n\n  /**\r\n   * Check if a node matches a set of props.\r\n   */\n  matches(node, props) {\n    return Element.isElement(node) && Element.isElementProps(props) && Element.matches(node, props) || Text.isText(node) && Text.isTextProps(props) && Text.matches(node, props);\n  },\n\n  /**\r\n   * Return a generator of all the node entries of a root node. Each entry is\r\n   * returned as a `[Node, Path]` tuple, with the path referring to the node's\r\n   * position inside the root node.\r\n   */\n  *nodes(root) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      pass,\n      reverse = false\n    } = options;\n    var {\n      from = [],\n      to\n    } = options;\n    var visited = new Set();\n    var p = [];\n    var n = root;\n\n    while (true) {\n      if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n        break;\n      }\n\n      if (!visited.has(n)) {\n        yield [n, p];\n      } // If we're allowed to go downward and we haven't descended yet, do.\n\n\n      if (!visited.has(n) && !Text.isText(n) && n.children.length !== 0 && (pass == null || pass([n, p]) === false)) {\n        visited.add(n);\n        var nextIndex = reverse ? n.children.length - 1 : 0;\n\n        if (Path.isAncestor(p, from)) {\n          nextIndex = from[p.length];\n        }\n\n        p = p.concat(nextIndex);\n        n = Node.get(root, p);\n        continue;\n      } // If we're at the root and we can't go down, we're done.\n\n\n      if (p.length === 0) {\n        break;\n      } // If we're going forward...\n\n\n      if (!reverse) {\n        var newPath = Path.next(p);\n\n        if (Node.has(root, newPath)) {\n          p = newPath;\n          n = Node.get(root, p);\n          continue;\n        }\n      } // If we're going backward...\n\n\n      if (reverse && p[p.length - 1] !== 0) {\n        var _newPath = Path.previous(p);\n\n        p = _newPath;\n        n = Node.get(root, p);\n        continue;\n      } // Otherwise we're going upward...\n\n\n      p = Path.parent(p);\n      n = Node.get(root, p);\n      visited.add(n);\n    }\n  },\n\n  /**\r\n   * Get the parent of a node at a specific path.\r\n   */\n  parent(root, path) {\n    var parentPath = Path.parent(path);\n    var p = Node.get(root, parentPath);\n\n    if (Text.isText(p)) {\n      throw new Error(\"Cannot get the parent of path [\".concat(path, \"] because it does not exist in the root.\"));\n    }\n\n    return p;\n  },\n\n  /**\r\n   * Get the concatenated text string of a node's content.\r\n   *\r\n   * Note that this will not include spaces or line breaks between block nodes.\r\n   * It is not a user-facing string, but a string for performing offset-related\r\n   * computations for a node.\r\n   */\n  string(node) {\n    if (Text.isText(node)) {\n      return node.text;\n    } else {\n      return node.children.map(Node.string).join('');\n    }\n  },\n\n  /**\r\n   * Return a generator of all leaf text nodes in a root node.\r\n   */\n  *texts(root) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    for (var [node, path] of Node.nodes(root, options)) {\n      if (Text.isText(node)) {\n        yield [node, path];\n      }\n    }\n  }\n\n};\n\nfunction ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$7(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Operation = {\n  /**\r\n   * Check of a value is a `NodeOperation` object.\r\n   */\n  isNodeOperation(value) {\n    return Operation.isOperation(value) && value.type.endsWith('_node');\n  },\n\n  /**\r\n   * Check of a value is an `Operation` object.\r\n   */\n  isOperation(value) {\n    if (!isPlainObject(value)) {\n      return false;\n    }\n\n    switch (value.type) {\n      case 'insert_node':\n        return Path.isPath(value.path) && Node.isNode(value.node);\n\n      case 'insert_text':\n        return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n\n      case 'merge_node':\n        return typeof value.position === 'number' && Path.isPath(value.path) && isPlainObject(value.properties);\n\n      case 'move_node':\n        return Path.isPath(value.path) && Path.isPath(value.newPath);\n\n      case 'remove_node':\n        return Path.isPath(value.path) && Node.isNode(value.node);\n\n      case 'remove_text':\n        return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path);\n\n      case 'set_node':\n        return Path.isPath(value.path) && isPlainObject(value.properties) && isPlainObject(value.newProperties);\n\n      case 'set_selection':\n        return value.properties === null && Range.isRange(value.newProperties) || value.newProperties === null && Range.isRange(value.properties) || isPlainObject(value.properties) && isPlainObject(value.newProperties);\n\n      case 'split_node':\n        return Path.isPath(value.path) && typeof value.position === 'number' && isPlainObject(value.properties);\n\n      default:\n        return false;\n    }\n  },\n\n  /**\r\n   * Check if a value is a list of `Operation` objects.\r\n   */\n  isOperationList(value) {\n    return Array.isArray(value) && value.every(val => Operation.isOperation(val));\n  },\n\n  /**\r\n   * Check of a value is a `SelectionOperation` object.\r\n   */\n  isSelectionOperation(value) {\n    return Operation.isOperation(value) && value.type.endsWith('_selection');\n  },\n\n  /**\r\n   * Check of a value is a `TextOperation` object.\r\n   */\n  isTextOperation(value) {\n    return Operation.isOperation(value) && value.type.endsWith('_text');\n  },\n\n  /**\r\n   * Invert an operation, returning a new operation that will exactly undo the\r\n   * original when applied.\r\n   */\n  inverse(op) {\n    switch (op.type) {\n      case 'insert_node':\n        {\n          return _objectSpread$7(_objectSpread$7({}, op), {}, {\n            type: 'remove_node'\n          });\n        }\n\n      case 'insert_text':\n        {\n          return _objectSpread$7(_objectSpread$7({}, op), {}, {\n            type: 'remove_text'\n          });\n        }\n\n      case 'merge_node':\n        {\n          return _objectSpread$7(_objectSpread$7({}, op), {}, {\n            type: 'split_node',\n            path: Path.previous(op.path)\n          });\n        }\n\n      case 'move_node':\n        {\n          var {\n            newPath,\n            path\n          } = op; // PERF: in this case the move operation is a no-op anyways.\n\n          if (Path.equals(newPath, path)) {\n            return op;\n          } // If the move happens completely within a single parent the path and\n          // newPath are stable with respect to each other.\n\n\n          if (Path.isSibling(path, newPath)) {\n            return _objectSpread$7(_objectSpread$7({}, op), {}, {\n              path: newPath,\n              newPath: path\n            });\n          } // If the move does not happen within a single parent it is possible\n          // for the move to impact the true path to the location where the node\n          // was removed from and where it was inserted. We have to adjust for this\n          // and find the original path. We can accomplish this (only in non-sibling)\n          // moves by looking at the impact of the move operation on the node\n          // after the original move path.\n\n\n          var inversePath = Path.transform(path, op);\n          var inverseNewPath = Path.transform(Path.next(path), op);\n          return _objectSpread$7(_objectSpread$7({}, op), {}, {\n            path: inversePath,\n            newPath: inverseNewPath\n          });\n        }\n\n      case 'remove_node':\n        {\n          return _objectSpread$7(_objectSpread$7({}, op), {}, {\n            type: 'insert_node'\n          });\n        }\n\n      case 'remove_text':\n        {\n          return _objectSpread$7(_objectSpread$7({}, op), {}, {\n            type: 'insert_text'\n          });\n        }\n\n      case 'set_node':\n        {\n          var {\n            properties,\n            newProperties\n          } = op;\n          return _objectSpread$7(_objectSpread$7({}, op), {}, {\n            properties: newProperties,\n            newProperties: properties\n          });\n        }\n\n      case 'set_selection':\n        {\n          var {\n            properties: _properties,\n            newProperties: _newProperties\n          } = op;\n\n          if (_properties == null) {\n            return _objectSpread$7(_objectSpread$7({}, op), {}, {\n              properties: _newProperties,\n              newProperties: null\n            });\n          } else if (_newProperties == null) {\n            return _objectSpread$7(_objectSpread$7({}, op), {}, {\n              properties: null,\n              newProperties: _properties\n            });\n          } else {\n            return _objectSpread$7(_objectSpread$7({}, op), {}, {\n              properties: _newProperties,\n              newProperties: _properties\n            });\n          }\n        }\n\n      case 'split_node':\n        {\n          return _objectSpread$7(_objectSpread$7({}, op), {}, {\n            type: 'merge_node',\n            path: Path.next(op.path)\n          });\n        }\n    }\n  }\n\n};\n\nvar Path = {\n  /**\r\n   * Get a list of ancestor paths for a given path.\r\n   *\r\n   * The paths are sorted from deepest to shallowest ancestor. However, if the\r\n   * `reverse: true` option is passed, they are reversed.\r\n   */\n  ancestors(path) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      reverse = false\n    } = options;\n    var paths = Path.levels(path, options);\n\n    if (reverse) {\n      paths = paths.slice(1);\n    } else {\n      paths = paths.slice(0, -1);\n    }\n\n    return paths;\n  },\n\n  /**\r\n   * Get the common ancestor path of two paths.\r\n   */\n  common(path, another) {\n    var common = [];\n\n    for (var i = 0; i < path.length && i < another.length; i++) {\n      var av = path[i];\n      var bv = another[i];\n\n      if (av !== bv) {\n        break;\n      }\n\n      common.push(av);\n    }\n\n    return common;\n  },\n\n  /**\r\n   * Compare a path to another, returning an integer indicating whether the path\r\n   * was before, at, or after the other.\r\n   *\r\n   * Note: Two paths of unequal length can still receive a `0` result if one is\r\n   * directly above or below the other. If you want exact matching, use\r\n   * [[Path.equals]] instead.\r\n   */\n  compare(path, another) {\n    var min = Math.min(path.length, another.length);\n\n    for (var i = 0; i < min; i++) {\n      if (path[i] < another[i]) return -1;\n      if (path[i] > another[i]) return 1;\n    }\n\n    return 0;\n  },\n\n  /**\r\n   * Check if a path ends after one of the indexes in another.\r\n   */\n  endsAfter(path, another) {\n    var i = path.length - 1;\n    var as = path.slice(0, i);\n    var bs = another.slice(0, i);\n    var av = path[i];\n    var bv = another[i];\n    return Path.equals(as, bs) && av > bv;\n  },\n\n  /**\r\n   * Check if a path ends at one of the indexes in another.\r\n   */\n  endsAt(path, another) {\n    var i = path.length;\n    var as = path.slice(0, i);\n    var bs = another.slice(0, i);\n    return Path.equals(as, bs);\n  },\n\n  /**\r\n   * Check if a path ends before one of the indexes in another.\r\n   */\n  endsBefore(path, another) {\n    var i = path.length - 1;\n    var as = path.slice(0, i);\n    var bs = another.slice(0, i);\n    var av = path[i];\n    var bv = another[i];\n    return Path.equals(as, bs) && av < bv;\n  },\n\n  /**\r\n   * Check if a path is exactly equal to another.\r\n   */\n  equals(path, another) {\n    return path.length === another.length && path.every((n, i) => n === another[i]);\n  },\n\n  /**\r\n   * Check if the path of previous sibling node exists\r\n   */\n  hasPrevious(path) {\n    return path[path.length - 1] > 0;\n  },\n\n  /**\r\n   * Check if a path is after another.\r\n   */\n  isAfter(path, another) {\n    return Path.compare(path, another) === 1;\n  },\n\n  /**\r\n   * Check if a path is an ancestor of another.\r\n   */\n  isAncestor(path, another) {\n    return path.length < another.length && Path.compare(path, another) === 0;\n  },\n\n  /**\r\n   * Check if a path is before another.\r\n   */\n  isBefore(path, another) {\n    return Path.compare(path, another) === -1;\n  },\n\n  /**\r\n   * Check if a path is a child of another.\r\n   */\n  isChild(path, another) {\n    return path.length === another.length + 1 && Path.compare(path, another) === 0;\n  },\n\n  /**\r\n   * Check if a path is equal to or an ancestor of another.\r\n   */\n  isCommon(path, another) {\n    return path.length <= another.length && Path.compare(path, another) === 0;\n  },\n\n  /**\r\n   * Check if a path is a descendant of another.\r\n   */\n  isDescendant(path, another) {\n    return path.length > another.length && Path.compare(path, another) === 0;\n  },\n\n  /**\r\n   * Check if a path is the parent of another.\r\n   */\n  isParent(path, another) {\n    return path.length + 1 === another.length && Path.compare(path, another) === 0;\n  },\n\n  /**\r\n   * Check is a value implements the `Path` interface.\r\n   */\n  isPath(value) {\n    return Array.isArray(value) && (value.length === 0 || typeof value[0] === 'number');\n  },\n\n  /**\r\n   * Check if a path is a sibling of another.\r\n   */\n  isSibling(path, another) {\n    if (path.length !== another.length) {\n      return false;\n    }\n\n    var as = path.slice(0, -1);\n    var bs = another.slice(0, -1);\n    var al = path[path.length - 1];\n    var bl = another[another.length - 1];\n    return al !== bl && Path.equals(as, bs);\n  },\n\n  /**\r\n   * Get a list of paths at every level down to a path. Note: this is the same\r\n   * as `Path.ancestors`, but including the path itself.\r\n   *\r\n   * The paths are sorted from shallowest to deepest. However, if the `reverse:\r\n   * true` option is passed, they are reversed.\r\n   */\n  levels(path) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      reverse = false\n    } = options;\n    var list = [];\n\n    for (var i = 0; i <= path.length; i++) {\n      list.push(path.slice(0, i));\n    }\n\n    if (reverse) {\n      list.reverse();\n    }\n\n    return list;\n  },\n\n  /**\r\n   * Given a path, get the path to the next sibling node.\r\n   */\n  next(path) {\n    if (path.length === 0) {\n      throw new Error(\"Cannot get the next path of a root path [\".concat(path, \"], because it has no next index.\"));\n    }\n\n    var last = path[path.length - 1];\n    return path.slice(0, -1).concat(last + 1);\n  },\n\n  /**\r\n   * Returns whether this operation can affect paths or not. Used as an\r\n   * optimization when updating dirty paths during normalization\r\n   *\r\n   * NOTE: This *must* be kept in sync with the implementation of 'transform'\r\n   * below\r\n   */\n  operationCanTransformPath(operation) {\n    switch (operation.type) {\n      case 'insert_node':\n      case 'remove_node':\n      case 'merge_node':\n      case 'split_node':\n      case 'move_node':\n        return true;\n\n      default:\n        return false;\n    }\n  },\n\n  /**\r\n   * Given a path, return a new path referring to the parent node above it.\r\n   */\n  parent(path) {\n    if (path.length === 0) {\n      throw new Error(\"Cannot get the parent path of the root path [\".concat(path, \"].\"));\n    }\n\n    return path.slice(0, -1);\n  },\n\n  /**\r\n   * Given a path, get the path to the previous sibling node.\r\n   */\n  previous(path) {\n    if (path.length === 0) {\n      throw new Error(\"Cannot get the previous path of a root path [\".concat(path, \"], because it has no previous index.\"));\n    }\n\n    var last = path[path.length - 1];\n\n    if (last <= 0) {\n      throw new Error(\"Cannot get the previous path of a first child path [\".concat(path, \"] because it would result in a negative index.\"));\n    }\n\n    return path.slice(0, -1).concat(last - 1);\n  },\n\n  /**\r\n   * Get a path relative to an ancestor.\r\n   */\n  relative(path, ancestor) {\n    if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n      throw new Error(\"Cannot get the relative path of [\".concat(path, \"] inside ancestor [\").concat(ancestor, \"], because it is not above or equal to the path.\"));\n    }\n\n    return path.slice(ancestor.length);\n  },\n\n  /**\r\n   * Transform a path by an operation.\r\n   */\n  transform(path, operation) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return produce(path, p => {\n      var {\n        affinity = 'forward'\n      } = options; // PERF: Exit early if the operation is guaranteed not to have an effect.\n\n      if (!path || (path === null || path === void 0 ? void 0 : path.length) === 0) {\n        return;\n      }\n\n      if (p === null) {\n        return null;\n      }\n\n      switch (operation.type) {\n        case 'insert_node':\n          {\n            var {\n              path: op\n            } = operation;\n\n            if (Path.equals(op, p) || Path.endsBefore(op, p) || Path.isAncestor(op, p)) {\n              p[op.length - 1] += 1;\n            }\n\n            break;\n          }\n\n        case 'remove_node':\n          {\n            var {\n              path: _op\n            } = operation;\n\n            if (Path.equals(_op, p) || Path.isAncestor(_op, p)) {\n              return null;\n            } else if (Path.endsBefore(_op, p)) {\n              p[_op.length - 1] -= 1;\n            }\n\n            break;\n          }\n\n        case 'merge_node':\n          {\n            var {\n              path: _op2,\n              position\n            } = operation;\n\n            if (Path.equals(_op2, p) || Path.endsBefore(_op2, p)) {\n              p[_op2.length - 1] -= 1;\n            } else if (Path.isAncestor(_op2, p)) {\n              p[_op2.length - 1] -= 1;\n              p[_op2.length] += position;\n            }\n\n            break;\n          }\n\n        case 'split_node':\n          {\n            var {\n              path: _op3,\n              position: _position\n            } = operation;\n\n            if (Path.equals(_op3, p)) {\n              if (affinity === 'forward') {\n                p[p.length - 1] += 1;\n              } else if (affinity === 'backward') ; else {\n                return null;\n              }\n            } else if (Path.endsBefore(_op3, p)) {\n              p[_op3.length - 1] += 1;\n            } else if (Path.isAncestor(_op3, p) && path[_op3.length] >= _position) {\n              p[_op3.length - 1] += 1;\n              p[_op3.length] -= _position;\n            }\n\n            break;\n          }\n\n        case 'move_node':\n          {\n            var {\n              path: _op4,\n              newPath: onp\n            } = operation; // If the old and new path are the same, it's a no-op.\n\n            if (Path.equals(_op4, onp)) {\n              return;\n            }\n\n            if (Path.isAncestor(_op4, p) || Path.equals(_op4, p)) {\n              var copy = onp.slice();\n\n              if (Path.endsBefore(_op4, onp) && _op4.length < onp.length) {\n                copy[_op4.length - 1] -= 1;\n              }\n\n              return copy.concat(p.slice(_op4.length));\n            } else if (Path.isSibling(_op4, onp) && (Path.isAncestor(onp, p) || Path.equals(onp, p))) {\n              if (Path.endsBefore(_op4, p)) {\n                p[_op4.length - 1] -= 1;\n              } else {\n                p[_op4.length - 1] += 1;\n              }\n            } else if (Path.endsBefore(onp, p) || Path.equals(onp, p) || Path.isAncestor(onp, p)) {\n              if (Path.endsBefore(_op4, p)) {\n                p[_op4.length - 1] -= 1;\n              }\n\n              p[onp.length - 1] += 1;\n            } else if (Path.endsBefore(_op4, p)) {\n              if (Path.equals(onp, p)) {\n                p[onp.length - 1] += 1;\n              }\n\n              p[_op4.length - 1] -= 1;\n            }\n\n            break;\n          }\n      }\n    });\n  }\n\n};\n\nvar PathRef = {\n  /**\r\n   * Transform the path ref's current value by an operation.\r\n   */\n  transform(ref, op) {\n    var {\n      current,\n      affinity\n    } = ref;\n\n    if (current == null) {\n      return;\n    }\n\n    var path = Path.transform(current, op, {\n      affinity\n    });\n    ref.current = path;\n\n    if (path == null) {\n      ref.unref();\n    }\n  }\n\n};\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Point = {\n  /**\r\n   * Compare a point to another, returning an integer indicating whether the\r\n   * point was before, at, or after the other.\r\n   */\n  compare(point, another) {\n    var result = Path.compare(point.path, another.path);\n\n    if (result === 0) {\n      if (point.offset < another.offset) return -1;\n      if (point.offset > another.offset) return 1;\n      return 0;\n    }\n\n    return result;\n  },\n\n  /**\r\n   * Check if a point is after another.\r\n   */\n  isAfter(point, another) {\n    return Point.compare(point, another) === 1;\n  },\n\n  /**\r\n   * Check if a point is before another.\r\n   */\n  isBefore(point, another) {\n    return Point.compare(point, another) === -1;\n  },\n\n  /**\r\n   * Check if a point is exactly equal to another.\r\n   */\n  equals(point, another) {\n    // PERF: ensure the offsets are equal first since they are cheaper to check.\n    return point.offset === another.offset && Path.equals(point.path, another.path);\n  },\n\n  /**\r\n   * Check if a value implements the `Point` interface.\r\n   */\n  isPoint(value) {\n    return isPlainObject(value) && typeof value.offset === 'number' && Path.isPath(value.path);\n  },\n\n  /**\r\n   * Transform a point by an operation.\r\n   */\n  transform(point, op) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return produce(point, p => {\n      if (p === null) {\n        return null;\n      }\n\n      var {\n        affinity = 'forward'\n      } = options;\n      var {\n        path,\n        offset\n      } = p;\n\n      switch (op.type) {\n        case 'insert_node':\n        case 'move_node':\n          {\n            p.path = Path.transform(path, op, options);\n            break;\n          }\n\n        case 'insert_text':\n          {\n            if (Path.equals(op.path, path) && (op.offset < offset || op.offset === offset && affinity === 'forward')) {\n              p.offset += op.text.length;\n            }\n\n            break;\n          }\n\n        case 'merge_node':\n          {\n            if (Path.equals(op.path, path)) {\n              p.offset += op.position;\n            }\n\n            p.path = Path.transform(path, op, options);\n            break;\n          }\n\n        case 'remove_text':\n          {\n            if (Path.equals(op.path, path) && op.offset <= offset) {\n              p.offset -= Math.min(offset - op.offset, op.text.length);\n            }\n\n            break;\n          }\n\n        case 'remove_node':\n          {\n            if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n              return null;\n            }\n\n            p.path = Path.transform(path, op, options);\n            break;\n          }\n\n        case 'split_node':\n          {\n            if (Path.equals(op.path, path)) {\n              if (op.position === offset && affinity == null) {\n                return null;\n              } else if (op.position < offset || op.position === offset && affinity === 'forward') {\n                p.offset -= op.position;\n                p.path = Path.transform(path, op, _objectSpread$6(_objectSpread$6({}, options), {}, {\n                  affinity: 'forward'\n                }));\n              }\n            } else {\n              p.path = Path.transform(path, op, options);\n            }\n\n            break;\n          }\n      }\n    });\n  }\n\n};\n\nvar PointRef = {\n  /**\r\n   * Transform the point ref's current value by an operation.\r\n   */\n  transform(ref, op) {\n    var {\n      current,\n      affinity\n    } = ref;\n\n    if (current == null) {\n      return;\n    }\n\n    var point = Point.transform(current, op, {\n      affinity\n    });\n    ref.current = point;\n\n    if (point == null) {\n      ref.unref();\n    }\n  }\n\n};\n\nvar _excluded$2 = [\"anchor\", \"focus\"];\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Range = {\n  /**\r\n   * Get the start and end points of a range, in the order in which they appear\r\n   * in the document.\r\n   */\n  edges(range) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      reverse = false\n    } = options;\n    var {\n      anchor,\n      focus\n    } = range;\n    return Range.isBackward(range) === reverse ? [anchor, focus] : [focus, anchor];\n  },\n\n  /**\r\n   * Get the end point of a range.\r\n   */\n  end(range) {\n    var [, end] = Range.edges(range);\n    return end;\n  },\n\n  /**\r\n   * Check if a range is exactly equal to another.\r\n   */\n  equals(range, another) {\n    return Point.equals(range.anchor, another.anchor) && Point.equals(range.focus, another.focus);\n  },\n\n  /**\r\n   * Check if a range includes a path, a point or part of another range.\r\n   */\n  includes(range, target) {\n    if (Range.isRange(target)) {\n      if (Range.includes(range, target.anchor) || Range.includes(range, target.focus)) {\n        return true;\n      }\n\n      var [rs, re] = Range.edges(range);\n      var [ts, te] = Range.edges(target);\n      return Point.isBefore(rs, ts) && Point.isAfter(re, te);\n    }\n\n    var [start, end] = Range.edges(range);\n    var isAfterStart = false;\n    var isBeforeEnd = false;\n\n    if (Point.isPoint(target)) {\n      isAfterStart = Point.compare(target, start) >= 0;\n      isBeforeEnd = Point.compare(target, end) <= 0;\n    } else {\n      isAfterStart = Path.compare(target, start.path) >= 0;\n      isBeforeEnd = Path.compare(target, end.path) <= 0;\n    }\n\n    return isAfterStart && isBeforeEnd;\n  },\n\n  /**\r\n   * Get the intersection of a range with another.\r\n   */\n  intersection(range, another) {\n    var rest = _objectWithoutProperties(range, _excluded$2);\n\n    var [s1, e1] = Range.edges(range);\n    var [s2, e2] = Range.edges(another);\n    var start = Point.isBefore(s1, s2) ? s2 : s1;\n    var end = Point.isBefore(e1, e2) ? e1 : e2;\n\n    if (Point.isBefore(end, start)) {\n      return null;\n    } else {\n      return _objectSpread$5({\n        anchor: start,\n        focus: end\n      }, rest);\n    }\n  },\n\n  /**\r\n   * Check if a range is backward, meaning that its anchor point appears in the\r\n   * document _after_ its focus point.\r\n   */\n  isBackward(range) {\n    var {\n      anchor,\n      focus\n    } = range;\n    return Point.isAfter(anchor, focus);\n  },\n\n  /**\r\n   * Check if a range is collapsed, meaning that both its anchor and focus\r\n   * points refer to the exact same position in the document.\r\n   */\n  isCollapsed(range) {\n    var {\n      anchor,\n      focus\n    } = range;\n    return Point.equals(anchor, focus);\n  },\n\n  /**\r\n   * Check if a range is expanded.\r\n   *\r\n   * This is the opposite of [[Range.isCollapsed]] and is provided for legibility.\r\n   */\n  isExpanded(range) {\n    return !Range.isCollapsed(range);\n  },\n\n  /**\r\n   * Check if a range is forward.\r\n   *\r\n   * This is the opposite of [[Range.isBackward]] and is provided for legibility.\r\n   */\n  isForward(range) {\n    return !Range.isBackward(range);\n  },\n\n  /**\r\n   * Check if a value implements the [[Range]] interface.\r\n   */\n  isRange(value) {\n    return isPlainObject(value) && Point.isPoint(value.anchor) && Point.isPoint(value.focus);\n  },\n\n  /**\r\n   * Iterate through all of the point entries in a range.\r\n   */\n  *points(range) {\n    yield [range.anchor, 'anchor'];\n    yield [range.focus, 'focus'];\n  },\n\n  /**\r\n   * Get the start point of a range.\r\n   */\n  start(range) {\n    var [start] = Range.edges(range);\n    return start;\n  },\n\n  /**\r\n   * Transform a range by an operation.\r\n   */\n  transform(range, op) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return produce(range, r => {\n      if (r === null) {\n        return null;\n      }\n\n      var {\n        affinity = 'inward'\n      } = options;\n      var affinityAnchor;\n      var affinityFocus;\n\n      if (affinity === 'inward') {\n        // If the range is collapsed, make sure to use the same affinity to\n        // avoid the two points passing each other and expanding in the opposite\n        // direction\n        var isCollapsed = Range.isCollapsed(r);\n\n        if (Range.isForward(r)) {\n          affinityAnchor = 'forward';\n          affinityFocus = isCollapsed ? affinityAnchor : 'backward';\n        } else {\n          affinityAnchor = 'backward';\n          affinityFocus = isCollapsed ? affinityAnchor : 'forward';\n        }\n      } else if (affinity === 'outward') {\n        if (Range.isForward(r)) {\n          affinityAnchor = 'backward';\n          affinityFocus = 'forward';\n        } else {\n          affinityAnchor = 'forward';\n          affinityFocus = 'backward';\n        }\n      } else {\n        affinityAnchor = affinity;\n        affinityFocus = affinity;\n      }\n\n      var anchor = Point.transform(r.anchor, op, {\n        affinity: affinityAnchor\n      });\n      var focus = Point.transform(r.focus, op, {\n        affinity: affinityFocus\n      });\n\n      if (!anchor || !focus) {\n        return null;\n      }\n\n      r.anchor = anchor;\n      r.focus = focus;\n    });\n  }\n\n};\n\nvar RangeRef = {\n  /**\r\n   * Transform the range ref's current value by an operation.\r\n   */\n  transform(ref, op) {\n    var {\n      current,\n      affinity\n    } = ref;\n\n    if (current == null) {\n      return;\n    }\n\n    var path = Range.transform(current, op, {\n      affinity\n    });\n    ref.current = path;\n\n    if (path == null) {\n      ref.unref();\n    }\n  }\n\n};\n\n/*\r\n  Custom deep equal comparison for Slate nodes.\r\n\n  We don't need general purpose deep equality;\r\n  Slate only supports plain values, Arrays, and nested objects.\r\n  Complex values nested inside Arrays are not supported.\r\n\n  Slate objects are designed to be serialised, so\r\n  missing keys are deliberately normalised to undefined.\r\n */\n\nvar isDeepEqual = (node, another) => {\n  for (var key in node) {\n    var a = node[key];\n    var b = another[key];\n\n    if (isPlainObject(a) && isPlainObject(b)) {\n      if (!isDeepEqual(a, b)) return false;\n    } else if (Array.isArray(a) && Array.isArray(b)) {\n      if (a.length !== b.length) return false;\n\n      for (var i = 0; i < a.length; i++) {\n        if (a[i] !== b[i]) return false;\n      }\n    } else if (a !== b) {\n      return false;\n    }\n  }\n  /*\r\n    Deep object equality is only necessary in one direction; in the reverse direction\r\n    we are only looking for keys that are missing.\r\n    As above, undefined keys are normalised to missing.\r\n  */\n\n\n  for (var _key in another) {\n    if (node[_key] === undefined && another[_key] !== undefined) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\nvar _excluded$1 = [\"text\"],\n    _excluded2$1 = [\"anchor\", \"focus\"];\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Text = {\n  /**\r\n   * Check if two text nodes are equal.\r\n   *\r\n   * When loose is set, the text is not compared. This is\r\n   * used to check whether sibling text nodes can be merged.\r\n   */\n  equals(text, another) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      loose = false\n    } = options;\n\n    function omitText(obj) {\n      var rest = _objectWithoutProperties(obj, _excluded$1);\n\n      return rest;\n    }\n\n    return isDeepEqual(loose ? omitText(text) : text, loose ? omitText(another) : another);\n  },\n\n  /**\r\n   * Check if a value implements the `Text` interface.\r\n   */\n  isText(value) {\n    return isPlainObject(value) && typeof value.text === 'string';\n  },\n\n  /**\r\n   * Check if a value is a list of `Text` objects.\r\n   */\n  isTextList(value) {\n    return Array.isArray(value) && value.every(val => Text.isText(val));\n  },\n\n  /**\r\n   * Check if some props are a partial of Text.\r\n   */\n  isTextProps(props) {\n    return props.text !== undefined;\n  },\n\n  /**\r\n   * Check if an text matches set of properties.\r\n   *\r\n   * Note: this is for matching custom properties, and it does not ensure that\r\n   * the `text` property are two nodes equal.\r\n   */\n  matches(text, props) {\n    for (var key in props) {\n      if (key === 'text') {\n        continue;\n      }\n\n      if (!text.hasOwnProperty(key) || text[key] !== props[key]) {\n        return false;\n      }\n    }\n\n    return true;\n  },\n\n  /**\r\n   * Get the leaves for a text node given decorations.\r\n   */\n  decorations(node, decorations) {\n    var leaves = [_objectSpread$4({}, node)];\n\n    for (var dec of decorations) {\n      var rest = _objectWithoutProperties(dec, _excluded2$1);\n\n      var [start, end] = Range.edges(dec);\n      var next = [];\n      var o = 0;\n\n      for (var leaf of leaves) {\n        var {\n          length\n        } = leaf.text;\n        var offset = o;\n        o += length; // If the range encompases the entire leaf, add the range.\n\n        if (start.offset <= offset && end.offset >= o) {\n          Object.assign(leaf, rest);\n          next.push(leaf);\n          continue;\n        } // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n\n\n        if (start.offset !== end.offset && (start.offset === o || end.offset === offset) || start.offset > o || end.offset < offset || end.offset === offset && offset !== 0) {\n          next.push(leaf);\n          continue;\n        } // Otherwise we need to split the leaf, at the start, end, or both,\n        // and add the range to the middle intersecting section. Do the end\n        // split first since we don't need to update the offset that way.\n\n\n        var middle = leaf;\n        var before = void 0;\n        var after = void 0;\n\n        if (end.offset < o) {\n          var off = end.offset - offset;\n          after = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n            text: middle.text.slice(off)\n          });\n          middle = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n            text: middle.text.slice(0, off)\n          });\n        }\n\n        if (start.offset > offset) {\n          var _off = start.offset - offset;\n\n          before = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n            text: middle.text.slice(0, _off)\n          });\n          middle = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n            text: middle.text.slice(_off)\n          });\n        }\n\n        Object.assign(middle, rest);\n\n        if (before) {\n          next.push(before);\n        }\n\n        next.push(middle);\n\n        if (after) {\n          next.push(after);\n        }\n      }\n\n      leaves = next;\n    }\n\n    return leaves;\n  }\n\n};\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar applyToDraft = (editor, selection, op) => {\n  switch (op.type) {\n    case 'insert_node':\n      {\n        var {\n          path,\n          node\n        } = op;\n        var parent = Node.parent(editor, path);\n        var index = path[path.length - 1];\n\n        if (index > parent.children.length) {\n          throw new Error(\"Cannot apply an \\\"insert_node\\\" operation at path [\".concat(path, \"] because the destination is past the end of the node.\"));\n        }\n\n        parent.children.splice(index, 0, node);\n\n        if (selection) {\n          for (var [point, key] of Range.points(selection)) {\n            selection[key] = Point.transform(point, op);\n          }\n        }\n\n        break;\n      }\n\n    case 'insert_text':\n      {\n        var {\n          path: _path,\n          offset,\n          text\n        } = op;\n        if (text.length === 0) break;\n\n        var _node = Node.leaf(editor, _path);\n\n        var before = _node.text.slice(0, offset);\n\n        var after = _node.text.slice(offset);\n\n        _node.text = before + text + after;\n\n        if (selection) {\n          for (var [_point, _key] of Range.points(selection)) {\n            selection[_key] = Point.transform(_point, op);\n          }\n        }\n\n        break;\n      }\n\n    case 'merge_node':\n      {\n        var {\n          path: _path2\n        } = op;\n\n        var _node2 = Node.get(editor, _path2);\n\n        var prevPath = Path.previous(_path2);\n        var prev = Node.get(editor, prevPath);\n\n        var _parent = Node.parent(editor, _path2);\n\n        var _index = _path2[_path2.length - 1];\n\n        if (Text.isText(_node2) && Text.isText(prev)) {\n          prev.text += _node2.text;\n        } else if (!Text.isText(_node2) && !Text.isText(prev)) {\n          prev.children.push(..._node2.children);\n        } else {\n          throw new Error(\"Cannot apply a \\\"merge_node\\\" operation at path [\".concat(_path2, \"] to nodes of different interfaces: \").concat(_node2, \" \").concat(prev));\n        }\n\n        _parent.children.splice(_index, 1);\n\n        if (selection) {\n          for (var [_point2, _key2] of Range.points(selection)) {\n            selection[_key2] = Point.transform(_point2, op);\n          }\n        }\n\n        break;\n      }\n\n    case 'move_node':\n      {\n        var {\n          path: _path3,\n          newPath\n        } = op;\n\n        if (Path.isAncestor(_path3, newPath)) {\n          throw new Error(\"Cannot move a path [\".concat(_path3, \"] to new path [\").concat(newPath, \"] because the destination is inside itself.\"));\n        }\n\n        var _node3 = Node.get(editor, _path3);\n\n        var _parent2 = Node.parent(editor, _path3);\n\n        var _index2 = _path3[_path3.length - 1]; // This is tricky, but since the `path` and `newPath` both refer to\n        // the same snapshot in time, there's a mismatch. After either\n        // removing the original position, the second step's path can be out\n        // of date. So instead of using the `op.newPath` directly, we\n        // transform `op.path` to ascertain what the `newPath` would be after\n        // the operation was applied.\n\n        _parent2.children.splice(_index2, 1);\n\n        var truePath = Path.transform(_path3, op);\n        var newParent = Node.get(editor, Path.parent(truePath));\n        var newIndex = truePath[truePath.length - 1];\n        newParent.children.splice(newIndex, 0, _node3);\n\n        if (selection) {\n          for (var [_point3, _key3] of Range.points(selection)) {\n            selection[_key3] = Point.transform(_point3, op);\n          }\n        }\n\n        break;\n      }\n\n    case 'remove_node':\n      {\n        var {\n          path: _path4\n        } = op;\n        var _index3 = _path4[_path4.length - 1];\n\n        var _parent3 = Node.parent(editor, _path4);\n\n        _parent3.children.splice(_index3, 1); // Transform all of the points in the value, but if the point was in the\n        // node that was removed we need to update the range or remove it.\n\n\n        if (selection) {\n          for (var [_point4, _key4] of Range.points(selection)) {\n            var result = Point.transform(_point4, op);\n\n            if (selection != null && result != null) {\n              selection[_key4] = result;\n            } else {\n              var _prev = void 0;\n\n              var next = void 0;\n\n              for (var [n, p] of Node.texts(editor)) {\n                if (Path.compare(p, _path4) === -1) {\n                  _prev = [n, p];\n                } else {\n                  next = [n, p];\n                  break;\n                }\n              }\n\n              var preferNext = false;\n\n              if (_prev && next) {\n                if (Path.equals(next[1], _path4)) {\n                  preferNext = !Path.hasPrevious(next[1]);\n                } else {\n                  preferNext = Path.common(_prev[1], _path4).length < Path.common(next[1], _path4).length;\n                }\n              }\n\n              if (_prev && !preferNext) {\n                _point4.path = _prev[1];\n                _point4.offset = _prev[0].text.length;\n              } else if (next) {\n                _point4.path = next[1];\n                _point4.offset = 0;\n              } else {\n                selection = null;\n              }\n            }\n          }\n        }\n\n        break;\n      }\n\n    case 'remove_text':\n      {\n        var {\n          path: _path5,\n          offset: _offset,\n          text: _text\n        } = op;\n        if (_text.length === 0) break;\n\n        var _node4 = Node.leaf(editor, _path5);\n\n        var _before = _node4.text.slice(0, _offset);\n\n        var _after = _node4.text.slice(_offset + _text.length);\n\n        _node4.text = _before + _after;\n\n        if (selection) {\n          for (var [_point5, _key5] of Range.points(selection)) {\n            selection[_key5] = Point.transform(_point5, op);\n          }\n        }\n\n        break;\n      }\n\n    case 'set_node':\n      {\n        var {\n          path: _path6,\n          properties,\n          newProperties\n        } = op;\n\n        if (_path6.length === 0) {\n          throw new Error(\"Cannot set properties on the root node!\");\n        }\n\n        var _node5 = Node.get(editor, _path6);\n\n        for (var _key6 in newProperties) {\n          if (_key6 === 'children' || _key6 === 'text') {\n            throw new Error(\"Cannot set the \\\"\".concat(_key6, \"\\\" property of nodes!\"));\n          }\n\n          var value = newProperties[_key6];\n\n          if (value == null) {\n            delete _node5[_key6];\n          } else {\n            _node5[_key6] = value;\n          }\n        } // properties that were previously defined, but are now missing, must be deleted\n\n\n        for (var _key7 in properties) {\n          if (!newProperties.hasOwnProperty(_key7)) {\n            delete _node5[_key7];\n          }\n        }\n\n        break;\n      }\n\n    case 'set_selection':\n      {\n        var {\n          newProperties: _newProperties\n        } = op;\n\n        if (_newProperties == null) {\n          selection = _newProperties;\n        } else {\n          if (selection == null) {\n            if (!Range.isRange(_newProperties)) {\n              throw new Error(\"Cannot apply an incomplete \\\"set_selection\\\" operation properties \".concat(JSON.stringify(_newProperties), \" when there is no current selection.\"));\n            }\n\n            selection = _objectSpread$3({}, _newProperties);\n          }\n\n          for (var _key8 in _newProperties) {\n            var _value = _newProperties[_key8];\n\n            if (_value == null) {\n              if (_key8 === 'anchor' || _key8 === 'focus') {\n                throw new Error(\"Cannot remove the \\\"\".concat(_key8, \"\\\" selection property\"));\n              }\n\n              delete selection[_key8];\n            } else {\n              selection[_key8] = _value;\n            }\n          }\n        }\n\n        break;\n      }\n\n    case 'split_node':\n      {\n        var {\n          path: _path7,\n          position,\n          properties: _properties\n        } = op;\n\n        if (_path7.length === 0) {\n          throw new Error(\"Cannot apply a \\\"split_node\\\" operation at path [\".concat(_path7, \"] because the root node cannot be split.\"));\n        }\n\n        var _node6 = Node.get(editor, _path7);\n\n        var _parent4 = Node.parent(editor, _path7);\n\n        var _index4 = _path7[_path7.length - 1];\n        var newNode;\n\n        if (Text.isText(_node6)) {\n          var _before2 = _node6.text.slice(0, position);\n\n          var _after2 = _node6.text.slice(position);\n\n          _node6.text = _before2;\n          newNode = _objectSpread$3(_objectSpread$3({}, _properties), {}, {\n            text: _after2\n          });\n        } else {\n          var _before3 = _node6.children.slice(0, position);\n\n          var _after3 = _node6.children.slice(position);\n\n          _node6.children = _before3;\n          newNode = _objectSpread$3(_objectSpread$3({}, _properties), {}, {\n            children: _after3\n          });\n        }\n\n        _parent4.children.splice(_index4 + 1, 0, newNode);\n\n        if (selection) {\n          for (var [_point6, _key9] of Range.points(selection)) {\n            selection[_key9] = Point.transform(_point6, op);\n          }\n        }\n\n        break;\n      }\n  }\n\n  return selection;\n};\n\nvar GeneralTransforms = {\n  /**\r\n   * Transform the editor by an operation.\r\n   */\n  transform(editor, op) {\n    editor.children = createDraft(editor.children);\n    var selection = editor.selection && createDraft(editor.selection);\n\n    try {\n      selection = applyToDraft(editor, selection, op);\n    } finally {\n      editor.children = finishDraft(editor.children);\n\n      if (selection) {\n        editor.selection = isDraft(selection) ? finishDraft(selection) : selection;\n      } else {\n        editor.selection = null;\n      }\n    }\n  }\n\n};\n\nvar _excluded = [\"text\"],\n    _excluded2 = [\"children\"];\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar NodeTransforms = {\n  /**\r\n   * Insert nodes at a specific location in the Editor.\r\n   */\n  insertNodes(editor, nodes) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        hanging = false,\n        voids = false,\n        mode = 'lowest'\n      } = options;\n      var {\n        at,\n        match,\n        select\n      } = options;\n\n      if (Node.isNode(nodes)) {\n        nodes = [nodes];\n      }\n\n      if (nodes.length === 0) {\n        return;\n      }\n\n      var [node] = nodes; // By default, use the selection as the target location. But if there is\n      // no selection, insert at the end of the document since that is such a\n      // common use case when inserting from a non-selected state.\n\n      if (!at) {\n        if (editor.selection) {\n          at = editor.selection;\n        } else if (editor.children.length > 0) {\n          at = Editor.end(editor, []);\n        } else {\n          at = [0];\n        }\n\n        select = true;\n      }\n\n      if (select == null) {\n        select = false;\n      }\n\n      if (Range.isRange(at)) {\n        if (!hanging) {\n          at = Editor.unhangRange(editor, at);\n        }\n\n        if (Range.isCollapsed(at)) {\n          at = at.anchor;\n        } else {\n          var [, end] = Range.edges(at);\n          var pointRef = Editor.pointRef(editor, end);\n          Transforms.delete(editor, {\n            at\n          });\n          at = pointRef.unref();\n        }\n      }\n\n      if (Point.isPoint(at)) {\n        if (match == null) {\n          if (Text.isText(node)) {\n            match = n => Text.isText(n);\n          } else if (editor.isInline(node)) {\n            match = n => Text.isText(n) || Editor.isInline(editor, n);\n          } else {\n            match = n => Editor.isBlock(editor, n);\n          }\n        }\n\n        var [entry] = Editor.nodes(editor, {\n          at: at.path,\n          match,\n          mode,\n          voids\n        });\n\n        if (entry) {\n          var [, _matchPath] = entry;\n          var pathRef = Editor.pathRef(editor, _matchPath);\n          var isAtEnd = Editor.isEnd(editor, at, _matchPath);\n          Transforms.splitNodes(editor, {\n            at,\n            match,\n            mode,\n            voids\n          });\n          var path = pathRef.unref();\n          at = isAtEnd ? Path.next(path) : path;\n        } else {\n          return;\n        }\n      }\n\n      var parentPath = Path.parent(at);\n      var index = at[at.length - 1];\n\n      if (!voids && Editor.void(editor, {\n        at: parentPath\n      })) {\n        return;\n      }\n\n      for (var _node of nodes) {\n        var _path = parentPath.concat(index);\n\n        index++;\n        editor.apply({\n          type: 'insert_node',\n          path: _path,\n          node: _node\n        });\n        at = Path.next(at);\n      }\n\n      at = Path.previous(at);\n\n      if (select) {\n        var point = Editor.end(editor, at);\n\n        if (point) {\n          Transforms.select(editor, point);\n        }\n      }\n    });\n  },\n\n  /**\r\n   * Lift nodes at a specific location upwards in the document tree, splitting\r\n   * their parent in two if necessary.\r\n   */\n  liftNodes(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        at = editor.selection,\n        mode = 'lowest',\n        voids = false\n      } = options;\n      var {\n        match\n      } = options;\n\n      if (match == null) {\n        match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n      }\n\n      if (!at) {\n        return;\n      }\n\n      var matches = Editor.nodes(editor, {\n        at,\n        match,\n        mode,\n        voids\n      });\n      var pathRefs = Array.from(matches, _ref => {\n        var [, p] = _ref;\n        return Editor.pathRef(editor, p);\n      });\n\n      for (var pathRef of pathRefs) {\n        var path = pathRef.unref();\n\n        if (path.length < 2) {\n          throw new Error(\"Cannot lift node at a path [\".concat(path, \"] because it has a depth of less than `2`.\"));\n        }\n\n        var parentNodeEntry = Editor.node(editor, Path.parent(path));\n        var [parent, parentPath] = parentNodeEntry;\n        var index = path[path.length - 1];\n        var {\n          length\n        } = parent.children;\n\n        if (length === 1) {\n          var toPath = Path.next(parentPath);\n          Transforms.moveNodes(editor, {\n            at: path,\n            to: toPath,\n            voids\n          });\n          Transforms.removeNodes(editor, {\n            at: parentPath,\n            voids\n          });\n        } else if (index === 0) {\n          Transforms.moveNodes(editor, {\n            at: path,\n            to: parentPath,\n            voids\n          });\n        } else if (index === length - 1) {\n          var _toPath = Path.next(parentPath);\n\n          Transforms.moveNodes(editor, {\n            at: path,\n            to: _toPath,\n            voids\n          });\n        } else {\n          var splitPath = Path.next(path);\n\n          var _toPath2 = Path.next(parentPath);\n\n          Transforms.splitNodes(editor, {\n            at: splitPath,\n            voids\n          });\n          Transforms.moveNodes(editor, {\n            at: path,\n            to: _toPath2,\n            voids\n          });\n        }\n      }\n    });\n  },\n\n  /**\r\n   * Merge a node at a location with the previous node of the same depth,\r\n   * removing any empty containing nodes after the merge if necessary.\r\n   */\n  mergeNodes(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        match,\n        at = editor.selection\n      } = options;\n      var {\n        hanging = false,\n        voids = false,\n        mode = 'lowest'\n      } = options;\n\n      if (!at) {\n        return;\n      }\n\n      if (match == null) {\n        if (Path.isPath(at)) {\n          var [parent] = Editor.parent(editor, at);\n\n          match = n => parent.children.includes(n);\n        } else {\n          match = n => Editor.isBlock(editor, n);\n        }\n      }\n\n      if (!hanging && Range.isRange(at)) {\n        at = Editor.unhangRange(editor, at);\n      }\n\n      if (Range.isRange(at)) {\n        if (Range.isCollapsed(at)) {\n          at = at.anchor;\n        } else {\n          var [, end] = Range.edges(at);\n          var pointRef = Editor.pointRef(editor, end);\n          Transforms.delete(editor, {\n            at\n          });\n          at = pointRef.unref();\n\n          if (options.at == null) {\n            Transforms.select(editor, at);\n          }\n        }\n      }\n\n      var [current] = Editor.nodes(editor, {\n        at,\n        match,\n        voids,\n        mode\n      });\n      var prev = Editor.previous(editor, {\n        at,\n        match,\n        voids,\n        mode\n      });\n\n      if (!current || !prev) {\n        return;\n      }\n\n      var [node, path] = current;\n      var [prevNode, prevPath] = prev;\n\n      if (path.length === 0 || prevPath.length === 0) {\n        return;\n      }\n\n      var newPath = Path.next(prevPath);\n      var commonPath = Path.common(path, prevPath);\n      var isPreviousSibling = Path.isSibling(path, prevPath);\n      var levels = Array.from(Editor.levels(editor, {\n        at: path\n      }), _ref2 => {\n        var [n] = _ref2;\n        return n;\n      }).slice(commonPath.length).slice(0, -1); // Determine if the merge will leave an ancestor of the path empty as a\n      // result, in which case we'll want to remove it after merging.\n\n      var emptyAncestor = Editor.above(editor, {\n        at: path,\n        mode: 'highest',\n        match: n => levels.includes(n) && hasSingleChildNest(editor, n)\n      });\n      var emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1]);\n      var properties;\n      var position; // Ensure that the nodes are equivalent, and figure out what the position\n      // and extra properties of the merge will be.\n\n      if (Text.isText(node) && Text.isText(prevNode)) {\n        var rest = _objectWithoutProperties(node, _excluded);\n\n        position = prevNode.text.length;\n        properties = rest;\n      } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n        var rest = _objectWithoutProperties(node, _excluded2);\n\n        position = prevNode.children.length;\n        properties = rest;\n      } else {\n        throw new Error(\"Cannot merge the node at path [\".concat(path, \"] with the previous sibling because it is not the same kind: \").concat(JSON.stringify(node), \" \").concat(JSON.stringify(prevNode)));\n      } // If the node isn't already the next sibling of the previous node, move\n      // it so that it is before merging.\n\n\n      if (!isPreviousSibling) {\n        Transforms.moveNodes(editor, {\n          at: path,\n          to: newPath,\n          voids\n        });\n      } // If there was going to be an empty ancestor of the node that was merged,\n      // we remove it from the tree.\n\n\n      if (emptyRef) {\n        Transforms.removeNodes(editor, {\n          at: emptyRef.current,\n          voids\n        });\n      } // If the target node that we're merging with is empty, remove it instead\n      // of merging the two. This is a common rich text editor behavior to\n      // prevent losing formatting when deleting entire nodes when you have a\n      // hanging selection.\n      // if prevNode is first child in parent,don't remove it.\n\n\n      if (Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode) || Text.isText(prevNode) && prevNode.text === '' && prevPath[prevPath.length - 1] !== 0) {\n        Transforms.removeNodes(editor, {\n          at: prevPath,\n          voids\n        });\n      } else {\n        editor.apply({\n          type: 'merge_node',\n          path: newPath,\n          position,\n          properties\n        });\n      }\n\n      if (emptyRef) {\n        emptyRef.unref();\n      }\n    });\n  },\n\n  /**\r\n   * Move the nodes at a location to a new location.\r\n   */\n  moveNodes(editor, options) {\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        to,\n        at = editor.selection,\n        mode = 'lowest',\n        voids = false\n      } = options;\n      var {\n        match\n      } = options;\n\n      if (!at) {\n        return;\n      }\n\n      if (match == null) {\n        match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n      }\n\n      var toRef = Editor.pathRef(editor, to);\n      var targets = Editor.nodes(editor, {\n        at,\n        match,\n        mode,\n        voids\n      });\n      var pathRefs = Array.from(targets, _ref3 => {\n        var [, p] = _ref3;\n        return Editor.pathRef(editor, p);\n      });\n\n      for (var pathRef of pathRefs) {\n        var path = pathRef.unref();\n        var newPath = toRef.current;\n\n        if (path.length !== 0) {\n          editor.apply({\n            type: 'move_node',\n            path,\n            newPath\n          });\n        }\n\n        if (toRef.current && Path.isSibling(newPath, path) && Path.isAfter(newPath, path)) {\n          // When performing a sibling move to a later index, the path at the destination is shifted\n          // to before the insertion point instead of after. To ensure our group of nodes are inserted\n          // in the correct order we increment toRef to account for that\n          toRef.current = Path.next(toRef.current);\n        }\n      }\n\n      toRef.unref();\n    });\n  },\n\n  /**\r\n   * Remove the nodes at a specific location in the document.\r\n   */\n  removeNodes(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        hanging = false,\n        voids = false,\n        mode = 'lowest'\n      } = options;\n      var {\n        at = editor.selection,\n        match\n      } = options;\n\n      if (!at) {\n        return;\n      }\n\n      if (match == null) {\n        match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n      }\n\n      if (!hanging && Range.isRange(at)) {\n        at = Editor.unhangRange(editor, at);\n      }\n\n      var depths = Editor.nodes(editor, {\n        at,\n        match,\n        mode,\n        voids\n      });\n      var pathRefs = Array.from(depths, _ref4 => {\n        var [, p] = _ref4;\n        return Editor.pathRef(editor, p);\n      });\n\n      for (var pathRef of pathRefs) {\n        var path = pathRef.unref();\n\n        if (path) {\n          var [node] = Editor.node(editor, path);\n          editor.apply({\n            type: 'remove_node',\n            path,\n            node\n          });\n        }\n      }\n    });\n  },\n\n  /**\r\n   * Set new properties on the nodes at a location.\r\n   */\n  setNodes(editor, props) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        match,\n        at = editor.selection,\n        compare,\n        merge\n      } = options;\n      var {\n        hanging = false,\n        mode = 'lowest',\n        split = false,\n        voids = false\n      } = options;\n\n      if (!at) {\n        return;\n      }\n\n      if (match == null) {\n        match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n      }\n\n      if (!hanging && Range.isRange(at)) {\n        at = Editor.unhangRange(editor, at);\n      }\n\n      if (split && Range.isRange(at)) {\n        if (Range.isCollapsed(at) && Editor.leaf(editor, at.anchor)[0].text.length > 0) {\n          // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to\n          // set that won't get normalized away\n          return;\n        }\n\n        var rangeRef = Editor.rangeRef(editor, at, {\n          affinity: 'inward'\n        });\n        var [start, end] = Range.edges(at);\n        var splitMode = mode === 'lowest' ? 'lowest' : 'highest';\n        var endAtEndOfNode = Editor.isEnd(editor, end, end.path);\n        Transforms.splitNodes(editor, {\n          at: end,\n          match,\n          mode: splitMode,\n          voids,\n          always: !endAtEndOfNode\n        });\n        var startAtStartOfNode = Editor.isStart(editor, start, start.path);\n        Transforms.splitNodes(editor, {\n          at: start,\n          match,\n          mode: splitMode,\n          voids,\n          always: !startAtStartOfNode\n        });\n        at = rangeRef.unref();\n\n        if (options.at == null) {\n          Transforms.select(editor, at);\n        }\n      }\n\n      if (!compare) {\n        compare = (prop, nodeProp) => prop !== nodeProp;\n      }\n\n      for (var [node, path] of Editor.nodes(editor, {\n        at,\n        match,\n        mode,\n        voids\n      })) {\n        var properties = {};\n        var newProperties = {}; // You can't set properties on the editor node.\n\n        if (path.length === 0) {\n          continue;\n        }\n\n        var hasChanges = false;\n\n        for (var k in props) {\n          if (k === 'children' || k === 'text') {\n            continue;\n          }\n\n          if (compare(props[k], node[k])) {\n            hasChanges = true; // Omit new properties from the old properties list\n\n            if (node.hasOwnProperty(k)) properties[k] = node[k]; // Omit properties that have been removed from the new properties list\n\n            if (merge) {\n              if (props[k] != null) newProperties[k] = merge(node[k], props[k]);\n            } else {\n              if (props[k] != null) newProperties[k] = props[k];\n            }\n          }\n        }\n\n        if (hasChanges) {\n          editor.apply({\n            type: 'set_node',\n            path,\n            properties,\n            newProperties\n          });\n        }\n      }\n    });\n  },\n\n  /**\r\n   * Split the nodes at a specific location.\r\n   */\n  splitNodes(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        mode = 'lowest',\n        voids = false\n      } = options;\n      var {\n        match,\n        at = editor.selection,\n        height = 0,\n        always = false\n      } = options;\n\n      if (match == null) {\n        match = n => Editor.isBlock(editor, n);\n      }\n\n      if (Range.isRange(at)) {\n        at = deleteRange(editor, at);\n      } // If the target is a path, the default height-skipping and position\n      // counters need to account for us potentially splitting at a non-leaf.\n\n\n      if (Path.isPath(at)) {\n        var path = at;\n        var point = Editor.point(editor, path);\n        var [parent] = Editor.parent(editor, path);\n\n        match = n => n === parent;\n\n        height = point.path.length - path.length + 1;\n        at = point;\n        always = true;\n      }\n\n      if (!at) {\n        return;\n      }\n\n      var beforeRef = Editor.pointRef(editor, at, {\n        affinity: 'backward'\n      });\n      var afterRef;\n\n      try {\n        var [highest] = Editor.nodes(editor, {\n          at,\n          match,\n          mode,\n          voids\n        });\n\n        if (!highest) {\n          return;\n        }\n\n        var voidMatch = Editor.void(editor, {\n          at,\n          mode: 'highest'\n        });\n        var nudge = 0;\n\n        if (!voids && voidMatch) {\n          var [voidNode, voidPath] = voidMatch;\n\n          if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n            var after = Editor.after(editor, voidPath);\n\n            if (!after) {\n              var text = {\n                text: ''\n              };\n              var afterPath = Path.next(voidPath);\n              Transforms.insertNodes(editor, text, {\n                at: afterPath,\n                voids\n              });\n              after = Editor.point(editor, afterPath);\n            }\n\n            at = after;\n            always = true;\n          }\n\n          var siblingHeight = at.path.length - voidPath.length;\n          height = siblingHeight + 1;\n          always = true;\n        }\n\n        afterRef = Editor.pointRef(editor, at);\n        var depth = at.path.length - height;\n        var [, highestPath] = highest;\n        var lowestPath = at.path.slice(0, depth);\n        var position = height === 0 ? at.offset : at.path[depth] + nudge;\n\n        for (var [node, _path2] of Editor.levels(editor, {\n          at: lowestPath,\n          reverse: true,\n          voids\n        })) {\n          var split = false;\n\n          if (_path2.length < highestPath.length || _path2.length === 0 || !voids && Editor.isVoid(editor, node)) {\n            break;\n          }\n\n          var _point = beforeRef.current;\n          var isEnd = Editor.isEnd(editor, _point, _path2);\n\n          if (always || !beforeRef || !Editor.isEdge(editor, _point, _path2)) {\n            split = true;\n            var properties = Node.extractProps(node);\n            editor.apply({\n              type: 'split_node',\n              path: _path2,\n              position,\n              properties\n            });\n          }\n\n          position = _path2[_path2.length - 1] + (split || isEnd ? 1 : 0);\n        }\n\n        if (options.at == null) {\n          var _point2 = afterRef.current || Editor.end(editor, []);\n\n          Transforms.select(editor, _point2);\n        }\n      } finally {\n        var _afterRef;\n\n        beforeRef.unref();\n        (_afterRef = afterRef) === null || _afterRef === void 0 ? void 0 : _afterRef.unref();\n      }\n    });\n  },\n\n  /**\r\n   * Unset properties on the nodes at a location.\r\n   */\n  unsetNodes(editor, props) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    if (!Array.isArray(props)) {\n      props = [props];\n    }\n\n    var obj = {};\n\n    for (var key of props) {\n      obj[key] = null;\n    }\n\n    Transforms.setNodes(editor, obj, options);\n  },\n\n  /**\r\n   * Unwrap the nodes at a location from a parent node, splitting the parent if\r\n   * necessary to ensure that only the content in the range is unwrapped.\r\n   */\n  unwrapNodes(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        mode = 'lowest',\n        split = false,\n        voids = false\n      } = options;\n      var {\n        at = editor.selection,\n        match\n      } = options;\n\n      if (!at) {\n        return;\n      }\n\n      if (match == null) {\n        match = Path.isPath(at) ? matchPath(editor, at) : n => Editor.isBlock(editor, n);\n      }\n\n      if (Path.isPath(at)) {\n        at = Editor.range(editor, at);\n      }\n\n      var rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null;\n      var matches = Editor.nodes(editor, {\n        at,\n        match,\n        mode,\n        voids\n      });\n      var pathRefs = Array.from(matches, _ref5 => {\n        var [, p] = _ref5;\n        return Editor.pathRef(editor, p);\n      } // unwrapNode will call liftNode which does not support splitting the node when nested.\n      // If we do not reverse the order and call it from top to the bottom, it will remove all blocks\n      // that wrap target node. So we reverse the order.\n      ).reverse();\n\n      var _loop = function _loop(pathRef) {\n        var path = pathRef.unref();\n        var [node] = Editor.node(editor, path);\n        var range = Editor.range(editor, path);\n\n        if (split && rangeRef) {\n          range = Range.intersection(rangeRef.current, range);\n        }\n\n        Transforms.liftNodes(editor, {\n          at: range,\n          match: n => Element.isAncestor(node) && node.children.includes(n),\n          voids\n        });\n      };\n\n      for (var pathRef of pathRefs) {\n        _loop(pathRef);\n      }\n\n      if (rangeRef) {\n        rangeRef.unref();\n      }\n    });\n  },\n\n  /**\r\n   * Wrap the nodes at a location in a new container node, splitting the edges\r\n   * of the range first to ensure that only the content in the range is wrapped.\r\n   */\n  wrapNodes(editor, element) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        mode = 'lowest',\n        split = false,\n        voids = false\n      } = options;\n      var {\n        match,\n        at = editor.selection\n      } = options;\n\n      if (!at) {\n        return;\n      }\n\n      if (match == null) {\n        if (Path.isPath(at)) {\n          match = matchPath(editor, at);\n        } else if (editor.isInline(element)) {\n          match = n => Editor.isInline(editor, n) || Text.isText(n);\n        } else {\n          match = n => Editor.isBlock(editor, n);\n        }\n      }\n\n      if (split && Range.isRange(at)) {\n        var [start, end] = Range.edges(at);\n        var rangeRef = Editor.rangeRef(editor, at, {\n          affinity: 'inward'\n        });\n        Transforms.splitNodes(editor, {\n          at: end,\n          match,\n          voids\n        });\n        Transforms.splitNodes(editor, {\n          at: start,\n          match,\n          voids\n        });\n        at = rangeRef.unref();\n\n        if (options.at == null) {\n          Transforms.select(editor, at);\n        }\n      }\n\n      var roots = Array.from(Editor.nodes(editor, {\n        at,\n        match: editor.isInline(element) ? n => Editor.isBlock(editor, n) : n => Editor.isEditor(n),\n        mode: 'lowest',\n        voids\n      }));\n\n      for (var [, rootPath] of roots) {\n        var a = Range.isRange(at) ? Range.intersection(at, Editor.range(editor, rootPath)) : at;\n\n        if (!a) {\n          continue;\n        }\n\n        var matches = Array.from(Editor.nodes(editor, {\n          at: a,\n          match,\n          mode,\n          voids\n        }));\n\n        if (matches.length > 0) {\n          var _ret = function () {\n            var [first] = matches;\n            var last = matches[matches.length - 1];\n            var [, firstPath] = first;\n            var [, lastPath] = last;\n\n            if (firstPath.length === 0 && lastPath.length === 0) {\n              // if there's no matching parent - usually means the node is an editor - don't do anything\n              return \"continue\";\n            }\n\n            var commonPath = Path.equals(firstPath, lastPath) ? Path.parent(firstPath) : Path.common(firstPath, lastPath);\n            var range = Editor.range(editor, firstPath, lastPath);\n            var commonNodeEntry = Editor.node(editor, commonPath);\n            var [commonNode] = commonNodeEntry;\n            var depth = commonPath.length + 1;\n            var wrapperPath = Path.next(lastPath.slice(0, depth));\n\n            var wrapper = _objectSpread$2(_objectSpread$2({}, element), {}, {\n              children: []\n            });\n\n            Transforms.insertNodes(editor, wrapper, {\n              at: wrapperPath,\n              voids\n            });\n            Transforms.moveNodes(editor, {\n              at: range,\n              match: n => Element.isAncestor(commonNode) && commonNode.children.includes(n),\n              to: wrapperPath.concat(0),\n              voids\n            });\n          }();\n\n          if (_ret === \"continue\") continue;\n        }\n      }\n    });\n  }\n\n};\n\nvar hasSingleChildNest = (editor, node) => {\n  if (Element.isElement(node)) {\n    var element = node;\n\n    if (Editor.isVoid(editor, node)) {\n      return true;\n    } else if (element.children.length === 1) {\n      return hasSingleChildNest(editor, element.children[0]);\n    } else {\n      return false;\n    }\n  } else if (Editor.isEditor(node)) {\n    return false;\n  } else {\n    return true;\n  }\n};\n/**\r\n * Convert a range into a point by deleting it's content.\r\n */\n\n\nvar deleteRange = (editor, range) => {\n  if (Range.isCollapsed(range)) {\n    return range.anchor;\n  } else {\n    var [, end] = Range.edges(range);\n    var pointRef = Editor.pointRef(editor, end);\n    Transforms.delete(editor, {\n      at: range\n    });\n    return pointRef.unref();\n  }\n};\n\nvar matchPath = (editor, path) => {\n  var [node] = Editor.node(editor, path);\n  return n => n === node;\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar SelectionTransforms = {\n  /**\r\n   * Collapse the selection.\r\n   */\n  collapse(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      edge = 'anchor'\n    } = options;\n    var {\n      selection\n    } = editor;\n\n    if (!selection) {\n      return;\n    } else if (edge === 'anchor') {\n      Transforms.select(editor, selection.anchor);\n    } else if (edge === 'focus') {\n      Transforms.select(editor, selection.focus);\n    } else if (edge === 'start') {\n      var [start] = Range.edges(selection);\n      Transforms.select(editor, start);\n    } else if (edge === 'end') {\n      var [, end] = Range.edges(selection);\n      Transforms.select(editor, end);\n    }\n  },\n\n  /**\r\n   * Unset the selection.\r\n   */\n  deselect(editor) {\n    var {\n      selection\n    } = editor;\n\n    if (selection) {\n      editor.apply({\n        type: 'set_selection',\n        properties: selection,\n        newProperties: null\n      });\n    }\n  },\n\n  /**\r\n   * Move the selection's point forward or backward.\r\n   */\n  move(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var {\n      selection\n    } = editor;\n    var {\n      distance = 1,\n      unit = 'character',\n      reverse = false\n    } = options;\n    var {\n      edge = null\n    } = options;\n\n    if (!selection) {\n      return;\n    }\n\n    if (edge === 'start') {\n      edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n    }\n\n    if (edge === 'end') {\n      edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n    }\n\n    var {\n      anchor,\n      focus\n    } = selection;\n    var opts = {\n      distance,\n      unit\n    };\n    var props = {};\n\n    if (edge == null || edge === 'anchor') {\n      var point = reverse ? Editor.before(editor, anchor, opts) : Editor.after(editor, anchor, opts);\n\n      if (point) {\n        props.anchor = point;\n      }\n    }\n\n    if (edge == null || edge === 'focus') {\n      var _point = reverse ? Editor.before(editor, focus, opts) : Editor.after(editor, focus, opts);\n\n      if (_point) {\n        props.focus = _point;\n      }\n    }\n\n    Transforms.setSelection(editor, props);\n  },\n\n  /**\r\n   * Set the selection to a new value.\r\n   */\n  select(editor, target) {\n    var {\n      selection\n    } = editor;\n    target = Editor.range(editor, target);\n\n    if (selection) {\n      Transforms.setSelection(editor, target);\n      return;\n    }\n\n    if (!Range.isRange(target)) {\n      throw new Error(\"When setting the selection and the current selection is `null` you must provide at least an `anchor` and `focus`, but you passed: \".concat(JSON.stringify(target)));\n    }\n\n    editor.apply({\n      type: 'set_selection',\n      properties: selection,\n      newProperties: target\n    });\n  },\n\n  /**\r\n   * Set new properties on one of the selection's points.\r\n   */\n  setPoint(editor, props) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      selection\n    } = editor;\n    var {\n      edge = 'both'\n    } = options;\n\n    if (!selection) {\n      return;\n    }\n\n    if (edge === 'start') {\n      edge = Range.isBackward(selection) ? 'focus' : 'anchor';\n    }\n\n    if (edge === 'end') {\n      edge = Range.isBackward(selection) ? 'anchor' : 'focus';\n    }\n\n    var {\n      anchor,\n      focus\n    } = selection;\n    var point = edge === 'anchor' ? anchor : focus;\n    Transforms.setSelection(editor, {\n      [edge === 'anchor' ? 'anchor' : 'focus']: _objectSpread$1(_objectSpread$1({}, point), props)\n    });\n  },\n\n  /**\r\n   * Set new properties on the selection.\r\n   */\n  setSelection(editor, props) {\n    var {\n      selection\n    } = editor;\n    var oldProps = {};\n    var newProps = {};\n\n    if (!selection) {\n      return;\n    }\n\n    for (var k in props) {\n      if (k === 'anchor' && props.anchor != null && !Point.equals(props.anchor, selection.anchor) || k === 'focus' && props.focus != null && !Point.equals(props.focus, selection.focus) || k !== 'anchor' && k !== 'focus' && props[k] !== selection[k]) {\n        oldProps[k] = selection[k];\n        newProps[k] = props[k];\n      }\n    }\n\n    if (Object.keys(oldProps).length > 0) {\n      editor.apply({\n        type: 'set_selection',\n        properties: oldProps,\n        newProperties: newProps\n      });\n    }\n  }\n\n};\n\nvar TextTransforms = {\n  /**\r\n   * Delete content in the editor.\r\n   */\n  delete(editor) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        reverse = false,\n        unit = 'character',\n        distance = 1,\n        voids = false\n      } = options;\n      var {\n        at = editor.selection,\n        hanging = false\n      } = options;\n\n      if (!at) {\n        return;\n      }\n\n      if (Range.isRange(at) && Range.isCollapsed(at)) {\n        at = at.anchor;\n      }\n\n      if (Point.isPoint(at)) {\n        var furthestVoid = Editor.void(editor, {\n          at,\n          mode: 'highest'\n        });\n\n        if (!voids && furthestVoid) {\n          var [, voidPath] = furthestVoid;\n          at = voidPath;\n        } else {\n          var opts = {\n            unit,\n            distance\n          };\n          var target = reverse ? Editor.before(editor, at, opts) || Editor.start(editor, []) : Editor.after(editor, at, opts) || Editor.end(editor, []);\n          at = {\n            anchor: at,\n            focus: target\n          };\n          hanging = true;\n        }\n      }\n\n      if (Path.isPath(at)) {\n        Transforms.removeNodes(editor, {\n          at,\n          voids\n        });\n        return;\n      }\n\n      if (Range.isCollapsed(at)) {\n        return;\n      }\n\n      if (!hanging) {\n        var [, _end] = Range.edges(at);\n        var endOfDoc = Editor.end(editor, []);\n\n        if (!Point.equals(_end, endOfDoc)) {\n          at = Editor.unhangRange(editor, at, {\n            voids\n          });\n        }\n      }\n\n      var [start, end] = Range.edges(at);\n      var startBlock = Editor.above(editor, {\n        match: n => Editor.isBlock(editor, n),\n        at: start,\n        voids\n      });\n      var endBlock = Editor.above(editor, {\n        match: n => Editor.isBlock(editor, n),\n        at: end,\n        voids\n      });\n      var isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n      var isSingleText = Path.equals(start.path, end.path);\n      var startVoid = voids ? null : Editor.void(editor, {\n        at: start,\n        mode: 'highest'\n      });\n      var endVoid = voids ? null : Editor.void(editor, {\n        at: end,\n        mode: 'highest'\n      }); // If the start or end points are inside an inline void, nudge them out.\n\n      if (startVoid) {\n        var before = Editor.before(editor, start);\n\n        if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n          start = before;\n        }\n      }\n\n      if (endVoid) {\n        var after = Editor.after(editor, end);\n\n        if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n          end = after;\n        }\n      } // Get the highest nodes that are completely inside the range, as well as\n      // the start and end nodes.\n\n\n      var matches = [];\n      var lastPath;\n\n      for (var entry of Editor.nodes(editor, {\n        at,\n        voids\n      })) {\n        var [node, path] = entry;\n\n        if (lastPath && Path.compare(path, lastPath) === 0) {\n          continue;\n        }\n\n        if (!voids && Editor.isVoid(editor, node) || !Path.isCommon(path, start.path) && !Path.isCommon(path, end.path)) {\n          matches.push(entry);\n          lastPath = path;\n        }\n      }\n\n      var pathRefs = Array.from(matches, _ref => {\n        var [, p] = _ref;\n        return Editor.pathRef(editor, p);\n      });\n      var startRef = Editor.pointRef(editor, start);\n      var endRef = Editor.pointRef(editor, end);\n\n      if (!isSingleText && !startVoid) {\n        var _point = startRef.current;\n        var [_node] = Editor.leaf(editor, _point);\n        var {\n          path: _path\n        } = _point;\n        var {\n          offset\n        } = start;\n\n        var text = _node.text.slice(offset);\n\n        if (text.length > 0) editor.apply({\n          type: 'remove_text',\n          path: _path,\n          offset,\n          text\n        });\n      }\n\n      for (var pathRef of pathRefs) {\n        var _path2 = pathRef.unref();\n\n        Transforms.removeNodes(editor, {\n          at: _path2,\n          voids\n        });\n      }\n\n      if (!endVoid) {\n        var _point2 = endRef.current;\n        var [_node2] = Editor.leaf(editor, _point2);\n        var {\n          path: _path3\n        } = _point2;\n\n        var _offset = isSingleText ? start.offset : 0;\n\n        var _text = _node2.text.slice(_offset, end.offset);\n\n        if (_text.length > 0) editor.apply({\n          type: 'remove_text',\n          path: _path3,\n          offset: _offset,\n          text: _text\n        });\n      }\n\n      if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n        Transforms.mergeNodes(editor, {\n          at: endRef.current,\n          hanging: true,\n          voids\n        });\n      }\n\n      var startUnref = startRef.unref();\n      var endUnref = endRef.unref();\n      var point = reverse ? startUnref || endUnref : endUnref || startUnref;\n\n      if (options.at == null && point) {\n        Transforms.select(editor, point);\n      }\n    });\n  },\n\n  /**\r\n   * Insert a fragment at a specific location in the editor.\r\n   */\n  insertFragment(editor, fragment) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        hanging = false,\n        voids = false\n      } = options;\n      var {\n        at = editor.selection\n      } = options;\n\n      if (!fragment.length) {\n        return;\n      }\n\n      if (!at) {\n        return;\n      } else if (Range.isRange(at)) {\n        if (!hanging) {\n          at = Editor.unhangRange(editor, at);\n        }\n\n        if (Range.isCollapsed(at)) {\n          at = at.anchor;\n        } else {\n          var [, end] = Range.edges(at);\n\n          if (!voids && Editor.void(editor, {\n            at: end\n          })) {\n            return;\n          }\n\n          var pointRef = Editor.pointRef(editor, end);\n          Transforms.delete(editor, {\n            at\n          });\n          at = pointRef.unref();\n        }\n      } else if (Path.isPath(at)) {\n        at = Editor.start(editor, at);\n      }\n\n      if (!voids && Editor.void(editor, {\n        at\n      })) {\n        return;\n      } // If the insert point is at the edge of an inline node, move it outside\n      // instead since it will need to be split otherwise.\n\n\n      var inlineElementMatch = Editor.above(editor, {\n        at,\n        match: n => Editor.isInline(editor, n),\n        mode: 'highest',\n        voids\n      });\n\n      if (inlineElementMatch) {\n        var [, _inlinePath] = inlineElementMatch;\n\n        if (Editor.isEnd(editor, at, _inlinePath)) {\n          var after = Editor.after(editor, _inlinePath);\n          at = after;\n        } else if (Editor.isStart(editor, at, _inlinePath)) {\n          var before = Editor.before(editor, _inlinePath);\n          at = before;\n        }\n      }\n\n      var blockMatch = Editor.above(editor, {\n        match: n => Editor.isBlock(editor, n),\n        at,\n        voids\n      });\n      var [, blockPath] = blockMatch;\n      var isBlockStart = Editor.isStart(editor, at, blockPath);\n      var isBlockEnd = Editor.isEnd(editor, at, blockPath);\n      var isBlockEmpty = isBlockStart && isBlockEnd;\n      var mergeStart = !isBlockStart || isBlockStart && isBlockEnd;\n      var mergeEnd = !isBlockEnd;\n      var [, firstPath] = Node.first({\n        children: fragment\n      }, []);\n      var [, lastPath] = Node.last({\n        children: fragment\n      }, []);\n      var matches = [];\n\n      var matcher = _ref2 => {\n        var [n, p] = _ref2;\n        var isRoot = p.length === 0;\n\n        if (isRoot) {\n          return false;\n        }\n\n        if (isBlockEmpty) {\n          return true;\n        }\n\n        if (mergeStart && Path.isAncestor(p, firstPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n          return false;\n        }\n\n        if (mergeEnd && Path.isAncestor(p, lastPath) && Element.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) {\n          return false;\n        }\n\n        return true;\n      };\n\n      for (var entry of Node.nodes({\n        children: fragment\n      }, {\n        pass: matcher\n      })) {\n        if (matcher(entry)) {\n          matches.push(entry);\n        }\n      }\n\n      var starts = [];\n      var middles = [];\n      var ends = [];\n      var starting = true;\n      var hasBlocks = false;\n\n      for (var [node] of matches) {\n        if (Element.isElement(node) && !editor.isInline(node)) {\n          starting = false;\n          hasBlocks = true;\n          middles.push(node);\n        } else if (starting) {\n          starts.push(node);\n        } else {\n          ends.push(node);\n        }\n      }\n\n      var [inlineMatch] = Editor.nodes(editor, {\n        at,\n        match: n => Text.isText(n) || Editor.isInline(editor, n),\n        mode: 'highest',\n        voids\n      });\n      var [, inlinePath] = inlineMatch;\n      var isInlineStart = Editor.isStart(editor, at, inlinePath);\n      var isInlineEnd = Editor.isEnd(editor, at, inlinePath);\n      var middleRef = Editor.pathRef(editor, isBlockEnd ? Path.next(blockPath) : blockPath);\n      var endRef = Editor.pathRef(editor, isInlineEnd ? Path.next(inlinePath) : inlinePath);\n      var blockPathRef = Editor.pathRef(editor, blockPath);\n      Transforms.splitNodes(editor, {\n        at,\n        match: n => hasBlocks ? Editor.isBlock(editor, n) : Text.isText(n) || Editor.isInline(editor, n),\n        mode: hasBlocks ? 'lowest' : 'highest',\n        voids\n      });\n      var startRef = Editor.pathRef(editor, !isInlineStart || isInlineStart && isInlineEnd ? Path.next(inlinePath) : inlinePath);\n      Transforms.insertNodes(editor, starts, {\n        at: startRef.current,\n        match: n => Text.isText(n) || Editor.isInline(editor, n),\n        mode: 'highest',\n        voids\n      });\n\n      if (isBlockEmpty && middles.length) {\n        Transforms.delete(editor, {\n          at: blockPathRef.unref(),\n          voids\n        });\n      }\n\n      Transforms.insertNodes(editor, middles, {\n        at: middleRef.current,\n        match: n => Editor.isBlock(editor, n),\n        mode: 'lowest',\n        voids\n      });\n      Transforms.insertNodes(editor, ends, {\n        at: endRef.current,\n        match: n => Text.isText(n) || Editor.isInline(editor, n),\n        mode: 'highest',\n        voids\n      });\n\n      if (!options.at) {\n        var path;\n\n        if (ends.length > 0) {\n          path = Path.previous(endRef.current);\n        } else if (middles.length > 0) {\n          path = Path.previous(middleRef.current);\n        } else {\n          path = Path.previous(startRef.current);\n        }\n\n        var _end2 = Editor.end(editor, path);\n\n        Transforms.select(editor, _end2);\n      }\n\n      startRef.unref();\n      middleRef.unref();\n      endRef.unref();\n    });\n  },\n\n  /**\r\n   * Insert a string of text in the Editor.\r\n   */\n  insertText(editor, text) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    Editor.withoutNormalizing(editor, () => {\n      var {\n        voids = false\n      } = options;\n      var {\n        at = editor.selection\n      } = options;\n\n      if (!at) {\n        return;\n      }\n\n      if (Path.isPath(at)) {\n        at = Editor.range(editor, at);\n      }\n\n      if (Range.isRange(at)) {\n        if (Range.isCollapsed(at)) {\n          at = at.anchor;\n        } else {\n          var end = Range.end(at);\n\n          if (!voids && Editor.void(editor, {\n            at: end\n          })) {\n            return;\n          }\n\n          var pointRef = Editor.pointRef(editor, end);\n          Transforms.delete(editor, {\n            at,\n            voids\n          });\n          at = pointRef.unref();\n          Transforms.setSelection(editor, {\n            anchor: at,\n            focus: at\n          });\n        }\n      }\n\n      if (!voids && Editor.void(editor, {\n        at\n      })) {\n        return;\n      }\n\n      var {\n        path,\n        offset\n      } = at;\n      if (text.length > 0) editor.apply({\n        type: 'insert_text',\n        path,\n        offset,\n        text\n      });\n    });\n  }\n\n};\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Transforms = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, GeneralTransforms), NodeTransforms), SelectionTransforms), TextTransforms);\n\nexport { Editor, Element, Location, Node, Operation, Path, PathRef, Point, PointRef, Range, RangeRef, Span, Text, Transforms, createEditor };\n//# sourceMappingURL=index.es.js.map\n","import { isPlainObject } from 'is-plain-object';\nimport { Text, Range, Node, Element, createEditor as createEditor$1 } from 'slate';\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\n/**\r\n * A weak map to hold anchor tokens.\r\n */\nvar ANCHOR = new WeakMap();\n/**\r\n * A weak map to hold focus tokens.\r\n */\n\nvar FOCUS = new WeakMap();\n/**\r\n * All tokens inherit from a single constructor for `instanceof` checking.\r\n */\n\nclass Token {}\n/**\r\n * Anchor tokens represent the selection's anchor point.\r\n */\n\nclass AnchorToken extends Token {\n  constructor() {\n    var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    super();\n    var {\n      offset,\n      path\n    } = props;\n    this.offset = offset;\n    this.path = path;\n  }\n\n}\n/**\r\n * Focus tokens represent the selection's focus point.\r\n */\n\nclass FocusToken extends Token {\n  constructor() {\n    var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    super();\n    var {\n      offset,\n      path\n    } = props;\n    this.offset = offset;\n    this.path = path;\n  }\n\n}\n/**\r\n * Add an anchor token to the end of a text node.\r\n */\n\nvar addAnchorToken = (text, token) => {\n  var offset = text.text.length;\n  ANCHOR.set(text, [offset, token]);\n};\n/**\r\n * Get the offset if a text node has an associated anchor token.\r\n */\n\nvar getAnchorOffset = text => {\n  return ANCHOR.get(text);\n};\n/**\r\n * Add a focus token to the end of a text node.\r\n */\n\nvar addFocusToken = (text, token) => {\n  var offset = text.text.length;\n  FOCUS.set(text, [offset, token]);\n};\n/**\r\n * Get the offset if a text node has an associated focus token.\r\n */\n\nvar getFocusOffset = text => {\n  return FOCUS.get(text);\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * Resolve the descedants of a node by normalizing the children that can be\r\n * passed into a hyperscript creator function.\r\n */\n\nvar STRINGS = new WeakSet();\n\nvar resolveDescendants = children => {\n  var nodes = [];\n\n  var addChild = child => {\n    if (child == null) {\n      return;\n    }\n\n    var prev = nodes[nodes.length - 1];\n\n    if (typeof child === 'string') {\n      var text = {\n        text: child\n      };\n      STRINGS.add(text);\n      child = text;\n    }\n\n    if (Text.isText(child)) {\n      var c = child; // HACK: fix typescript complaining\n\n      if (Text.isText(prev) && STRINGS.has(prev) && STRINGS.has(c) && Text.equals(prev, c, {\n        loose: true\n      })) {\n        prev.text += c.text;\n      } else {\n        nodes.push(c);\n      }\n    } else if (Element.isElement(child)) {\n      nodes.push(child);\n    } else if (child instanceof Token) {\n      var n = nodes[nodes.length - 1];\n\n      if (!Text.isText(n)) {\n        addChild('');\n        n = nodes[nodes.length - 1];\n      }\n\n      if (child instanceof AnchorToken) {\n        addAnchorToken(n, child);\n      } else if (child instanceof FocusToken) {\n        addFocusToken(n, child);\n      }\n    } else {\n      throw new Error(\"Unexpected hyperscript child object: \".concat(child));\n    }\n  };\n\n  for (var child of children.flat(Infinity)) {\n    addChild(child);\n  }\n\n  return nodes;\n};\n/**\r\n * Create an anchor token.\r\n */\n\n\nfunction createAnchor(tagName, attributes, children) {\n  return new AnchorToken(attributes);\n}\n/**\r\n * Create an anchor and a focus token.\r\n */\n\nfunction createCursor(tagName, attributes, children) {\n  return [new AnchorToken(attributes), new FocusToken(attributes)];\n}\n/**\r\n * Create an `Element` object.\r\n */\n\nfunction createElement(tagName, attributes, children) {\n  return _objectSpread$1(_objectSpread$1({}, attributes), {}, {\n    children: resolveDescendants(children)\n  });\n}\n/**\r\n * Create a focus token.\r\n */\n\nfunction createFocus(tagName, attributes, children) {\n  return new FocusToken(attributes);\n}\n/**\r\n * Create a fragment.\r\n */\n\nfunction createFragment(tagName, attributes, children) {\n  return resolveDescendants(children);\n}\n/**\r\n * Create a `Selection` object.\r\n */\n\nfunction createSelection(tagName, attributes, children) {\n  var anchor = children.find(c => c instanceof AnchorToken);\n  var focus = children.find(c => c instanceof FocusToken);\n\n  if (!anchor || anchor.offset == null || anchor.path == null) {\n    throw new Error(\"The <selection> hyperscript tag must have an <anchor> tag as a child with `path` and `offset` attributes defined.\");\n  }\n\n  if (!focus || focus.offset == null || focus.path == null) {\n    throw new Error(\"The <selection> hyperscript tag must have a <focus> tag as a child with `path` and `offset` attributes defined.\");\n  }\n\n  return _objectSpread$1({\n    anchor: {\n      offset: anchor.offset,\n      path: anchor.path\n    },\n    focus: {\n      offset: focus.offset,\n      path: focus.path\n    }\n  }, attributes);\n}\n/**\r\n * Create a `Text` object.\r\n */\n\nfunction createText(tagName, attributes, children) {\n  var nodes = resolveDescendants(children);\n\n  if (nodes.length > 1) {\n    throw new Error(\"The <text> hyperscript tag must only contain a single node's worth of children.\");\n  }\n\n  var [node] = nodes;\n\n  if (node == null) {\n    node = {\n      text: ''\n    };\n  }\n\n  if (!Text.isText(node)) {\n    throw new Error(\"\\n    The <text> hyperscript tag can only contain text content as children.\");\n  } // COMPAT: If they used the <text> tag we want to guarantee that it won't be\n  // merge with other string children.\n\n\n  STRINGS.delete(node);\n  Object.assign(node, attributes);\n  return node;\n}\n/**\r\n * Create a top-level `Editor` object.\r\n */\n\nvar createEditor = makeEditor => (tagName, attributes, children) => {\n  var otherChildren = [];\n  var selectionChild;\n\n  for (var child of children) {\n    if (Range.isRange(child)) {\n      selectionChild = child;\n    } else {\n      otherChildren.push(child);\n    }\n  }\n\n  var descendants = resolveDescendants(otherChildren);\n  var selection = {};\n  var editor = makeEditor();\n  Object.assign(editor, attributes);\n  editor.children = descendants; // Search the document's texts to see if any of them have tokens associated\n  // that need incorporated into the selection.\n\n  for (var [node, path] of Node.texts(editor)) {\n    var anchor = getAnchorOffset(node);\n    var focus = getFocusOffset(node);\n\n    if (anchor != null) {\n      var [offset] = anchor;\n      selection.anchor = {\n        path,\n        offset\n      };\n    }\n\n    if (focus != null) {\n      var [_offset] = focus;\n      selection.focus = {\n        path,\n        offset: _offset\n      };\n    }\n  }\n\n  if (selection.anchor && !selection.focus) {\n    throw new Error(\"Slate hyperscript ranges must have both `<anchor />` and `<focus />` defined if one is defined, but you only defined `<anchor />`. For collapsed selections, use `<cursor />` instead.\");\n  }\n\n  if (!selection.anchor && selection.focus) {\n    throw new Error(\"Slate hyperscript ranges must have both `<anchor />` and `<focus />` defined if one is defined, but you only defined `<focus />`. For collapsed selections, use `<cursor />` instead.\");\n  }\n\n  if (selectionChild != null) {\n    editor.selection = selectionChild;\n  } else if (Range.isRange(selection)) {\n    editor.selection = selection;\n  }\n\n  return editor;\n};\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * The default creators for Slate objects.\r\n */\n\nvar DEFAULT_CREATORS = {\n  anchor: createAnchor,\n  cursor: createCursor,\n  editor: createEditor(createEditor$1),\n  element: createElement,\n  focus: createFocus,\n  fragment: createFragment,\n  selection: createSelection,\n  text: createText\n};\n/**\r\n * Create a Slate hyperscript function with `options`.\r\n */\n\nvar createHyperscript = function createHyperscript() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var {\n    elements = {}\n  } = options;\n  var elementCreators = normalizeElements(elements);\n\n  var creators = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_CREATORS), elementCreators), options.creators);\n\n  var jsx = createFactory(creators);\n  return jsx;\n};\n/**\r\n * Create a Slate hyperscript function with `options`.\r\n */\n\n\nvar createFactory = creators => {\n  var jsx = function jsx(tagName, attributes) {\n    for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      children[_key - 2] = arguments[_key];\n    }\n\n    var creator = creators[tagName];\n\n    if (!creator) {\n      throw new Error(\"No hyperscript creator found for tag: <\".concat(tagName, \">\"));\n    }\n\n    if (attributes == null) {\n      attributes = {};\n    }\n\n    if (!isPlainObject(attributes)) {\n      children = [attributes].concat(children);\n      attributes = {};\n    }\n\n    children = children.filter(child => Boolean(child)).flat();\n    var ret = creator(tagName, attributes, children);\n    return ret;\n  };\n\n  return jsx;\n};\n/**\r\n * Normalize a dictionary of element shorthands into creator functions.\r\n */\n\n\nvar normalizeElements = elements => {\n  var creators = {};\n\n  var _loop = function _loop(tagName) {\n    var props = elements[tagName];\n\n    if (typeof props !== 'object') {\n      throw new Error(\"Properties specified for a hyperscript shorthand should be an object, but for the custom element <\".concat(tagName, \">  tag you passed: \").concat(props));\n    }\n\n    creators[tagName] = (tagName, attributes, children) => {\n      return createElement('element', _objectSpread(_objectSpread({}, props), attributes), children);\n    };\n  };\n\n  for (var tagName in elements) {\n    _loop(tagName);\n  }\n\n  return creators;\n};\n\n/**\r\n * The default hyperscript factory that ships with Slate, without custom tags.\r\n */\n\nvar jsx = createHyperscript();\n\nexport { createEditor, createHyperscript, createText, jsx };\n//# sourceMappingURL=index.es.js.map\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n  return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n  var ctor,prot;\n\n  if (isObject(o) === false) return false;\n\n  // If has modified constructor\n  ctor = o.constructor;\n  if (ctor === undefined) return true;\n\n  // If has modified prototype\n  prot = ctor.prototype;\n  if (isObject(prot) === false) return false;\n\n  // If constructor does not have an Object-specific method\n  if (prot.hasOwnProperty('isPrototypeOf') === false) {\n    return false;\n  }\n\n  // Most likely a plain Object\n  return true;\n}\n\nexport { isPlainObject };\n","import { isPlainObject } from 'is-plain-object';\nimport { Operation, Editor, Path } from 'slate';\n\nvar History = {\n  /**\r\n   * Check if a value is a `History` object.\r\n   */\n  isHistory(value) {\n    return isPlainObject(value) && Array.isArray(value.redos) && Array.isArray(value.undos) && (value.redos.length === 0 || Operation.isOperationList(value.redos[0])) && (value.undos.length === 0 || Operation.isOperationList(value.undos[0]));\n  }\n\n};\n\n/**\r\n * Weakmaps for attaching state to the editor.\r\n */\n\nvar HISTORY = new WeakMap();\nvar SAVING = new WeakMap();\nvar MERGING = new WeakMap();\nvar HistoryEditor = {\n  /**\r\n   * Check if a value is a `HistoryEditor` object.\r\n   */\n  isHistoryEditor(value) {\n    return History.isHistory(value.history) && Editor.isEditor(value);\n  },\n\n  /**\r\n   * Get the merge flag's current value.\r\n   */\n  isMerging(editor) {\n    return MERGING.get(editor);\n  },\n\n  /**\r\n   * Get the saving flag's current value.\r\n   */\n  isSaving(editor) {\n    return SAVING.get(editor);\n  },\n\n  /**\r\n   * Redo to the previous saved state.\r\n   */\n  redo(editor) {\n    editor.redo();\n  },\n\n  /**\r\n   * Undo to the previous saved state.\r\n   */\n  undo(editor) {\n    editor.undo();\n  },\n\n  /**\r\n   * Apply a series of changes inside a synchronous `fn`, without merging any of\r\n   * the new operations into previous save point in the history.\r\n   */\n  withoutMerging(editor, fn) {\n    var prev = HistoryEditor.isMerging(editor);\n    MERGING.set(editor, false);\n    fn();\n    MERGING.set(editor, prev);\n  },\n\n  /**\r\n   * Apply a series of changes inside a synchronous `fn`, without saving any of\r\n   * their operations into the history.\r\n   */\n  withoutSaving(editor, fn) {\n    var prev = HistoryEditor.isSaving(editor);\n    SAVING.set(editor, false);\n    fn();\n    SAVING.set(editor, prev);\n  }\n\n};\n\n/**\r\n * The `withHistory` plugin keeps track of the operation history of a Slate\r\n * editor as operations are applied to it, using undo and redo stacks.\r\n *\r\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\r\n * this plugin.\r\n *\r\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\r\n */\n\nvar withHistory = editor => {\n  var e = editor;\n  var {\n    apply\n  } = e;\n  e.history = {\n    undos: [],\n    redos: []\n  };\n\n  e.redo = () => {\n    var {\n      history\n    } = e;\n    var {\n      redos\n    } = history;\n\n    if (redos.length > 0) {\n      var batch = redos[redos.length - 1];\n      HistoryEditor.withoutSaving(e, () => {\n        Editor.withoutNormalizing(e, () => {\n          for (var op of batch) {\n            e.apply(op);\n          }\n        });\n      });\n      history.redos.pop();\n      history.undos.push(batch);\n    }\n  };\n\n  e.undo = () => {\n    var {\n      history\n    } = e;\n    var {\n      undos\n    } = history;\n\n    if (undos.length > 0) {\n      var batch = undos[undos.length - 1];\n      HistoryEditor.withoutSaving(e, () => {\n        Editor.withoutNormalizing(e, () => {\n          var inverseOps = batch.map(Operation.inverse).reverse();\n\n          for (var op of inverseOps) {\n            e.apply(op);\n          }\n        });\n      });\n      history.redos.push(batch);\n      history.undos.pop();\n    }\n  };\n\n  e.apply = op => {\n    var {\n      operations,\n      history\n    } = e;\n    var {\n      undos\n    } = history;\n    var lastBatch = undos[undos.length - 1];\n    var lastOp = lastBatch && lastBatch[lastBatch.length - 1];\n    var overwrite = shouldOverwrite(op, lastOp);\n    var save = HistoryEditor.isSaving(e);\n    var merge = HistoryEditor.isMerging(e);\n\n    if (save == null) {\n      save = shouldSave(op);\n    }\n\n    if (save) {\n      if (merge == null) {\n        if (lastBatch == null) {\n          merge = false;\n        } else if (operations.length !== 0) {\n          merge = true;\n        } else {\n          merge = shouldMerge(op, lastOp) || overwrite;\n        }\n      }\n\n      if (lastBatch && merge) {\n        if (overwrite) {\n          lastBatch.pop();\n        }\n\n        lastBatch.push(op);\n      } else {\n        var batch = [op];\n        undos.push(batch);\n      }\n\n      while (undos.length > 100) {\n        undos.shift();\n      }\n\n      if (shouldClear(op)) {\n        history.redos = [];\n      }\n    }\n\n    apply(op);\n  };\n\n  return e;\n};\n/**\r\n * Check whether to merge an operation into the previous operation.\r\n */\n\nvar shouldMerge = (op, prev) => {\n  if (op.type === 'set_selection') {\n    return true;\n  }\n\n  if (prev && op.type === 'insert_text' && prev.type === 'insert_text' && op.offset === prev.offset + prev.text.length && Path.equals(op.path, prev.path)) {\n    return true;\n  }\n\n  if (prev && op.type === 'remove_text' && prev.type === 'remove_text' && op.offset + op.text.length === prev.offset && Path.equals(op.path, prev.path)) {\n    return true;\n  }\n\n  return false;\n};\n/**\r\n * Check whether an operation needs to be saved to the history.\r\n */\n\n\nvar shouldSave = (op, prev) => {\n  if (op.type === 'set_selection' && (op.properties == null || op.newProperties == null)) {\n    return false;\n  }\n\n  return true;\n};\n/**\r\n * Check whether an operation should overwrite the previous one.\r\n */\n\n\nvar shouldOverwrite = (op, prev) => {\n  if (prev && op.type === 'set_selection' && prev.type === 'set_selection') {\n    return true;\n  }\n\n  return false;\n};\n/**\r\n * Check whether an operation should clear the redos stack.\r\n */\n\n\nvar shouldClear = op => {\n  if (op.type === 'set_selection') {\n    return false;\n  }\n\n  return true;\n};\n\nexport { HISTORY, History, HistoryEditor, MERGING, SAVING, withHistory };\n//# sourceMappingURL=index.es.js.map\n","function t(t){return\"object\"==typeof t&&null!=t&&1===t.nodeType}function e(t,e){return(!e||\"hidden\"!==t)&&\"visible\"!==t&&\"clip\"!==t}function n(t,n){if(t.clientHeight<t.scrollHeight||t.clientWidth<t.scrollWidth){var r=getComputedStyle(t,null);return e(r.overflowY,n)||e(r.overflowX,n)||function(t){var e=function(t){if(!t.ownerDocument||!t.ownerDocument.defaultView)return null;try{return t.ownerDocument.defaultView.frameElement}catch(t){return null}}(t);return!!e&&(e.clientHeight<t.scrollHeight||e.clientWidth<t.scrollWidth)}(t)}return!1}function r(t,e,n,r,i,o,l,d){return o<t&&l>e||o>t&&l<e?0:o<=t&&d<=n||l>=e&&d>=n?o-t-r:l>e&&d<n||o<t&&d>n?l-e+i:0}var i=function(e,i){var o=window,l=i.scrollMode,d=i.block,f=i.inline,h=i.boundary,u=i.skipOverflowHiddenElements,s=\"function\"==typeof h?h:function(t){return t!==h};if(!t(e))throw new TypeError(\"Invalid target\");for(var a,c,g=document.scrollingElement||document.documentElement,p=[],m=e;t(m)&&s(m);){if((m=null==(c=(a=m).parentElement)?a.getRootNode().host||null:c)===g){p.push(m);break}null!=m&&m===document.body&&n(m)&&!n(document.documentElement)||null!=m&&n(m,u)&&p.push(m)}for(var w=o.visualViewport?o.visualViewport.width:innerWidth,v=o.visualViewport?o.visualViewport.height:innerHeight,W=window.scrollX||pageXOffset,H=window.scrollY||pageYOffset,b=e.getBoundingClientRect(),y=b.height,E=b.width,M=b.top,V=b.right,x=b.bottom,I=b.left,C=\"start\"===d||\"nearest\"===d?M:\"end\"===d?x:M+y/2,R=\"center\"===f?I+E/2:\"end\"===f?V:I,T=[],k=0;k<p.length;k++){var B=p[k],D=B.getBoundingClientRect(),O=D.height,X=D.width,Y=D.top,L=D.right,S=D.bottom,j=D.left;if(\"if-needed\"===l&&M>=0&&I>=0&&x<=v&&V<=w&&M>=Y&&x<=S&&I>=j&&V<=L)return T;var N=getComputedStyle(B),q=parseInt(N.borderLeftWidth,10),z=parseInt(N.borderTopWidth,10),A=parseInt(N.borderRightWidth,10),F=parseInt(N.borderBottomWidth,10),G=0,J=0,K=\"offsetWidth\"in B?B.offsetWidth-B.clientWidth-q-A:0,P=\"offsetHeight\"in B?B.offsetHeight-B.clientHeight-z-F:0,Q=\"offsetWidth\"in B?0===B.offsetWidth?0:X/B.offsetWidth:0,U=\"offsetHeight\"in B?0===B.offsetHeight?0:O/B.offsetHeight:0;if(g===B)G=\"start\"===d?C:\"end\"===d?C-v:\"nearest\"===d?r(H,H+v,v,z,F,H+C,H+C+y,y):C-v/2,J=\"start\"===f?R:\"center\"===f?R-w/2:\"end\"===f?R-w:r(W,W+w,w,q,A,W+R,W+R+E,E),G=Math.max(0,G+H),J=Math.max(0,J+W);else{G=\"start\"===d?C-Y-z:\"end\"===d?C-S+F+P:\"nearest\"===d?r(Y,S,O,z,F+P,C,C+y,y):C-(Y+O/2)+P/2,J=\"start\"===f?R-j-q:\"center\"===f?R-(j+X/2)+K/2:\"end\"===f?R-L+A+K:r(j,L,X,q,A+K,R,R+E,E);var Z=B.scrollLeft,$=B.scrollTop;C+=$-(G=Math.max(0,Math.min($+G/U,B.scrollHeight-O/U+P))),R+=Z-(J=Math.max(0,Math.min(Z+J/Q,B.scrollWidth-X/Q+K)))}T.push({el:B,top:G,left:J})}return T};export{i as default};\n//# sourceMappingURL=index.mjs.map\n","import compute from 'compute-scroll-into-view';\nfunction isOptionsObject(options) {\n  return options === Object(options) && Object.keys(options).length !== 0;\n}\nfunction defaultBehavior(actions, behavior) {\n  if (behavior === void 0) {\n    behavior = 'auto';\n  }\n  var canSmoothScroll = ('scrollBehavior' in document.body.style);\n  actions.forEach(function (_ref) {\n    var el = _ref.el,\n      top = _ref.top,\n      left = _ref.left;\n    if (el.scroll && canSmoothScroll) {\n      el.scroll({\n        top: top,\n        left: left,\n        behavior: behavior\n      });\n    } else {\n      el.scrollTop = top;\n      el.scrollLeft = left;\n    }\n  });\n}\nfunction getOptions(options) {\n  if (options === false) {\n    return {\n      block: 'end',\n      inline: 'nearest'\n    };\n  }\n  if (isOptionsObject(options)) {\n    return options;\n  }\n  return {\n    block: 'start',\n    inline: 'nearest'\n  };\n}\nfunction scrollIntoView(target, options) {\n  var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n  if (isOptionsObject(options) && typeof options.behavior === 'function') {\n    return options.behavior(isTargetAttached ? compute(target, options) : []);\n  }\n  if (!isTargetAttached) {\n    return;\n  }\n  var computeOptions = getOptions(options);\n  return defaultBehavior(compute(target, computeOptions), computeOptions.behavior);\n}\nexport default scrollIntoView;","import React, { useLayoutEffect, useEffect, useRef, useState, Fragment, useContext, createContext, useMemo, useCallback, useReducer } from 'react';\nimport { Path, Node, Editor, Text as Text$1, Range, Element as Element$1, Transforms } from 'slate';\nimport getDirection from 'direction';\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { isKeyHotkey } from 'is-hotkey';\nimport ReactDOM from 'react-dom';\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  var target = _objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nvar IS_REACT_VERSION_17_OR_ABOVE = parseInt(React.version.split('.')[0], 10) >= 17;\nvar IS_IOS = typeof navigator !== 'undefined' && typeof window !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent);\nvar IS_ANDROID = typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent);\nvar IS_FIREFOX = typeof navigator !== 'undefined' && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);\nvar IS_SAFARI = typeof navigator !== 'undefined' && /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent); // \"modern\" Edge was released at 79.x\n\nvar IS_EDGE_LEGACY = typeof navigator !== 'undefined' && /Edge?\\/(?:[0-6][0-9]|[0-7][0-8])(?:\\.)/i.test(navigator.userAgent);\nvar IS_CHROME = typeof navigator !== 'undefined' && /Chrome/i.test(navigator.userAgent); // Native `beforeInput` events don't work well with react on Chrome 75\n// and older, Chrome 76+ can use `beforeInput` though.\n\nvar IS_CHROME_LEGACY = typeof navigator !== 'undefined' && /Chrome?\\/(?:[0-7][0-5]|[0-6][0-9])(?:\\.)/i.test(navigator.userAgent); // Firefox did not support `beforeInput` until `v87`.\n\nvar IS_FIREFOX_LEGACY = typeof navigator !== 'undefined' && /^(?!.*Seamonkey)(?=.*Firefox\\/(?:[0-7][0-9]|[0-8][0-6])(?:\\.)).*/i.test(navigator.userAgent); // qq browser\n\nvar IS_QQBROWSER = typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent); // UC mobile browser\n\nvar IS_UC_MOBILE = typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent); // Wechat browser\n\nvar IS_WECHATBROWSER = typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent); // Check if DOM is available as React does internally.\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\n\nvar CAN_USE_DOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined'); // COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event\n// Chrome Legacy doesn't support `beforeinput` correctly\n\nvar HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY && !IS_EDGE_LEGACY && // globalThis is undefined in older browsers\ntypeof globalThis !== 'undefined' && globalThis.InputEvent && // @ts-ignore The `getTargetRanges` property isn't recognized.\ntypeof globalThis.InputEvent.prototype.getTargetRanges === 'function';\n\n/**\r\n * Prevent warning on SSR by falling back to useEffect when DOM isn't available\r\n */\n\nvar useIsomorphicLayoutEffect = CAN_USE_DOM ? useLayoutEffect : useEffect;\n\n/**\r\n * Leaf content strings.\r\n */\n\nvar String = props => {\n  var {\n    isLast,\n    leaf,\n    parent,\n    text\n  } = props;\n  var editor = useSlateStatic();\n  var path = ReactEditor.findPath(editor, text);\n  var parentPath = Path.parent(path); // COMPAT: Render text inside void nodes with a zero-width space.\n  // So the node can contain selection but the text is not visible.\n\n  if (editor.isVoid(parent)) {\n    return /*#__PURE__*/React.createElement(ZeroWidthString, {\n      length: Node.string(parent).length\n    });\n  } // COMPAT: If this is the last text node in an empty block, render a zero-\n  // width space that will convert into a line break when copying and pasting\n  // to support expected plain text.\n\n\n  if (leaf.text === '' && parent.children[parent.children.length - 1] === text && !editor.isInline(parent) && Editor.string(editor, parentPath) === '') {\n    return /*#__PURE__*/React.createElement(ZeroWidthString, {\n      isLineBreak: true\n    });\n  } // COMPAT: If the text is empty, it's because it's on the edge of an inline\n  // node, so we render a zero-width space so that the selection can be\n  // inserted next to it still.\n\n\n  if (leaf.text === '') {\n    return /*#__PURE__*/React.createElement(ZeroWidthString, null);\n  } // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n  // so we need to add an extra trailing new lines to prevent that.\n\n\n  if (isLast && leaf.text.slice(-1) === '\\n') {\n    return /*#__PURE__*/React.createElement(TextString, {\n      isTrailing: true,\n      text: leaf.text\n    });\n  }\n\n  return /*#__PURE__*/React.createElement(TextString, {\n    text: leaf.text\n  });\n};\n/**\r\n * Leaf strings with text in them.\r\n */\n\n\nvar TextString = props => {\n  var {\n    text,\n    isTrailing = false\n  } = props;\n  var ref = useRef(null);\n\n  var getTextContent = () => {\n    return \"\".concat(text !== null && text !== void 0 ? text : '').concat(isTrailing ? '\\n' : '');\n  }; // This is the actual text rendering boundary where we interface with the DOM\n  // The text is not rendered as part of the virtual DOM, as since we handle basic character insertions natively,\n  // updating the DOM is not a one way dataflow anymore. What we need here is not reconciliation and diffing\n  // with previous version of the virtual DOM, but rather diffing with the actual DOM element, and replace the DOM <span> content\n  // exactly if and only if its current content does not match our current virtual DOM.\n  // Otherwise the DOM TextNode would always be replaced by React as the user types, which interferes with native text features,\n  // eg makes native spellcheck opt out from checking the text node.\n  // useLayoutEffect: updating our span before browser paint\n\n\n  useIsomorphicLayoutEffect(() => {\n    // null coalescing text to make sure we're not outputing \"null\" as a string in the extreme case it is nullish at runtime\n    var textWithTrailing = getTextContent();\n\n    if (ref.current && ref.current.textContent !== textWithTrailing) {\n      ref.current.textContent = textWithTrailing;\n    } // intentionally not specifying dependencies, so that this effect runs on every render\n    // as this effectively replaces \"specifying the text in the virtual DOM under the <span> below\" on each render\n\n  }); // Render text content immediately if it's the first-time render\n  // Ensure that text content is rendered on server-side rendering\n\n  if (!ref.current) {\n    return /*#__PURE__*/React.createElement(\"span\", {\n      \"data-slate-string\": true,\n      ref: ref\n    }, getTextContent());\n  } // the span is intentionally same on every render in virtual DOM, actual rendering happens in the layout effect above\n\n\n  return /*#__PURE__*/React.createElement(\"span\", {\n    \"data-slate-string\": true,\n    ref: ref\n  });\n};\n/**\r\n * Leaf strings without text, render as zero-width strings.\r\n */\n\n\nvar ZeroWidthString = props => {\n  var {\n    length = 0,\n    isLineBreak = false\n  } = props;\n  return /*#__PURE__*/React.createElement(\"span\", {\n    \"data-slate-zero-width\": isLineBreak ? 'n' : 'z',\n    \"data-slate-length\": length\n  }, '\\uFEFF', isLineBreak ? /*#__PURE__*/React.createElement(\"br\", null) : null);\n};\n\n/**\r\n * Two weak maps that allow us rebuild a path given a node. They are populated\r\n * at render time such that after a render occurs we can always backtrack.\r\n */\nvar NODE_TO_INDEX = new WeakMap();\nvar NODE_TO_PARENT = new WeakMap();\n/**\r\n * Weak maps that allow us to go between Slate nodes and DOM nodes. These\r\n * are used to resolve DOM event-related logic into Slate actions.\r\n */\n\nvar EDITOR_TO_WINDOW = new WeakMap();\nvar EDITOR_TO_ELEMENT = new WeakMap();\nvar ELEMENT_TO_NODE = new WeakMap();\nvar NODE_TO_ELEMENT = new WeakMap();\nvar NODE_TO_KEY = new WeakMap();\nvar EDITOR_TO_KEY_TO_ELEMENT = new WeakMap();\n/**\r\n * Weak maps for storing editor-related state.\r\n */\n\nvar IS_READ_ONLY = new WeakMap();\nvar IS_FOCUSED = new WeakMap();\nvar IS_COMPOSING = new WeakMap();\nvar IS_ON_COMPOSITION_END = new WeakMap();\nvar EDITOR_TO_USER_SELECTION = new WeakMap();\n/**\r\n * Weak maps for saving text on composition stage.\r\n */\n\nvar EDITOR_ON_COMPOSITION_TEXT = new WeakMap();\n/**\r\n * Weak map for associating the context `onChange` context with the plugin.\r\n */\n\nvar EDITOR_TO_ON_CHANGE = new WeakMap();\nvar NODE_TO_RESTORE_DOM = new WeakMap();\n/**\r\n * Symbols.\r\n */\n\nvar PLACEHOLDER_SYMBOL = Symbol('placeholder');\n\n/**\r\n * Individual leaves in a text node with unique formatting.\r\n */\n\nvar Leaf = props => {\n  var {\n    leaf,\n    isLast,\n    text,\n    parent,\n    renderPlaceholder,\n    renderLeaf = props => /*#__PURE__*/React.createElement(DefaultLeaf, Object.assign({}, props))\n  } = props;\n  var placeholderRef = useRef(null);\n  useEffect(() => {\n    var placeholderEl = placeholderRef === null || placeholderRef === void 0 ? void 0 : placeholderRef.current;\n    var editorEl = document.querySelector('[data-slate-editor=\"true\"]');\n\n    if (!placeholderEl || !editorEl) {\n      return;\n    }\n\n    editorEl.style.minHeight = \"\".concat(placeholderEl.clientHeight, \"px\");\n    return () => {\n      editorEl.style.minHeight = 'auto';\n    };\n  }, [placeholderRef, leaf]);\n  var children = /*#__PURE__*/React.createElement(String, {\n    isLast: isLast,\n    leaf: leaf,\n    parent: parent,\n    text: text\n  });\n\n  if (leaf[PLACEHOLDER_SYMBOL]) {\n    var placeholderProps = {\n      children: leaf.placeholder,\n      attributes: {\n        'data-slate-placeholder': true,\n        style: {\n          position: 'absolute',\n          pointerEvents: 'none',\n          width: '100%',\n          maxWidth: '100%',\n          display: 'block',\n          opacity: '0.333',\n          userSelect: 'none',\n          textDecoration: 'none'\n        },\n        contentEditable: false,\n        ref: placeholderRef\n      }\n    };\n    children = /*#__PURE__*/React.createElement(React.Fragment, null, renderPlaceholder(placeholderProps), children);\n  } // COMPAT: Having the `data-` attributes on these leaf elements ensures that\n  // in certain misbehaving browsers they aren't weirdly cloned/destroyed by\n  // contenteditable behaviors. (2019/05/08)\n\n\n  var attributes = {\n    'data-slate-leaf': true\n  };\n  return renderLeaf({\n    attributes,\n    children,\n    leaf,\n    text\n  });\n};\n\nvar MemoizedLeaf = /*#__PURE__*/React.memo(Leaf, (prev, next) => {\n  return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.renderPlaceholder === prev.renderPlaceholder && next.text === prev.text && Text$1.equals(next.leaf, prev.leaf) && next.leaf[PLACEHOLDER_SYMBOL] === prev.leaf[PLACEHOLDER_SYMBOL];\n});\nvar DefaultLeaf = props => {\n  var {\n    attributes,\n    children\n  } = props;\n  return /*#__PURE__*/React.createElement(\"span\", Object.assign({}, attributes), children);\n};\n\nvar _excluded$3 = [\"anchor\", \"focus\"],\n    _excluded2 = [\"anchor\", \"focus\"];\nvar shallowCompare = (obj1, obj2) => Object.keys(obj1).length === Object.keys(obj2).length && Object.keys(obj1).every(key => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]);\n/**\r\n * Check if a list of decorator ranges are equal to another.\r\n *\r\n * PERF: this requires the two lists to also have the ranges inside them in the\r\n * same order, but this is an okay constraint for us since decorations are\r\n * kept in order, and the odd case where they aren't is okay to re-render for.\r\n */\n\nvar isDecoratorRangeListEqual = (list, another) => {\n  if (list.length !== another.length) {\n    return false;\n  }\n\n  for (var i = 0; i < list.length; i++) {\n    var range = list[i];\n    var other = another[i];\n\n    var rangeOwnProps = _objectWithoutProperties(range, _excluded$3);\n\n    var otherOwnProps = _objectWithoutProperties(other, _excluded2);\n\n    if (!Range.equals(range, other) || range[PLACEHOLDER_SYMBOL] !== other[PLACEHOLDER_SYMBOL] || !shallowCompare(rangeOwnProps, otherOwnProps)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\nfunction useContentKey(node) {\n  var contentKeyRef = useRef(0);\n  var updateAnimationFrameRef = useRef(null);\n  var [, setForceRerenderCounter] = useState(0);\n  useEffect(() => {\n    NODE_TO_RESTORE_DOM.set(node, () => {\n      // Update is already queued and node hasn't re-render yet\n      if (updateAnimationFrameRef.current) {\n        return;\n      }\n\n      updateAnimationFrameRef.current = requestAnimationFrame(() => {\n        setForceRerenderCounter(state => state + 1);\n        updateAnimationFrameRef.current = null;\n      });\n      contentKeyRef.current++;\n    });\n    return () => {\n      NODE_TO_RESTORE_DOM.delete(node);\n    };\n  }, [node]); // Node was restored => clear scheduled update\n\n  if (updateAnimationFrameRef.current) {\n    cancelAnimationFrame(updateAnimationFrameRef.current);\n    updateAnimationFrameRef.current = null;\n  }\n\n  return contentKeyRef.current;\n}\n\n/**\r\n * Text.\r\n */\n\nvar Text = props => {\n  var {\n    decorations,\n    isLast,\n    parent,\n    renderPlaceholder,\n    renderLeaf,\n    text\n  } = props;\n  var editor = useSlateStatic();\n  var ref = useRef(null);\n  var leaves = Text$1.decorations(text, decorations);\n  var key = ReactEditor.findKey(editor, text);\n  var children = [];\n\n  for (var i = 0; i < leaves.length; i++) {\n    var leaf = leaves[i];\n    children.push( /*#__PURE__*/React.createElement(MemoizedLeaf, {\n      isLast: isLast && i === leaves.length - 1,\n      key: \"\".concat(key.id, \"-\").concat(i),\n      renderPlaceholder: renderPlaceholder,\n      leaf: leaf,\n      text: text,\n      parent: parent,\n      renderLeaf: renderLeaf\n    }));\n  } // Update element-related weak maps with the DOM element ref.\n\n\n  useIsomorphicLayoutEffect(() => {\n    var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n\n    if (ref.current) {\n      KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.set(key, ref.current);\n      NODE_TO_ELEMENT.set(text, ref.current);\n      ELEMENT_TO_NODE.set(ref.current, text);\n    } else {\n      KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.delete(key);\n      NODE_TO_ELEMENT.delete(text);\n    }\n  });\n  var contentKey = IS_ANDROID ? useContentKey(text) : undefined;\n  return /*#__PURE__*/React.createElement(\"span\", {\n    \"data-slate-node\": \"text\",\n    ref: ref,\n    key: contentKey\n  }, children);\n};\n\nvar MemoizedText = /*#__PURE__*/React.memo(Text, (prev, next) => {\n  return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.text === prev.text && isDecoratorRangeListEqual(next.decorations, prev.decorations);\n});\n\n/**\r\n * Element.\r\n */\n\nvar Element = props => {\n  var {\n    decorations,\n    element,\n    renderElement = p => /*#__PURE__*/React.createElement(DefaultElement, Object.assign({}, p)),\n    renderPlaceholder,\n    renderLeaf,\n    selection\n  } = props;\n  var ref = useRef(null);\n  var editor = useSlateStatic();\n  var readOnly = useReadOnly();\n  var isInline = editor.isInline(element);\n  var key = ReactEditor.findKey(editor, element);\n  var children = useChildren({\n    decorations,\n    node: element,\n    renderElement,\n    renderPlaceholder,\n    renderLeaf,\n    selection\n  }); // Attributes that the developer must mix into the element in their\n  // custom node renderer component.\n\n  var attributes = {\n    'data-slate-node': 'element',\n    ref\n  };\n\n  if (isInline) {\n    attributes['data-slate-inline'] = true;\n  } // If it's a block node with inline children, add the proper `dir` attribute\n  // for text direction.\n\n\n  if (!isInline && Editor.hasInlines(editor, element)) {\n    var text = Node.string(element);\n    var dir = getDirection(text);\n\n    if (dir === 'rtl') {\n      attributes.dir = dir;\n    }\n  } // If it's a void node, wrap the children in extra void-specific elements.\n\n\n  if (Editor.isVoid(editor, element)) {\n    attributes['data-slate-void'] = true;\n\n    if (!readOnly && isInline) {\n      attributes.contentEditable = false;\n    }\n\n    var Tag = isInline ? 'span' : 'div';\n    var [[_text]] = Node.texts(element);\n    children = /*#__PURE__*/React.createElement(Tag, {\n      \"data-slate-spacer\": true,\n      style: {\n        height: '0',\n        color: 'transparent',\n        outline: 'none',\n        position: 'absolute'\n      }\n    }, /*#__PURE__*/React.createElement(MemoizedText, {\n      renderPlaceholder: renderPlaceholder,\n      decorations: [],\n      isLast: false,\n      parent: element,\n      text: _text\n    }));\n    NODE_TO_INDEX.set(_text, 0);\n    NODE_TO_PARENT.set(_text, element);\n  } // Update element-related weak maps with the DOM element ref.\n\n\n  useIsomorphicLayoutEffect(() => {\n    var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n\n    if (ref.current) {\n      KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.set(key, ref.current);\n      NODE_TO_ELEMENT.set(element, ref.current);\n      ELEMENT_TO_NODE.set(ref.current, element);\n    } else {\n      KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.delete(key);\n      NODE_TO_ELEMENT.delete(element);\n    }\n  });\n  var content = renderElement({\n    attributes,\n    children,\n    element\n  });\n\n  if (IS_ANDROID) {\n    var contentKey = useContentKey(element);\n    return /*#__PURE__*/React.createElement(Fragment, {\n      key: contentKey\n    }, content);\n  }\n\n  return content;\n};\n\nvar MemoizedElement = /*#__PURE__*/React.memo(Element, (prev, next) => {\n  return prev.element === next.element && prev.renderElement === next.renderElement && prev.renderLeaf === next.renderLeaf && isDecoratorRangeListEqual(prev.decorations, next.decorations) && (prev.selection === next.selection || !!prev.selection && !!next.selection && Range.equals(prev.selection, next.selection));\n});\n/**\r\n * The default element renderer.\r\n */\n\nvar DefaultElement = props => {\n  var {\n    attributes,\n    children,\n    element\n  } = props;\n  var editor = useSlateStatic();\n  var Tag = editor.isInline(element) ? 'span' : 'div';\n  return /*#__PURE__*/React.createElement(Tag, Object.assign({}, attributes, {\n    style: {\n      position: 'relative'\n    }\n  }), children);\n};\n\n/**\r\n * A React context for sharing the editor object.\r\n */\n\nvar EditorContext = /*#__PURE__*/createContext(null);\n/**\r\n * Get the current editor object from the React context.\r\n */\n\nvar useSlateStatic = () => {\n  var editor = useContext(EditorContext);\n\n  if (!editor) {\n    throw new Error(\"The `useSlateStatic` hook must be used inside the <Slate> component's context.\");\n  }\n\n  return editor;\n};\n\n/**\r\n * A React context for sharing the `selected` state of an element.\r\n */\n\nvar SelectedContext = /*#__PURE__*/createContext(false);\n/**\r\n * Get the current `selected` state of an element.\r\n */\n\nvar useSelected = () => {\n  return useContext(SelectedContext);\n};\n\n/**\r\n * Children.\r\n */\n\nvar useChildren = props => {\n  var {\n    decorations,\n    node,\n    renderElement,\n    renderPlaceholder,\n    renderLeaf,\n    selection\n  } = props;\n  var editor = useSlateStatic();\n  var path = ReactEditor.findPath(editor, node);\n  var children = [];\n  var isLeafBlock = Element$1.isElement(node) && !editor.isInline(node) && Editor.hasInlines(editor, node);\n\n  var _loop = function _loop(i) {\n    var p = path.concat(i);\n    var n = node.children[i];\n    var key = ReactEditor.findKey(editor, n);\n    var range = Editor.range(editor, p);\n    var sel = selection && Range.intersection(range, selection);\n    var ds = decorations.reduce((acc, dec) => {\n      var intersection = Range.intersection(dec, range);\n      if (intersection) acc.push(intersection);\n      return acc;\n    }, []);\n\n    if (Element$1.isElement(n)) {\n      children.push( /*#__PURE__*/React.createElement(SelectedContext.Provider, {\n        key: \"provider-\".concat(key.id),\n        value: !!sel\n      }, /*#__PURE__*/React.createElement(MemoizedElement, {\n        decorations: ds,\n        element: n,\n        key: key.id,\n        renderElement: renderElement,\n        renderPlaceholder: renderPlaceholder,\n        renderLeaf: renderLeaf,\n        selection: sel\n      })));\n    } else {\n      children.push( /*#__PURE__*/React.createElement(MemoizedText, {\n        decorations: ds,\n        key: key.id,\n        isLast: isLeafBlock && i === node.children.length - 1,\n        parent: node,\n        renderPlaceholder: renderPlaceholder,\n        renderLeaf: renderLeaf,\n        text: n\n      }));\n    }\n\n    NODE_TO_INDEX.set(n, i);\n    NODE_TO_PARENT.set(n, node);\n  };\n\n  for (var i = 0; i < node.children.length; i++) {\n    _loop(i);\n  }\n\n  return children;\n};\n\n/**\r\n * Hotkey mappings for each platform.\r\n */\n\nvar HOTKEYS = {\n  bold: 'mod+b',\n  compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n  moveBackward: 'left',\n  moveForward: 'right',\n  moveWordBackward: 'ctrl+left',\n  moveWordForward: 'ctrl+right',\n  deleteBackward: 'shift?+backspace',\n  deleteForward: 'shift?+delete',\n  extendBackward: 'shift+left',\n  extendForward: 'shift+right',\n  italic: 'mod+i',\n  insertSoftBreak: 'shift+enter',\n  splitBlock: 'enter',\n  undo: 'mod+z'\n};\nvar APPLE_HOTKEYS = {\n  moveLineBackward: 'opt+up',\n  moveLineForward: 'opt+down',\n  moveWordBackward: 'opt+left',\n  moveWordForward: 'opt+right',\n  deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n  deleteForward: ['ctrl+delete', 'ctrl+d'],\n  deleteLineBackward: 'cmd+shift?+backspace',\n  deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n  deleteWordBackward: 'opt+shift?+backspace',\n  deleteWordForward: 'opt+shift?+delete',\n  extendLineBackward: 'opt+shift+up',\n  extendLineForward: 'opt+shift+down',\n  redo: 'cmd+shift+z',\n  transposeCharacter: 'ctrl+t'\n};\nvar WINDOWS_HOTKEYS = {\n  deleteWordBackward: 'ctrl+shift?+backspace',\n  deleteWordForward: 'ctrl+shift?+delete',\n  redo: ['ctrl+y', 'ctrl+shift+z']\n};\n/**\r\n * Create a platform-aware hotkey checker.\r\n */\n\nvar create = key => {\n  var generic = HOTKEYS[key];\n  var apple = APPLE_HOTKEYS[key];\n  var windows = WINDOWS_HOTKEYS[key];\n  var isGeneric = generic && isKeyHotkey(generic);\n  var isApple = apple && isKeyHotkey(apple);\n  var isWindows = windows && isKeyHotkey(windows);\n  return event => {\n    if (isGeneric && isGeneric(event)) return true;\n    if (IS_APPLE && isApple && isApple(event)) return true;\n    if (!IS_APPLE && isWindows && isWindows(event)) return true;\n    return false;\n  };\n};\n/**\r\n * Hotkeys.\r\n */\n\n\nvar Hotkeys = {\n  isBold: create('bold'),\n  isCompose: create('compose'),\n  isMoveBackward: create('moveBackward'),\n  isMoveForward: create('moveForward'),\n  isDeleteBackward: create('deleteBackward'),\n  isDeleteForward: create('deleteForward'),\n  isDeleteLineBackward: create('deleteLineBackward'),\n  isDeleteLineForward: create('deleteLineForward'),\n  isDeleteWordBackward: create('deleteWordBackward'),\n  isDeleteWordForward: create('deleteWordForward'),\n  isExtendBackward: create('extendBackward'),\n  isExtendForward: create('extendForward'),\n  isExtendLineBackward: create('extendLineBackward'),\n  isExtendLineForward: create('extendLineForward'),\n  isItalic: create('italic'),\n  isMoveLineBackward: create('moveLineBackward'),\n  isMoveLineForward: create('moveLineForward'),\n  isMoveWordBackward: create('moveWordBackward'),\n  isMoveWordForward: create('moveWordForward'),\n  isRedo: create('redo'),\n  isSoftBreak: create('insertSoftBreak'),\n  isSplitBlock: create('splitBlock'),\n  isTransposeCharacter: create('transposeCharacter'),\n  isUndo: create('undo')\n};\n\n/**\r\n * A React context for sharing the `readOnly` state of the editor.\r\n */\n\nvar ReadOnlyContext = /*#__PURE__*/createContext(false);\n/**\r\n * Get the current `readOnly` state of the editor.\r\n */\n\nvar useReadOnly = () => {\n  return useContext(ReadOnlyContext);\n};\n\n/**\r\n * A React context for sharing the editor object, in a way that re-renders the\r\n * context whenever changes occur.\r\n */\n\nvar SlateContext = /*#__PURE__*/createContext(null);\n/**\r\n * Get the current editor object from the React context.\r\n */\n\nvar useSlate = () => {\n  var context = useContext(SlateContext);\n\n  if (!context) {\n    throw new Error(\"The `useSlate` hook must be used inside the <Slate> component's context.\");\n  }\n\n  var [editor] = context;\n  return editor;\n};\n\n/**\r\n * A React context for sharing the `decorate` prop of the editable.\r\n */\n\nvar DecorateContext = /*#__PURE__*/createContext(() => []);\n\n/**\r\n * Types.\r\n */\n/**\r\n * Returns the host window of a DOM node\r\n */\n\nvar getDefaultView = value => {\n  return value && value.ownerDocument && value.ownerDocument.defaultView || null;\n};\n/**\r\n * Check if a DOM node is a comment node.\r\n */\n\nvar isDOMComment = value => {\n  return isDOMNode(value) && value.nodeType === 8;\n};\n/**\r\n * Check if a DOM node is an element node.\r\n */\n\nvar isDOMElement = value => {\n  return isDOMNode(value) && value.nodeType === 1;\n};\n/**\r\n * Check if a value is a DOM node.\r\n */\n\nvar isDOMNode = value => {\n  var window = getDefaultView(value);\n  return !!window && value instanceof window.Node;\n};\n/**\r\n * Check if a value is a DOM selection.\r\n */\n\nvar isDOMSelection = value => {\n  var window = value && value.anchorNode && getDefaultView(value.anchorNode);\n  return !!window && value instanceof window.Selection;\n};\n/**\r\n * Check if a DOM node is an element node.\r\n */\n\nvar isDOMText = value => {\n  return isDOMNode(value) && value.nodeType === 3;\n};\n/**\r\n * Checks whether a paste event is a plaintext-only event.\r\n */\n\nvar isPlainTextOnlyPaste = event => {\n  return event.clipboardData && event.clipboardData.getData('text/plain') !== '' && event.clipboardData.types.length === 1;\n};\n/**\r\n * Normalize a DOM point so that it always refers to a text node.\r\n */\n\nvar normalizeDOMPoint = domPoint => {\n  var [node, offset] = domPoint; // If it's an element node, its offset refers to the index of its children\n  // including comment nodes, so try to find the right text child node.\n\n  if (isDOMElement(node) && node.childNodes.length) {\n    var isLast = offset === node.childNodes.length;\n    var index = isLast ? offset - 1 : offset;\n    [node, index] = getEditableChildAndIndex(node, index, isLast ? 'backward' : 'forward'); // If the editable child found is in front of input offset, we instead seek to its end\n\n    isLast = index < offset; // If the node has children, traverse until we have a leaf node. Leaf nodes\n    // can be either text nodes, or other void DOM nodes.\n\n    while (isDOMElement(node) && node.childNodes.length) {\n      var i = isLast ? node.childNodes.length - 1 : 0;\n      node = getEditableChild(node, i, isLast ? 'backward' : 'forward');\n    } // Determine the new offset inside the text node.\n\n\n    offset = isLast && node.textContent != null ? node.textContent.length : 0;\n  } // Return the node and offset.\n\n\n  return [node, offset];\n};\n/**\r\n * Determines wether the active element is nested within a shadowRoot\r\n */\n\nvar hasShadowRoot = () => {\n  return !!(window.document.activeElement && window.document.activeElement.shadowRoot);\n};\n/**\r\n * Get the nearest editable child and index at `index` in a `parent`, preferring\r\n * `direction`.\r\n */\n\nvar getEditableChildAndIndex = (parent, index, direction) => {\n  var {\n    childNodes\n  } = parent;\n  var child = childNodes[index];\n  var i = index;\n  var triedForward = false;\n  var triedBackward = false; // While the child is a comment node, or an element node with no children,\n  // keep iterating to find a sibling non-void, non-comment node.\n\n  while (isDOMComment(child) || isDOMElement(child) && child.childNodes.length === 0 || isDOMElement(child) && child.getAttribute('contenteditable') === 'false') {\n    if (triedForward && triedBackward) {\n      break;\n    }\n\n    if (i >= childNodes.length) {\n      triedForward = true;\n      i = index - 1;\n      direction = 'backward';\n      continue;\n    }\n\n    if (i < 0) {\n      triedBackward = true;\n      i = index + 1;\n      direction = 'forward';\n      continue;\n    }\n\n    child = childNodes[i];\n    index = i;\n    i += direction === 'forward' ? 1 : -1;\n  }\n\n  return [child, index];\n};\n/**\r\n * Get the nearest editable child at `index` in a `parent`, preferring\r\n * `direction`.\r\n */\n\nvar getEditableChild = (parent, index, direction) => {\n  var [child] = getEditableChildAndIndex(parent, index, direction);\n  return child;\n};\n/**\r\n * Get a plaintext representation of the content of a node, accounting for block\r\n * elements which get a newline appended.\r\n *\r\n * The domNode must be attached to the DOM.\r\n */\n\nvar getPlainText = domNode => {\n  var text = '';\n\n  if (isDOMText(domNode) && domNode.nodeValue) {\n    return domNode.nodeValue;\n  }\n\n  if (isDOMElement(domNode)) {\n    for (var childNode of Array.from(domNode.childNodes)) {\n      text += getPlainText(childNode);\n    }\n\n    var display = getComputedStyle(domNode).getPropertyValue('display');\n\n    if (display === 'block' || display === 'list' || domNode.tagName === 'BR') {\n      text += '\\n';\n    }\n  }\n\n  return text;\n};\n/**\r\n * Get x-slate-fragment attribute from data-slate-fragment\r\n */\n\nvar catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m;\nvar getSlateFragmentAttribute = dataTransfer => {\n  var htmlData = dataTransfer.getData('text/html');\n  var [, fragment] = htmlData.match(catchSlateFragment) || [];\n  return fragment;\n};\n/**\r\n * Get the x-slate-fragment attribute that exist in text/html data\r\n * and append it to the DataTransfer object\r\n */\n\nvar getClipboardData = dataTransfer => {\n  if (!dataTransfer.getData('application/x-slate-fragment')) {\n    var fragment = getSlateFragmentAttribute(dataTransfer);\n\n    if (fragment) {\n      var clipboardData = new DataTransfer();\n      dataTransfer.types.forEach(type => {\n        clipboardData.setData(type, dataTransfer.getData(type));\n      });\n      clipboardData.setData('application/x-slate-fragment', fragment);\n      return clipboardData;\n    }\n  }\n\n  return dataTransfer;\n};\n\nvar TRIPLE_CLICK = 3;\n\nvar _excluded$2 = [\"autoFocus\", \"decorate\", \"onDOMBeforeInput\", \"placeholder\", \"readOnly\", \"renderElement\", \"renderLeaf\", \"renderPlaceholder\", \"scrollSelectionIntoView\", \"style\", \"as\"];\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar Children = props => /*#__PURE__*/React.createElement(React.Fragment, null, useChildren(props));\n/**\r\n * Editable.\r\n */\n\n\nvar Editable$1 = props => {\n  var {\n    autoFocus,\n    decorate = defaultDecorate,\n    onDOMBeforeInput: propsOnDOMBeforeInput,\n    placeholder,\n    readOnly = false,\n    renderElement,\n    renderLeaf,\n    renderPlaceholder = props => /*#__PURE__*/React.createElement(DefaultPlaceholder, Object.assign({}, props)),\n    scrollSelectionIntoView = defaultScrollSelectionIntoView,\n    style = {},\n    as: Component = 'div'\n  } = props,\n      attributes = _objectWithoutProperties(props, _excluded$2);\n\n  var editor = useSlate(); // Rerender editor when composition status changed\n\n  var [isComposing, setIsComposing] = useState(false);\n  var ref = useRef(null);\n  var deferredOperations = useRef([]); // Update internal state on each render.\n\n  IS_READ_ONLY.set(editor, readOnly); // Keep track of some state for the event handler logic.\n\n  var state = useMemo(() => ({\n    isComposing: false,\n    hasInsertPrefixInCompositon: false,\n    isDraggingInternally: false,\n    isUpdatingSelection: false,\n    latestElement: null\n  }), []); // Whenever the editor updates...\n\n  useIsomorphicLayoutEffect(() => {\n    // Update element-related weak maps with the DOM element ref.\n    var window;\n\n    if (ref.current && (window = getDefaultView(ref.current))) {\n      EDITOR_TO_WINDOW.set(editor, window);\n      EDITOR_TO_ELEMENT.set(editor, ref.current);\n      NODE_TO_ELEMENT.set(editor, ref.current);\n      ELEMENT_TO_NODE.set(ref.current, editor);\n    } else {\n      NODE_TO_ELEMENT.delete(editor);\n    } // Make sure the DOM selection state is in sync.\n\n\n    var {\n      selection\n    } = editor;\n    var root = ReactEditor.findDocumentOrShadowRoot(editor);\n    var domSelection = root.getSelection();\n\n    if (state.isComposing || !domSelection || !ReactEditor.isFocused(editor)) {\n      return;\n    }\n\n    var hasDomSelection = domSelection.type !== 'None'; // If the DOM selection is properly unset, we're done.\n\n    if (!selection && !hasDomSelection) {\n      return;\n    } // verify that the dom selection is in the editor\n\n\n    var editorElement = EDITOR_TO_ELEMENT.get(editor);\n    var hasDomSelectionInEditor = false;\n\n    if (editorElement.contains(domSelection.anchorNode) && editorElement.contains(domSelection.focusNode)) {\n      hasDomSelectionInEditor = true;\n    } // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n\n\n    if (hasDomSelection && hasDomSelectionInEditor && selection) {\n      var slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n        exactMatch: true,\n        // domSelection is not necessarily a valid Slate range\n        // (e.g. when clicking on contentEditable:false element)\n        suppressThrow: true\n      });\n\n      if (slateRange && Range.equals(slateRange, selection)) {\n        return;\n      }\n    } // when <Editable/> is being controlled through external value\n    // then its children might just change - DOM responds to it on its own\n    // but Slate's value is not being updated through any operation\n    // and thus it doesn't transform selection on its own\n\n\n    if (selection && !ReactEditor.hasRange(editor, selection)) {\n      editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n        exactMatch: false,\n        suppressThrow: false\n      });\n      return;\n    } // Otherwise the DOM selection is out of sync, so update it.\n\n\n    state.isUpdatingSelection = true;\n    var newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\n\n    if (newDomRange) {\n      if (Range.isBackward(selection)) {\n        domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);\n      } else {\n        domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);\n      }\n\n      scrollSelectionIntoView(editor, newDomRange);\n    } else {\n      domSelection.removeAllRanges();\n    }\n\n    setTimeout(() => {\n      // COMPAT: In Firefox, it's not enough to create a range, you also need\n      // to focus the contenteditable element too. (2016/11/16)\n      if (newDomRange && IS_FIREFOX) {\n        var el = ReactEditor.toDOMNode(editor, editor);\n        el.focus();\n      }\n\n      state.isUpdatingSelection = false;\n    });\n  }); // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n  // needs to be manually focused.\n\n  useEffect(() => {\n    if (ref.current && autoFocus) {\n      ref.current.focus();\n    }\n  }, [autoFocus]); // Listen on the native `selectionchange` event to be able to update any time\n  // the selection changes. This is required because React's `onSelect` is leaky\n  // and non-standard so it doesn't fire until after a selection has been\n  // released. This causes issues in situations where another change happens\n  // while a selection is being dragged.\n\n  var onDOMSelectionChange = useCallback(throttle(() => {\n    if (!state.isComposing && !state.isUpdatingSelection && !state.isDraggingInternally) {\n      var root = ReactEditor.findDocumentOrShadowRoot(editor);\n      var {\n        activeElement\n      } = root;\n      var el = ReactEditor.toDOMNode(editor, editor);\n      var domSelection = root.getSelection();\n\n      if (activeElement === el) {\n        state.latestElement = activeElement;\n        IS_FOCUSED.set(editor, true);\n      } else {\n        IS_FOCUSED.delete(editor);\n      }\n\n      if (!domSelection) {\n        return Transforms.deselect(editor);\n      }\n\n      var {\n        anchorNode,\n        focusNode\n      } = domSelection;\n      var anchorNodeSelectable = hasEditableTarget(editor, anchorNode) || isTargetInsideNonReadonlyVoid(editor, anchorNode);\n      var focusNodeSelectable = hasEditableTarget(editor, focusNode) || isTargetInsideNonReadonlyVoid(editor, focusNode);\n\n      if (anchorNodeSelectable && focusNodeSelectable) {\n        var range = ReactEditor.toSlateRange(editor, domSelection, {\n          exactMatch: false,\n          suppressThrow: false\n        });\n        Transforms.select(editor, range);\n      }\n    }\n  }, 100), [readOnly]);\n  var scheduleOnDOMSelectionChange = useMemo(() => debounce(onDOMSelectionChange, 0), [onDOMSelectionChange]); // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n  // is required because React's `beforeinput` is fake and never really attaches\n  // to the real event sadly. (2019/11/01)\n  // https://github.com/facebook/react/issues/11211\n\n  var onDOMBeforeInput = useCallback(event => {\n    if (!readOnly && hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\n      var _EDITOR_TO_USER_SELEC;\n\n      // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n      // triggering a `beforeinput` expecting the change to be applied to the immediately before\n      // set selection.\n      scheduleOnDOMSelectionChange.flush();\n      onDOMSelectionChange.flush();\n      var {\n        selection\n      } = editor;\n      var {\n        inputType: type\n      } = event;\n      var data = event.dataTransfer || event.data || undefined; // These two types occur while a user is composing text and can't be\n      // cancelled. Let them through and wait for the composition to end.\n\n      if (type === 'insertCompositionText' || type === 'deleteCompositionText') {\n        return;\n      }\n\n      var native = false;\n\n      if (type === 'insertText' && selection && Range.isCollapsed(selection) && // Only use native character insertion for single characters a-z or space for now.\n      // Long-press events (hold a + press 4 = ä) to choose a special character otherwise\n      // causes duplicate inserts.\n      event.data && event.data.length === 1 && /[a-z ]/i.test(event.data) && // Chrome has issues correctly editing the start of nodes: https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n      // When there is an inline element, e.g. a link, and you select\n      // right after it (the start of the next node).\n      selection.anchor.offset !== 0) {\n        var _node$parentElement;\n\n        native = true; // Skip native if there are marks, as\n        // `insertText` will insert a node, not just text.\n\n        if (editor.marks) {\n          native = false;\n        } // Chrome also has issues correctly editing the end of anchor elements: https://bugs.chromium.org/p/chromium/issues/detail?id=1259100\n        // Therefore we don't allow native events to insert text at the end of anchor nodes.\n\n\n        var {\n          anchor\n        } = selection;\n        var [node, offset] = ReactEditor.toDOMPoint(editor, anchor);\n        var anchorNode = (_node$parentElement = node.parentElement) === null || _node$parentElement === void 0 ? void 0 : _node$parentElement.closest('a');\n\n        if (anchorNode && ReactEditor.hasDOMNode(editor, anchorNode)) {\n          var _lastText$textContent;\n\n          var {\n            document\n          } = ReactEditor.getWindow(editor); // Find the last text node inside the anchor.\n\n          var lastText = document.createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT).lastChild();\n\n          if (lastText === node && ((_lastText$textContent = lastText.textContent) === null || _lastText$textContent === void 0 ? void 0 : _lastText$textContent.length) === offset) {\n            native = false;\n          }\n        }\n      } // COMPAT: For the deleting forward/backward input types we don't want\n      // to change the selection because it is the range that will be deleted,\n      // and those commands determine that for themselves.\n\n\n      if (!type.startsWith('delete') || type.startsWith('deleteBy')) {\n        var [targetRange] = event.getTargetRanges();\n\n        if (targetRange) {\n          var range = ReactEditor.toSlateRange(editor, targetRange, {\n            exactMatch: false,\n            suppressThrow: false\n          });\n\n          if (!selection || !Range.equals(selection, range)) {\n            native = false;\n            var selectionRef = editor.selection && Editor.rangeRef(editor, editor.selection);\n            Transforms.select(editor, range);\n\n            if (selectionRef) {\n              EDITOR_TO_USER_SELECTION.set(editor, selectionRef);\n            }\n          }\n        }\n      }\n\n      if (!native) {\n        event.preventDefault();\n      } // COMPAT: If the selection is expanded, even if the command seems like\n      // a delete forward/backward command it should delete the selection.\n\n\n      if (selection && Range.isExpanded(selection) && type.startsWith('delete')) {\n        var direction = type.endsWith('Backward') ? 'backward' : 'forward';\n        Editor.deleteFragment(editor, {\n          direction\n        });\n        return;\n      }\n\n      switch (type) {\n        case 'deleteByComposition':\n        case 'deleteByCut':\n        case 'deleteByDrag':\n          {\n            Editor.deleteFragment(editor);\n            break;\n          }\n\n        case 'deleteContent':\n        case 'deleteContentForward':\n          {\n            Editor.deleteForward(editor);\n            break;\n          }\n\n        case 'deleteContentBackward':\n          {\n            Editor.deleteBackward(editor);\n            break;\n          }\n\n        case 'deleteEntireSoftLine':\n          {\n            Editor.deleteBackward(editor, {\n              unit: 'line'\n            });\n            Editor.deleteForward(editor, {\n              unit: 'line'\n            });\n            break;\n          }\n\n        case 'deleteHardLineBackward':\n          {\n            Editor.deleteBackward(editor, {\n              unit: 'block'\n            });\n            break;\n          }\n\n        case 'deleteSoftLineBackward':\n          {\n            Editor.deleteBackward(editor, {\n              unit: 'line'\n            });\n            break;\n          }\n\n        case 'deleteHardLineForward':\n          {\n            Editor.deleteForward(editor, {\n              unit: 'block'\n            });\n            break;\n          }\n\n        case 'deleteSoftLineForward':\n          {\n            Editor.deleteForward(editor, {\n              unit: 'line'\n            });\n            break;\n          }\n\n        case 'deleteWordBackward':\n          {\n            Editor.deleteBackward(editor, {\n              unit: 'word'\n            });\n            break;\n          }\n\n        case 'deleteWordForward':\n          {\n            Editor.deleteForward(editor, {\n              unit: 'word'\n            });\n            break;\n          }\n\n        case 'insertLineBreak':\n          Editor.insertSoftBreak(editor);\n          break;\n\n        case 'insertParagraph':\n          {\n            Editor.insertBreak(editor);\n            break;\n          }\n\n        case 'insertFromComposition':\n        case 'insertFromDrop':\n        case 'insertFromPaste':\n        case 'insertFromYank':\n        case 'insertReplacementText':\n        case 'insertText':\n          {\n            var {\n              selection: _selection\n            } = editor;\n\n            if (_selection) {\n              if (Range.isExpanded(_selection)) {\n                Editor.deleteFragment(editor);\n              }\n            }\n\n            if (type === 'insertFromComposition') {\n              // COMPAT: in Safari, `compositionend` is dispatched after the\n              // `beforeinput` for \"insertFromComposition\". But if we wait for it\n              // then we will abort because we're still composing and the selection\n              // won't be updated properly.\n              // https://www.w3.org/TR/input-events-2/\n              state.isComposing && setIsComposing(false);\n              state.isComposing = false;\n            } // use a weak comparison instead of 'instanceof' to allow\n            // programmatic access of paste events coming from external windows\n            // like cypress where cy.window does not work realibly\n\n\n            if ((data === null || data === void 0 ? void 0 : data.constructor.name) === 'DataTransfer') {\n              ReactEditor.insertData(editor, data);\n            } else if (typeof data === 'string') {\n              // Only insertText operations use the native functionality, for now.\n              // Potentially expand to single character deletes, as well.\n              if (native) {\n                deferredOperations.current.push(() => Editor.insertText(editor, data));\n              } else {\n                Editor.insertText(editor, data);\n              }\n            }\n\n            break;\n          }\n      } // Restore the actual user section if nothing manually set it.\n\n\n      var toRestore = (_EDITOR_TO_USER_SELEC = EDITOR_TO_USER_SELECTION.get(editor)) === null || _EDITOR_TO_USER_SELEC === void 0 ? void 0 : _EDITOR_TO_USER_SELEC.unref();\n      EDITOR_TO_USER_SELECTION.delete(editor);\n\n      if (toRestore && (!editor.selection || !Range.equals(editor.selection, toRestore))) {\n        Transforms.select(editor, toRestore);\n      }\n    }\n  }, [readOnly, propsOnDOMBeforeInput]); // Attach a native DOM event handler for `beforeinput` events, because React's\n  // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n  // real `beforeinput` events sadly... (2019/11/04)\n  // https://github.com/facebook/react/issues/11211\n\n  useIsomorphicLayoutEffect(() => {\n    if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n      // @ts-ignore The `beforeinput` event isn't recognized.\n      ref.current.addEventListener('beforeinput', onDOMBeforeInput);\n    }\n\n    return () => {\n      if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n        // @ts-ignore The `beforeinput` event isn't recognized.\n        ref.current.removeEventListener('beforeinput', onDOMBeforeInput);\n      }\n    };\n  }, [onDOMBeforeInput]); // Attach a native DOM event handler for `selectionchange`, because React's\n  // built-in `onSelect` handler doesn't fire for all selection changes. It's a\n  // leaky polyfill that only fires on keypresses or clicks. Instead, we want to\n  // fire for any change to the selection inside the editor. (2019/11/04)\n  // https://github.com/facebook/react/issues/5785\n\n  useIsomorphicLayoutEffect(() => {\n    var window = ReactEditor.getWindow(editor);\n    window.document.addEventListener('selectionchange', scheduleOnDOMSelectionChange);\n    return () => {\n      window.document.removeEventListener('selectionchange', scheduleOnDOMSelectionChange);\n    };\n  }, [scheduleOnDOMSelectionChange]);\n  var decorations = [...Node.nodes(editor)].flatMap(_ref => {\n    var [n, p] = _ref;\n    return decorate([n, p]);\n  });\n\n  if (placeholder && editor.children.length === 1 && Array.from(Node.texts(editor)).length === 1 && Node.string(editor) === '' && !isComposing) {\n    var start = Editor.start(editor, []);\n    decorations.push({\n      [PLACEHOLDER_SYMBOL]: true,\n      placeholder,\n      anchor: start,\n      focus: start\n    });\n  }\n\n  return /*#__PURE__*/React.createElement(ReadOnlyContext.Provider, {\n    value: readOnly\n  }, /*#__PURE__*/React.createElement(DecorateContext.Provider, {\n    value: decorate\n  }, /*#__PURE__*/React.createElement(Component, Object.assign({\n    role: readOnly ? undefined : 'textbox'\n  }, attributes, {\n    // COMPAT: Certain browsers don't support the `beforeinput` event, so we'd\n    // have to use hacks to make these replacement-based features work.\n    // For SSR situations HAS_BEFORE_INPUT_SUPPORT is false and results in prop\n    // mismatch warning app moves to browser. Pass-through consumer props when\n    // not CAN_USE_DOM (SSR) and default to falsy value\n    spellCheck: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.spellCheck : false,\n    autoCorrect: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCorrect : 'false',\n    autoCapitalize: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCapitalize : 'false',\n    \"data-slate-editor\": true,\n    \"data-slate-node\": \"value\",\n    // explicitly set this\n    contentEditable: !readOnly,\n    // in some cases, a decoration needs access to the range / selection to decorate a text node,\n    // then you will select the whole text node when you select part the of text\n    // this magic zIndex=\"-1\" will fix it\n    zindex: -1,\n    suppressContentEditableWarning: true,\n    ref: ref,\n    style: _objectSpread$1({\n      // Allow positioning relative to the editable element.\n      position: 'relative',\n      // Prevent the default outline styles.\n      outline: 'none',\n      // Preserve adjacent whitespace and new lines.\n      whiteSpace: 'pre-wrap',\n      // Allow words to break if they are too long.\n      wordWrap: 'break-word'\n    }, style),\n    onBeforeInput: useCallback(event => {\n      // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n      // fall back to React's leaky polyfill instead just for it. It\n      // only works for the `insertText` input type.\n      if (!HAS_BEFORE_INPUT_SUPPORT && !readOnly && !isEventHandled(event, attributes.onBeforeInput) && hasEditableTarget(editor, event.target)) {\n        event.preventDefault();\n\n        if (!state.isComposing) {\n          var text = event.data;\n          Editor.insertText(editor, text);\n        }\n      }\n    }, [readOnly]),\n    onInput: useCallback(event => {\n      // Flush native operations, as native events will have propogated\n      // and we can correctly compare DOM text values in components\n      // to stop rendering, so that browser functions like autocorrect\n      // and spellcheck work as expected.\n      for (var op of deferredOperations.current) {\n        op();\n      }\n\n      deferredOperations.current = [];\n    }, []),\n    onBlur: useCallback(event => {\n      if (readOnly || state.isUpdatingSelection || !hasEditableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {\n        return;\n      } // COMPAT: If the current `activeElement` is still the previous\n      // one, this is due to the window being blurred when the tab\n      // itself becomes unfocused, so we want to abort early to allow to\n      // editor to stay focused when the tab becomes focused again.\n\n\n      var root = ReactEditor.findDocumentOrShadowRoot(editor);\n\n      if (state.latestElement === root.activeElement) {\n        return;\n      }\n\n      var {\n        relatedTarget\n      } = event;\n      var el = ReactEditor.toDOMNode(editor, editor); // COMPAT: The event should be ignored if the focus is returning\n      // to the editor from an embedded editable element (eg. an <input>\n      // element inside a void node).\n\n      if (relatedTarget === el) {\n        return;\n      } // COMPAT: The event should be ignored if the focus is moving from\n      // the editor to inside a void node's spacer element.\n\n\n      if (isDOMElement(relatedTarget) && relatedTarget.hasAttribute('data-slate-spacer')) {\n        return;\n      } // COMPAT: The event should be ignored if the focus is moving to a\n      // non- editable section of an element that isn't a void node (eg.\n      // a list item of the check list example).\n\n\n      if (relatedTarget != null && isDOMNode(relatedTarget) && ReactEditor.hasDOMNode(editor, relatedTarget)) {\n        var node = ReactEditor.toSlateNode(editor, relatedTarget);\n\n        if (Element$1.isElement(node) && !editor.isVoid(node)) {\n          return;\n        }\n      } // COMPAT: Safari doesn't always remove the selection even if the content-\n      // editable element no longer has focus. Refer to:\n      // https://stackoverflow.com/questions/12353247/force-contenteditable-div-to-stop-accepting-input-after-it-loses-focus-under-web\n\n\n      if (IS_SAFARI) {\n        var domSelection = root.getSelection();\n        domSelection === null || domSelection === void 0 ? void 0 : domSelection.removeAllRanges();\n      }\n\n      IS_FOCUSED.delete(editor);\n    }, [readOnly, attributes.onBlur]),\n    onClick: useCallback(event => {\n      if (hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {\n        var node = ReactEditor.toSlateNode(editor, event.target);\n        var path = ReactEditor.findPath(editor, node); // At this time, the Slate document may be arbitrarily different,\n        // because onClick handlers can change the document before we get here.\n        // Therefore we must check that this path actually exists,\n        // and that it still refers to the same node.\n\n        if (!Editor.hasPath(editor, path) || Node.get(editor, path) !== node) {\n          return;\n        }\n\n        if (event.detail === TRIPLE_CLICK && path.length >= 1) {\n          var blockPath = path;\n\n          if (!Editor.isBlock(editor, node)) {\n            var _block$;\n\n            var block = Editor.above(editor, {\n              match: n => Editor.isBlock(editor, n),\n              at: path\n            });\n            blockPath = (_block$ = block === null || block === void 0 ? void 0 : block[1]) !== null && _block$ !== void 0 ? _block$ : path.slice(0, 1);\n          }\n\n          var range = Editor.range(editor, blockPath);\n          Transforms.select(editor, range);\n          return;\n        }\n\n        if (readOnly) {\n          return;\n        }\n\n        var _start = Editor.start(editor, path);\n\n        var end = Editor.end(editor, path);\n        var startVoid = Editor.void(editor, {\n          at: _start\n        });\n        var endVoid = Editor.void(editor, {\n          at: end\n        });\n\n        if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {\n          var _range = Editor.range(editor, _start);\n\n          Transforms.select(editor, _range);\n        }\n      }\n    }, [readOnly, attributes.onClick]),\n    onCompositionEnd: useCallback(event => {\n      if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionEnd)) {\n        state.isComposing && setIsComposing(false);\n        state.isComposing = false; // COMPAT: In Chrome, `beforeinput` events for compositions\n        // aren't correct and never fire the \"insertFromComposition\"\n        // type that we need. So instead, insert whenever a composition\n        // ends since it will already have been committed to the DOM.\n\n        if (!IS_SAFARI && !IS_FIREFOX_LEGACY && !IS_IOS && !IS_QQBROWSER && !IS_WECHATBROWSER && !IS_UC_MOBILE && event.data) {\n          Editor.insertText(editor, event.data);\n        }\n\n        if (editor.selection && Range.isCollapsed(editor.selection)) {\n          var leafPath = editor.selection.anchor.path;\n          var currentTextNode = Node.leaf(editor, leafPath);\n\n          if (state.hasInsertPrefixInCompositon) {\n            state.hasInsertPrefixInCompositon = false;\n            Editor.withoutNormalizing(editor, () => {\n              // remove Unicode BOM prefix added in `onCompositionStart`\n              var text = currentTextNode.text.replace(/^\\uFEFF/, '');\n              Transforms.delete(editor, {\n                distance: currentTextNode.text.length,\n                reverse: true\n              });\n              Editor.insertText(editor, text);\n            });\n          }\n        }\n      }\n    }, [attributes.onCompositionEnd]),\n    onCompositionUpdate: useCallback(event => {\n      if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {\n        !state.isComposing && setIsComposing(true);\n        state.isComposing = true;\n      }\n    }, [attributes.onCompositionUpdate]),\n    onCompositionStart: useCallback(event => {\n      if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionStart)) {\n        var {\n          selection,\n          marks\n        } = editor;\n\n        if (selection) {\n          if (Range.isExpanded(selection)) {\n            Editor.deleteFragment(editor);\n            return;\n          }\n\n          var inline = Editor.above(editor, {\n            match: n => Editor.isInline(editor, n),\n            mode: 'highest'\n          });\n\n          if (inline) {\n            var [, inlinePath] = inline;\n\n            if (Editor.isEnd(editor, selection.anchor, inlinePath)) {\n              var point = Editor.after(editor, inlinePath);\n              Transforms.setSelection(editor, {\n                anchor: point,\n                focus: point\n              });\n            }\n          } // insert new node in advance to ensure composition text will insert\n          // along with final input text\n          // add Unicode BOM prefix to avoid normalize removing this node\n\n\n          if (marks) {\n            state.hasInsertPrefixInCompositon = true;\n            Transforms.insertNodes(editor, _objectSpread$1({\n              text: '\\uFEFF'\n            }, marks), {\n              select: true\n            });\n          }\n        }\n      }\n    }, [attributes.onCompositionStart]),\n    onCopy: useCallback(event => {\n      if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy)) {\n        event.preventDefault();\n        ReactEditor.setFragmentData(editor, event.clipboardData, 'copy');\n      }\n    }, [attributes.onCopy]),\n    onCut: useCallback(event => {\n      if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut)) {\n        event.preventDefault();\n        ReactEditor.setFragmentData(editor, event.clipboardData, 'cut');\n        var {\n          selection\n        } = editor;\n\n        if (selection) {\n          if (Range.isExpanded(selection)) {\n            Editor.deleteFragment(editor);\n          } else {\n            var node = Node.parent(editor, selection.anchor.path);\n\n            if (Editor.isVoid(editor, node)) {\n              Transforms.delete(editor);\n            }\n          }\n        }\n      }\n    }, [readOnly, attributes.onCut]),\n    onDragOver: useCallback(event => {\n      if (hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragOver)) {\n        // Only when the target is void, call `preventDefault` to signal\n        // that drops are allowed. Editable content is droppable by\n        // default, and calling `preventDefault` hides the cursor.\n        var node = ReactEditor.toSlateNode(editor, event.target);\n\n        if (Editor.isVoid(editor, node)) {\n          event.preventDefault();\n        }\n      }\n    }, [attributes.onDragOver]),\n    onDragStart: useCallback(event => {\n      if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragStart)) {\n        var node = ReactEditor.toSlateNode(editor, event.target);\n        var path = ReactEditor.findPath(editor, node);\n        var voidMatch = Editor.isVoid(editor, node) || Editor.void(editor, {\n          at: path,\n          voids: true\n        }); // If starting a drag on a void node, make sure it is selected\n        // so that it shows up in the selection's fragment.\n\n        if (voidMatch) {\n          var range = Editor.range(editor, path);\n          Transforms.select(editor, range);\n        }\n\n        state.isDraggingInternally = true;\n        ReactEditor.setFragmentData(editor, event.dataTransfer, 'drag');\n      }\n    }, [readOnly, attributes.onDragStart]),\n    onDrop: useCallback(event => {\n      if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDrop)) {\n        event.preventDefault(); // Keep a reference to the dragged range before updating selection\n\n        var draggedRange = editor.selection; // Find the range where the drop happened\n\n        var range = ReactEditor.findEventRange(editor, event);\n        var data = event.dataTransfer;\n        Transforms.select(editor, range);\n\n        if (state.isDraggingInternally) {\n          if (draggedRange && !Range.equals(draggedRange, range) && !Editor.void(editor, {\n            at: range,\n            voids: true\n          })) {\n            Transforms.delete(editor, {\n              at: draggedRange\n            });\n          }\n        }\n\n        ReactEditor.insertData(editor, data); // When dragging from another source into the editor, it's possible\n        // that the current editor does not have focus.\n\n        if (!ReactEditor.isFocused(editor)) {\n          ReactEditor.focus(editor);\n        }\n      }\n\n      state.isDraggingInternally = false;\n    }, [readOnly, attributes.onDrop]),\n    onDragEnd: useCallback(event => {\n      if (!readOnly && state.isDraggingInternally && attributes.onDragEnd && hasTarget(editor, event.target)) {\n        attributes.onDragEnd(event);\n      } // When dropping on a different droppable element than the current editor,\n      // `onDrop` is not called. So we need to clean up in `onDragEnd` instead.\n      // Note: `onDragEnd` is only called when `onDrop` is not called\n\n\n      state.isDraggingInternally = false;\n    }, [readOnly, attributes.onDragEnd]),\n    onFocus: useCallback(event => {\n      if (!readOnly && !state.isUpdatingSelection && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {\n        var el = ReactEditor.toDOMNode(editor, editor);\n        var root = ReactEditor.findDocumentOrShadowRoot(editor);\n        state.latestElement = root.activeElement; // COMPAT: If the editor has nested editable elements, the focus\n        // can go to them. In Firefox, this must be prevented because it\n        // results in issues with keyboard navigation. (2017/03/30)\n\n        if (IS_FIREFOX && event.target !== el) {\n          el.focus();\n          return;\n        }\n\n        IS_FOCUSED.set(editor, true);\n      }\n    }, [readOnly, attributes.onFocus]),\n    onKeyDown: useCallback(event => {\n      if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onKeyDown) && !state.isComposing) {\n        var {\n          nativeEvent\n        } = event;\n        var {\n          selection\n        } = editor;\n        var element = editor.children[selection !== null ? selection.focus.path[0] : 0];\n        var isRTL = getDirection(Node.string(element)) === 'rtl'; // COMPAT: Since we prevent the default behavior on\n        // `beforeinput` events, the browser doesn't think there's ever\n        // any history stack to undo or redo, so we have to manage these\n        // hotkeys ourselves. (2019/11/06)\n\n        if (Hotkeys.isRedo(nativeEvent)) {\n          event.preventDefault();\n          var maybeHistoryEditor = editor;\n\n          if (typeof maybeHistoryEditor.redo === 'function') {\n            maybeHistoryEditor.redo();\n          }\n\n          return;\n        }\n\n        if (Hotkeys.isUndo(nativeEvent)) {\n          event.preventDefault();\n          var _maybeHistoryEditor = editor;\n\n          if (typeof _maybeHistoryEditor.undo === 'function') {\n            _maybeHistoryEditor.undo();\n          }\n\n          return;\n        } // COMPAT: Certain browsers don't handle the selection updates\n        // properly. In Chrome, the selection isn't properly extended.\n        // And in Firefox, the selection isn't properly collapsed.\n        // (2017/10/17)\n\n\n        if (Hotkeys.isMoveLineBackward(nativeEvent)) {\n          event.preventDefault();\n          Transforms.move(editor, {\n            unit: 'line',\n            reverse: true\n          });\n          return;\n        }\n\n        if (Hotkeys.isMoveLineForward(nativeEvent)) {\n          event.preventDefault();\n          Transforms.move(editor, {\n            unit: 'line'\n          });\n          return;\n        }\n\n        if (Hotkeys.isExtendLineBackward(nativeEvent)) {\n          event.preventDefault();\n          Transforms.move(editor, {\n            unit: 'line',\n            edge: 'focus',\n            reverse: true\n          });\n          return;\n        }\n\n        if (Hotkeys.isExtendLineForward(nativeEvent)) {\n          event.preventDefault();\n          Transforms.move(editor, {\n            unit: 'line',\n            edge: 'focus'\n          });\n          return;\n        } // COMPAT: If a void node is selected, or a zero-width text node\n        // adjacent to an inline is selected, we need to handle these\n        // hotkeys manually because browsers won't be able to skip over\n        // the void node with the zero-width space not being an empty\n        // string.\n\n\n        if (Hotkeys.isMoveBackward(nativeEvent)) {\n          event.preventDefault();\n\n          if (selection && Range.isCollapsed(selection)) {\n            Transforms.move(editor, {\n              reverse: !isRTL\n            });\n          } else {\n            Transforms.collapse(editor, {\n              edge: 'start'\n            });\n          }\n\n          return;\n        }\n\n        if (Hotkeys.isMoveForward(nativeEvent)) {\n          event.preventDefault();\n\n          if (selection && Range.isCollapsed(selection)) {\n            Transforms.move(editor, {\n              reverse: isRTL\n            });\n          } else {\n            Transforms.collapse(editor, {\n              edge: 'end'\n            });\n          }\n\n          return;\n        }\n\n        if (Hotkeys.isMoveWordBackward(nativeEvent)) {\n          event.preventDefault();\n\n          if (selection && Range.isExpanded(selection)) {\n            Transforms.collapse(editor, {\n              edge: 'focus'\n            });\n          }\n\n          Transforms.move(editor, {\n            unit: 'word',\n            reverse: !isRTL\n          });\n          return;\n        }\n\n        if (Hotkeys.isMoveWordForward(nativeEvent)) {\n          event.preventDefault();\n\n          if (selection && Range.isExpanded(selection)) {\n            Transforms.collapse(editor, {\n              edge: 'focus'\n            });\n          }\n\n          Transforms.move(editor, {\n            unit: 'word',\n            reverse: isRTL\n          });\n          return;\n        } // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n        // fall back to guessing at the input intention for hotkeys.\n        // COMPAT: In iOS, some of these hotkeys are handled in the\n\n\n        if (!HAS_BEFORE_INPUT_SUPPORT) {\n          // We don't have a core behavior for these, but they change the\n          // DOM if we don't prevent them, so we have to.\n          if (Hotkeys.isBold(nativeEvent) || Hotkeys.isItalic(nativeEvent) || Hotkeys.isTransposeCharacter(nativeEvent)) {\n            event.preventDefault();\n            return;\n          }\n\n          if (Hotkeys.isSoftBreak(nativeEvent)) {\n            event.preventDefault();\n            Editor.insertSoftBreak(editor);\n            return;\n          }\n\n          if (Hotkeys.isSplitBlock(nativeEvent)) {\n            event.preventDefault();\n            Editor.insertBreak(editor);\n            return;\n          }\n\n          if (Hotkeys.isDeleteBackward(nativeEvent)) {\n            event.preventDefault();\n\n            if (selection && Range.isExpanded(selection)) {\n              Editor.deleteFragment(editor, {\n                direction: 'backward'\n              });\n            } else {\n              Editor.deleteBackward(editor);\n            }\n\n            return;\n          }\n\n          if (Hotkeys.isDeleteForward(nativeEvent)) {\n            event.preventDefault();\n\n            if (selection && Range.isExpanded(selection)) {\n              Editor.deleteFragment(editor, {\n                direction: 'forward'\n              });\n            } else {\n              Editor.deleteForward(editor);\n            }\n\n            return;\n          }\n\n          if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\n            event.preventDefault();\n\n            if (selection && Range.isExpanded(selection)) {\n              Editor.deleteFragment(editor, {\n                direction: 'backward'\n              });\n            } else {\n              Editor.deleteBackward(editor, {\n                unit: 'line'\n              });\n            }\n\n            return;\n          }\n\n          if (Hotkeys.isDeleteLineForward(nativeEvent)) {\n            event.preventDefault();\n\n            if (selection && Range.isExpanded(selection)) {\n              Editor.deleteFragment(editor, {\n                direction: 'forward'\n              });\n            } else {\n              Editor.deleteForward(editor, {\n                unit: 'line'\n              });\n            }\n\n            return;\n          }\n\n          if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\n            event.preventDefault();\n\n            if (selection && Range.isExpanded(selection)) {\n              Editor.deleteFragment(editor, {\n                direction: 'backward'\n              });\n            } else {\n              Editor.deleteBackward(editor, {\n                unit: 'word'\n              });\n            }\n\n            return;\n          }\n\n          if (Hotkeys.isDeleteWordForward(nativeEvent)) {\n            event.preventDefault();\n\n            if (selection && Range.isExpanded(selection)) {\n              Editor.deleteFragment(editor, {\n                direction: 'forward'\n              });\n            } else {\n              Editor.deleteForward(editor, {\n                unit: 'word'\n              });\n            }\n\n            return;\n          }\n        } else {\n          if (IS_CHROME || IS_SAFARI) {\n            // COMPAT: Chrome and Safari support `beforeinput` event but do not fire\n            // an event when deleting backwards in a selected void inline node\n            if (selection && (Hotkeys.isDeleteBackward(nativeEvent) || Hotkeys.isDeleteForward(nativeEvent)) && Range.isCollapsed(selection)) {\n              var currentNode = Node.parent(editor, selection.anchor.path);\n\n              if (Element$1.isElement(currentNode) && Editor.isVoid(editor, currentNode) && Editor.isInline(editor, currentNode)) {\n                event.preventDefault();\n                Editor.deleteBackward(editor, {\n                  unit: 'block'\n                });\n                return;\n              }\n            }\n          }\n        }\n      }\n    }, [readOnly, attributes.onKeyDown]),\n    onPaste: useCallback(event => {\n      if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste)) {\n        // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n        // fall back to React's `onPaste` here instead.\n        // COMPAT: Firefox, Chrome and Safari don't emit `beforeinput` events\n        // when \"paste without formatting\" is used, so fallback. (2020/02/20)\n        if (!HAS_BEFORE_INPUT_SUPPORT || isPlainTextOnlyPaste(event.nativeEvent)) {\n          event.preventDefault();\n          ReactEditor.insertData(editor, event.clipboardData);\n        }\n      }\n    }, [readOnly, attributes.onPaste])\n  }), /*#__PURE__*/React.createElement(Children, {\n    decorations: decorations,\n    node: editor,\n    renderElement: renderElement,\n    renderPlaceholder: renderPlaceholder,\n    renderLeaf: renderLeaf,\n    selection: editor.selection\n  }))));\n};\n/**\r\n * The default placeholder element\r\n */\n\nvar DefaultPlaceholder = _ref2 => {\n  var {\n    attributes,\n    children\n  } = _ref2;\n  return /*#__PURE__*/React.createElement(\"span\", Object.assign({}, attributes), children);\n};\n/**\r\n * A default memoized decorate function.\r\n */\n\nvar defaultDecorate = () => [];\n/**\r\n * A default implement to scroll dom range into view.\r\n */\n\nvar defaultScrollSelectionIntoView = (editor, domRange) => {\n  // This was affecting the selection of multiple blocks and dragging behavior,\n  // so enabled only if the selection has been collapsed.\n  if (!editor.selection || editor.selection && Range.isCollapsed(editor.selection)) {\n    var leafEl = domRange.startContainer.parentElement;\n    leafEl.getBoundingClientRect = domRange.getBoundingClientRect.bind(domRange);\n    scrollIntoView(leafEl, {\n      scrollMode: 'if-needed'\n    });\n    delete leafEl.getBoundingClientRect;\n  }\n};\n/**\r\n * Check if the target is in the editor.\r\n */\n\n\nvar hasTarget = (editor, target) => {\n  return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target);\n};\n/**\r\n * Check if the target is editable and in the editor.\r\n */\n\nvar hasEditableTarget = (editor, target) => {\n  return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target, {\n    editable: true\n  });\n};\n/**\r\n * Check if the target is inside void and in an non-readonly editor.\r\n */\n\nvar isTargetInsideNonReadonlyVoid = (editor, target) => {\n  if (IS_READ_ONLY.get(editor)) return false;\n  var slateNode = hasTarget(editor, target) && ReactEditor.toSlateNode(editor, target);\n  return Editor.isVoid(editor, slateNode);\n};\n/**\r\n * Check if an event is overrided by a handler.\r\n */\n\nvar isEventHandled = (event, handler) => {\n  if (!handler) {\n    return false;\n  } // The custom event handler may return a boolean to specify whether the event\n  // shall be treated as being handled or not.\n\n\n  var shouldTreatEventAsHandled = handler(event);\n\n  if (shouldTreatEventAsHandled != null) {\n    return shouldTreatEventAsHandled;\n  }\n\n  return event.isDefaultPrevented() || event.isPropagationStopped();\n};\n/**\r\n * Check if a DOM event is overrided by a handler.\r\n */\n\nvar isDOMEventHandled = (event, handler) => {\n  if (!handler) {\n    return false;\n  } // The custom event handler may return a boolean to specify whether the event\n  // shall be treated as being handled or not.\n\n\n  var shouldTreatEventAsHandled = handler(event);\n\n  if (shouldTreatEventAsHandled != null) {\n    return shouldTreatEventAsHandled;\n  }\n\n  return event.defaultPrevented;\n};\n\n/**\r\n * Returns the number of characters that are the same at the beginning of the\r\n * String.\r\n *\r\n * @param prev  the previous text\r\n * @param next  the next text\r\n * @returns the offset of the start of the difference; null if there is no difference\r\n */\n\nfunction getDiffStart(prev, next) {\n  var length = Math.min(prev.length, next.length);\n\n  for (var i = 0; i < length; i++) {\n    if (prev.charAt(i) !== next.charAt(i)) return i;\n  }\n\n  if (prev.length !== next.length) return length;\n  return null;\n}\n/**\r\n * Returns the number of characters that are the same at the end of the String\r\n * up to `max`. Max prevents double-counting characters when there are\r\n * multiple duplicate characters around the diff area.\r\n *\r\n * @param prev  the previous text\r\n * @param next  the next text\r\n * @param max  the max length to test.\r\n * @returns number of characters that are the same at the end of the string\r\n */\n\n\nfunction getDiffEnd(prev, next, max) {\n  var prevLength = prev.length;\n  var nextLength = next.length;\n  var length = Math.min(prevLength, nextLength, max);\n\n  for (var i = 0; i < length; i++) {\n    var prevChar = prev.charAt(prevLength - i - 1);\n    var nextChar = next.charAt(nextLength - i - 1);\n    if (prevChar !== nextChar) return i;\n  }\n\n  if (prev.length !== next.length) return length;\n  return null;\n}\n/**\r\n * Takes two strings and returns an object representing two offsets. The\r\n * first, `start` represents the number of characters that are the same at\r\n * the front of the String. The `end` represents the number of characters\r\n * that are the same at the end of the String.\r\n *\r\n * Returns null if they are identical.\r\n *\r\n * @param prev  the previous text\r\n * @param next  the next text\r\n * @returns the difference text range; null if there are no differences.\r\n */\n\n\nfunction getDiffOffsets(prev, next) {\n  if (prev === next) return null;\n  var start = getDiffStart(prev, next);\n  if (start === null) return null;\n  var maxEnd = Math.min(prev.length - start, next.length - start);\n  var end = getDiffEnd(prev, next, maxEnd);\n  if (end === null) return null;\n  return {\n    start,\n    end\n  };\n}\n/**\r\n * Takes a text string and returns a slice from the string at the given text range\r\n *\r\n * @param text  the text\r\n * @param offsets  the text range\r\n * @returns the text slice at text range\r\n */\n\n\nfunction sliceText(text, offsets) {\n  return text.slice(offsets.start, text.length - offsets.end);\n}\n/**\r\n * Takes two strings and returns a smart diff that can be used to describe the\r\n * change in a way that can be used as operations like inserting, removing or\r\n * replacing text.\r\n *\r\n * @param prev the previous text\r\n * @param next the next text\r\n * @returns the text difference\r\n */\n\n\nfunction diffText(prev, next) {\n  if (prev === undefined || next === undefined) return null;\n  var offsets = getDiffOffsets(prev, next);\n  if (offsets == null) return null;\n  var insertText = sliceText(next, offsets);\n  var removeText = sliceText(prev, offsets);\n  return {\n    start: offsets.start,\n    end: prev.length - offsets.end,\n    insertText,\n    removeText\n  };\n}\nfunction combineInsertedText(insertedText) {\n  return insertedText.reduce((acc, _ref) => {\n    var {\n      text\n    } = _ref;\n    return \"\".concat(acc).concat(text.insertText);\n  }, '');\n}\nfunction getTextInsertion(editor, domNode) {\n  var node = ReactEditor.toSlateNode(editor, domNode);\n\n  if (!Text$1.isText(node)) {\n    return undefined;\n  }\n\n  var prevText = node.text;\n  var nextText = domNode.textContent; // textContent will pad an extra \\n when the textContent ends with an \\n\n\n  if (nextText.endsWith('\\n')) {\n    nextText = nextText.slice(0, nextText.length - 1);\n  } // If the text is no different, there is no diff.\n\n\n  if (nextText !== prevText) {\n    var textDiff = diffText(prevText, nextText);\n\n    if (textDiff !== null) {\n      var textPath = ReactEditor.findPath(editor, node);\n      return {\n        text: textDiff,\n        path: textPath\n      };\n    }\n  }\n\n  return undefined;\n}\nfunction normalizeTextInsertionRange(editor, range, _ref2) {\n  var {\n    path,\n    text\n  } = _ref2;\n  var insertionRange = {\n    anchor: {\n      path,\n      offset: text.start\n    },\n    focus: {\n      path,\n      offset: text.end\n    }\n  };\n\n  if (!range || !Range.isCollapsed(range)) {\n    return insertionRange;\n  }\n\n  var {\n    insertText,\n    removeText\n  } = text;\n  var isSingleCharacterInsertion = insertText.length === 1 || removeText.length === 1;\n  /**\r\n   * This code handles edge cases that arise from text diffing when the\r\n   * inserted or removed character is a single character, and the character\r\n   * right before or after the anchor is the same as the one being inserted or\r\n   * removed.\r\n   *\r\n   * Take this example: hello|o\r\n   *\r\n   * If another `o` is inserted at the selection's anchor in the example above,\r\n   * it should be inserted at the anchor, but using text diffing, we actually\r\n   * detect that the character was inserted after the second `o`:\r\n   *\r\n   * helloo[o]|\r\n   *\r\n   * Instead, in these very specific edge cases, we assume that the character\r\n   * needs to be inserted after the anchor rather than where the diff was found:\r\n   *\r\n   * hello[o]|o\r\n   */\n\n  if (isSingleCharacterInsertion && Path.equals(range.anchor.path, path)) {\n    var [_text] = Array.from(Editor.nodes(editor, {\n      at: range,\n      match: Text$1.isText\n    }));\n\n    if (_text) {\n      var [node] = _text;\n      var {\n        anchor\n      } = range;\n      var characterBeforeAnchor = node.text[anchor.offset - 1];\n      var characterAfterAnchor = node.text[anchor.offset];\n\n      if (insertText.length === 1 && insertText === characterAfterAnchor) {\n        // Assume text should be inserted at the anchor\n        return range;\n      }\n\n      if (removeText.length === 1 && removeText === characterBeforeAnchor) {\n        // Assume text should be removed right before the anchor\n        return {\n          anchor: {\n            path,\n            offset: anchor.offset - 1\n          },\n          focus: {\n            path,\n            offset: anchor.offset\n          }\n        };\n      }\n    }\n  }\n\n  return insertionRange;\n}\n\n/**\r\n * An auto-incrementing identifier for keys.\r\n */\nvar n = 0;\n/**\r\n * A class that keeps track of a key string. We use a full class here because we\r\n * want to be able to use them as keys in `WeakMap` objects.\r\n */\n\nclass Key {\n  constructor() {\n    this.id = \"\".concat(n++);\n  }\n\n}\n\nvar ReactEditor = {\n  /**\r\n   * Return the host window of the current editor.\r\n   */\n  getWindow(editor) {\n    var window = EDITOR_TO_WINDOW.get(editor);\n\n    if (!window) {\n      throw new Error('Unable to find a host window element for this editor');\n    }\n\n    return window;\n  },\n\n  /**\r\n   * Find a key for a Slate node.\r\n   */\n  findKey(editor, node) {\n    var key = NODE_TO_KEY.get(node);\n\n    if (!key) {\n      key = new Key();\n      NODE_TO_KEY.set(node, key);\n    }\n\n    return key;\n  },\n\n  /**\r\n   * Find the path of Slate node.\r\n   */\n  findPath(editor, node) {\n    var path = [];\n    var child = node;\n\n    while (true) {\n      var parent = NODE_TO_PARENT.get(child);\n\n      if (parent == null) {\n        if (Editor.isEditor(child)) {\n          return path;\n        } else {\n          break;\n        }\n      }\n\n      var i = NODE_TO_INDEX.get(child);\n\n      if (i == null) {\n        break;\n      }\n\n      path.unshift(i);\n      child = parent;\n    }\n\n    throw new Error(\"Unable to find the path for Slate node: \".concat(JSON.stringify(node)));\n  },\n\n  /**\r\n   * Find the DOM node that implements DocumentOrShadowRoot for the editor.\r\n   */\n  findDocumentOrShadowRoot(editor) {\n    var el = ReactEditor.toDOMNode(editor, editor);\n    var root = el.getRootNode();\n\n    if ((root instanceof Document || root instanceof ShadowRoot) && root.getSelection != null) {\n      return root;\n    }\n\n    return el.ownerDocument;\n  },\n\n  /**\r\n   * Check if the editor is focused.\r\n   */\n  isFocused(editor) {\n    return !!IS_FOCUSED.get(editor);\n  },\n\n  /**\r\n   * Check if the editor is in read-only mode.\r\n   */\n  isReadOnly(editor) {\n    return !!IS_READ_ONLY.get(editor);\n  },\n\n  /**\r\n   * Blur the editor.\r\n   */\n  blur(editor) {\n    var el = ReactEditor.toDOMNode(editor, editor);\n    var root = ReactEditor.findDocumentOrShadowRoot(editor);\n    IS_FOCUSED.set(editor, false);\n\n    if (root.activeElement === el) {\n      el.blur();\n    }\n  },\n\n  /**\r\n   * Focus the editor.\r\n   */\n  focus(editor) {\n    var el = ReactEditor.toDOMNode(editor, editor);\n    var root = ReactEditor.findDocumentOrShadowRoot(editor);\n    IS_FOCUSED.set(editor, true);\n\n    if (root.activeElement !== el) {\n      el.focus({\n        preventScroll: true\n      });\n    }\n  },\n\n  /**\r\n   * Deselect the editor.\r\n   */\n  deselect(editor) {\n    ReactEditor.toDOMNode(editor, editor);\n    var {\n      selection\n    } = editor;\n    var root = ReactEditor.findDocumentOrShadowRoot(editor);\n    var domSelection = root.getSelection();\n\n    if (domSelection && domSelection.rangeCount > 0) {\n      domSelection.removeAllRanges();\n    }\n\n    if (selection) {\n      Transforms.deselect(editor);\n    }\n  },\n\n  /**\r\n   * Check if a DOM node is within the editor.\r\n   */\n  hasDOMNode(editor, target) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var {\n      editable = false\n    } = options;\n    var editorEl = ReactEditor.toDOMNode(editor, editor);\n    var targetEl; // COMPAT: In Firefox, reading `target.nodeType` will throw an error if\n    // target is originating from an internal \"restricted\" element (e.g. a\n    // stepper arrow on a number input). (2018/05/04)\n    // https://github.com/ianstormtaylor/slate/issues/1819\n\n    try {\n      targetEl = isDOMElement(target) ? target : target.parentElement;\n    } catch (err) {\n      if (!err.message.includes('Permission denied to access property \"nodeType\"')) {\n        throw err;\n      }\n    }\n\n    if (!targetEl) {\n      return false;\n    }\n\n    return targetEl.closest(\"[data-slate-editor]\") === editorEl && (!editable || targetEl.isContentEditable ? true : typeof targetEl.isContentEditable === 'boolean' && // isContentEditable exists only on HTMLElement, and on other nodes it will be undefined\n    // this is the core logic that lets you know you got the right editor.selection instead of null when editor is contenteditable=\"false\"(readOnly)\n    targetEl.closest('[contenteditable=\"false\"]') === editorEl || !!targetEl.getAttribute('data-slate-zero-width'));\n  },\n\n  /**\r\n   * Insert data from a `DataTransfer` into the editor.\r\n   */\n  insertData(editor, data) {\n    editor.insertData(data);\n  },\n\n  /**\r\n   * Insert fragment data from a `DataTransfer` into the editor.\r\n   */\n  insertFragmentData(editor, data) {\n    return editor.insertFragmentData(data);\n  },\n\n  /**\r\n   * Insert text data from a `DataTransfer` into the editor.\r\n   */\n  insertTextData(editor, data) {\n    return editor.insertTextData(data);\n  },\n\n  /**\r\n   * Sets data from the currently selected fragment on a `DataTransfer`.\r\n   */\n  setFragmentData(editor, data, originEvent) {\n    editor.setFragmentData(data, originEvent);\n  },\n\n  /**\r\n   * Find the native DOM element from a Slate node.\r\n   */\n  toDOMNode(editor, node) {\n    var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n    var domNode = Editor.isEditor(node) ? EDITOR_TO_ELEMENT.get(editor) : KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.get(ReactEditor.findKey(editor, node));\n\n    if (!domNode) {\n      throw new Error(\"Cannot resolve a DOM node from Slate node: \".concat(JSON.stringify(node)));\n    }\n\n    return domNode;\n  },\n\n  /**\r\n   * Find a native DOM selection point from a Slate point.\r\n   */\n  toDOMPoint(editor, point) {\n    var [node] = Editor.node(editor, point.path);\n    var el = ReactEditor.toDOMNode(editor, node);\n    var domPoint; // If we're inside a void node, force the offset to 0, otherwise the zero\n    // width spacing character will result in an incorrect offset of 1\n\n    if (Editor.void(editor, {\n      at: point\n    })) {\n      point = {\n        path: point.path,\n        offset: 0\n      };\n    } // For each leaf, we need to isolate its content, which means filtering\n    // to its direct text and zero-width spans. (We have to filter out any\n    // other siblings that may have been rendered alongside them.)\n\n\n    var selector = \"[data-slate-string], [data-slate-zero-width]\";\n    var texts = Array.from(el.querySelectorAll(selector));\n    var start = 0;\n\n    for (var text of texts) {\n      var domNode = text.childNodes[0];\n\n      if (domNode == null || domNode.textContent == null) {\n        continue;\n      }\n\n      var {\n        length\n      } = domNode.textContent;\n      var attr = text.getAttribute('data-slate-length');\n      var trueLength = attr == null ? length : parseInt(attr, 10);\n      var end = start + trueLength;\n\n      if (point.offset <= end) {\n        var offset = Math.min(length, Math.max(0, point.offset - start));\n        domPoint = [domNode, offset];\n        break;\n      }\n\n      start = end;\n    }\n\n    if (!domPoint) {\n      throw new Error(\"Cannot resolve a DOM point from Slate point: \".concat(JSON.stringify(point)));\n    }\n\n    return domPoint;\n  },\n\n  /**\r\n   * Find a native DOM range from a Slate `range`.\r\n   *\r\n   * Notice: the returned range will always be ordinal regardless of the direction of Slate `range` due to DOM API limit.\r\n   *\r\n   * there is no way to create a reverse DOM Range using Range.setStart/setEnd\r\n   * according to https://dom.spec.whatwg.org/#concept-range-bp-set.\r\n   */\n  toDOMRange(editor, range) {\n    var {\n      anchor,\n      focus\n    } = range;\n    var isBackward = Range.isBackward(range);\n    var domAnchor = ReactEditor.toDOMPoint(editor, anchor);\n    var domFocus = Range.isCollapsed(range) ? domAnchor : ReactEditor.toDOMPoint(editor, focus);\n    var window = ReactEditor.getWindow(editor);\n    var domRange = window.document.createRange();\n    var [startNode, startOffset] = isBackward ? domFocus : domAnchor;\n    var [endNode, endOffset] = isBackward ? domAnchor : domFocus; // A slate Point at zero-width Leaf always has an offset of 0 but a native DOM selection at\n    // zero-width node has an offset of 1 so we have to check if we are in a zero-width node and\n    // adjust the offset accordingly.\n\n    var startEl = isDOMElement(startNode) ? startNode : startNode.parentElement;\n    var isStartAtZeroWidth = !!startEl.getAttribute('data-slate-zero-width');\n    var endEl = isDOMElement(endNode) ? endNode : endNode.parentElement;\n    var isEndAtZeroWidth = !!endEl.getAttribute('data-slate-zero-width');\n    domRange.setStart(startNode, isStartAtZeroWidth ? 1 : startOffset);\n    domRange.setEnd(endNode, isEndAtZeroWidth ? 1 : endOffset);\n    return domRange;\n  },\n\n  /**\r\n   * Find a Slate node from a native DOM `element`.\r\n   */\n  toSlateNode(editor, domNode) {\n    var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;\n\n    if (domEl && !domEl.hasAttribute('data-slate-node')) {\n      domEl = domEl.closest(\"[data-slate-node]\");\n    }\n\n    var node = domEl ? ELEMENT_TO_NODE.get(domEl) : null;\n\n    if (!node) {\n      throw new Error(\"Cannot resolve a Slate node from DOM node: \".concat(domEl));\n    }\n\n    return node;\n  },\n\n  /**\r\n   * Get the target range from a DOM `event`.\r\n   */\n  findEventRange(editor, event) {\n    if ('nativeEvent' in event) {\n      event = event.nativeEvent;\n    }\n\n    var {\n      clientX: x,\n      clientY: y,\n      target\n    } = event;\n\n    if (x == null || y == null) {\n      throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n    }\n\n    var node = ReactEditor.toSlateNode(editor, event.target);\n    var path = ReactEditor.findPath(editor, node); // If the drop target is inside a void node, move it into either the\n    // next or previous node, depending on which side the `x` and `y`\n    // coordinates are closest to.\n\n    if (Editor.isVoid(editor, node)) {\n      var rect = target.getBoundingClientRect();\n      var isPrev = editor.isInline(node) ? x - rect.left < rect.left + rect.width - x : y - rect.top < rect.top + rect.height - y;\n      var edge = Editor.point(editor, path, {\n        edge: isPrev ? 'start' : 'end'\n      });\n      var point = isPrev ? Editor.before(editor, edge) : Editor.after(editor, edge);\n\n      if (point) {\n        var _range = Editor.range(editor, point);\n\n        return _range;\n      }\n    } // Else resolve a range from the caret position where the drop occured.\n\n\n    var domRange;\n    var {\n      document\n    } = ReactEditor.getWindow(editor); // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n\n    if (document.caretRangeFromPoint) {\n      domRange = document.caretRangeFromPoint(x, y);\n    } else {\n      var position = document.caretPositionFromPoint(x, y);\n\n      if (position) {\n        domRange = document.createRange();\n        domRange.setStart(position.offsetNode, position.offset);\n        domRange.setEnd(position.offsetNode, position.offset);\n      }\n    }\n\n    if (!domRange) {\n      throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n    } // Resolve a Slate range from the DOM range.\n\n\n    var range = ReactEditor.toSlateRange(editor, domRange, {\n      exactMatch: false,\n      suppressThrow: false\n    });\n    return range;\n  },\n\n  /**\r\n   * Find a Slate point from a DOM selection's `domNode` and `domOffset`.\r\n   */\n  toSlatePoint(editor, domPoint, options) {\n    var {\n      exactMatch,\n      suppressThrow\n    } = options;\n    var [nearestNode, nearestOffset] = exactMatch ? domPoint : normalizeDOMPoint(domPoint);\n    var parentNode = nearestNode.parentNode;\n    var textNode = null;\n    var offset = 0;\n\n    if (parentNode) {\n      var _domNode$textContent;\n\n      var editorEl = ReactEditor.toDOMNode(editor, editor);\n      var potentialVoidNode = parentNode.closest('[data-slate-void=\"true\"]'); // Need to ensure that the closest void node is actually a void node\n      // within this editor, and not a void node within some parent editor. This can happen\n      // if this editor is within a void node of another editor (\"nested editors\", like in\n      // the \"Editable Voids\" example on the docs site).\n\n      var voidNode = potentialVoidNode && editorEl.contains(potentialVoidNode) ? potentialVoidNode : null;\n      var leafNode = parentNode.closest('[data-slate-leaf]');\n      var domNode = null; // Calculate how far into the text node the `nearestNode` is, so that we\n      // can determine what the offset relative to the text node is.\n\n      if (leafNode) {\n        textNode = leafNode.closest('[data-slate-node=\"text\"]');\n\n        if (textNode) {\n          var window = ReactEditor.getWindow(editor);\n          var range = window.document.createRange();\n          range.setStart(textNode, 0);\n          range.setEnd(nearestNode, nearestOffset);\n          var contents = range.cloneContents();\n          var removals = [...Array.prototype.slice.call(contents.querySelectorAll('[data-slate-zero-width]')), ...Array.prototype.slice.call(contents.querySelectorAll('[contenteditable=false]'))];\n          removals.forEach(el => {\n            el.parentNode.removeChild(el);\n          }); // COMPAT: Edge has a bug where Range.prototype.toString() will\n          // convert \\n into \\r\\n. The bug causes a loop when slate-react\n          // attempts to reposition its cursor to match the native position. Use\n          // textContent.length instead.\n          // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10291116/\n\n          offset = contents.textContent.length;\n          domNode = textNode;\n        }\n      } else if (voidNode) {\n        // For void nodes, the element with the offset key will be a cousin, not an\n        // ancestor, so find it by going down from the nearest void parent.\n        leafNode = voidNode.querySelector('[data-slate-leaf]'); // COMPAT: In read-only editors the leaf is not rendered.\n\n        if (!leafNode) {\n          offset = 1;\n        } else {\n          textNode = leafNode.closest('[data-slate-node=\"text\"]');\n          domNode = leafNode;\n          offset = domNode.textContent.length;\n          domNode.querySelectorAll('[data-slate-zero-width]').forEach(el => {\n            offset -= el.textContent.length;\n          });\n        }\n      }\n\n      if (domNode && offset === domNode.textContent.length && (parentNode.hasAttribute('data-slate-zero-width') || IS_FIREFOX && (_domNode$textContent = domNode.textContent) !== null && _domNode$textContent !== void 0 && _domNode$textContent.endsWith('\\n\\n'))) {\n        offset--;\n      }\n    }\n\n    if (!textNode) {\n      if (suppressThrow) {\n        return null;\n      }\n\n      throw new Error(\"Cannot resolve a Slate point from DOM point: \".concat(domPoint));\n    } // COMPAT: If someone is clicking from one Slate editor into another,\n    // the select event fires twice, once for the old editor's `element`\n    // first, and then afterwards for the correct `element`. (2017/03/03)\n\n\n    var slateNode = ReactEditor.toSlateNode(editor, textNode);\n    var path = ReactEditor.findPath(editor, slateNode);\n    return {\n      path,\n      offset\n    };\n  },\n\n  /**\r\n   * Find a Slate range from a DOM range or selection.\r\n   */\n  toSlateRange(editor, domRange, options) {\n    var {\n      exactMatch,\n      suppressThrow\n    } = options;\n    var el = isDOMSelection(domRange) ? domRange.anchorNode : domRange.startContainer;\n    var anchorNode;\n    var anchorOffset;\n    var focusNode;\n    var focusOffset;\n    var isCollapsed;\n\n    if (el) {\n      if (isDOMSelection(domRange)) {\n        anchorNode = domRange.anchorNode;\n        anchorOffset = domRange.anchorOffset;\n        focusNode = domRange.focusNode;\n        focusOffset = domRange.focusOffset; // COMPAT: There's a bug in chrome that always returns `true` for\n        // `isCollapsed` for a Selection that comes from a ShadowRoot.\n        // (2020/08/08)\n        // https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n\n        if (IS_CHROME && hasShadowRoot()) {\n          isCollapsed = domRange.anchorNode === domRange.focusNode && domRange.anchorOffset === domRange.focusOffset;\n        } else {\n          isCollapsed = domRange.isCollapsed;\n        }\n      } else {\n        anchorNode = domRange.startContainer;\n        anchorOffset = domRange.startOffset;\n        focusNode = domRange.endContainer;\n        focusOffset = domRange.endOffset;\n        isCollapsed = domRange.collapsed;\n      }\n    }\n\n    if (anchorNode == null || focusNode == null || anchorOffset == null || focusOffset == null) {\n      throw new Error(\"Cannot resolve a Slate range from DOM range: \".concat(domRange));\n    }\n\n    var anchor = ReactEditor.toSlatePoint(editor, [anchorNode, anchorOffset], {\n      exactMatch,\n      suppressThrow\n    });\n\n    if (!anchor) {\n      return null;\n    }\n\n    var focus = isCollapsed ? anchor : ReactEditor.toSlatePoint(editor, [focusNode, focusOffset], {\n      exactMatch,\n      suppressThrow\n    });\n\n    if (!focus) {\n      return null;\n    }\n\n    var range = {\n      anchor: anchor,\n      focus: focus\n    }; // if the selection is a hanging range that ends in a void\n    // and the DOM focus is an Element\n    // (meaning that the selection ends before the element)\n    // unhang the range to avoid mistakenly including the void\n\n    if (Range.isExpanded(range) && Range.isForward(range) && isDOMElement(focusNode) && Editor.void(editor, {\n      at: range.focus,\n      mode: 'highest'\n    })) {\n      range = Editor.unhangRange(editor, range, {\n        voids: true\n      });\n    }\n\n    return range;\n  },\n\n  hasRange(editor, range) {\n    var {\n      anchor,\n      focus\n    } = range;\n    return Editor.hasPath(editor, anchor.path) && Editor.hasPath(editor, focus.path);\n  }\n\n};\n\nfunction gatherMutationData(editor, mutations) {\n  var addedNodes = [];\n  var removedNodes = [];\n  var insertedText = [];\n  var characterDataMutations = [];\n  mutations.forEach(mutation => {\n    switch (mutation.type) {\n      case 'childList':\n        {\n          if (mutation.addedNodes.length) {\n            mutation.addedNodes.forEach(addedNode => {\n              addedNodes.push(addedNode);\n            });\n          }\n\n          mutation.removedNodes.forEach(removedNode => {\n            removedNodes.push(removedNode);\n          });\n          break;\n        }\n\n      case 'characterData':\n        {\n          characterDataMutations.push(mutation); // Changes to text nodes should consider the parent element\n\n          var {\n            parentNode\n          } = mutation.target;\n\n          if (!parentNode) {\n            return;\n          }\n\n          var textInsertion = getTextInsertion(editor, parentNode);\n\n          if (!textInsertion) {\n            return;\n          } // If we've already detected a diff at that path, we can return early\n\n\n          if (insertedText.some(_ref => {\n            var {\n              path\n            } = _ref;\n            return Path.equals(path, textInsertion.path);\n          })) {\n            return;\n          } // Add the text diff to the array of detected text insertions that need to be reconciled\n\n\n          insertedText.push(textInsertion);\n        }\n    }\n  });\n  return {\n    addedNodes,\n    removedNodes,\n    insertedText,\n    characterDataMutations\n  };\n}\n/**\r\n * In general, when a line break occurs, there will be more `addedNodes` than `removedNodes`.\r\n *\r\n * This isn't always the case however. In some cases, there will be more `removedNodes` than\r\n * `addedNodes`.\r\n *\r\n * To account for these edge cases, the most reliable strategy to detect line break mutations\r\n * is to check whether a new block was inserted of the same type as the current block.\r\n */\n\nvar isLineBreak = (editor, _ref2) => {\n  var {\n    addedNodes\n  } = _ref2;\n  var {\n    selection\n  } = editor;\n  var parentNode = selection ? Node.parent(editor, selection.anchor.path) : null;\n  var parentDOMNode = parentNode ? ReactEditor.toDOMNode(editor, parentNode) : null;\n\n  if (!parentDOMNode) {\n    return false;\n  }\n\n  return addedNodes.some(addedNode => addedNode instanceof HTMLElement && addedNode.tagName === (parentDOMNode === null || parentDOMNode === void 0 ? void 0 : parentDOMNode.tagName));\n};\n/**\r\n * So long as we check for line break mutations before deletion mutations,\r\n * we can safely assume that a set of mutations was a deletion if there are\r\n * removed nodes.\r\n */\n\nvar isDeletion = (_, _ref3) => {\n  var {\n    removedNodes\n  } = _ref3;\n  return removedNodes.length > 0;\n};\n/**\r\n * If the selection was expanded and there are removed nodes,\r\n * the contents of the selection need to be replaced with the diff\r\n */\n\nvar isReplaceExpandedSelection = (_ref4, _ref5) => {\n  var {\n    selection\n  } = _ref4;\n  var {\n    removedNodes\n  } = _ref5;\n  return selection ? Range.isExpanded(selection) && removedNodes.length > 0 : false;\n};\n/**\r\n * Plain text insertion\r\n */\n\nvar isTextInsertion = (_, _ref6) => {\n  var {\n    insertedText\n  } = _ref6;\n  return insertedText.length > 0;\n};\n/**\r\n * Edge case. Detect mutations that remove leaf nodes and also update character data\r\n */\n\nvar isRemoveLeafNodes = (_, _ref7) => {\n  var {\n    addedNodes,\n    characterDataMutations,\n    removedNodes\n  } = _ref7;\n  return removedNodes.length > 0 && addedNodes.length === 0 && characterDataMutations.length > 0;\n};\n\n/**\r\n * Based loosely on:\r\n *\r\n * https://github.com/facebook/draft-js/blob/master/src/component/handlers/composition/DOMObserver.js\r\n * https://github.com/ProseMirror/prosemirror-view/blob/master/src/domobserver.js\r\n *\r\n * The input manager attempts to map observed mutations on the document to a\r\n * set of operations in order to reconcile Slate's internal value with the DOM.\r\n *\r\n * Mutations are processed synchronously as they come in. Only mutations that occur\r\n * during a user input loop are processed, as other mutations can occur within the\r\n * document that were not initiated by user input.\r\n *\r\n * The mutation reconciliation process attempts to match mutations to the following\r\n * patterns:\r\n *\r\n * - Text updates\r\n * - Deletions\r\n * - Line breaks\r\n *\r\n * @param editor\r\n * @param restoreDOM\r\n */\n\n\nclass AndroidInputManager {\n  constructor(editor, restoreDOM) {\n    this.editor = editor;\n    this.restoreDOM = restoreDOM;\n    /**\r\n     * Handle MutationObserver flush\r\n     *\r\n     * @param mutations\r\n     */\n\n    this.flush = mutations => {\n\n      try {\n        this.reconcileMutations(mutations);\n      } catch (err) {\n        // eslint-disable-next-line no-console\n        console.error(err); // Failed to reconcile mutations, restore DOM to its previous state\n\n        this.restoreDOM();\n      }\n    };\n    /**\r\n     * Reconcile a batch of mutations\r\n     *\r\n     * @param mutations\r\n     */\n\n\n    this.reconcileMutations = mutations => {\n      var mutationData = gatherMutationData(this.editor, mutations);\n      var {\n        insertedText,\n        removedNodes\n      } = mutationData;\n\n      if (isReplaceExpandedSelection(this.editor, mutationData)) {\n        var text = combineInsertedText(insertedText);\n        this.replaceExpandedSelection(text);\n      } else if (isLineBreak(this.editor, mutationData)) {\n        this.insertBreak();\n      } else if (isRemoveLeafNodes(this.editor, mutationData)) {\n        this.removeLeafNodes(removedNodes);\n      } else if (isDeletion(this.editor, mutationData)) {\n        this.deleteBackward();\n      } else if (isTextInsertion(this.editor, mutationData)) {\n        this.insertText(insertedText);\n      }\n    };\n    /**\r\n     * Apply text diff\r\n     */\n\n\n    this.insertText = insertedText => {\n      var {\n        selection\n      } = this.editor; // If it is in composing or after `onCompositionend`, set `EDITOR_ON_COMPOSITION_TEXT` and return.\n      // Text will be inserted on compositionend event.\n\n      if (IS_COMPOSING.get(this.editor) || IS_ON_COMPOSITION_END.get(this.editor)) {\n        EDITOR_ON_COMPOSITION_TEXT.set(this.editor, insertedText);\n        IS_ON_COMPOSITION_END.set(this.editor, false);\n        return;\n      } // Insert the batched text diffs\n\n\n      insertedText.forEach(insertion => {\n        var text = insertion.text.insertText;\n        var at = normalizeTextInsertionRange(this.editor, selection, insertion);\n        Transforms.setSelection(this.editor, at);\n        Editor.insertText(this.editor, text);\n      });\n    };\n    /**\r\n     * Handle line breaks\r\n     */\n\n\n    this.insertBreak = () => {\n      var {\n        selection\n      } = this.editor;\n      Editor.insertBreak(this.editor);\n      this.restoreDOM();\n\n      if (selection) {\n        // Compat: Move selection to the newly inserted block if it has not moved\n        setTimeout(() => {\n          if (this.editor.selection && Range.equals(selection, this.editor.selection)) {\n            Transforms.move(this.editor);\n          }\n        }, 100);\n      }\n    };\n    /**\r\n     * Handle expanded selection being deleted or replaced by text\r\n     */\n\n\n    this.replaceExpandedSelection = text => {\n\n      Editor.deleteFragment(this.editor);\n\n      if (text.length) {\n        // Selection was replaced by text, insert the entire text diff\n        Editor.insertText(this.editor, text);\n      }\n\n      this.restoreDOM();\n    };\n    /**\r\n     * Handle `backspace` that merges blocks\r\n     */\n\n\n    this.deleteBackward = () => {\n      Editor.deleteBackward(this.editor);\n      ReactEditor.focus(this.editor);\n      this.restoreDOM();\n    };\n    /**\r\n     * Handle mutations that remove specific leaves\r\n     */\n\n\n    this.removeLeafNodes = nodes => {\n      for (var node of nodes) {\n        var slateNode = ReactEditor.toSlateNode(this.editor, node);\n\n        if (slateNode) {\n          var path = ReactEditor.findPath(this.editor, slateNode);\n          Transforms.delete(this.editor, {\n            at: path\n          });\n          this.restoreDOM();\n        }\n      }\n    };\n\n    this.editor = editor;\n    this.restoreDOM = restoreDOM;\n  }\n\n}\n\nfunction useMutationObserver(node, callback, options) {\n  var [mutationObserver] = useState(() => new MutationObserver(callback));\n  useIsomorphicLayoutEffect(() => {\n    // Disconnect mutation observer during render phase\n    mutationObserver.disconnect();\n  });\n  useEffect(() => {\n    if (!node.current) {\n      throw new Error('Failed to attach MutationObserver, `node` is undefined');\n    } // Attach mutation observer after render phase has finished\n\n\n    mutationObserver.observe(node.current, options); // Clean up after effect\n\n    return mutationObserver.disconnect.bind(mutationObserver);\n  });\n}\n\nvar MUTATION_OBSERVER_CONFIG$1 = {\n  childList: true,\n  characterData: true,\n  subtree: true\n};\n\nfunction findClosestKnowSlateNode(domNode) {\n  var _domEl;\n\n  var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;\n\n  if (domEl && !domEl.hasAttribute('data-slate-node')) {\n    domEl = domEl.closest(\"[data-slate-node]\");\n  }\n\n  var slateNode = domEl && ELEMENT_TO_NODE.get(domEl);\n\n  if (slateNode) {\n    return slateNode;\n  } // Unknown dom element with a slate-slate-node attribute => the IME\n  // most likely duplicated the node so we have to restore the parent\n\n\n  return (_domEl = domEl) !== null && _domEl !== void 0 && _domEl.parentElement ? findClosestKnowSlateNode(domEl.parentElement) : null;\n}\n\nfunction useRestoreDom(node, receivedUserInput) {\n  var editor = useSlateStatic();\n  var mutatedNodes = useRef(new Set());\n  var handleDOMMutation = useCallback(mutations => {\n    if (!receivedUserInput.current) {\n      return;\n    }\n\n    mutations.forEach(_ref => {\n      var {\n        target\n      } = _ref;\n      var slateNode = findClosestKnowSlateNode(target);\n\n      if (!slateNode) {\n        return;\n      }\n\n      return mutatedNodes.current.add(slateNode);\n    });\n  }, []);\n  useMutationObserver(node, handleDOMMutation, MUTATION_OBSERVER_CONFIG$1); // Clear mutated nodes on every render\n\n  mutatedNodes.current.clear();\n  var restore = useCallback(() => {\n    var mutated = Array.from(mutatedNodes.current.values()); // Filter out child nodes of nodes that will be restored anyway\n\n    var nodesToRestore = mutated.filter(n => !mutated.some(m => Path.isParent(ReactEditor.findPath(editor, m), ReactEditor.findPath(editor, n))));\n    nodesToRestore.forEach(n => {\n      var _NODE_TO_RESTORE_DOM$;\n\n      (_NODE_TO_RESTORE_DOM$ = NODE_TO_RESTORE_DOM.get(n)) === null || _NODE_TO_RESTORE_DOM$ === void 0 ? void 0 : _NODE_TO_RESTORE_DOM$();\n    });\n    mutatedNodes.current.clear();\n  }, []);\n  return restore;\n}\n\nfunction useTrackUserInput() {\n  var editor = useSlateStatic();\n  var receivedUserInput = useRef(false);\n  var animationFrameRef = useRef(null);\n  var onUserInput = useCallback(() => {\n    if (receivedUserInput.current === false) {\n      var window = ReactEditor.getWindow(editor);\n      receivedUserInput.current = true;\n\n      if (animationFrameRef.current) {\n        window.cancelAnimationFrame(animationFrameRef.current);\n      }\n\n      animationFrameRef.current = window.requestAnimationFrame(() => {\n        receivedUserInput.current = false;\n        animationFrameRef.current = null;\n      });\n    }\n  }, []);\n  useEffect(() => {\n    // Reset user input tracking on every render\n    if (receivedUserInput.current) {\n      receivedUserInput.current = false;\n    }\n  });\n  return {\n    receivedUserInput,\n    onUserInput\n  };\n}\n\nvar MUTATION_OBSERVER_CONFIG = {\n  childList: true,\n  characterData: true,\n  characterDataOldValue: true,\n  subtree: true\n};\nfunction useAndroidInputManager(node) {\n  var editor = useSlateStatic();\n  var {\n    receivedUserInput,\n    onUserInput\n  } = useTrackUserInput();\n  var restoreDom = useRestoreDom(node, receivedUserInput);\n  var inputManager = useMemo(() => new AndroidInputManager(editor, restoreDom), [restoreDom, editor]);\n  var timeoutId = useRef(null);\n  var isReconciling = useRef(false);\n  var flush = useCallback(mutations => {\n    if (!receivedUserInput.current) {\n      return;\n    }\n\n    isReconciling.current = true;\n    inputManager.flush(mutations);\n\n    if (timeoutId.current) {\n      clearTimeout(timeoutId.current);\n    }\n\n    timeoutId.current = setTimeout(() => {\n      isReconciling.current = false;\n      timeoutId.current = null;\n    }, 250);\n  }, []);\n  useMutationObserver(node, flush, MUTATION_OBSERVER_CONFIG);\n  return {\n    isReconciling,\n    onUserInput\n  };\n}\n\nvar _excluded$1 = [\"autoFocus\", \"decorate\", \"onDOMBeforeInput\", \"placeholder\", \"readOnly\", \"renderElement\", \"renderLeaf\", \"renderPlaceholder\", \"style\", \"as\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * Editable.\r\n */\n// https://github.com/facebook/draft-js/blob/main/src/component/handlers/composition/DraftEditorCompositionHandler.js#L41\n// When using keyboard English association function, conpositionEnd triggered too fast, resulting in after `insertText` still maintain association state.\n\nvar RESOLVE_DELAY = 20;\nvar AndroidEditable = props => {\n  var {\n    autoFocus,\n    decorate = defaultDecorate,\n    onDOMBeforeInput: propsOnDOMBeforeInput,\n    placeholder,\n    readOnly = false,\n    renderElement,\n    renderLeaf,\n    renderPlaceholder = props => /*#__PURE__*/React.createElement(DefaultPlaceholder, Object.assign({}, props)),\n    style = {},\n    as: Component = 'div'\n  } = props,\n      attributes = _objectWithoutProperties(props, _excluded$1);\n\n  var editor = useSlate(); // Rerender editor when composition status changed\n\n  var [isComposing, setIsComposing] = useState(false);\n  var ref = useRef(null);\n  var inputManager = useAndroidInputManager(ref); // Update internal state on each render.\n\n  IS_READ_ONLY.set(editor, readOnly); // Keep track of some state for the event handler logic.\n\n  var state = useMemo(() => ({\n    isComposing: false,\n    isUpdatingSelection: false,\n    latestElement: null\n  }), []);\n  var contentKey = useContentKey(editor); // Whenever the editor updates...\n\n  useIsomorphicLayoutEffect(() => {\n    // Update element-related weak maps with the DOM element ref.\n    var window;\n\n    if (ref.current && (window = getDefaultView(ref.current))) {\n      EDITOR_TO_WINDOW.set(editor, window);\n      EDITOR_TO_ELEMENT.set(editor, ref.current);\n      NODE_TO_ELEMENT.set(editor, ref.current);\n      ELEMENT_TO_NODE.set(ref.current, editor);\n    } else {\n      NODE_TO_ELEMENT.delete(editor);\n    }\n\n    try {\n      // Make sure the DOM selection state is in sync.\n      var {\n        selection\n      } = editor;\n      var root = ReactEditor.findDocumentOrShadowRoot(editor);\n      var domSelection = root.getSelection();\n\n      if (state.isComposing || !domSelection || !ReactEditor.isFocused(editor)) {\n        return;\n      }\n\n      var hasDomSelection = domSelection.type !== 'None'; // If the DOM selection is properly unset, we're done.\n\n      if (!selection && !hasDomSelection) {\n        return;\n      } // verify that the dom selection is in the editor\n\n\n      var editorElement = EDITOR_TO_ELEMENT.get(editor);\n      var hasDomSelectionInEditor = false;\n\n      if (editorElement.contains(domSelection.anchorNode) && editorElement.contains(domSelection.focusNode)) {\n        hasDomSelectionInEditor = true;\n      } // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n\n\n      if (hasDomSelection && hasDomSelectionInEditor && selection) {\n        var slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n          exactMatch: true,\n          suppressThrow: true\n        });\n\n        if (slateRange && Range.equals(slateRange, selection)) {\n          return;\n        }\n      } // when <Editable/> is being controlled through external value\n      // then its children might just change - DOM responds to it on its own\n      // but Slate's value is not being updated through any operation\n      // and thus it doesn't transform selection on its own\n\n\n      if (selection && !ReactEditor.hasRange(editor, selection)) {\n        editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n          exactMatch: false,\n          suppressThrow: false\n        });\n        return;\n      } // Otherwise the DOM selection is out of sync, so update it.\n\n\n      var el = ReactEditor.toDOMNode(editor, editor);\n      state.isUpdatingSelection = true;\n      var newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\n\n      if (newDomRange) {\n        if (Range.isBackward(selection)) {\n          domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);\n        } else {\n          domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);\n        }\n\n        var leafEl = newDomRange.startContainer.parentElement;\n        leafEl.getBoundingClientRect = newDomRange.getBoundingClientRect.bind(newDomRange);\n        scrollIntoView(leafEl, {\n          scrollMode: 'if-needed',\n          boundary: el\n        }); // @ts-ignore\n\n        delete leafEl.getBoundingClientRect;\n      } else {\n        domSelection.removeAllRanges();\n      }\n\n      setTimeout(() => {\n        state.isUpdatingSelection = false;\n      });\n    } catch (_unused) {\n      // Failed to update selection, likely due to reconciliation error\n      state.isUpdatingSelection = false;\n    }\n  }); // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n  // needs to be manually focused.\n\n  useEffect(() => {\n    if (ref.current && autoFocus) {\n      ref.current.focus();\n    }\n  }, [autoFocus]); // Listen on the native `selectionchange` event to be able to update any time\n  // the selection changes. This is required because React's `onSelect` is leaky\n  // and non-standard so it doesn't fire until after a selection has been\n  // released. This causes issues in situations where another change happens\n  // while a selection is being dragged.\n\n  var onDOMSelectionChange = useCallback(throttle(() => {\n    try {\n      if (!state.isComposing && !state.isUpdatingSelection && !inputManager.isReconciling.current) {\n        var root = ReactEditor.findDocumentOrShadowRoot(editor);\n        var {\n          activeElement\n        } = root;\n        var el = ReactEditor.toDOMNode(editor, editor);\n        var domSelection = root.getSelection();\n\n        if (activeElement === el) {\n          state.latestElement = activeElement;\n          IS_FOCUSED.set(editor, true);\n        } else {\n          IS_FOCUSED.delete(editor);\n        }\n\n        if (!domSelection) {\n          return Transforms.deselect(editor);\n        }\n\n        var {\n          anchorNode,\n          focusNode\n        } = domSelection;\n        var anchorNodeSelectable = hasEditableTarget(editor, anchorNode) || isTargetInsideNonReadonlyVoid(editor, anchorNode);\n        var focusNodeSelectable = hasEditableTarget(editor, focusNode) || isTargetInsideNonReadonlyVoid(editor, focusNode);\n\n        if (anchorNodeSelectable && focusNodeSelectable) {\n          var range = ReactEditor.toSlateRange(editor, domSelection, {\n            exactMatch: false,\n            suppressThrow: false\n          });\n          Transforms.select(editor, range);\n        } else {\n          Transforms.deselect(editor);\n        }\n      }\n    } catch (_unused2) {// Failed to update selection, likely due to reconciliation error\n    }\n  }, 100), [readOnly]);\n  var scheduleOnDOMSelectionChange = useMemo(() => debounce(onDOMSelectionChange, 0), [onDOMSelectionChange]); // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n  // is required because React's `beforeinput` is fake and never really attaches\n  // to the real event sadly. (2019/11/01)\n  // https://github.com/facebook/react/issues/11211\n\n  var onDOMBeforeInput = useCallback(event => {\n    if (!readOnly && hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\n      // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n      // triggering a `beforeinput` expecting the change to be applied to the immediately before\n      // set selection.\n      scheduleOnDOMSelectionChange.flush();\n      inputManager.onUserInput();\n    }\n  }, [readOnly, propsOnDOMBeforeInput]); // Attach a native DOM event handler for `beforeinput` events, because React's\n  // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n  // real `beforeinput` events sadly... (2019/11/04)\n\n  useIsomorphicLayoutEffect(() => {\n    var node = ref.current; // @ts-ignore The `beforeinput` event isn't recognized.\n\n    node === null || node === void 0 ? void 0 : node.addEventListener('beforeinput', onDOMBeforeInput); // @ts-ignore The `beforeinput` event isn't recognized.\n\n    return () => node === null || node === void 0 ? void 0 : node.removeEventListener('beforeinput', onDOMBeforeInput);\n  }, [contentKey, propsOnDOMBeforeInput]); // Attach a native DOM event handler for `selectionchange`, because React's\n  // built-in `onSelect` handler doesn't fire for all selection changes. It's a\n  // leaky polyfill that only fires on keypresses or clicks. Instead, we want to\n  // fire for any change to the selection inside the editor. (2019/11/04)\n  // https://github.com/facebook/react/issues/5785\n\n  useIsomorphicLayoutEffect(() => {\n    var window = ReactEditor.getWindow(editor);\n    window.document.addEventListener('selectionchange', scheduleOnDOMSelectionChange);\n    return () => {\n      window.document.removeEventListener('selectionchange', scheduleOnDOMSelectionChange);\n    };\n  }, [scheduleOnDOMSelectionChange]);\n  var decorations = decorate([editor, []]);\n\n  if (placeholder && editor.children.length === 1 && Array.from(Node.texts(editor)).length === 1 && Node.string(editor) === '' && !isComposing) {\n    var start = Editor.start(editor, []);\n    decorations.push({\n      [PLACEHOLDER_SYMBOL]: true,\n      placeholder,\n      anchor: start,\n      focus: start\n    });\n  }\n\n  return /*#__PURE__*/React.createElement(ReadOnlyContext.Provider, {\n    value: readOnly\n  }, /*#__PURE__*/React.createElement(DecorateContext.Provider, {\n    value: decorate\n  }, /*#__PURE__*/React.createElement(Component, Object.assign({\n    key: contentKey,\n    role: readOnly ? undefined : 'textbox'\n  }, attributes, {\n    spellCheck: attributes.spellCheck,\n    autoCorrect: attributes.autoCorrect,\n    autoCapitalize: attributes.autoCapitalize,\n    \"data-slate-editor\": true,\n    \"data-slate-node\": \"value\",\n    contentEditable: readOnly ? undefined : true,\n    suppressContentEditableWarning: true,\n    ref: ref,\n    style: _objectSpread({\n      // Allow positioning relative to the editable element.\n      position: 'relative',\n      // Prevent the default outline styles.\n      outline: 'none',\n      // Preserve adjacent whitespace and new lines.\n      whiteSpace: 'pre-wrap',\n      // Allow words to break if they are too long.\n      wordWrap: 'break-word'\n    }, style),\n    onCopy: useCallback(event => {\n      if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy)) {\n        event.preventDefault();\n        ReactEditor.setFragmentData(editor, event.clipboardData, 'copy');\n      }\n    }, [attributes.onCopy]),\n    onCut: useCallback(event => {\n      if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut)) {\n        event.preventDefault();\n        ReactEditor.setFragmentData(editor, event.clipboardData, 'cut');\n        var {\n          selection\n        } = editor;\n\n        if (selection) {\n          if (Range.isExpanded(selection)) {\n            Editor.deleteFragment(editor);\n          } else {\n            var node = Node.parent(editor, selection.anchor.path);\n\n            if (Editor.isVoid(editor, node)) {\n              Transforms.delete(editor);\n            }\n          }\n        }\n      }\n    }, [readOnly, attributes.onCut]),\n    onFocus: useCallback(event => {\n      if (!readOnly && !state.isUpdatingSelection && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {\n        var root = ReactEditor.findDocumentOrShadowRoot(editor);\n        state.latestElement = root.activeElement;\n        IS_FOCUSED.set(editor, true);\n      }\n    }, [readOnly, attributes.onFocus]),\n    onBlur: useCallback(event => {\n      if (readOnly || state.isUpdatingSelection || !hasEditableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {\n        return;\n      } // COMPAT: If the current `activeElement` is still the previous\n      // one, this is due to the window being blurred when the tab\n      // itself becomes unfocused, so we want to abort early to allow to\n      // editor to stay focused when the tab becomes focused again.\n\n\n      var root = ReactEditor.findDocumentOrShadowRoot(editor);\n\n      if (state.latestElement === root.activeElement) {\n        return;\n      }\n\n      var {\n        relatedTarget\n      } = event;\n      var el = ReactEditor.toDOMNode(editor, editor); // COMPAT: The event should be ignored if the focus is returning\n      // to the editor from an embedded editable element (eg. an <input>\n      // element inside a void node).\n\n      if (relatedTarget === el) {\n        return;\n      } // COMPAT: The event should be ignored if the focus is moving from\n      // the editor to inside a void node's spacer element.\n\n\n      if (isDOMElement(relatedTarget) && relatedTarget.hasAttribute('data-slate-spacer')) {\n        return;\n      } // COMPAT: The event should be ignored if the focus is moving to a\n      // non- editable section of an element that isn't a void node (eg.\n      // a list item of the check list example).\n\n\n      if (relatedTarget != null && isDOMNode(relatedTarget) && ReactEditor.hasDOMNode(editor, relatedTarget)) {\n        var node = ReactEditor.toSlateNode(editor, relatedTarget);\n\n        if (Element$1.isElement(node) && !editor.isVoid(node)) {\n          return;\n        }\n      }\n\n      IS_FOCUSED.delete(editor);\n    }, [readOnly, attributes.onBlur]),\n    onClick: useCallback(event => {\n      if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {\n        var node = ReactEditor.toSlateNode(editor, event.target);\n        var path = ReactEditor.findPath(editor, node); // At this time, the Slate document may be arbitrarily different,\n        // because onClick handlers can change the document before we get here.\n        // Therefore we must check that this path actually exists,\n        // and that it still refers to the same node.\n\n        if (Editor.hasPath(editor, path)) {\n          var lookupNode = Node.get(editor, path);\n\n          if (lookupNode === node) {\n            var _start = Editor.start(editor, path);\n\n            var end = Editor.end(editor, path);\n            var startVoid = Editor.void(editor, {\n              at: _start\n            });\n            var endVoid = Editor.void(editor, {\n              at: end\n            });\n\n            if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {\n              var range = Editor.range(editor, _start);\n              Transforms.select(editor, range);\n            }\n          }\n        }\n      }\n    }, [readOnly, attributes.onClick]),\n    onCompositionEnd: useCallback(event => {\n      if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionEnd)) {\n        scheduleOnDOMSelectionChange.flush();\n        setTimeout(() => {\n          state.isComposing && setIsComposing(false);\n          state.isComposing = false;\n          IS_COMPOSING.set(editor, false);\n          IS_ON_COMPOSITION_END.set(editor, true);\n          var insertedText = EDITOR_ON_COMPOSITION_TEXT.get(editor) || []; // `insertedText` is set in `MutationObserver` constructor.\n          // If open phone keyboard association function, `CompositionEvent` will be triggered.\n\n          if (!insertedText.length) {\n            return;\n          }\n\n          EDITOR_ON_COMPOSITION_TEXT.set(editor, []);\n          var {\n            selection\n          } = editor;\n          insertedText.forEach(insertion => {\n            var text = insertion.text.insertText;\n            var at = normalizeTextInsertionRange(editor, selection, insertion);\n            Transforms.setSelection(editor, at);\n            Editor.insertText(editor, text);\n          });\n        }, RESOLVE_DELAY);\n      }\n    }, [attributes.onCompositionEnd]),\n    onCompositionUpdate: useCallback(event => {\n      if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {\n        !state.isComposing && setIsComposing(true);\n        state.isComposing = true;\n        IS_COMPOSING.set(editor, true);\n      }\n    }, [attributes.onCompositionUpdate]),\n    onCompositionStart: useCallback(event => {\n      if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionStart)) {\n        !state.isComposing && setIsComposing(true);\n        state.isComposing = true;\n        IS_COMPOSING.set(editor, true);\n      }\n    }, [attributes.onCompositionStart]),\n    onPaste: useCallback(event => {\n      // this will make application/x-slate-fragment exist when onPaste attributes is passed\n      event.clipboardData = getClipboardData(event.clipboardData); // This unfortunately needs to be handled with paste events instead.\n\n      if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste) && !readOnly) {\n        event.preventDefault();\n        ReactEditor.insertData(editor, event.clipboardData);\n      }\n    }, [readOnly, attributes.onPaste])\n  }), useChildren({\n    decorations,\n    node: editor,\n    renderElement,\n    renderPlaceholder,\n    renderLeaf,\n    selection: editor.selection\n  }))));\n};\n\n/**\r\n * A React context for sharing the `focused` state of the editor.\r\n */\n\nvar FocusedContext = /*#__PURE__*/createContext(false);\n/**\r\n * Get the current `focused` state of the editor.\r\n */\n\nvar useFocused = () => {\n  return useContext(FocusedContext);\n};\n\nfunction isError(error) {\n  return error instanceof Error;\n}\n/**\r\n * A React context for sharing the editor selector context in a way to control rerenders\r\n */\n\n\nvar SlateSelectorContext = /*#__PURE__*/createContext({});\n\nvar refEquality = (a, b) => a === b;\n/**\r\n * use redux style selectors to prevent rerendering on every keystroke.\r\n * Bear in mind rerendering can only prevented if the returned value is a value type or for reference types (e.g. objects and arrays) add a custom equality function.\r\n *\r\n * Example:\r\n * ```\r\n *  const isSelectionActive = useSlateSelector(editor => Boolean(editor.selection));\r\n * ```\r\n */\n\n\nfunction useSlateSelector(selector) {\n  var equalityFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : refEquality;\n  var [, forceRender] = useReducer(s => s + 1, 0);\n  var context = useContext(SlateSelectorContext);\n\n  if (!context) {\n    throw new Error(\"The `useSlateSelector` hook must be used inside the <Slate> component's context.\");\n  }\n\n  var {\n    getSlate,\n    addEventListener\n  } = context;\n  var latestSubscriptionCallbackError = useRef();\n  var latestSelector = useRef(() => null);\n  var latestSelectedState = useRef(null);\n  var selectedState;\n\n  try {\n    if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n      selectedState = selector(getSlate());\n    } else {\n      selectedState = latestSelectedState.current;\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current && isError(err)) {\n      err.message += \"\\nThe error may be correlated with this previous error:\\n\".concat(latestSubscriptionCallbackError.current.stack, \"\\n\\n\");\n    }\n\n    throw err;\n  }\n\n  useIsomorphicLayoutEffect(() => {\n    latestSelector.current = selector;\n    latestSelectedState.current = selectedState;\n    latestSubscriptionCallbackError.current = undefined;\n  });\n  useIsomorphicLayoutEffect(() => {\n    function checkForUpdates() {\n      try {\n        var newSelectedState = latestSelector.current(getSlate());\n\n        if (equalityFn(newSelectedState, latestSelectedState.current)) {\n          return;\n        }\n\n        latestSelectedState.current = newSelectedState;\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    var unsubscribe = addEventListener(checkForUpdates);\n    checkForUpdates();\n    return () => unsubscribe();\n  }, // don't rerender on equalityFn change since we want to be able to define it inline\n  [addEventListener, getSlate]);\n  return selectedState;\n}\n/**\r\n * Create selector context with editor updating on every editor change\r\n */\n\nfunction getSelectorContext(editor) {\n  var eventListeners = useRef([]).current;\n  var slateRef = useRef({\n    editor\n  }).current;\n  var onChange = useCallback(editor => {\n    slateRef.editor = editor;\n    eventListeners.forEach(listener => listener(editor));\n  }, []);\n  var selectorContext = useMemo(() => {\n    return {\n      getSlate: () => slateRef.editor,\n      addEventListener: callback => {\n        eventListeners.push(callback);\n        return () => {\n          eventListeners.splice(eventListeners.indexOf(callback), 1);\n        };\n      }\n    };\n  }, [eventListeners, slateRef]);\n  return {\n    selectorContext,\n    onChange\n  };\n}\n\nvar _excluded = [\"editor\", \"children\", \"onChange\", \"value\"];\n/**\r\n * A wrapper around the provider to handle `onChange` events, because the editor\r\n * is a mutable singleton so it won't ever register as \"changed\" otherwise.\r\n */\n\nvar Slate = props => {\n  var {\n    editor,\n    children,\n    onChange,\n    value\n  } = props,\n      rest = _objectWithoutProperties(props, _excluded);\n\n  var unmountRef = useRef(false);\n  var [context, setContext] = React.useState(() => {\n    if (!Node.isNodeList(value)) {\n      throw new Error(\"[Slate] value is invalid! Expected a list of elements\" + \"but got: \".concat(JSON.stringify(value)));\n    }\n\n    if (!Editor.isEditor(editor)) {\n      throw new Error(\"[Slate] editor is invalid! you passed:\" + \"\".concat(JSON.stringify(editor)));\n    }\n\n    editor.children = value;\n    Object.assign(editor, rest);\n    return [editor];\n  });\n  var {\n    selectorContext,\n    onChange: handleSelectorChange\n  } = getSelectorContext(editor);\n  var onContextChange = useCallback(() => {\n    if (onChange) {\n      onChange(editor.children);\n    }\n\n    setContext([editor]);\n    handleSelectorChange(editor);\n  }, [onChange]);\n  EDITOR_TO_ON_CHANGE.set(editor, onContextChange);\n  useEffect(() => {\n    return () => {\n      EDITOR_TO_ON_CHANGE.set(editor, () => {});\n      unmountRef.current = true;\n    };\n  }, []);\n  var [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor));\n  useEffect(() => {\n    setIsFocused(ReactEditor.isFocused(editor));\n  });\n  useIsomorphicLayoutEffect(() => {\n    var fn = () => setIsFocused(ReactEditor.isFocused(editor));\n\n    if (IS_REACT_VERSION_17_OR_ABOVE) {\n      // In React >= 17 onFocus and onBlur listen to the focusin and focusout events during the bubbling phase.\n      // Therefore in order for <Editable />'s handlers to run first, which is necessary for ReactEditor.isFocused(editor)\n      // to return the correct value, we have to listen to the focusin and focusout events without useCapture here.\n      document.addEventListener('focusin', fn);\n      document.addEventListener('focusout', fn);\n      return () => {\n        document.removeEventListener('focusin', fn);\n        document.removeEventListener('focusout', fn);\n      };\n    } else {\n      document.addEventListener('focus', fn, true);\n      document.addEventListener('blur', fn, true);\n      return () => {\n        document.removeEventListener('focus', fn, true);\n        document.removeEventListener('blur', fn, true);\n      };\n    }\n  }, []);\n  return /*#__PURE__*/React.createElement(SlateSelectorContext.Provider, {\n    value: selectorContext\n  }, /*#__PURE__*/React.createElement(SlateContext.Provider, {\n    value: context\n  }, /*#__PURE__*/React.createElement(EditorContext.Provider, {\n    value: editor\n  }, /*#__PURE__*/React.createElement(FocusedContext.Provider, {\n    value: isFocused\n  }, children))));\n};\n\n/**\r\n * Get the current editor object from the React context.\r\n * @deprecated Use useSlateStatic instead.\r\n */\n\nvar useEditor = () => {\n  var editor = useContext(EditorContext);\n\n  if (!editor) {\n    throw new Error(\"The `useEditor` hook must be used inside the <Slate> component's context.\");\n  }\n\n  return editor;\n};\n\n/**\r\n * Utilities for single-line deletion\r\n */\n\nvar doRectsIntersect = (rect, compareRect) => {\n  var middle = (compareRect.top + compareRect.bottom) / 2;\n  return rect.top <= middle && rect.bottom >= middle;\n};\n\nvar areRangesSameLine = (editor, range1, range2) => {\n  var rect1 = ReactEditor.toDOMRange(editor, range1).getBoundingClientRect();\n  var rect2 = ReactEditor.toDOMRange(editor, range2).getBoundingClientRect();\n  return doRectsIntersect(rect1, rect2) && doRectsIntersect(rect2, rect1);\n};\n/**\r\n * A helper utility that returns the end portion of a `Range`\r\n * which is located on a single line.\r\n *\r\n * @param {Editor} editor The editor object to compare against\r\n * @param {Range} parentRange The parent range to compare against\r\n * @returns {Range} A valid portion of the parentRange which is one a single line\r\n */\n\n\nvar findCurrentLineRange = (editor, parentRange) => {\n  var parentRangeBoundary = Editor.range(editor, Range.end(parentRange));\n  var positions = Array.from(Editor.positions(editor, {\n    at: parentRange\n  }));\n  var left = 0;\n  var right = positions.length;\n  var middle = Math.floor(right / 2);\n\n  if (areRangesSameLine(editor, Editor.range(editor, positions[left]), parentRangeBoundary)) {\n    return Editor.range(editor, positions[left], parentRangeBoundary);\n  }\n\n  if (positions.length < 2) {\n    return Editor.range(editor, positions[positions.length - 1], parentRangeBoundary);\n  }\n\n  while (middle !== positions.length && middle !== left) {\n    if (areRangesSameLine(editor, Editor.range(editor, positions[middle]), parentRangeBoundary)) {\n      right = middle;\n    } else {\n      left = middle;\n    }\n\n    middle = Math.floor((left + right) / 2);\n  }\n\n  return Editor.range(editor, positions[right], parentRangeBoundary);\n};\n\n/**\r\n * `withReact` adds React and DOM specific behaviors to the editor.\r\n *\r\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\r\n * this plugin.\r\n *\r\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\r\n */\n\nvar withReact = editor => {\n  var e = editor;\n  var {\n    apply,\n    onChange,\n    deleteBackward\n  } = e; // The WeakMap which maps a key to a specific HTMLElement must be scoped to the editor instance to\n  // avoid collisions between editors in the DOM that share the same value.\n\n  EDITOR_TO_KEY_TO_ELEMENT.set(e, new WeakMap());\n\n  e.deleteBackward = unit => {\n    if (unit !== 'line') {\n      return deleteBackward(unit);\n    }\n\n    if (editor.selection && Range.isCollapsed(editor.selection)) {\n      var parentBlockEntry = Editor.above(editor, {\n        match: n => Editor.isBlock(editor, n),\n        at: editor.selection\n      });\n\n      if (parentBlockEntry) {\n        var [, parentBlockPath] = parentBlockEntry;\n        var parentElementRange = Editor.range(editor, parentBlockPath, editor.selection.anchor);\n        var currentLineRange = findCurrentLineRange(e, parentElementRange);\n\n        if (!Range.isCollapsed(currentLineRange)) {\n          Transforms.delete(editor, {\n            at: currentLineRange\n          });\n        }\n      }\n    }\n  }; // This attempts to reset the NODE_TO_KEY entry to the correct value\n  // as apply() changes the object reference and hence invalidates the NODE_TO_KEY entry\n\n\n  e.apply = op => {\n    var matches = [];\n\n    switch (op.type) {\n      case 'insert_text':\n      case 'remove_text':\n      case 'set_node':\n      case 'split_node':\n        {\n          matches.push(...getMatches(e, op.path));\n          break;\n        }\n\n      case 'set_selection':\n        {\n          var _EDITOR_TO_USER_SELEC;\n\n          // Selection was manually set, don't restore the user selection after the change.\n          (_EDITOR_TO_USER_SELEC = EDITOR_TO_USER_SELECTION.get(editor)) === null || _EDITOR_TO_USER_SELEC === void 0 ? void 0 : _EDITOR_TO_USER_SELEC.unref();\n          EDITOR_TO_USER_SELECTION.delete(editor);\n          break;\n        }\n\n      case 'insert_node':\n      case 'remove_node':\n        {\n          matches.push(...getMatches(e, Path.parent(op.path)));\n          break;\n        }\n\n      case 'merge_node':\n        {\n          var prevPath = Path.previous(op.path);\n          matches.push(...getMatches(e, prevPath));\n          break;\n        }\n\n      case 'move_node':\n        {\n          var commonPath = Path.common(Path.parent(op.path), Path.parent(op.newPath));\n          matches.push(...getMatches(e, commonPath));\n          break;\n        }\n    }\n\n    apply(op);\n\n    for (var [path, key] of matches) {\n      var [node] = Editor.node(e, path);\n      NODE_TO_KEY.set(node, key);\n    }\n  };\n\n  e.setFragmentData = data => {\n    var {\n      selection\n    } = e;\n\n    if (!selection) {\n      return;\n    }\n\n    var [start, end] = Range.edges(selection);\n    var startVoid = Editor.void(e, {\n      at: start.path\n    });\n    var endVoid = Editor.void(e, {\n      at: end.path\n    });\n\n    if (Range.isCollapsed(selection) && !startVoid) {\n      return;\n    } // Create a fake selection so that we can add a Base64-encoded copy of the\n    // fragment to the HTML, to decode on future pastes.\n\n\n    var domRange = ReactEditor.toDOMRange(e, selection);\n    var contents = domRange.cloneContents();\n    var attach = contents.childNodes[0]; // Make sure attach is non-empty, since empty nodes will not get copied.\n\n    contents.childNodes.forEach(node => {\n      if (node.textContent && node.textContent.trim() !== '') {\n        attach = node;\n      }\n    }); // COMPAT: If the end node is a void node, we need to move the end of the\n    // range from the void node's spacer span, to the end of the void node's\n    // content, since the spacer is before void's content in the DOM.\n\n    if (endVoid) {\n      var [voidNode] = endVoid;\n      var r = domRange.cloneRange();\n      var domNode = ReactEditor.toDOMNode(e, voidNode);\n      r.setEndAfter(domNode);\n      contents = r.cloneContents();\n    } // COMPAT: If the start node is a void node, we need to attach the encoded\n    // fragment to the void node's content node instead of the spacer, because\n    // attaching it to empty `<div>/<span>` nodes will end up having it erased by\n    // most browsers. (2018/04/27)\n\n\n    if (startVoid) {\n      attach = contents.querySelector('[data-slate-spacer]');\n    } // Remove any zero-width space spans from the cloned DOM so that they don't\n    // show up elsewhere when pasted.\n\n\n    Array.from(contents.querySelectorAll('[data-slate-zero-width]')).forEach(zw => {\n      var isNewline = zw.getAttribute('data-slate-zero-width') === 'n';\n      zw.textContent = isNewline ? '\\n' : '';\n    }); // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n    // in the HTML, and can be used for intra-Slate pasting. If it's a text\n    // node, wrap it in a `<span>` so we have something to set an attribute on.\n\n    if (isDOMText(attach)) {\n      var span = attach.ownerDocument.createElement('span'); // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n      // then leading and trailing spaces will be ignored. (2017/09/21)\n\n      span.style.whiteSpace = 'pre';\n      span.appendChild(attach);\n      contents.appendChild(span);\n      attach = span;\n    }\n\n    var fragment = e.getFragment();\n    var string = JSON.stringify(fragment);\n    var encoded = window.btoa(encodeURIComponent(string));\n    attach.setAttribute('data-slate-fragment', encoded);\n    data.setData('application/x-slate-fragment', encoded); // Add the content to a <div> so that we can get its inner HTML.\n\n    var div = contents.ownerDocument.createElement('div');\n    div.appendChild(contents);\n    div.setAttribute('hidden', 'true');\n    contents.ownerDocument.body.appendChild(div);\n    data.setData('text/html', div.innerHTML);\n    data.setData('text/plain', getPlainText(div));\n    contents.ownerDocument.body.removeChild(div);\n    return data;\n  };\n\n  e.insertData = data => {\n    if (!e.insertFragmentData(data)) {\n      e.insertTextData(data);\n    }\n  };\n\n  e.insertFragmentData = data => {\n    /**\r\n     * Checking copied fragment from application/x-slate-fragment or data-slate-fragment\r\n     */\n    var fragment = data.getData('application/x-slate-fragment') || getSlateFragmentAttribute(data);\n\n    if (fragment) {\n      var decoded = decodeURIComponent(window.atob(fragment));\n      var parsed = JSON.parse(decoded);\n      e.insertFragment(parsed);\n      return true;\n    }\n\n    return false;\n  };\n\n  e.insertTextData = data => {\n    var text = data.getData('text/plain');\n\n    if (text) {\n      var lines = text.split(/\\r\\n|\\r|\\n/);\n      var split = false;\n\n      for (var line of lines) {\n        if (split) {\n          Transforms.splitNodes(e, {\n            always: true\n          });\n        }\n\n        e.insertText(line);\n        split = true;\n      }\n\n      return true;\n    }\n\n    return false;\n  };\n\n  e.onChange = () => {\n    // COMPAT: React doesn't batch `setState` hook calls, which means that the\n    // children and selection can get out of sync for one render pass. So we\n    // have to use this unstable API to ensure it batches them. (2019/12/03)\n    // https://github.com/facebook/react/issues/14259#issuecomment-439702367\n    ReactDOM.unstable_batchedUpdates(() => {\n      var onContextChange = EDITOR_TO_ON_CHANGE.get(e);\n\n      if (onContextChange) {\n        onContextChange();\n      }\n\n      onChange();\n    });\n  };\n\n  return e;\n};\n\nvar getMatches = (e, path) => {\n  var matches = [];\n\n  for (var [n, p] of Editor.levels(e, {\n    at: path\n  })) {\n    var key = ReactEditor.findKey(e, n);\n    matches.push([p, key]);\n  }\n\n  return matches;\n};\n\n// Components\nvar Editable = IS_ANDROID ? AndroidEditable : Editable$1;\n\nexport { AndroidEditable, Editable$1 as DefaultEditable, DefaultElement, DefaultLeaf, DefaultPlaceholder, Editable, ReactEditor, Slate, useEditor, useFocused, useReadOnly, useSelected, useSlate, useSlateSelector, useSlateStatic, withReact };\n//# sourceMappingURL=index.es.js.map\n","import React, {useCallback, useMemo, useState, useEffect, useRef} from 'react';\nimport {jsx} from 'slate-hyperscript'\nimport {withHistory} from 'slate-history'\nimport {Editor, createEditor, Range, Node, Transforms, Path, Text, Point, Element as SlateElement} from 'slate'\nimport {Slate, Editable, ReactEditor, withReact, useSlate, useSelected, useFocused} from 'slate-react'\nimport isHotkey from 'is-hotkey'\nimport Sefaria from './sefaria/sefaria';\n\nimport {\n    SheetMetaDataBox,\n    SheetAuthorStatement,\n    SheetTitle,\n    CollectionStatement,\n    ProfilePic,\n    InterfaceText,\n    Autocompleter,\n} from './Misc';\n\nimport classNames from 'classnames';\nimport $ from \"./sefaria/sefariaJquery\";\nimport ReactDOM from \"react-dom\";\n\n// Mapping from Sheet doc format source types to Slate block element types\nconst sheet_item_els = {\n    ref: 'SheetSource',\n    comment: 'SheetOutsideText',\n    outsideText: 'SheetOutsideText',\n    outsideBiText: 'SheetOutsideBiText',\n    media: 'SheetMedia',\n};\n\nconst voidElements = [\n    \"ProfilePic\",\n    \"SheetMedia\",\n    \"SheetSource\",\n    \"SheetOutsideBiText\",\n    \"horizontal-line\"\n];\n\n\nconst HOTKEYS = {\n  'mod+b': 'bold',\n  'mod+i': 'italic',\n  'mod+u': 'underline',\n};\n\nconst LIST_TYPES = ['numbered-list', 'bulleted-list']\n\nconst NO_SPACER_NEEDED_TYPES = [\"SheetOutsideText\", \"header\", \"SheetComment\", \"list-item\", \"numbered-list\", \"bulleted-list\"]\n\nconst ELEMENT_TAGS = {\n    A: el => ({type: 'link', url: el.getAttribute('href'), ref: el.getAttribute('data-ref'), target: el.getAttribute('target')}),\n    BLOCKQUOTE: () => ({type: 'quote'}),\n    H1: () => ({type: 'header'}),\n    H2: () => ({type: 'heading-two'}),\n    H3: () => ({type: 'heading-three'}),\n    H4: () => ({type: 'heading-four'}),\n    H5: () => ({type: 'heading-five'}),\n    H6: () => ({type: 'heading-six'}),\n    IMG: el => ({type: 'image', url: el.getAttribute('src')}),\n    LI: () => ({type: 'list-item'}),\n    OL: () => ({type: 'numbered-list'}),\n    P: () => ({type: 'paragraph'}),\n    DIV: () => ({type: 'paragraph'}),\n    PRE: () => ({type: 'code'}),\n    UL: () => ({type: 'bulleted-list'}),\n    TABLE: () => ({type: 'table'}),\n    TR: () => ({type: 'table-row'}),\n    TD: () => ({type: 'table-cell'}),\n    HR: () => ({type: 'horizontal-line'}),\n};\n\nconst format_tag_pairs = [\n    {\n        tag: \"EM\",\n        format: \"italic\"\n    },\n    {\n        tag: \"I\",\n        format: \"italic\"\n    },\n    {\n        tag: \"STRONG\",\n        format: \"bold\"\n    },\n    {\n        tag: \"SUP\",\n        format: \"superscript\"\n    },\n    {\n        tag: \"B\",\n        format: \"bold\"\n    },\n    {\n        tag: \"U\",\n        format: \"underline\"\n    },\n    {\n        tag: \"BIG\",\n        format: \"big\"\n    },\n    {\n        tag: \"SMALL\",\n        format: \"small\"\n    },\n];\n\nconst special_styles_to_care_about = [\n  \"background-color\",\n  \"color\",\n  \"text-align\"\n];\n\n\nconst TEXT_TAGS = format_tag_pairs.reduce((obj, item) => {\n     obj[item.tag] = () => ({[item.format]: true })\n     return obj\n   }, {});\n\nconst format_to_html_lookup = format_tag_pairs.reduce((obj, item) => {\n     obj[item.format] = item.tag;\n     return obj\n   }, {});\n\n\n const getNodeAbove = (curPath, editor) => {\n   let top = null;\n   let topPath = null;\n   try {\n     topPath = Path.previous(curPath)\n     top = (Node.get(editor, topPath))\n   }\n   catch(err) {}\n\n   return {node: top, path: topPath}\n };\n\n const getNodeBelow = (curPath, editor) => {\n   let bottom = null;\n   let bottomPath = null;\n   try {\n     bottomPath = Path.next(curPath)\n     bottom = (Node.get(editor, bottomPath))\n   }\n   catch(err) {}\n\n   return {node: bottom, path: bottomPath}\n };\n\n\nexport const deserialize = el => {\n    if (el.nodeType === 3) {\n        return el.textContent\n    } else if (el.nodeType !== 1) {\n        return null\n    } else if (el.nodeName === 'BR') {\n        return null\n    }\n\n    const checkForStyles = () => {\n        if (el.getAttribute(\"style\")) {\n          const elStyles = el.getAttribute(\"style\").split(';');\n          let addlAttrs = {}\n          for (const elStyle of elStyles) {\n              console.log(elStyle)\n            const styleArray = elStyle.split(\":\");\n            if (styleArray.length == 2) {\n              const styleType = styleArray[0].trim()\n              const styleValue = styleArray[1].trim()\n              addlAttrs[styleType] = styleValue\n            }\n          }\n        return addlAttrs\n        }\n    };\n\n    const {nodeName} = el;\n    let parent = el;\n\n    if (\n        el.nodeNode === 'PRE' &&\n        el.childNodes[0] &&\n        el.childNodes[0].nodeName === 'CODE'\n    ) {\n        parent = el.childNodes[0]\n    }\n\n    const children = Array.from(parent.childNodes).map(deserialize).flat();\n\n\n    if (el.nodeName === 'BODY') {\n        return jsx('fragment', {}, children)\n    }\n\n    if (ELEMENT_TAGS[nodeName]) {\n        let new_children = children\n        if(!children[0]) {\n            new_children = [{'text':''}]\n        }\n        const attrs = {\n            ...ELEMENT_TAGS[nodeName](el),\n            ...checkForStyles()\n        };\n        return jsx('element', attrs, new_children)\n    }\n\n    if (TEXT_TAGS[nodeName]) {\n      const attrs = TEXT_TAGS[nodeName](el);\n      return children.map(child => {\n          if (!child) {return null}\n          return jsx('text', attrs, ((typeof child === \"string\" || Text.isText(child)) ? child : Node.string(child)))\n          }\n      )\n    }\n\n    if (el.getAttribute(\"style\")) {\n      const elStyles = el.getAttribute(\"style\").split(';');\n      for (const elStyle of elStyles) {\n        const styleArray = elStyle.split(\":\");\n        if (styleArray.length == 2) {\n          const styleType = styleArray[0].trim()\n          const styleValue = styleArray[1].trim()\n          let attrs = {}\n          attrs[styleType] = styleValue\n\n          return children.map(child => child ? jsx('text', attrs, ((typeof child === \"string\" || Text.isText(child)) ? child : Node.string(child))): {'text':''})\n        }\n      }\n    }\n\n\n    return children\n};\n\n\nexport const serialize = (content) => {\n    //serialize formatting to html\n    if (content.text) {\n        const tagStringObj = Object.keys(content).reduce((tagString, key) => {\n            if (content[key] == true) {\n                const htmlTag = format_to_html_lookup[key];\n                const preTag = (tagString.preTags + \"<\" + htmlTag + \">\");\n                const postTag = (\"</\" + htmlTag + \">\" + tagString.postTags);\n                return {preTags: preTag.toLowerCase(), postTags: postTag.toLowerCase()}\n            }\n            else if (special_styles_to_care_about.includes(key)) {\n              const preTag = (tagString.preTags + `<span style=${key}:${content[key]}>`);\n              const postTag = (\"</span>\" + tagString.postTags);\n              return {preTags: preTag.toLowerCase(), postTags: postTag.toLowerCase()}\n            }\n            return {preTags: tagString.preTags, postTags: tagString.postTags}\n        }, {preTags: \"\", postTags: \"\"});\n\n        return (`${tagStringObj.preTags}${content.text.replace(/(\\n)+/g, '<br>')}${tagStringObj.postTags}`)\n    }\n\n    if (content.type) {\n\n        switch (content.type) {\n            case 'link': {\n                const linkHTML = content.children.reduce((acc, text) => {\n                    return (acc + serialize(text))\n                }, \"\");\n\n                return (content.ref ?\n                    `<a href=\"${content.url}\" class=\"refLink\" data-ref=\"${content.ref}\">${linkHTML}</a>`\n                    : `<a href=\"${content.url}\">${linkHTML}</a>`)\n            }\n\n            case 'paragraph': {\n                const paragraphHTML = content.children.reduce((acc, text) => {\n                    return (acc + serialize(text))\n                }, \"\");\n                if (content[\"text-align\"] == \"center\") {\n                    return `<div style='text-align: center'>${paragraphHTML}</div>`\n                }\n                return `<div>${paragraphHTML}</div>`\n            }\n\n            case 'list-item': {\n                const liHtml = content.children.reduce((acc, text) => {\n                    return (acc + serialize(text))\n                }, \"\");\n                return `<li>${liHtml}</li>`\n            }\n\n            case 'numbered-list': {\n                const olHtml = content.children.reduce((acc, text) => {\n                    return (acc + serialize(text))\n                }, \"\");\n                return `<ol>${olHtml}</ol>`\n            }\n\n            case 'bulleted-list': {\n                const ulHtml = content.children.reduce((acc, text) => {\n                    return (acc + serialize(text))\n                }, \"\");\n                return `<ul>${ulHtml}</ul>`\n            }\n            case 'table':\n              const tableHtml = content.children.reduce((acc, text) => {\n                  return (acc + serialize(text))\n              }, \"\");\n              return (\n                `<table><tbody>${tableHtml}</tbody></table>`\n              )\n\n            case 'table-row':\n              const trHtml = content.children.reduce((acc, text) => {\n                  return (acc + serialize(text))\n              }, \"\");\n              return `<tr>${trHtml}</tr>`\n\n            case 'table-cell':\n              const tdHtml = content.children.reduce((acc, text) => {\n                  return (acc + serialize(text))\n              }, \"\");\n              return `<td>${tdHtml}</td>`\n\n            case 'horizontal-line':\n              return `<hr>`\n\n        }\n    }\n\n\n\n\n\n\n    const children = content.children ? content.children.map(serialize) : [];\n\n    return children.join('')\n};\n\nconst replaceDivineNames = (str, divineName) => {\n    // Regexes for identifying divine names with or without nikkud / trop\n    // Currently ignores אֵל & צְבָאוֹת & שדי\n    const divineRE  = /([\\s.,\\u05BE;:'\"\\-]|^)([ו]?[\\u0591-\\u05C7]*[משהוכלב]?[\\u0591-\\u05C7]*)(י[\\u0591-\\u05C7]*ה[\\u0591-\\u05C7]*ו[\\u0591-\\u05C7]*ה[\\u0591-\\u05C2\\u05C4-\\u05C7]*|יְיָ|יי|יקוק|ה\\'|ה׳)(?=[/(/[<//.,;:׃'\"\\-\\s]|$)/g;\n\n    // don't match אֲדֹנִי\n    const adoshemRE = /([\\s.,\\u05BE;:'\"\\-]|^)([ו]?[\\u0591-\\u05C7]*[משהוכלב]?[\\u0591-\\u05C7]*)(א[\\u0591-\\u05C7]*ד[\\u0591-\\u05C7]*נ[\\u0591-\\u05B3\\u05B5-\\u05C7]*י[\\u0591-\\u05B3\\u05B5-\\u05C2\\u05C4-\\u05C7]*|אדושם)(?=[<\\[\\(\\s.,;:׃'\"\\-]|$)/g;\n\n    // only allow segol or tzere nikkud, so doesn't match אֲלֵהֶ֖ם or the like\n    const elokaiRE  = /([\\s.,\\u05BE;:'\"\\-]|^)([ו]?[\\u0591-\\u05C7]*[משהוכלב]?[\\u0591-\\u05C7]*)(א[\\u0591-\\u05AF\\u05B1\\u05B5\\u05B6\\u05BC-\\u05C7]*ל[\\u0591-\\u05C7]*ו?[\\u0591-\\u05C7]*)([הק])([\\u0591-\\u05C7]*)((י[\\u0591-\\u05C2\\u05C4-\\u05C7]*)?[ךיוהםן][\\u0591-\\u05C2\\u05C4-\\u05C7]*|(י[\\u0591-\\u05C7]*)?נ[\\u0591-\\u05C7]*ו[\\u0591-\\u05C7]*|(י[\\u0591-\\u05C7]*)?כ[[\\u0591-\\u05C2\\u05C4-\\u05C7]*[םן])(?=[\\s<\\[\\(.,;׃:'\"\\-]|$)/g;\n\n    const elokaRE   = /([\\s.,\\u05BE;:'\"\\-]|^)([ו]?[\\u0591-\\u05C7]*[משהוכלב]?[\\u0591-\\u05C7]*)(א[\\u0591-\\u05AF\\u05B1\\u05B5\\u05B6\\u05BC-\\u05C7]*ל[\\u0591-\\u05C7]*ו[\\u0591-\\u05C7]*)([הק])([\\u0591-\\u05C2\\u05C4-\\u05C7]*)(?=[)(?=[\\s<\\[\\(.,;:׃'\"\\-]|$)/g;\n\n    // const shadaiRE  = /([\\s.,\\u05BE;:'\"\\-]|^)([משהוכלב]?[\\u0591-\\u05C7]*)(ש[\\u0591-\\u05C7]*[דק][\\u0591-\\u05C7]*י[\\u0591-\\u05C7]*)(?=[\\s.,;׃:'\"\\-]|$)/g;\n\n\n    const divineSubs = {\n                        \"noSub\": \"יהוה\",\n                        \"yy\": \"יי\",\n                        \"ykvk\": \"יקוק\",\n                        \"h\": \"ה׳\"\n                    };\n\n\n\n\n    const adoshemSub = divineName==\"noSub\" ? \"אדני\" : \"אדושם\";\n    const elokaiSub = divineName==\"noSub\" ? \"ה\" : \"ק\";\n\n    const newStr = str.replace(divineRE, \"$1$2\"+ divineSubs[divineName])\n        .replace(adoshemRE, \"$1$2\"+ adoshemSub)\n        .replace(elokaiRE, \"$1$2$3\"+ elokaiSub +\"$5$6\")\n        .replace(elokaRE, \"$1$2$3\"+ elokaiSub +\"$5\");\n\n    return newStr\n\n}\n\nfunction renderSheetItem(source) {\n    const sheetItemType = Object.keys(sheet_item_els).filter(key => Object.keys(source).includes(key))[0];\n\n    switch (sheetItemType) {\n        case 'ref': {\n            const content = (\n                {\n                    type: sheet_item_els[sheetItemType],\n                    ref: source.ref,\n                    heRef: source.heRef,\n                    title: source.title || null,\n                    node: source.node,\n                    heText: parseSheetItemHTML(source.text.he),\n                    enText: parseSheetItemHTML(source.text.en),\n                    options: source.options,\n                    children: [\n                        {text: \"\"},\n                    ]\n                }\n            );\n            return content\n        }\n        case 'comment': {\n            const commentLang = Sefaria.hebrew.isHebrew(source.comment) ? 'he' : 'en';\n            const content = (\n                {\n                    type: sheet_item_els[sheetItemType],\n                    options: source.options,\n                    children: parseSheetItemHTML(source.comment),\n                    node: source.node,\n                    lang: commentLang\n                }\n            );\n            return content\n        }\n        case 'outsideText': {\n            const lang = Sefaria.hebrew.isHebrew(source.outsideText) ? 'he' : 'en';\n\n            const content = (\n                {\n                    type: sheet_item_els[sheetItemType],\n                    options: source.options,\n                    children: parseSheetItemHTML(source.outsideText),\n                    node: source.node,\n                    lang: lang\n                }\n            );\n            return content\n        }\n        case 'outsideBiText': {\n            const content = (\n                {\n                    type: sheet_item_els[sheetItemType],\n                    heText: parseSheetItemHTML(source.outsideBiText.he),\n                    enText: parseSheetItemHTML(source.outsideBiText.en),\n                    options: source.options,\n                    children: [\n                        {text: \"\"},\n                    ],\n                    node: source.node\n                }\n            );\n            return content\n        }\n        case 'media': {\n            const content = (\n                {\n                    type: sheet_item_els[sheetItemType],\n                    mediaUrl: source.media,\n                    node: source.node,\n                    options: source.options,\n                    children: [\n                        {\n                            text: source.media,\n                        }\n                    ]\n                }\n            );\n            return content\n        }\n        default: {\n          console.log(source);\n            return {\n                text: \"\",\n            }\n        }\n    }\n}\n\nfunction parseSheetItemHTML(rawhtml) {\n    const preparseHtml = rawhtml.replace(/\\u00A0/g, ' ').replace(/(\\r\\n|\\n|\\r|\\t)/gm, \"\");\n    const parsed = new DOMParser().parseFromString(preparseHtml, 'text/html');\n    const fragment = deserialize(parsed.body);\n    const slateJSON = fragment.length > 0 ? fragment : [{text: ''}];\n    return slateJSON[0].type === 'paragraph' ? slateJSON : [{type: 'paragraph', children: slateJSON}]\n}\n\nconst defaultSheetTitle = (title) => {\n    return {\n        type: 'SheetTitle',\n        title: title ? title : \"\",\n        children: [\n            {\n                text: title ? title : \"\",\n            }\n\n        ]\n    }\n};\n\nconst defaultEmptyOutsideText = (sheetNodeNumber, textFragment) => {\n  return {\n            type: \"SheetOutsideText\",\n            node: sheetNodeNumber,\n            children: [{\n                type: \"paragraph\",\n                children: [{text: textFragment}]\n            }]\n          }\n};\n\n\nfunction transformSheetJsonToSlate(sheet) {\n    const sheetTitle = sheet.title.stripHtmlConvertLineBreaks();\n\n    let curNextNode = sheet.nextNode;\n\n    let sourceNodes = [];\n\n    sheet.sources.forEach( (source, i) => {\n\n        // this snippet of code exists to create placeholder spacers in between elements to allow for easier editing\n        // and to preserve spacing.\n        //\n        // A spacer is added:\n        // 1. If the source is not the first source and it's not an outside text or adjacent to an outside text, and\n        // 2. In between outside texts.\n\n      // needed for now b/c headers are saved as OutsideTexts for backwards compatability w/ old sheets\n      const sourceIsHeader = source[\"outsideText\"] && source[\"outsideText\"].startsWith(\"<h1>\");\n      const prevSourceIsHeader = i > 0 && sheet.sources[i-1][\"outsideText\"] && sheet.sources[i-1][\"outsideText\"].startsWith(\"<h1>\");\n      const isCurrentSourceAnOutsideText = !!source[\"outsideText\"];\n      const isPrevSourceAnOutsideText = !!(i > 0 && sheet.sources[i-1][\"outsideText\"]);\n      if (!(isPrevSourceAnOutsideText || isCurrentSourceAnOutsideText) || (isPrevSourceAnOutsideText && isCurrentSourceAnOutsideText && !sourceIsHeader && !prevSourceIsHeader) ) {\n          sourceNodes.push({\n            type: \"spacer\",\n            children: [{text: \"\"}]\n          })\n        }\n\n\n      //-------//\n\n\n      sourceNodes.push(\n        renderSheetItem(source)\n      );\n\n\n    });\n\n    // Ensure there's always something to edit at bottom of sheet.\n    if (sourceNodes.length == 0 || (sourceNodes[sourceNodes.length - 1][\"children\"] && sourceNodes[sourceNodes.length - 1][\"children\"][0][\"type\"] != \"SheetOutsideText\")) {\n        sourceNodes.push({\n          type: \"spacer\",\n          children: [{text: \"\"}]\n        })\n    }\n\n    let initValue = [\n        {\n            type: 'Sheet',\n            status: sheet.status,\n            views: sheet.views,\n            tags: sheet.tags || [],\n            includedRefs: sheet.includedRefs,\n            owner: sheet.owner,\n            summary: sheet.summary || \"\",\n            id: sheet.id,\n            dateModified: sheet.dateModified,\n            datePublished: sheet.datePublished,\n            dateCreated: sheet.dateCreated,\n            promptedToPublish: sheet.promptedToPublish,\n            options: sheet.options,\n            nextNode: curNextNode,\n            authorUrl: sheet.ownerProfileUrl,\n            authorStatement: sheet.ownerName,\n            authorImage: sheet.ownerImageUrl,\n            title: sheet.title,\n            displayedCollection: sheet.displayedCollection || \"\",\n            collectionName: sheet.collectionName || \"\",\n            collectionImage: sheet.collectionImage || \"\",\n            likes: sheet.likes || [],\n            children: [\n                {\n                    type: 'SheetContent',\n                    children: sourceNodes\n                }\n\n            ]\n        }\n    ];\n    return initValue;\n}\n\nfunction isSourceEditable(e, editor) {\n  if (editor.edittingSource) {return true}\n\n  const isEditable = (Range.isRange(editor.selection) && !Range.isCollapsed(editor.selection))\n  editor.edittingSource = isEditable;\n  return (isEditable)\n}\n\nconst BoxedSheetElement = ({ attributes, children, element, divineName }) => {\n  const parentEditor = useSlate();\n\n  const sheetSourceEnEditor = useMemo(() => withLinks(withHistory(withReact(createEditor()))), [])\n  const sheetSourceHeEditor = useMemo(() => withLinks(withHistory(withReact(createEditor()))), [])\n  const [sheetEnSourceValue, sheetEnSourceSetValue] = useState(element.enText)\n  const [sheetHeSourceValue, sheetHeSourceSetValue] = useState(element.heText)\n  const [unsavedChanges, setUnsavedChanges] = useState(false)\n  const [sourceActive, setSourceActive] = useState(false)\n  const [activeSourceLangContent, setActiveSourceLangContent] = useState(null)\n  const [isDragging, setIsDragging] = useState(false)\n  const [canUseDOM, setCanUseDOM] = useState(false)\n  const selected = useSelected()\n  const focused = useFocused()\n  const cancelEvent = (event) => event.preventDefault()\n\n    useEffect(\n        () => {\n            const replacement = divineName || \"noSub\"\n            const editors = [sheetSourceHeEditor, sheetSourceEnEditor]\n            for (const editor of editors) {\n                const nodes = (Editor.nodes(editor, {at: [], match: Text.isText}))\n                for (const [node, path] of nodes) {\n                    if (node.text) {\n                        const newStr = replaceDivineNames(node.text, replacement)\n                        if (newStr != node.text) {\n                            Transforms.insertText(editor, newStr, {at: path})\n                        }\n                    }\n                }\n            }\n        }, [divineName]\n    )\n\n\n  const onHeChange = (value) => {\n    sheetHeSourceSetValue(value)\n  }\n\n  const onEnChange = (value) => {\n    sheetEnSourceSetValue(value)\n  }\n\n  useEffect(\n      () => {\n        Transforms.setNodes(parentEditor, {heText: sheetHeSourceValue, enText: sheetEnSourceValue}, {at: ReactEditor.findPath(parentEditor, element)});\n      },\n      [sourceActive]\n  );\n\n  useEffect(\n      () => {\n          if (!selected) {\n              setSourceActive(false)\n              setActiveSourceLangContent(null)\n          }\n      },\n      [selected]\n  );\n\n\n  useEffect(() => {setCanUseDOM(true)}, [])\n\n  const onMouseDown = (e) => {\n      //Slate tries to auto position the cursor, but on long boxed sources this leads to jumping. This hack should fix it.\n      const elementTop = e.currentTarget.offsetTop;\n      const divTop = document.querySelector(\".sheetsInPanel\").offsetTop;\n      const elementRelativeTop = elementTop - divTop;\n\n      const rect = e.currentTarget.getBoundingClientRect();\n      const clickOffset = e.clientY - rect.top\n\n      e.currentTarget.querySelector(\".boxedSourceChildren\").style.top = `${elementRelativeTop + clickOffset}px`;\n\n  }\n\n  const suppressParentContentEditable = (toggle) => {\n      // Chrome treats nested contenteditables as one giant editor so keyboard shortcuts like `Control + A` or `Alt + Up`\n      // Don't work as expected -- this hack fixes that\n      document.querySelector('[role=\"textbox\"]').setAttribute(\"contenteditable\", toggle)\n  }\n\n  const onClick = (e) => {\n\n    if ((e.target).closest('.he') && sourceActive) {\n        setActiveSourceLangContent('he')\n        if (window.chrome) {suppressParentContentEditable(false)}\n\n    }\n    else if ((e.target).closest('.en') && sourceActive) {\n        setActiveSourceLangContent('en')\n        if (window.chrome) {suppressParentContentEditable(false)}\n    }\n    else {\n        setActiveSourceLangContent(null)\n        if (window.chrome) {suppressParentContentEditable(true)}\n    }\n    setSourceActive(true)\n\n  }\n\n  const onBlur = (e) => {\n    if (window.chrome) {suppressParentContentEditable(true)}\n    setSourceActive(false)\n    setActiveSourceLangContent(null)\n  }\n\n    const onKeyDown = (event, editor) => {\n        for (const hotkey in HOTKEYS) {\n            if (isHotkey(hotkey, event)) {\n                event.preventDefault();\n                const format = HOTKEYS[hotkey];\n                console.log(format)\n                toggleFormat(editor, format)\n            }\n        }\n    }\n\n  const isActive = selected;\n  const sheetItemClasses = {sheetItem: 1, highlight: parentEditor.highlightedNode === (element.node ? element.node.toString() : null)}\n  const classes = {\n      SheetSource: element.ref ? 1 : 0,\n      SheetOutsideBiText: element.ref ? 0 : 1,\n      segment: 1,\n      selected: isActive\n  };\n  const heClasses = {he: 1, selected: isActive, editable: activeSourceLangContent == \"he\" ? true : false };\n  const enClasses = {en: 1, selected: isActive, editable: activeSourceLangContent == \"en\" ? true : false };\n  const dragStart = (e) => {\n      const slateRange = ReactEditor.findEventRange(parentEditor, e)\n      parentEditor.dragging = true\n      const fragment = Node.fragment(parentEditor, slateRange)\n      ReactEditor.deselect(parentEditor)\n\n      const string = JSON.stringify(fragment)\n      const encoded = window.btoa(encodeURIComponent(string))\n      e.dataTransfer.setData('application/x-slate-fragment', encoded)\n      e.dataTransfer.setData('text/html', e.target.innerHTML)\n      e.dataTransfer.setData('text/plain', e.target.text)\n      e.dataTransfer.effectAllowed = 'move';\n\n      const dragIcon = document.createElement('div');\n      dragIcon.classList.add(\"dragIcon\");\n      dragIcon.classList.add(\"serif\");\n      dragIcon.style.borderInlineStartColor = Sefaria.palette.refColor(element.ref);\n      dragIcon.innerHTML = Sefaria.interfaceLang === \"hebrew\" ? element.heRef : element.ref;\n\n      document.body.appendChild(dragIcon);\n      e.dataTransfer.setDragImage(dragIcon, 0, 15);\n\n      ReactEditor.setFragmentData(parentEditor, e.dataTransfer, \"drag\")\n      setIsDragging(true)\n  }\n\n    const dragEnd = (e) => {\n      setIsDragging(false)\n    }\n\n    const dragOver = (e) => {\n      if (parentEditor.dragging) {\n          e.preventDefault()\n          e.dataTransfer.dropEffect = \"move\";\n      }\n    }\n\n    const drop = (e) => {\n      e.preventDefault();\n      e.stopPropagation();\n      parentEditor.dragging = false;\n    }\n\n  return (\n      <div\n          draggable={true}\n          className={isDragging ? \"boxedSheetItem dragged\" : \"boxedSheetItem\"}\n          onMouseDown={(e) => onMouseDown(e)}\n          onDragStart={(e)=>{dragStart(e)}}\n          onDragEnd={(e)=>{dragEnd(e)}}\n          onDragEnter={(e)=>{e.preventDefault()}}\n          onDragOver={(e)=>{dragOver(e)}}\n          onDrop={(e)=> {drop(e)}}\n          {...attributes}\n      >\n    <div className={classNames(sheetItemClasses)} data-sheet-node={element.node} data-sefaria-ref={element.ref} style={{ pointerEvents: (isActive) ? 'none' : 'auto'}}>\n    <div  contentEditable={false} onBlur={(e) => onBlur(e) } onClick={(e) => onClick(e)} className={classNames(classes)} style={{\"borderInlineStartColor\": Sefaria.palette.refColor(element.ref)}}>\n      <div className={classNames(heClasses)} style={{ pointerEvents: (isActive) ? 'auto' : 'none'}}>\n          {element.heRef ? <div className=\"ref\" contentEditable={false}><a style={{ userSelect: 'none', pointerEvents: 'auto' }} href={`/${element.ref}`}>{element.heRef}</a></div> : null }\n          <div className=\"sourceContentText\">\n          <Slate editor={sheetSourceHeEditor} value={sheetHeSourceValue} onChange={value => onHeChange(value)}>\n          {canUseDOM ? <HoverMenu buttons=\"basic\"/> : null }\n            <Editable\n              readOnly={!sourceActive}\n              renderLeaf={props => <Leaf {...props} />}\n              onKeyDown={(e) => onKeyDown(e, sheetSourceHeEditor)}\n\n            />\n          </Slate>\n        </div>\n      </div>\n      <div className={classNames(enClasses)} style={{ pointerEvents: (isActive) ? 'auto' : 'none'}}>\n        {element.ref ? <div className=\"ref\" contentEditable={false}><a style={{ userSelect: 'none', pointerEvents: 'auto' }} href={`/${element.ref}`}>{element.ref}</a></div> : null }\n        <div className=\"sourceContentText\">\n          <Slate editor={sheetSourceEnEditor} value={sheetEnSourceValue} onChange={value => onEnChange(value)}>\n          {canUseDOM ? <HoverMenu buttons=\"basic\"/> : null }\n            <Editable\n              readOnly={!sourceActive}\n              renderLeaf={props => <Leaf {...props} />}\n              onKeyDown={(e) => onKeyDown(e, sheetSourceEnEditor)}\n            />\n          </Slate>\n        </div>\n      </div>\n      </div>\n      <div className=\"clearFix\"></div>\n      </div>\n          <div className=\"boxedSourceChildren\">{children}</div>\n          </div>\n  );\n};\n\nconst AddInterfaceInput = ({ inputType, resetInterface }) => {\n    const editor = useSlate();\n    const [inputValue, setInputValue] = useState(\"\");\n    const [showAddMediaButton, setShowAddMediaButton] = useState(false);\n\n    const isMediaLink = (url) => {\n        console.log(url)\n\n      if (url.match(/^https?/i) == null) {\n        return null;\n      }\n      const youtube_re = /https?:\\/\\/(www\\.)?(youtu(?:\\.be|be\\.com)\\/(?:.*v(?:\\/|=)|(?:.*\\/)?)([\\w'-]+))/i;\n      let vimeo_re = /^.*(vimeo\\.com\\/)((channels\\/[A-z]+\\/)|(groups\\/[A-z]+\\/videos\\/)|(video\\/))?([0-9]+)/;\n      let m;\n      if ((m = youtube_re.exec(url)) !== null) {\n        if (m.index === youtube_re.lastIndex) {\n          youtube_re.lastIndex++;\n        }\n        if (m.length>0) {\n            return \"https://www.youtube.com/embed/\"+m[m.length-1]+\"?rel=0&amp;showinfo=0\";\n        }\n      }\n      else if ((m = vimeo_re.exec(url)) !== null) {\n          if (m.index === vimeo_re.lastIndex) {\n              vimeo_re.lastIndex++;\n          }\n          if (m.length > 0) {\n              return \"https://player.vimeo.com/video/\" + m[6];\n          }\n    } else if (url.match(/^https?:\\/\\/(www\\.)?.+\\.(jpeg|jpg|gif|png)$/i) != null) {\n        return url;\n      } else if (url.match(/^https?:\\/\\/(www\\.)?.+\\.(mp3)$/i) != null) {\n        return url;\n      } else if (url.match(/^https?:\\/\\/(www\\.|m\\.)?soundcloud\\.com\\/[\\w\\-\\.]+\\/[\\w\\-\\.]+\\/?/i) != null) {\n        return 'https://w.soundcloud.com/player/?url='+ url + '&amp;color=ff5500&amp;auto_play=false&amp;hide_related=true&amp;show_comments=false&amp;show_user=true&amp;show_reposts=false';\n      } else if ((m = /^https?:\\/\\/open\\.spotify\\.com\\/(?:embed\\/)?(\\w+)\\/(\\w+)\\/?/i.exec(url)) != null) {\n          return `https://open.spotify.com/embed/${m[1]}/${m[2]}`;\n      } else if ((m = /^https?:\\/\\/bandcamp.com\\/EmbeddedPlayer(\\/\\w+\\=\\w+)+(\\/)?/i.exec(url)) != null) {\n          if (!url.includes(\"artwork=small\")) { // force small artwork because height calculation for large artwork depends on width\n            return m[2] ? url + \"artwork=small\" : url + \"/artwork=small\";\n          } else {\n              return url;\n          }\n      } else {\n        return false\n      }\n    }\n\n    const onMediaChange = (e) => {\n        const newValue = e.target.value;\n        setInputValue(newValue)\n        setShowAddMediaButton(isMediaLink(newValue))\n    }\n    const addMedia = () => {\n        const fragment = {\n            type: \"SheetMedia\",\n            mediaUrl: isMediaLink(inputValue),\n            node: editor.children[0].nextNode,\n            children: [{text: \"\"}]\n        };\n        incrementNextSheetNode(editor);\n        Transforms.insertNodes(editor, fragment);\n        Editor.normalize(editor, { force: true })\n        Transforms.move(editor);\n    }\n\n    const getSuggestions = async (input) => {\n        let results = {\n            \"previewText\": null, \"helperPromptText\": null, \"currentSuggestions\": null,\n            \"showAddButton\": false\n        };\n        setInputValue(input);\n        if (input === \"\") {\n            return results;\n        }\n        const d = await Sefaria.getName(input, true, 5);\n        if (d.is_section || d.is_segment) {\n            results.helperPromptText = null;\n            results.currentSuggestions = null;\n            results.previewText = input;\n            results.showAddButton = true;\n            return results;\n        } else {\n            results.showAddButton = false;\n            results.previewText = null;\n        }\n\n        //We want to show address completions when book exists but not once we start typing further\n        if (d.is_book && isNaN(input.trim().slice(-1)) && !!d?.addressExamples) {\n            results.helperPromptText = <InterfaceText text={{en: d.addressExamples[0], he: d.heAddressExamples[0]}}/>;\n        } else {\n            results.helperPromptText = null;\n        }\n\n        results.currentSuggestions = d.completion_objects\n            .map(suggestion => ({\n                name: suggestion.title,\n                key: suggestion.key,\n                border_color: Sefaria.palette.refColor(suggestion.key)\n            }))\n        return results;\n    }\n\n    const selectedCallback = () => {\n          insertSource(editor, inputValue)\n    }\n\n\n    if (inputType == \"media\") {\n        return (\n            <div className=\"addInterfaceInput mediaInput\" title=\"We can process YouTube and SoundCloud links, and hosted mp3's and images\" onClick={(e)=> {e.stopPropagation()}}>\n                <input\n                    type=\"text\"\n                    placeholder={Sefaria._(\"Paste a link to an image, video, or audio\")}\n                    className=\"serif\"\n                    onClick={(e)=> {e.stopPropagation()}}\n                    onChange={(e) => onMediaChange(e)}\n                    value={inputValue}\n                    size={100}\n                />\n                {showAddMediaButton ? <button className=\"button small\" onClick={(e) => {\n                    addMedia()\n                }}>Add Media</button> : null}\n            </div>\n        )\n    }\n\n    else if (inputType === \"source\") {\n        return (\n            <Autocompleter\n                selectedCallback={selectedCallback}\n                getSuggestions={getSuggestions}\n                inputValue={inputValue}\n                changeInputValue={setInputValue}\n                inputPlaceholder=\"Search for a Text or Commentator.\"\n                buttonTitle=\"Add Source\"\n                autocompleteClassNames=\"addInterfaceInput\"\n                showSuggestionsOnSelect={true}\n            />)\n    }\n\n    else {return(null)}\n\n}\n\nconst AddInterface = ({ attributes, children, element }) => {\n    const editor = useSlate();\n    const [active, setActive] = useState(false)\n    const [itemToAdd, setItemToAdd] = useState(null)\n\n    const resetInterface = () => {\n        setActive(false);\n        setItemToAdd(null);\n    }\n\n\n    const toggleEditorAddInterface = (e) => {\n        setActive(!active)\n        setItemToAdd(null);\n\n    }\n    const addInterfaceClasses = {\n        active: active,\n        editorAddInterface: 1,\n    };\n\n    const addSourceClicked = (e) => {\n        e.stopPropagation();\n        setItemToAdd('source');\n          // Timeout required b/c it takes a moment for react to rerender before focusing on the new input\n          setTimeout(() => {\n              document.querySelector(\".addInterfaceInput input\").focus()\n          }, 100);\n\n    }\n\n    const addMediaClicked = (e) => {\n        e.stopPropagation();\n        setItemToAdd(\"media\");\n          // Timeout required b/c it takes a moment for react to rerender before focusing on the new input\n          setTimeout(() => {\n              document.querySelector(\".addInterfaceInput input\").focus()\n          }, 100);\n    }\n\n    const addImageClicked = (e) => {\n        e.stopPropagation();\n        setItemToAdd(null);\n        setActive(!active)\n    }\n    const fileInput = useRef(null);\n\n    const uploadImage = (imageData) => {\n        const formData = new FormData();\n        formData.append('file', imageData.replace(/data:image\\/(jpe?g|png|gif);base64,/, \"\"));\n        // formData.append('file', imageData);\n\n        $.ajax({\n            url: Sefaria.apiHost + \"/api/sheets/upload-image\",\n            type: 'POST',\n            data: formData,\n            contentType: false,\n            processData: false,\n            success: function(data) {\n                console.log(data.url)\n                insertMedia(editor, data.url)\n            },\n            error: function(e) {\n                console.log(\"photo upload ERROR\", e);\n            }\n        });\n    };\n\n    const onFileSelect = (e) => {\n        const file = fileInput.current.files[0];\n        if (file == null)\n        return;\n            if (/\\.(jpe?g|png|gif)$/i.test(file.name)) {\n                const reader = new FileReader();\n\n                reader.addEventListener(\"load\", function() {\n                  uploadImage(reader.result);\n                }, false);\n\n                reader.addEventListener(\"onerror\", function() {\n                  alert(reader.error);\n                }, false);\n\n                reader.readAsDataURL(file);\n            } else {\n              alert('not an image');\n            }\n    }\n\n    return (\n      <div role=\"button\" title={active ? \"Close menu\" : \"Add a source, image, or other media\"} contentEditable={!active} suppressContentEditableWarning={true} aria-label={active ? \"Close menu\" : \"Add a source, image, or other media\"} className={classNames(addInterfaceClasses)} onClick={(e) => toggleEditorAddInterface(e)}>\n          {itemToAdd == null ? <>\n              <div role=\"button\" title={Sefaria._(\"Add a source\")} aria-label=\"Add a source\" className=\"editorAddInterfaceButton\" contentEditable={false} onClick={(e) => addSourceClicked(e)} id=\"addSourceButton\"></div>\n              <div role=\"button\" title={Sefaria._(\"Add an image\")} aria-label=\"Add an image\" className=\"editorAddInterfaceButton\" contentEditable={false} onClick={(e) => addImageClicked(e)} id=\"addImageButton\">\n                  <label htmlFor=\"addImageFileSelector\" id=\"addImageFileSelectorLabel\"></label>\n              </div>\n              <input id=\"addImageFileSelector\" type=\"file\" style={{ display: \"none\"}} onChange={onFileSelect} ref={fileInput} />\n              <div role=\"button\" title={Sefaria._(\"Add media\")} aria-label=\"Add media\" className=\"editorAddInterfaceButton\" contentEditable={false} onClick={(e) => addMediaClicked(e)} id=\"addMediaButton\"></div>\n          </> :\n\n              <AddInterfaceInput\n                inputType={itemToAdd}\n                resetInterface={resetInterface}\n              />\n\n          }\n          <div className=\"cursorHolder\" contentEditable={true} suppressContentEditableWarning={true}>{children}</div>\n      </div>\n    )\n}\n\nconst Element = (props) => {\n    const { attributes, children, element } = props;\n    const sheetItemClasses = {\n        sheetItem: 1,\n        empty: !(Node.string(element)),\n        highlight: (useSlate().highlightedNode === (element.node ? element.node.toString() : null))\n    };\n\n    switch (element.type) {\n        case 'spacer':\n          const spacerSelected = useSelected();\n          const spacerClasses = {\n            spacerSelected: spacerSelected,\n            spacer: 1,\n            empty: 1\n          }\n          return (\n            <div className={classNames(spacerClasses)} {...attributes}>\n              {spacerSelected && document.getSelection().isCollapsed ?  <AddInterface {...props} /> : <>{children}</>}\n            </div>\n          );\n        case 'SheetSource':\n            return (\n              <BoxedSheetElement {...props} divineName={useSlate().divineNames} />\n            );\n\n        case 'SheetOutsideBiText':\n            return (\n              <BoxedSheetElement {...props} {...attributes} divineName={useSlate().divineNames} />\n            );\n\n\n        case 'SheetComment':\n            return (\n              <div className={classNames(sheetItemClasses)} {...attributes} data-sheet-node={element.node}>\n                <div className=\"SheetComment segment\" {...attributes}>\n                    {children}\n                </div>\n                <div className=\"clearFix\"></div>\n              </div>\n            );\n        case 'SheetOutsideText':\n                const SheetOutsideTextClasses = `SheetOutsideText segment ${element.lang}`;\n                return (\n                  <div className={classNames(sheetItemClasses)} {...attributes} data-sheet-node={element.node}>\n                    <div className={SheetOutsideTextClasses} {...attributes}>\n                        {children}\n                    </div>\n                    <div className=\"clearFix\"></div>\n                  </div>\n            );\n\n\n        case 'SheetMedia':\n            let mediaComponent\n            let vimeoRe = /^.*(vimeo\\.com\\/)((channels\\/[A-z]+\\/)|(groups\\/[A-z]+\\/videos\\/)|(video\\/))?([0-9]+)/;\n            if (element.mediaUrl.match(/\\.(jpeg|jpg|gif|png)$/i) != null) {\n              mediaComponent = <div className=\"SheetMedia media\"><img className=\"addedMedia\" src={element.mediaUrl} />{children}</div>\n            }\n            else if (element.mediaUrl.match(/https?:\\/\\/www\\.youtube\\.com\\/embed\\/.+?rel=0(&amp;|&)showinfo=0$/i) != null) {\n              mediaComponent = <div className=\"media fullWidth SheetMedia\"><div className=\"youTubeContainer\"><iframe width=\"100%\" height=\"100%\" src={element.mediaUrl} frameBorder=\"0\" allowFullScreen></iframe>{children}</div></div>\n            }\n            else if (vimeoRe.exec(element.mediaUrl) !== null) {\n                mediaComponent = <div className=\"SheetMedia media fullWidth\"><iframe width=\"100%\" height=\"315\" src={element.mediaUrl} frameborder=\"0\" allow=\"autoplay; fullscreen\" allowfullscreen>{children}</iframe></div>;\n            }\n            else if (element.mediaUrl.match(/^https?:\\/\\/open\\.spotify\\.com\\/embed\\/\\w+\\/\\w+/i) != null) {\n                mediaComponent = <div className=\"SheetMedia media fullWidth\"><iframe width=\"100%\" height=\"380\" scrolling=\"no\" frameBorder=\"no\" src={element.mediaUrl}></iframe>{children}</div>\n            }\n            else if (element.mediaUrl.match(/https?:\\/\\/w\\.soundcloud\\.com\\/player\\/\\?url=.*/i) != null) {\n              mediaComponent = <div className=\"SheetMedia media fullWidth\"><iframe style={{ border: '0', width: '100%', height: '120px' }} scrolling=\"no\" frameBorder=\"no\" src={element.mediaUrl}></iframe>{children}</div>\n            } else if (element.mediaUrl.match(/^https?:\\/\\/bandcamp.com\\/EmbeddedPlayer(\\/\\w+\\=\\w+)+\\/?/i)) {\n                mediaComponent = <div className=\"SheetMedia media fullWidth\"><iframe width=\"100%\" height=\"120\" scrolling=\"no\" frameBorder=\"no\" src={element.mediaUrl}></iframe>{children}</div>\n            }\n            else if (element.mediaUrl.match(/\\.(mp3)$/i) != null) {\n              mediaComponent= <div className=\"SheetMedia media fullWidth\"><audio src={element.mediaUrl} type=\"audio/mpeg\" controls>Your browser does not support the audio element.</audio>{children}</div>\n            }\n            else {\n              mediaComponent = <div className=\"SheetMedia media fullWidth\">{children}</div>\n            }\n\n            return (\n              <div className={classNames(sheetItemClasses)} {...attributes} data-sheet-node={element.node}>\n                {mediaComponent}\n                <div className=\"clearFix\"></div>\n              </div>\n            );\n\n        case 'he':\n            const heSelected = useSelected();\n            const heEditable = useSlate().edittingSource;\n            const heClasses = {he: 1, editable: heEditable, selected: heSelected };\n            return (\n                <div className={classNames(heClasses)}>\n                    {children}\n                </div>\n            );\n        case 'en':\n            const enSelected = useSelected();\n            const enEditable = useSlate().edittingSource;\n            const enClasses = {en: 1, editable: enEditable, selected: enSelected };\n            return (\n                <div className={classNames(enClasses)}>\n                    {children}\n                </div>\n            );\n        case 'SheetContent':\n            return (\n                <div className=\"text editorContent\" {...attributes}>\n                    {children}\n                </div>\n            );\n        case 'TextRef':\n            return (\n              <div className=\"ref\" contentEditable={false} style={{ userSelect: 'none' }}>{children}</div>\n            )\n        case 'SourceContentText':\n            return (\n              <div className=\"sourceContentText\">{children}</div>\n            )\n        case 'paragraph':\n            const pClasses = {center: element[\"text-align\"] == \"center\" };\n            return (\n                <div className={classNames(pClasses)} {...attributes}>\n                    {element.loading ? <div className=\"sourceLoader\"></div> : null}\n                    {children}\n                </div>\n            );\n        case 'bulleted-list':\n            return (\n                <ul>{children}</ul>\n            );\n        case 'numbered-list':\n            return (\n                <ol>{children}</ol>\n            );\n\n        case 'list-item':\n            return (\n                <li>{children}</li>\n            );\n        case 'header': {\n            return <h1 className=\"serif\" {...attributes}><span>{children}</span></h1>\n        }\n        case 'link':\n          return (\n            <Link {...props} />\n          )\n        case 'table':\n          return (\n            <table>\n              <tbody {...attributes}>{children}</tbody>\n            </table>\n          )\n        case 'table-row':\n          return <tr {...attributes}>{children}</tr>\n        case 'table-cell':\n          return <td {...attributes}>{children}</td>\n        case 'horizontal-line':\n          return <>{children}<hr contentEditable={false} style={{ userSelect: 'none' }} /></>\n        default:\n            return <div>{children}</div>\n    }\n\n}\n\nconst getClosestSheetElement = (editor, path, elementType) => {\n    for(const node of Node.ancestors(editor, path)) {\n        if (node[0].type == elementType) {\n            return node;\n            break\n        }\n    }\n    return(null);\n}\n\nconst activeSheetSources = editor => {\n  return Array.from(Editor.nodes(editor, {\n    at: editor.selection,\n    match: n => n.type === \"SheetSource\"\n  }));\n}\n\nconst getNextSheetItemPath = (SheetItemPath) => {\n    let path = SheetItemPath;\n    const newLastNode = path.pop() + 1\n    path.push(newLastNode);\n    return path\n};\n\nasync function getRefInText(editor, returnSourceIfFound) {\n\n  const closestSheetOutsideText = getClosestSheetElement(editor, editor.selection.focus.path, \"SheetOutsideText\")\n  if (!closestSheetOutsideText) {return {}}\n\n  const paragraphsToCheck = Array.from(Editor.nodes(editor, {\n    at: closestSheetOutsideText[1],\n    match: n => n.type === \"paragraph\"\n  }));\n\n  for (const i of paragraphsToCheck) {\n    const initQuery = Node.string(i[0]);\n    const paragraphPath = i[1]\n    const match = (initQuery.match(/^.+|\\n.+|^$/g));\n    if (!match) {continue}\n\n    for (const query of match) {\n      if (query.length > 50 || query.trim() == \"\") {continue}\n\n      const ref = await Sefaria.getName(query.replace(/[\\.:]$/, \"\"))\n      .then(d => {  return d    });\n\n      const selectDistance = query.replace(\"\\n\",\"\").length;\n\n      if (ref[\"is_ref\"]) {\n        for (const [node, path] of Node.texts(i[0])) {\n          Transforms.setNodes(editor, { isRef: true }, {at: i[1].concat(path)});\n        }\n\n\n        if(returnSourceIfFound && (ref[\"is_segment\"] || ref[\"is_section\"])) {\n          Transforms.select(editor, Editor.end(editor, paragraphPath));\n          Transforms.move(editor, { distance: selectDistance, unit: 'character', reverse: true, edge: 'anchor' })\n          Editor.removeMark(editor, \"isRef\")\n          Transforms.delete(editor);\n          insertSource(editor, ref[\"ref\"])\n        }\n        return ref\n      }\n\n      else {\n        for (const [node, path] of Node.texts(i[0])) {\n          Transforms.setNodes(editor, { isRef: false }, {at: i[1].concat(path)});\n        }\n      }\n    }\n  }\n  return {}\n}\n\n\nconst withSefariaSheet = editor => {\n    const {insertData, insertText, insertBreak, isVoid, normalizeNode, deleteBackward, deleteForward, setFragmentData} = editor;\n\n    //Hack to override this built-in which often returns null when programmatically selecting the whole SheetSource\n    Transforms.deselect = () => {\n    };\n\n    editor.isVoid = element => {\n        return (voidElements.includes(element.type)) ? true : isVoid(element)\n    };\n\n    editor.deleteForward = () => {\n        deleteForward(editor);\n    }\n\n    editor.deleteBackward = () => {\n        const atStartOfDoc = Point.equals(editor.selection.focus, Editor.start(editor, [0, 0]));\n        const atEndOfDoc = Point.equals(editor.selection.focus, Editor.end(editor, [0, 0]));\n        if (atStartOfDoc) {\n            return\n        }\n\n        //if selected element is sheet source, delete it as normal\n        if (getClosestSheetElement(editor, editor.selection.focus.path, \"SheetSource\")) {\n            deleteBackward();\n            return\n        } else {\n            //check to see if we're in a spacer to apply special delete rules\n            let inSpacer = false;\n            if (getClosestSheetElement(editor, editor.selection.focus.path, \"spacer\")) {\n                inSpacer = true;\n            }\n\n            if (atEndOfDoc && inSpacer) {\n                Transforms.move(editor, {reverse: true})\n                return\n            }\n\n            //we do a dance to see if we'll accidently delete a sheetsource and select it instead if we will\n            Transforms.move(editor, {reverse: true})\n            if (getClosestSheetElement(editor, editor.selection.focus.path, \"SheetSource\")) {\n                //deletes the extra spacer space that would otherwise be left behind\n                if (inSpacer) {\n                    Transforms.move(editor, {distance: 2});\n                    if (getClosestSheetElement(editor, editor.selection.focus.path, \"SheetSource\")) {\n                            Transforms.move(editor, {reverse: true, distance: 2})\n                    }\n                    else {\n                        deleteBackward();\n                    }\n                }\n                return\n            } else {\n                deleteForward(editor);\n                return;\n            }\n        }\n    };\n\n    editor.setFragmentData = (data) => {\n        setFragmentData(data);\n        //dance required to ensure a cut source is properly deleted when the delete part of cut is fired\n        if (editor.cuttingSource) {\n            Transforms.move(editor, {distance: 1, unit: 'character', edge: 'anchor'});\n            Transforms.move(editor, {distance: 1, unit: 'character', reverse: true, edge: 'focus'});\n            editor.cuttingSource = false\n        }\n    };\n\n    editor.insertBreak = () => {\n\n        // if enter in middle of line in SheetOutsideText insert soft break\n        if (getClosestSheetElement(editor, editor.selection.focus.path, \"SheetOutsideText\") &&\n            !Point.equals(editor.selection.focus, Editor.end(editor, editor.selection.focus.path))) {\n            insertBreak();\n            return\n        }\n\n        if (getClosestSheetElement(editor, editor.selection.focus.path, \"header\")) {\n            insertBreak();\n            const curHeaderPath = getClosestSheetElement(editor, editor.selection.focus.path, \"header\")[1]\n            Transforms.setNodes(editor, {type: \"SheetOutsideText\"}, {at: curHeaderPath});\n            return\n        }\n\n        const isListItem = editor => {\n          const [list] = Editor.nodes(editor, { match: n => LIST_TYPES.includes(!Editor.isEditor(n) && SlateElement.isElement(n) && n.type)})\n          return list\n        }\n\n        const isEmpty = editor => {\n          const curNode = Node.get(editor, editor.selection.focus.path);\n          return Node.string(curNode) === \"\"\n        }\n\n\n        if (isListItem(editor)) {\n            if (isEmpty(editor)) {\n                Transforms.insertNodes(editor, {type: 'spacer', children: [{text: \"\"}]});\n                deleteBackward()\n            }\n\n            else if (isLinkActive(editor)) {\n                // insert an extra space on an active link before creating new line. It prevents link from continuing to next li\n                editor.insertText(' ')\n                insertBreak();\n                editor.removeLink()\n            }\n\n            else {\n                insertBreak();\n            }\n            removeMarks(editor)\n            return\n        }\n\n        getRefInText(editor, true).then(query => {\n            if (query[\"is_segment\"] || query[\"is_section\"]) {\n                return\n            }\n            Transforms.insertNodes(editor, {type: 'spacer', children: [{text: \"\"}]});\n            checkAndFixDuplicateSheetNodeNumbers(editor);\n            return;\n\n        })\n    };\n\n\n    editor.insertData = data => {\n        if (editor.dragging && getClosestSheetElement(editor, editor.selection.focus.path, \"spacer\")) {\n            editor.insertText(' ') // this is start of dance that's required to ensure that dnd data gets moved properly\n            insertData(data)\n            Transforms.move(editor, {reverse: true}) // dance part ii\n            deleteBackward(); // dance finale.\n            Editor.normalize(editor, { force: true })\n        }\n        else if (data.getData('text/plain').startsWith('http')) {\n            let url;\n            try {\n              url = new URL(data.getData('text/plain'));\n              if (url.hostname.indexOf(\"www.sefaria.org\") === 0) {\n                  $.ajax({\n                      url: url,\n                      async: true,\n                      success: function (data) {\n                          const matches = data.match(/<title>(.*?)<\\/title>/);\n                          if (!matches) {\n                              console.log('no matches')\n                              console.log(url)\n                              Transforms.insertText(editor, url.href)\n                              return\n                          }\n                          const link = editor.createLinkNode(url.href, matches[1])\n                          Transforms.insertText(editor, \" \") // this is start of dance that's required to ensure that link gets inserted properly\n                          const initLoc = editor.selection\n                          Transforms.insertNodes(editor, link);\n                          Transforms.select(editor, initLoc); // dance ii\n                          Transforms.move(editor, { distance: 1, unit: 'character', reverse: true }) // dance dance dance\n                          Transforms.delete(editor); // end of dance\n                      },\n                      error: function (e) {\n                          Transforms.insertText(editor, url.href)\n                      }\n                  });\n              }\n\n              else {\n                  console.log('not sef link')\n                  insertData(data)\n              }\n\n            } catch {\n                  insertData(data)\n            }\n        }\n\n        else {\n            insertData(data)\n        }\n        editor.dragging = false\n        checkAndFixDuplicateSheetNodeNumbers(editor);\n    };\n\n\n    editor.normalizeNode = entry => {\n        const [node, path] = entry;\n\n        const normalizers = [\n            {name:\"ensureNoNestedSheetsinSheet\", function: editor.ensureNoNestedSheetsinSheet},\n            {name: \"ensureNoNestedSheetContents\", function: editor.ensureNoNestedSheetContents},\n            {name: \"decorateSheetOutsideText\", function: editor.decorateSheetOutsideText},\n            {name: \"wrapSheetOutsideTextChildren\", function: editor.wrapSheetOutsideTextChildren},\n            {name: \"mergeSheetOutsideTextBlocks\", function: editor.mergeSheetOutsideTextBlocks},\n            {name: \"convertEmptyOutsideTextIntoSpacer\", function: editor.convertEmptyOutsideTextIntoSpacer},\n            {name: \"convertEmptyParagraphToSpacer\", function: editor.convertEmptyParagraphToSpacer},\n            {name: \"wrapSheetContentElements\", function: editor.wrapSheetContentElements},\n            {name: \"ensureEditableSpaceAtTopAndBottom\", function: editor.ensureEditableSpaceAtTopAndBottom},\n            {name: \"replaceSpacerWithOutsideText\", function: editor.replaceSpacerWithOutsideText},\n            {name: \"liftSpacer\", function: editor.liftSpacer},\n            {name: \"ensureNodeId\", function: editor.ensureNodeId},\n            {name: \"liftSheetElement\", function: editor.liftSheetElement},\n            {name: \"ensureEditableSpaceBeforeAndAfterBoxedElements\", function: editor.ensureEditableSpaceBeforeAndAfterBoxedElements},\n            {name: \"onlyTextAndRefsInBoxedElements\", function: editor.onlyTextAndRefsInBoxedElements},\n            {name: \"addPlaceholdersForEmptyText\", function: editor.addPlaceholdersForEmptyText},\n            {name: \"liftHeader\", function: editor.liftHeader},\n            {name: \"ensureSingleSpacerBetweenBoxedSources\", function: editor.ensureSingleSpacerBetweenBoxedSources}\n        ];\n\n        for (let normalizer of normalizers) {\n            try {\n                const changeWasMade = normalizer[\"function\"](node, path);\n                if (changeWasMade) return;\n            }\n            catch (e) {\n                console.log(`Error at ${normalizer[\"name\"]}`, e )\n                console.log(editor.children[0,0])\n            }\n        }\n        // Fall back to the original `normalizeNode` to enforce other constraints.\n        normalizeNode(entry);\n    };\n\n    // Normalization functions take (node, path) and return true if they make a change.\n    // They are registered in editor.normalizeNode\n\n    editor.ensureNoNestedSheetsinSheet = (node, path) => {\n        if (node.type === \"Sheet\" && Path.parent(path).length > 0) {\n            Transforms.unwrapNodes(editor, {at: path});\n            return true\n        }\n    }\n\n    editor.ensureNoNestedSheetContents = (node, path) => {\n        if (node.type === \"SheetContent\" && Node.parent(editor, path).type !== \"Sheet\") {\n            Transforms.unwrapNodes(editor, {at: path});        }\n    }\n\n    editor.liftHeader = (node, path) => {\n        if (node.type === \"header\") {\n            if (Node.parent(editor, path).type !== \"SheetContent\") {\n                Transforms.setNodes(editor, {node: editor.children[0].nextNode}, {at: path});\n                incrementNextSheetNode(editor)\n                Transforms.liftNodes(editor, {at: path});\n                return true;\n            }\n        }\n    }\n\n    editor.decorateSheetOutsideText = (node, path) => {\n        // Autoset language of an outside text for proper RTL/LTR handling\n        if (node.type === \"SheetOutsideText\") {\n            const content = Node.string(node);\n            const lang = Sefaria.hebrew.isHebrew(content) ? 'he' : 'en';\n            Transforms.setNodes(editor, {lang: lang}, {at: path});\n        }\n    };\n\n    editor.wrapSheetOutsideTextChildren = (node, path) => {\n        // Ensure all texts in SheetOutsideText are wrapped in paragraph block\n        if (node.type === \"SheetOutsideText\") {\n\n            //solve issue of children content\n            for (const [child, childPath] of Node.children(editor, path)) {\n\n                //if there's raw text, wrap it in a paragraph\n                if (child.text) {\n                    Transforms.wrapNodes(\n                        editor,\n                        {\n                            type: \"paragraph\",\n                            children: [child],\n                        },\n                        {at: childPath}\n                    );\n                    return true;\n                }\n            }\n        }\n    };\n\n    editor.mergeSheetOutsideTextBlocks = (node, path) => {\n        // Merge adjacent SheetOutsideText blocks into one\n        if (node.type === \"SheetOutsideText\") {\n\n            //merge with adjacent outside texts:\n            const nodeAbove = getNodeAbove(path, editor);\n            const nodeBelow = getNodeBelow(path, editor);\n\n            if (nodeAbove.node && nodeAbove.node.type === \"SheetOutsideText\") {\n                Transforms.mergeNodes(editor, {at: path});\n                return true;\n            }\n            if (nodeBelow.node && nodeBelow.node.type === \"SheetOutsideText\") {\n                Transforms.mergeNodes(editor, {at: nodeBelow.path})\n                return true;\n            }\n        }\n    };\n\n    editor.convertEmptyParagraphToSpacer = (node, path) => {\n        if (node.type === \"paragraph\") {\n            if (Node.string(node) === \"\" && node.children.length <= 1) {\n                Transforms.setNodes(editor, {type: \"spacer\"}, {at: path});\n            }\n        }\n    }\n\n    editor.convertEmptyOutsideTextIntoSpacer = (node, path) => {\n        if (node.type === \"SheetOutsideText\") {\n            if (Node.string(node) === \"\" && node.children.length <= 1) {\n                Transforms.setNodes(editor, {type: \"spacer\"}, {at: path});\n            }\n        }\n    };\n\n    // If sheet elements are in sheetcontent and not wrapped in sheetItem, wrap it.\n    editor.wrapSheetContentElements = (node, path) => {\n        if (node.type === \"SheetContent\") {\n            for (const [child, childPath] of Node.children(editor, path)) {\n                // If it's raw text, covert to SheetOutsideText\n                if (child.hasOwnProperty('text')) {\n\n                    const fragmentText = child.text;\n                    const fragment = defaultEmptyOutsideText(editor.children[0].nextNode, fragmentText);\n\n                    Transforms.delete(editor, {at: childPath});\n                    Transforms.insertNodes(editor, fragment, {at: childPath});\n                    incrementNextSheetNode(editor);\n                    return true;\n\n                }\n\n                if (LIST_TYPES.includes(child.type)) {\n                    Transforms.wrapNodes(editor,\n                        {\n                            type: \"paragraph\",\n                            children: [child],\n                        }\n                        , {at: childPath});\n                    return true;\n                }\n\n                // If it's a paragraph, covert to SheetOutisdeText\n                if (child.type === \"paragraph\") {\n                    if (Node.string(child) !== \"\") {\n\n                        Transforms.wrapNodes(editor,\n                            {\n                                type: \"SheetOutsideText\",\n                                children: [child],\n                            }\n                            , {at: childPath});\n                        return true;\n                    } else {\n                        // It's not text or paragraph.  It's probably a null element.  Nuke it.\n                        Transforms.delete(editor, {at: childPath});\n                        return true;\n                    }\n                }\n            }\n        }\n    };\n\n    editor.ensureEditableSpaceAtTopAndBottom = (node, path) => {\n        if (node.type === \"SheetContent\") {\n            //ensure there's always an editable space for a user to type at end and top of sheet\n            const lastSheetItem = node.children[node.children.length - 1];\n            if (lastSheetItem.type !== \"spacer\" && !NO_SPACER_NEEDED_TYPES.includes(lastSheetItem.type)) {\n                Transforms.insertNodes(editor, {\n                    type: 'spacer',\n                    children: [{text: \"\"}]\n                }, {at: Editor.end(editor, [0, 0])});\n                return true;\n            }\n\n            const firstSheetItem = node.children[0];\n            if (firstSheetItem.type !== \"spacer\" && !NO_SPACER_NEEDED_TYPES.includes(firstSheetItem.type)) {\n                console.log(firstSheetItem)\n                Transforms.insertNodes(editor, {type: 'spacer', children: [{text: \"\"}]}, {at: [0, 0, 0]});\n                return true;\n            }\n        }\n    };\n\n    //Convert a spacer to an outside text if there's text inside it.\n    editor.replaceSpacerWithOutsideText = (node, path) => {\n        if (node.type === \"spacer\") {\n            if (Node.string(node) !== \"\") {\n                Transforms.setNodes(editor, {type: \"SheetOutsideText\", node: node.node}, {at: path});\n            }\n        }\n    };\n\n    //If a spacer gets stuck inside some other element, lift it up to top level\n    editor.liftSpacer = (node, path) => {\n        if (node.type === \"spacer\") {\n            if (Node.parent(editor, path).type !== \"SheetContent\") {\n                Transforms.liftNodes(editor, {at: path});\n                return true;\n            }\n        }\n    };\n\n    // Ensure all SheetItems have node #\n    editor.ensureNodeId = (node, path) => {\n        const sheetElementTypes = Object.values(sheet_item_els);\n\n        if (sheetElementTypes.includes(node.type)) {\n            if (!node.node) {\n                Transforms.setNodes(editor, {node: editor.children[0].nextNode}, {at: path});\n                incrementNextSheetNode(editor)\n            }\n        }\n    }\n\n    // If a sheet element gets stuck inside some other element, lift it up to top level\n    editor.liftSheetElement = (node, path) => {\n        // SheetSource, SheetComment, SheetOutsideText, SheetOutsideBiText, SheetMedia\n        const sheetElementTypes = Object.values(sheet_item_els);\n\n        if (sheetElementTypes.includes(node.type)) {\n            //Any nested sheet element should be lifted\n            if (Node.parent(editor, path).type !== \"SheetContent\") {\n                Transforms.liftNodes(editor, {at: path});\n                return true;\n            }\n        }\n    };\n\n    editor.ensureEditableSpaceBeforeAndAfterBoxedElements = (node, path) => {\n        if ([\"SheetSource\", \"SheetOutsideBiText\"].includes(node.type)) {\n\n            if (Node.parent(editor, path).children.length == 1) {return false}\n\n            const nextPath = Path.next(path)\n            const prevPath = Path.previous(path);\n\n            const nextNode = Node.get(editor, nextPath)\n            const prevNode = Node.get(editor, prevPath)\n\n            let addedSpacer = false\n            if (nextNode.type !== \"spacer\" && nextNode.type !== \"SheetOutsideText\") {\n                Transforms.insertNodes(editor, {type: 'spacer', children: [{text: \"\"}]}, {at: nextPath});\n                addedSpacer = true;\n            }\n            if (prevNode.type !== \"spacer\") {\n                Transforms.insertNodes(editor, {type: 'spacer', children: [{text: \"\"}]}, {at: path});\n                addedSpacer = true;\n            }\n\n            return addedSpacer\n        }\n\n        else if (node.type === \"SheetOutsideText\") {\n            try {\n                const nextNode = Node.get(editor, Path.next(path))\n\n                if ([\"SheetSource\", \"SheetOutsideBiText\"].includes(nextNode.type)) {\n                    Transforms.insertNodes(editor, {type: 'spacer', children: [{text: \"\"}]}, {at: Path.next(path)});\n                    return true\n                }\n            }\n            catch (e) {\n                return false\n            }\n        }\n    };\n\n    editor.ensureSingleSpacerBetweenBoxedSources = (node, path) => {\n        if (node.type === \"spacer\") {\n            try {\n                const nextPath = Path.next(path)\n                const prevPath = Path.previous(path);\n\n                const nextNode = Node.get(editor, nextPath)\n                const prevNode = Node.get(editor, prevPath)\n\n                const prevIsBoxed = [\"SheetSource\", \"SheetOutsideBiText\"].includes(prevNode.type)\n                const nextIsBoxed = [\"SheetSource\", \"SheetOutsideBiText\"].includes(nextNode.type)\n\n                if ((nextNode.type === \"spacer\" && prevIsBoxed) || (prevNode === \"spacer\" && nextIsBoxed)) {\n                    Transforms.delete(editor, {at: path})\n                    return true\n                }\n            }\n            catch {\n                return false\n            }\n        }\n    }\n\n    editor.onlyTextAndRefsInBoxedElements = (node, path) => {\n        if (node.type === \"he\" || node.type === \"en\") {\n            //only allow TextRef & SourceContentText in he or en\n            // if extra -- merge it with the previous element\n            if (node.children && node.children.length > 2) {\n                for (const [child, childPath] of Node.children(editor, path)) {\n                    if (![\"SourceContentText\", \"TextRef\"].includes(child.type)) {\n                        Transforms.mergeNodes(editor, {at: childPath});\n                        return true;\n                    }\n                }\n            }\n        }\n    };\n\n    // for he's or en's in a SheetSource, make sure that SourceContentText exists\n    editor.addPlaceholdersForEmptyText = (node, path) => {\n        if (node.type === \"he\" || node.type === \"en\") {\n\n            if (Node.parent(editor, path).type === \"SheetSource\") {\n                if (node.children && node.children.length < 2) {\n                    const insertPath = path.concat([1]);\n                    Transforms.insertNodes(editor, {\n                        type: \"SourceContentText\",\n                        children: parseSheetItemHTML('...')\n                    }, {at: insertPath});\n                    return true;\n                }\n            }\n        }\n    };\n\nreturn editor\n};\n\nconst incrementNextSheetNode = (editor) => {\n  Transforms.setNodes(editor, {nextNode: editor.children[0].nextNode + 1}, {at: [0]});\n}\n\nconst addItemToSheet = (editor, fragment) => {\n    incrementNextSheetNode(editor);\n    Transforms.insertNodes(editor, fragment);\n    Editor.normalize(editor, { force: true })\n};\n\n\n\nconst checkAndFixDuplicateSheetNodeNumbers = (editor) => {\n  let existingSheetNodes = []\n  for (const [child, childPath] of Node.children(editor, [0,0])) {\n    const sheetNode = child;\n    if (existingSheetNodes.includes(sheetNode.node)) {\n      Transforms.setNodes(editor, {node: editor.children[0].nextNode}, {at: childPath});\n      existingSheetNodes.push(editor.children[0].nextNode);\n      incrementNextSheetNode(editor)\n    }\n    else {\n      existingSheetNodes.push(sheetNode.node)\n    }\n  }\n}\n\nconst insertMedia = (editor, mediaUrl) => {\n  const fragment = {\n          type: \"SheetMedia\",\n          mediaUrl: mediaUrl,\n          node: editor.children[0].nextNode,\n          children: [{\n                  text: \"\"\n              }]\n  };\n  addItemToSheet(editor, fragment);\n  Transforms.move(editor);\n}\n\n\nfunction placed_segment_mapper(lang, segmented, includeNumbers, s) {\n    if (!s[lang]) {return \"\"}\n\n    let numStr = \"\";\n    if (includeNumbers) {\n        const num = (lang==\"he\") ? Sefaria.hebrew.encodeHebrewNumeral(s.number) : s.number;\n        numStr = \"<small>(\" + num + \")</small> \";\n    }\n    let str = \"<span class='segment'>\" + numStr + s[lang] + \"</span> \";\n    if (segmented) {\n        str = \"<p>\" + str + \"</p>\";\n    }\n    str = str.replace(/(<br\\/>)+/g, ' ')\n    return str;\n}\n\n\nconst insertSource = (editor, ref) => {\n    const path = editor.selection.anchor.path;\n\n    Transforms.setNodes(editor, { loading: true }, {at: path});\n\n    const nodeAbove = getNodeAbove(path, editor)\n    const nodeBelow = getNodeBelow(path, editor)\n\n    Sefaria.getText(ref, {stripItags: 1}).then(text => {\n        let segments = Sefaria.makeSegments(text, false);\n        segments = Sefaria.stripImagesFromSegments(segments);\n\n        let includeNumbers = $.inArray(\"Talmud\", text.categories) == -1;\n        includeNumbers = text.indexTitle === \"Pesach Haggadah\" ? false : includeNumbers;\n        const segmented = !(text.categories[0] in {\"Tanakh\": 1, \"Talmud\": 1});\n\n        const enText = segments.map(placed_segment_mapper.bind(this, \"en\", segmented, includeNumbers))\n            .filter(Boolean)\n            .join(\"\");\n        const heText = segments.map(placed_segment_mapper.bind(this, \"he\", segmented, includeNumbers))\n            .filter(Boolean)\n            .join(\"\");\n\n        let fragment = [{\n                type: \"SheetSource\",\n                node: editor.children[0].nextNode,\n                ref: text.ref,\n                heRef: text.heRef,\n                heText: parseSheetItemHTML(heText),\n                enText: parseSheetItemHTML(enText),\n                title: null,\n                children: [\n                    {text: \"\"},\n                ]\n        }];\n\n        if (!(nodeBelow.node && (nodeBelow.node.type == \"SheetOutsideText\" || nodeBelow.node.type == \"paragraph\" ) )) {\n          fragment.push({type: 'spacer', children: [{text: \"\"}]})\n        }\n        Transforms.setNodes(editor, { loading: false }, { at: path });\n        addItemToSheet(editor, fragment);\n        checkAndFixDuplicateSheetNodeNumbers(editor)\n        if (nodeAbove.node && (nodeAbove.node.type == \"SheetOutsideText\" || nodeAbove.node.type == \"paragraph\" ) ) {\n          Transforms.delete(editor, {at: path})\n        }\n\n\n        Transforms.move(editor, { unit: 'block', distance: 1 })\n    });\n};\n\n\nconst withTables = editor => {\n  const { deleteBackward, deleteForward, insertBreak } = editor\n\n  editor.deleteBackward = unit => {\n    const { selection } = editor\n\n    if (selection && Range.isCollapsed(selection)) {\n      const [cell] = Editor.nodes(editor, {\n        match: n =>\n          !Editor.isEditor(n) &&\n          SlateElement.isElement(n) &&\n          n.type === 'table-cell',\n      })\n\n      if (cell) {\n        const [, cellPath] = cell\n        const start = Editor.start(editor, cellPath)\n\n        if (Point.equals(selection.anchor, start)) {\n          return\n        }\n      }\n    }\n\n    deleteBackward(unit)\n  }\n\n  editor.deleteForward = unit => {\n    const { selection } = editor\n\n    if (selection && Range.isCollapsed(selection)) {\n      const [cell] = Editor.nodes(editor, {\n        match: n =>\n          !Editor.isEditor(n) &&\n          SlateElement.isElement(n) &&\n          n.type === 'table-cell',\n      })\n\n      if (cell) {\n        const [, cellPath] = cell\n        const end = Editor.end(editor, cellPath)\n\n        if (Point.equals(selection.anchor, end)) {\n          return\n        }\n      }\n    }\n\n    deleteForward(unit)\n  }\n\n  editor.insertBreak = () => {\n    const { selection } = editor\n\n    if (selection) {\n      const [table] = Editor.nodes(editor, {\n        match: n =>\n          !Editor.isEditor(n) &&\n          SlateElement.isElement(n) &&\n          n.type === 'table',\n      })\n\n      if (table) {\n        return\n      }\n    }\n\n    insertBreak()\n  }\n\n  return editor\n}\n\nconst Link = ({ attributes, children, element }) => {\n  const editor = useSlate();\n  const {selection} = editor;\n\n  const focused = useFocused();\n  const selected = useSelected();\n  const [linkPopoverVisible, setLinkPopoverVisible] = useState(false);\n  const [urlValue, setUrlValue] = useState(element.url);\n  const [showLinkRemoveButton, setShowLinkRemoveButton] = useState(false);\n  const [currentSlateRange, setCurrentSlateRange] = useState(editor.linkOverrideSelection);\n  const [editingUrl, setEditingUrl] = useState(false);\n\n\n  let showLinkHoverTimeout;\n  let hideLinkHoverTimeout;\n\n    const onHover = (e, url) => {\n        clearTimeout(hideLinkHoverTimeout)\n        if (!editor.selection || editor.linkOverrideSelection) {return}\n        let range = document.createRange();\n        range.selectNode(e.target);\n        setCurrentSlateRange(ReactEditor.toSlateRange(editor, range, {exactMatch: false}))\n        showLinkHoverTimeout = setTimeout(function () {\n            Transforms.select(editor, currentSlateRange);\n            setLinkPopoverVisible(true)\n        }, 500, e);\n    }\n    const onBlur = (e, url) => {\n        if (!editingUrl) {\n            clearTimeout(showLinkHoverTimeout)\n            hideLinkHoverTimeout = setTimeout(function () {\n                setLinkPopoverVisible(false)\n                setCurrentSlateRange(null)\n            }, 500);\n        }\n    }\n\n    const xClicked = () => {\n        Transforms.select(editor, currentSlateRange);\n        editor.removeLink();\n        editor.showLinkOverride = false;\n        editor.linkOverrideSelection = null;\n        // Transforms.collapse(editor);\n    }\n\n    const closePopup = (e) => {\n        setEditingUrl(false)\n        setLinkPopoverVisible(false)\n        if (e.target.value === \"\") {\n            Transforms.select(editor, currentSlateRange);\n            editor.removeLink();\n        }\n        editor.showLinkOverride = false;\n        editor.linkOverrideSelection = null;\n    }\n\n    const fixUrl = (s) => {\n        if (s == \"\") return\n        try {\n            let url = new URL(s)\n            return(url)\n        }\n        catch {\n            if(Sefaria.util.isValidEmailAddress(s)) {\n                return(`mailto:${s}`)\n            }\n            return(`http://${s}`)\n        }\n    }\n\n    const urlChange = (e) => {\n        const newUrl = e.target.value;\n        setUrlValue(newUrl)\n        const [node, linkPath] = Editor.above(editor, {at: currentSlateRange, match: n => n.type ===\"link\"})\n        Transforms.setNodes(editor, { url: fixUrl(newUrl) }, {at: linkPath});\n    }\n\n    const linkPopoverOpen = linkPopoverVisible || (editor.showLinkOverride && Path.isDescendant(editor.linkOverrideSelection.anchor.path, ReactEditor.findPath(editor, element)))\n\n  return (\n    <div\n        {...attributes}\n        className=\"element-link\"\n        onMouseEnter={(e) => onHover(e, element.url)}\n        onMouseLeave={(e) => onBlur(e, element.url)}\n    >\n        <a\n            href={element.url}\n            onMouseEnter={(e)=> {if (!linkPopoverOpen) {\n                setShowLinkRemoveButton(true)\n            }\n            }}\n        >\n            {children}\n        </a>\n\n      {/* Show popup on hover and also force it open when a new link is created  */}\n      {linkPopoverOpen ? (\n        <div className=\"popup\" contentEditable={false} onFocus={() => setEditingUrl(true)} onBlur={(e) => closePopup(e)}>\n          <input\n              type=\"text\"\n              value={urlValue}\n              placeholder={Sefaria._(\"Enter link URL\")}\n              className=\"sans-serif\"\n              onChange={(e) => urlChange(e)}\n          />\n            {showLinkRemoveButton ? <button onClick={() => xClicked()}>✕</button> : null}\n        </div>\n      ) : null }\n\n\n    </div>\n\n  )\n\n }\n\nconst withLinks = editor => {\n    const { isInline } = editor\n\n    editor.isInline = element => {\n        return element.type === 'link' ? true : isInline(element)\n    };\n\n    editor.createLinkNode = (href, text) => ({\n        type: \"link\",\n        url: href,\n        children: [{ text }]\n    });\n\n    editor.insertLink = (url) => {\n        if (!url) return;\n        const { selection } = editor;\n        const link = editor.createLinkNode(url, \"New Link\");\n        ReactEditor.focus(editor);\n        if (!!selection) {\n            const [parentNode, parentPath] = Editor.parent(\n                editor,\n                selection.focus?.path\n            );\n            // Remove the Link node if we're inserting a new link node inside of another\n            // link.\n            if (parentNode.type === \"link\") {\n                editor.removeLink(editor);\n            }\n            if (editor.isVoid(parentNode)) {\n                // Insert the new link after the void node\n                Transforms.insertNodes(editor, createParagraphNode([link]), {\n                    at: Path.next(parentPath),\n                    select: true\n                });\n            } else if (Range.isCollapsed(selection)) {\n                // Insert the new link in our last known location\n                Transforms.insertNodes(editor, link, { select: true });\n            } else {\n                // Wrap the currently selected range of text into a Link\n                Transforms.wrapNodes(editor, link, { split: true });\n                Transforms.collapse(editor, { edge: \"end\" });\n            }\n        } else {\n            return\n        }\n    };\n\n    editor.removeLink = () => {\n        Transforms.unwrapNodes(editor, {\n            match: (n) =>\n                !Editor.isEditor(n) && SlateElement.isElement(n) && n.type === \"link\"\n        });\n    };\n\n    return editor\n};\n\nconst isLinkActive = editor => {\n  const [link] = Editor.nodes(editor, { match: n => n.type === 'link' })\n  return !!link\n};\n\nconst wrapLink = (editor, url) => {\n  if (isLinkActive(editor)) {\n    unwrapLink(editor)\n  }\n\n  const { selection } = editor\n  const isCollapsed = selection && Range.isCollapsed(selection)\n  const link = {\n    type: 'link',\n    url,\n    children: isCollapsed ? [{ text: url }] : [],\n  };\n\n  if (isCollapsed) {\n    Transforms.insertNodes(editor, link)\n  } else {\n    Transforms.wrapNodes(editor, link, { split: true })\n    Transforms.collapse(editor, { edge: 'end' })\n  }\n};\n\nconst toggleFormat = (editor, format) => {\n  const isActive = isFormatActive(editor, format)\n\n  if (isActive) {\n    Editor.removeMark(editor, format)\n  } else {\n    Editor.addMark(editor, format, true)\n  }\n};\n\nconst isFormatActive = (editor, format, value=null) => {\n  const [match] = Editor.nodes(editor, {\n    match: n => n[format] === (value ? value : true),\n    mode: 'all',\n  });\n  return !!match\n};\n\nconst removeMarks = (editor) => {\n    editor.removeMark('italic');\n    editor.removeMark('bold');\n    editor.removeMark('underline');\n    editor.removeMark('big');\n    editor.removeMark('small');\n    editor.removeMark('superscript');\n    editor.removeMark('isRef');\n    editor.removeMark('color');\n    editor.removeMark('background-color');\n    editor.removeMark('text-align');\n}\n\n\nconst toggleBlock = (editor, format) => {\n  const isActive = isBlockActive(editor, format)\n  const isList = LIST_TYPES.includes(format)\n\n  Transforms.unwrapNodes(editor, {\n    match: n =>\n      LIST_TYPES.includes(\n        !Editor.isEditor(n) && SlateElement.isElement(n) && n.type\n      ),\n    split: true,\n  })\n  const newProperties = {\n    type: isActive ? 'paragraph' : isList ? 'list-item' : format,\n  }\n  Transforms.setNodes(editor, newProperties)\n\n  if (!isActive && isList) {\n    const block = { type: format, children: [] }\n    Transforms.wrapNodes(editor, block)\n  }\n}\n\nconst isBlockActive = (editor, format) => {\n  const [match] = Editor.nodes(editor, {\n    match: n =>\n      !Editor.isEditor(n) && SlateElement.isElement(n) && n.type === format,\n  })\n\n  return !!match\n}\n\n\nconst Leaf = ({attributes, children, leaf}) => {\n    if (leaf.bold) {\n        children = <strong>{children}</strong>\n    }\n    if (leaf.italic) {\n        children = <em>{children}</em>\n    }\n    if (leaf.underline) {\n        children = <u>{children}</u>\n    }\n    if (leaf.big) {\n        children = <big>{children}</big>\n    }\n    if (leaf.small) {\n        children = <small>{children}</small>\n    }\n    if (leaf.superscript) {\n        children = <sup>{children}</sup>\n    }\n    if (leaf.isRef) {\n        children = <span className=\"inlineTextRef\">{children}</span>\n    }\n    if (leaf.color) {\n      children = <span style={{color: leaf.color}}>{children}</span>\n    }\n    if (leaf[\"background-color\"]) {\n      children = <span style={{backgroundColor: leaf[\"background-color\"]}}>{children}</span>\n    }\n    if (leaf[\"text-align\"]) {\n      children = <span style={{textAlign: leaf[\"text-align\"]}}>{children}</span>\n    }\n\n    return <span {...attributes}>{children}</span>\n};\n\nconst HoverMenu = (opt) => {\n    const buttons = (opt[\"buttons\"])\n    const ref = useRef();\n    const [showHighlightColors, setShowHighlightColors] = useState(false);\n    const editor = useSlate();\n\n    useEffect(() => {\n        const el = ref.current;\n        const {selection} = editor;\n\n        if (!el) {\n            return\n        }\n\n\n        if (\n            !selection ||\n            !ReactEditor.isFocused(editor) ||\n            Range.isCollapsed(selection) ||\n            Editor.string(editor, selection) === '' ||\n            isLinkActive(editor)\n        ) {\n            el.removeAttribute('style');\n            return\n        }\n\n        const domSelection = window.getSelection();\n        const domRange = domSelection.getRangeAt(0);\n        const rect = domRange.getBoundingClientRect();\n        el.style.opacity = 1;\n        el.style.top = `${rect.top + window.pageYOffset - el.offsetHeight}px`;\n\n        el.style.left = `${rect.left +\n        window.pageXOffset -\n        el.offsetWidth / 2 +\n        rect.width / 2}px`\n\n    });\n\n\n    const root = window.document.getElementById('s2');\n    return ReactDOM.createPortal(\n        <div ref={ref} className=\"hoverMenu\">\n            <FormatButton editor={editor} format=\"bold\"/>\n            <FormatButton editor={editor} format=\"italic\"/>\n            <FormatButton editor={editor} format=\"underline\"/>\n            {buttons == \"basic\" ? null : <>\n                <HighlightButton/>\n                <AddLinkButton/>\n                <BlockButton editor={editor} format=\"header\" icon=\"header\"/>\n                <BlockButton editor={editor} format=\"numbered-list\" icon=\"list-ol\"/>\n                <BlockButton editor={editor} format=\"bulleted-list\" icon=\"list-ul\"/>\n            </>\n            }\n        </div>,\n        root\n    )\n};\n\nconst AddLinkButton = () => {\n    const editor = useSlate();\n    const classes = {fa: 1};\n    classes[\"fa-link\"] = 1\n\n    return (\n        <span className=\"hoverButton\"\n              onMouseDown={event => {\n                  event.preventDefault();\n                  wrapLink(editor, \"\")\n                  editor.showLinkOverride = true;\n                  editor.linkOverrideSelection = editor.selection;\n                  // Timeout required b/c it takes a moment for react to rerender before focusing on the new input\n                  setTimeout(() => {\n                      document.querySelector(\".popup input\").focus()\n                  }, 200);\n\n              }}\n        >\n      <i className={classNames(classes)}/>\n    </span>\n    )\n}\n\nconst FormatButton = ({format}) => {\n    const editor = useSlate();\n    const isActive = isFormatActive(editor, format);\n    const iconName = \"fa-\" + format;\n    const classes = {fa: 1, active: isActive};\n    classes[iconName] = 1;\n\n    return (\n        <span className=\"hoverButton\"\n              onMouseDown={event => {\n                  event.preventDefault();\n                  toggleFormat(editor, format);\n              }}\n        >\n      <i className={classNames(classes)}/>\n    </span>\n    )\n};\n\n\nconst HighlightButton = () => {\n    const editor = useSlate();\n    const ref = useRef();\n    const [showPortal, setShowPortal] = useState(false);\n    const isActive = isFormatActive(editor, \"background-color\");\n    const classes = {fa: 1, active: isActive, \"fa-pencil\": 1};\n    const colors = [\"#E6DABC\", \"#EAC4B6\", \"#D5A7B3\", \"#AECAB7\", \"#ADCCDB\"]; // 50% gold, orange, rose, green, blue \n    const colorButtons = <>{colors.map(color => <button key={`highlight-${color.replace(\"#\", \"\")}`} className=\"highlightButton\" onClick={e => {\n        const isActive = isFormatActive(editor, \"background-color\", color);\n        if (isActive) {\n            Editor.removeMark(editor, \"background-color\")\n        } else {\n            Editor.addMark(editor, \"background-color\", color)\n        }\n  }}><div className=\"highlightDot\" style={{\"background-color\":color}}></div></button>\n    )}</>\n\n    useEffect(() => {\n        const el = ref.current;\n        if (el) {\n            const checkIfClickedOutside = e => {\n                if (showPortal && ref.current && !ref.current.contains(e.target)) {\n                    setShowPortal(false)\n                }\n            }\n            document.addEventListener(\"mousedown\", checkIfClickedOutside)\n            return () => {\n                // Cleanup the event listener\n                document.removeEventListener(\"mousedown\", checkIfClickedOutside)\n            }\n        }\n\n    }, [showPortal])\n    return (\n        <>\n        <span className=\"hoverButton\"\n            onMouseDown={event => {\n                event.preventDefault();\n                setShowPortal(true);\n            }}\n        >\n      <i className={classNames(classes)}/>\n    </span>\n    {showPortal ? <div className=\"highlightMenu\" ref={ref}>\n    {colorButtons}\n    <button className=\"highlightButton\" onClick={e => {\n        Editor.removeMark(editor, \"background-color\")\n    }}>\n    <i className=\"fa fa-ban highlightCancel\"></i>\n  </button></div> : null}\n    </>\n    )\n};\n\nconst BlockButton = ({format, icon}) => {\n    const editor = useSlate()\n    const isActive = isBlockActive(editor, format);\n    const iconName = \"fa-\" + icon;\n    const classes = {fa: 1, active: isActive};\n    classes[iconName] = 1;\n\n    return (\n        <span className=\"hoverButton\"\n              onMouseDown={event => {\n                  event.preventDefault();\n                  toggleBlock(editor, format);\n              }}\n        >\n      <i className={classNames(classes)}/>\n    </span>\n    )\n}\n\nconst SefariaEditor = (props) => {\n    const editorContainer = useRef();\n    const [sheet, setSheet] = useState(props.data);\n    const initValue = [{type: \"sheet\", children: [{text: \"\"}]}];\n    const renderElement = useCallback(props => <Element {...props} />, []);\n    const [value, setValue] = useState(initValue);\n    const [currentDocument, setCurrentDocument] = useState(initValue);\n    const [unsavedChanges, setUnsavedChanges] = useState(false);\n    const [lastModified, setlastModified] = useState(props.data.dateModified);\n    const [canUseDOM, setCanUseDOM] = useState(false);\n    const [lastSelection, setLastSelection] = useState(null)\n    const [readyForNormalize, setReadyForNormalize] = useState(false);\n\n    useEffect(\n        () => {\n            if (!canUseDOM) {\n                return\n            }\n\n            setUnsavedChanges(true);\n            // Update debounced value after delay\n            const handler = setTimeout(() => {\n                saveDocument(currentDocument);\n            }, 500);\n\n            // Cancel the timeout if value changes (also on delay change or unmount)\n            // This is how we prevent debounced value from updating if value is changed ...\n            // .. within the delay period. Timeout gets cleared and restarted.\n            return () => {\n                clearTimeout(handler);\n            };\n        },\n        [currentDocument[0].children[0]] // Only re-call effect if value or delay changes\n    );\n\n    useEffect(\n        () => {\n            /* normalize on load */\n            setCanUseDOM(true)\n\n\n            const channel = new BroadcastChannel('refresh-editor');\n            channel.addEventListener('message', event => {\n                reloadFromDb()\n            });\n\n            //TODO: Check that we still need/want this temporary analytics tracking code\n            try {hj('event', 'using_new_editor');} catch {console.error('hj failed')}\n        }, []\n    )\n\n    useEffect(\n        () => {\n            setLastSelection(editor.selection)\n            setValue(transformSheetJsonToSlate(sheet))\n            editor.children = transformSheetJsonToSlate(sheet)\n            editor.onChange()\n            setReadyForNormalize(true)\n        }, [sheet]\n    )\n\n    useEffect(\n        () => {\n            if (readyForNormalize) {\n                Editor.normalize(editor, {force: true});\n                setReadyForNormalize(false)\n            }\n            else {\n                //set cursor to previous location or top of doc\n                const newSelect = !!lastSelection ? lastSelection : {anchor: {path: [0, 0], offset: 0},focus: {path: [0, 0], offset: 0}}\n                Transforms.select(editor, newSelect);\n            }\n        }, [readyForNormalize]\n    )\n\n    useEffect(\n        () => {\n            const nodes = (Editor.nodes(editor, {at: [], match: Text.isText}))\n            for (const [node, path] of nodes) {\n                if (node.text && props.divineNameReplacement) {\n                    const newStr = replaceDivineNames(node.text, props.divineNameReplacement)\n                    if (newStr != node.text) {\n                        Transforms.insertText(editor, newStr, { at: path })\n                    }\n                }\n            }\n            editor.divineNames = props.divineNameReplacement\n\n            // some edit to the editor is required to show the replacement and save\n            // -- this simply just moves the cursor to the top of the doc and then back to its previous spot\n            const temp_select = editor.selection\n\n            Transforms.select(editor, {\n              anchor: {path: [0, 0], offset: 0},\n              focus: {path: [0, 0], offset: 0},\n            });\n\n            Transforms.select(editor, temp_select)\n            saveDocument(currentDocument);\n\n        },\n        [props.divineNameReplacement]\n    )\n\n\n  useEffect(() => {\n    if(!props.hasSidebar) {\n      editor.highlightedNode = null;\n    }\n  }, [props.hasSidebar]);\n\n\n  useEffect(() => {\n      let scrollTimeOutId = null;\n      const onScrollListener = () => {\n          clearTimeout(scrollTimeOutId);\n          scrollTimeOutId = setTimeout(\n              () => {\n                  if(props.hasSidebar) {\n                      onEditorSidebarToggleClick()\n                  }\n              }, 200\n          );\n      };\n\n      let clickTimeOutId = null;\n      const onClickListener = (e) => {\n        clearTimeout(clickTimeOutId);\n        clickTimeOutId = setTimeout(\n          () => {\n            if(props.hasSidebar) {\n            let sheetElementTypes = Object.values(sheet_item_els);\n              for(const node of Node.ancestors(editor, editor.selection.focus.path)) {\n                  if (sheetElementTypes.includes(node[0].type)) {\n                      if (node[0].node != editor.highlightedNode) {\n                        updateSidebar(node[0].node, node[0].ref)\n                        if (node[0].type != \"SheetSource\") {\n                          Transforms.select(editor, editor.blurSelection);\n                          ReactEditor.focus(editor);\n                        }\n                      }\n                      break;\n                  }\n              }\n            }\n          }, 20);\n      };\n\n\n\n     editorContainer.current.parentNode.parentNode.addEventListener(\"scroll\", onScrollListener);\n     editorContainer.current.parentNode.parentNode.addEventListener(\"click\", onClickListener);\n\n\n      return () => {\n          editorContainer.current.parentNode.parentNode.removeEventListener(\"scroll\", onScrollListener);\n          editorContainer.current.parentNode.parentNode.removeEventListener(\"click\", onClickListener);\n      }\n    }, [props.highlightedNode, props.hasSidebar]\n  );\n\n  useEffect(() => {\n      if(canUseDOM) {\n        if (props.highlightedNode) {\n              var $highlighted = document.querySelectorAll(`.sheetItem[data-sheet-node='${props.highlightedNode}']`)[0];\n              if ($highlighted) {\n                  var offset = props.multiPanel ? 200 : 70; // distance from the top of screen that we want highlighted segments to appear below.\n                  var top = $highlighted.getBoundingClientRect().top - offset;\n                  $('.sheetsInPanel')[0].scroll({top: top});\n              }\n          }\n      }\n  }, [canUseDOM])\n\n    function saveSheetContent(doc, lastModified) {\n        const sheetTitle = editorContainer.current.querySelector(\".sheetContent .sheetMetaDataBox .title\") ? editorContainer.current.querySelector(\".sheetContent .sheetMetaDataBox .title\").textContent : \"Untitled\"\n        const docContent = doc.children.find(el => el.type == \"SheetContent\")\n        if (!docContent) {\n            return false\n        }\n        const sheetContent = docContent.children;\n\n        const sources = sheetContent.map(item => {\n            const sheetItem = item;\n            switch (sheetItem.type) {\n                case 'SheetSource':\n\n                    const enSerializedSourceText = (sheetItem.enText.reduce( (concatenatedSegments, currentSegment) => {\n                      return concatenatedSegments + serialize(currentSegment)\n                    }, \"\" ) );\n\n                    const heSerializedSourceText = (sheetItem.heText.reduce( (concatenatedSegments, currentSegment) => {\n                      return concatenatedSegments + serialize(currentSegment)\n                    }, \"\" ) );\n\n                    let source = {\n                        \"ref\": sheetItem.ref,\n                        \"heRef\": sheetItem.heRef,\n                        \"text\": {\n                            \"en\": enSerializedSourceText !== \"\" ? enSerializedSourceText : \"...\",\n                            \"he\": heSerializedSourceText !== \"\" ? heSerializedSourceText : \"...\",\n                        },\n                        ...sheetItem.options && { options: sheetItem.options },\n                        \"node\": sheetItem.node,\n                    };\n                    return (source);\n                case 'SheetOutsideBiText':\n\n                    const enSerializedOutsideText = (sheetItem.enText.reduce( (concatenatedSegments, currentSegment) => {\n                      return concatenatedSegments + serialize(currentSegment)\n                    }, \"\" ) );\n\n                    const heSerializedOutsideText = (sheetItem.heText.reduce( (concatenatedSegments, currentSegment) => {\n                      return concatenatedSegments + serialize(currentSegment)\n                    }, \"\" ) );\n\n                    let outsideBiText = {\n                        \"outsideBiText\": {\n                            \"en\": enSerializedOutsideText !== \"\" ? enSerializedOutsideText : \"...\",\n                            \"he\": heSerializedOutsideText !== \"\" ? heSerializedOutsideText : \"...\",\n                        },\n                        ...sheetItem.options && { options: sheetItem.options },\n                        \"node\": sheetItem.node,\n\n                    };\n                    return outsideBiText;\n\n                case 'SheetComment':\n                    return ({\n                        \"comment\": serialize(sheetItem),\n                        ...sheetItem.options && { options: sheetItem.options },\n                        \"node\": sheetItem.node,\n                    });\n\n                case 'SheetOutsideText':\n                   const outsideTextText = serialize(sheetItem)\n                   //Add space to empty outside texts to preseve line breaks from old sheets.\n                   return ({\n                        \"outsideText\": (outsideTextText==\"<p></p>\" || outsideTextText==\"<div></div>\") ? \"<p> </p>\" : outsideTextText,\n                        ...sheetItem.options && { options: sheetItem.options },\n                        \"node\": sheetItem.node,\n                    });\n\n                case 'SheetMedia':\n                    return({\n                        \"media\": sheetItem.mediaUrl,\n                        ...sheetItem.options && { options: sheetItem.options },\n                        \"node\": sheetItem.node,\n                    });\n\n                case 'header':\n                    const headerContent = serialize(sheetItem)\n                    return({\n                        \"outsideText\": `<h1>${headerContent}</h1>`,\n                        ...sheetItem.options && { options: sheetItem.options },\n                        \"node\": sheetItem.node,\n                    });\n\n\n                case 'spacer':\n                  return;\n\n                default:\n                    // console.log(\"Error saving:\")\n                    // console.log(sheetItem)\n                    return;\n            }\n\n        });\n        let sheet = {\n            status: doc.status,\n            id: doc.id,\n            promptedToPublish: doc.promptedToPublish,\n            lastModified: lastModified,\n            summary: doc.summary,\n            options: { ...doc.options, divineNames: props.divineNameReplacement },\n            tags: doc.tags,\n            displayedCollection: doc.displayedCollection,\n            title: sheetTitle === \"\" ? \"Untitled\" : sheetTitle,\n            sources: sources.filter(x => !!x),\n            nextNode: doc.nextNode,\n        };\n\n        return JSON.stringify(sheet);\n\n    }\n\n\n    function saveDocument(doc) {\n        const json = saveSheetContent(doc[0], lastModified);\n        if (!json) {\n            return\n        }\n        // console.log('saving...');\n\n        $.post(\"/api/sheets/\", {\"json\": json}, res => {\n            setlastModified(res.dateModified);\n            // console.log(\"saved at: \"+ res.dateModified);\n            setUnsavedChanges(false);\n\n            const updatedSheet = {...Sefaria.sheets._loadSheetByID[doc[0].id], ...res};\n            Sefaria.sheets._loadSheetByID[doc[0].id] = updatedSheet\n        });\n    }\n\n    function onChange(value) {\n        if (currentDocument !== value) {\n            setCurrentDocument(value);\n        }\n\n        setValue(value)\n\n    }\n\n    const beforeInput = event => {\n        switch (event.inputType) {\n            case 'formatBold':\n                return toggleFormat(editor, 'bold');\n            case 'formatItalic':\n                return toggleFormat(editor, 'italic')\n            case 'formatUnderline':\n                return toggleFormat(editor, 'underline')\n        }\n    };\n\n    const ensureInView = e => {\n          /*\n            Slate doesn't always scroll to content beyond the viewport -- this should fix that.\n           */\n          if (editor.selection == null) return\n\n        try {\n            /*\n              Need a try/catch because sometimes you get an error like:\n              Cannot resolve a DOM node from Slate node: {\"type\":\"p\",\"children\":[{\"text\":\"\",\"by\":-1,\"at\":-1}]}\n             */\n            const domPoint = ReactEditor.toDOMPoint(\n              editor,\n              editor.selection.focus\n            )\n            const node = domPoint[0]\n            if (node == null) return\n\n            const element = node.parentElement\n            if (element == null) return\n            if (whereIsElementInViewport(element) == \"in viewport\") return\n            element.scrollIntoView({ behavior: \"auto\", block: \"end\" })\n          } catch (e) {\n            //Do nothing if there is an error.\n          }\n    };\n\n    const onCutorCopy = event => {\n        const nodeAbove = Editor.above(editor, { match: n => Editor.isBlock(editor, n) })\n\n        if (nodeAbove && nodeAbove[0].type == \"SheetSource\") {\n            editor.cuttingSource = true;\n            //can't select an empty void -- so we select before and after as well\n            Transforms.move(editor, { distance: 1, unit: 'character', reverse: true, edge: 'anchor' })\n            Transforms.move(editor, { distance: 1, unit: 'character', edge: 'focus' })\n        }\n\n    };\n\n    const onDragEnd = event => {\n        if (editor.dragging) {\n            editor.blurSelection\n            editor.dragging = false\n        }\n    }\n\n    const onDragCheck = event => {\n        if (editor.dragging) {\n            event.preventDefault()\n        }\n    }\n\n\n    const onBlur = event => {\n      editor.blurSelection = editor.selection\n    };\n\n    const onKeyDown = event => {\n        ensureInView(event);\n\n        for (const hotkey in HOTKEYS) {\n          if (isHotkey(hotkey, event)) {\n            event.preventDefault();\n            const format = HOTKEYS[hotkey];\n            toggleFormat(editor, format)\n          }\n        }\n\n        // Add or remove ref highlighting\n        if (event.key === \" \" || Node.get(editor, editor.selection.focus.path).isRef) {\n            getRefInText(editor, false)\n        }\n    };\n\n    const whereIsElementInViewport = (element) => {\n        const elementbbox = element.getBoundingClientRect();\n        const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)\n        if (elementbbox.top >= 200 && elementbbox.bottom < vh) {\n            return \"in viewport\"\n        }\n        if (elementbbox.bottom >= vh/2 && element) {\n            return \"past half\"\n        }\n    };\n\n    const getHighlightedByScrollPos = () => {\n        let segmentToHighlight = null\n\n        const segments = editorContainer.current.querySelectorAll(\".sheetItem\");\n\n        for (let segment of segments) {\n            const elementLoc = whereIsElementInViewport(segment);\n            if (elementLoc === \"in viewport\" || elementLoc === \"past half\") {\n                segmentToHighlight = segment;\n                break;\n            }\n        }\n\n        return segmentToHighlight\n\n    };\n\n    const reloadFromDb = () => {\n        console.log(\"Refreshing sheet from Db\")\n        Sefaria.sheets.loadSheetByID(sheet.id, (data)=>{\n            setSheet(data)\n        }, true)\n    }\n\n    const updateSidebar = (sheetNode, sheetRef) => {\n      let source = {\n          'node': sheetNode,\n      };\n      if (!!sheetRef) {\n          source[\"ref\"] = sheetRef\n      }\n      editor.highlightedNode = sheetNode\n      props.sheetSourceClick(source)\n\n    };\n\n    const onEditorSidebarToggleClick = event => {\n        const segmentToHighlight = getHighlightedByScrollPos()\n        if (!segmentToHighlight) {\n            updateSidebar(sheet.id, null)\n        }\n        else {\n            const sheetNode = segmentToHighlight.getAttribute(\"data-sheet-node\")\n            const sheetRef = segmentToHighlight.getAttribute(\"data-sefaria-ref\")\n            updateSidebar(sheetNode, sheetRef)\n        }\n    };\n\n\n    const editor = useMemo(\n        () => withTables(withSefariaSheet(withLinks(withHistory(withReact(createEditor()))))),\n        []\n    );\n\n\n    return (\n        <div ref={editorContainer} onClick={props.handleClick}>\n        {\n          /* debugger */\n\n          // <div style={{position: 'fixed', left: 0, top: 0, width: 300, height: '100%', backgroundColor: '#ddd', fontSize: 12, zIndex: 9999, whiteSpace: 'pre', overflow: \"scroll\"}}>\n          // {JSON.stringify(editor.children[0,0], null, 4)}\n          // </div>\n\n        }\n\n            <button className=\"editorSidebarToggle\" onClick={(e)=>onEditorSidebarToggleClick(e) } aria-label=\"Click to open the sidebar\" />\n        <SheetMetaDataBox>\n            <SheetTitle tabIndex={0} title={sheet.title} editable={true} blurCallback={() => saveDocument(currentDocument)}/>\n            <SheetAuthorStatement\n                authorUrl={sheet.ownerProfileUrl}\n                authorStatement={sheet.ownerName}\n            >\n              <ProfilePic\n                url={sheet.ownerImageUrl}\n                len={30}\n                name={sheet.ownerName}\n                outerStyle={{width: \"30px\", height: \"30px\", display: \"inline-block\", verticalAlign: \"middle\", marginRight: \"10px\"}}\n              />\n              <a href={sheet.ownerProfileUrl}>\n                <InterfaceText>{sheet.ownerName}</InterfaceText>\n              </a>\n            </SheetAuthorStatement>\n            <CollectionStatement\n                name={sheet.collectionName}\n                slug={sheet.displayedCollection}\n                image={sheet.collectionImage}\n            />\n        </SheetMetaDataBox>\n            {canUseDOM ?\n            <Slate editor={editor} value={value} onChange={(value) => onChange(value)}>\n                <HoverMenu buttons=\"all\"/>\n                <Editable\n                  renderLeaf={props => <Leaf {...props} />}\n                  renderElement={renderElement}\n                  spellCheck\n                  onKeyDown={onKeyDown}\n                  onCut={onCutorCopy}\n                  onDragOver={onDragCheck}\n                  onDragEnter={onDragCheck}\n                  onDragEnd={onDragEnd}\n                  onCopy={onCutorCopy}\n                  onBlur={onBlur}\n                  onDOMBeforeInput={beforeInput}\n                  autoFocus\n                />\n            </Slate> : null }\n        </div>\n    )\n};\n\nexport default SefariaEditor;\n","import React  from 'react';\nimport ReactDOM  from 'react-dom';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport sanitizeHtml  from 'sanitize-html';\nimport Component from 'react-class'\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport SefariaEditor from './Editor';\nimport {\n  InterfaceText,\n  LoadingMessage,\n  ReaderMessage,\n  SheetMetaDataBox,\n  SheetAuthorStatement,\n  SheetTitle,\n  CollectionStatement,\n  ProfilePic,\n} from './Misc';\n\n\nclass Sheet extends Component {\n  constructor(props) {\n    super(props);\n  }\n  componentDidMount() {\n    this.$container = $(ReactDOM.findDOMNode(this));\n    this.ensureData();\n    const params = {\n       content_type: \"Sheet\",\n       item_id: this.props.id\n     }\n    gtag(\"event\", \"select_content\", params)\n\n  }\n  getSheetFromCache() {\n    return Sefaria.sheets.loadSheetByID(this.props.id);\n  }\n  getSheetFromAPI() {\n    Sefaria.sheets.loadSheetByID(this.props.id, this.onDataLoad);\n  }\n  onDataLoad(data) {\n    const sheetRef = \"Sheet \" + data.id + (this.props.highlightedNode ? \".\" + this.props.highlightedNode : \"\");\n    this.props.openSheet(sheetRef, true); // Replace state now that data is loaded so History can include sheet title\n    this.forceUpdate();\n    this.preloadConnections();\n    this.updateDivineNameStateWithSheetValue()\n  }\n  ensureData() {\n    if (!this.getSheetFromCache()) {\n      this.getSheetFromAPI();\n    } else {\n      this.preloadConnections();\n      this.updateDivineNameStateWithSheetValue()\n    }\n  }\n  preloadConnections() {\n    const data = this.getSheetFromCache();\n    if (!data) {return; }\n    for (let i = 0; i < data.sources.length; i++) {\n      if (\"ref\" in data.sources[i]) {\n        Sefaria.related(data.sources[i].ref, () => this.forceUpdate);\n      }\n    }\n  }\n  updateDivineNameStateWithSheetValue() {\n    const sheet = this.getSheetFromCache();\n    this.props.setDivineNameReplacement(sheet.options.divineNames)\n  }\n  handleClick(e) {\n    const target = e.target.closest('a')\n    if (target) {\n      let url;\n      try {\n        url = new URL(target.href);\n      } catch {\n        return false;\n      }\n      const path = url.pathname;\n      const params = url.searchParams;\n\n      if (path.match(/^\\/sheets\\/\\d+/)) {\n        e.preventDefault()\n        console.log();\n        this.props.onCitationClick(`Sheet ${path.slice(8)}`, `Sheet ${this.props.sheetID}`, true)\n      }\n\n      else if (Sefaria.isRef(path.slice(1))) {\n        e.preventDefault()\n        const currVersions = {en: params.get(\"ven\"), he: params.get(\"vhe\")};\n        const options = {showHighlight: path.slice(1).indexOf(\"-\") !== -1};   // showHighlight when ref is ranged\n        this.props.onCitationClick(path.slice(1), `Sheet ${this.props.sheetID}`, true, currVersions)\n      }\n\n    }\n  }\n\n\n  render() {\n    const sheet = this.getSheetFromCache();\n    const classes = classNames({sheetsInPanel: 1});\n    let content;\n    if (!sheet) {\n      content = (<LoadingMessage />);\n    }\n    else {\n      content = (\n            <SheetContent\n          sheetNotice={sheet.sheetNotice}\n          sources={sheet.sources}\n          title={sheet.title}\n          onRefClick={this.props.onRefClick}\n          handleClick={this.handleClick}\n          sheetSourceClick={this.props.onSegmentClick}\n          highlightedNode={this.props.highlightedNode}\n          highlightedRefsInSheet={this.props.highlightedRefsInSheet}\n          scrollToHighlighted={this.props.scrollToHighlighted}\n          authorStatement={sheet.ownerName}\n          authorUrl={sheet.ownerProfileUrl}\n          authorImage={sheet.ownerImageUrl}\n          collectionName={sheet.collectionName}\n          collectionSlug={sheet.displayedCollection}\n          collectionImage={sheet.collectionImage}\n          editable={Sefaria._uid === sheet.owner}\n          hasSidebar={this.props.hasSidebar}\n          setSelectedWords={this.props.setSelectedWords}\n          sheetNumbered={sheet.options.numbered}\n          hideImages={!!sheet.hideImages}\n          sheetID={sheet.id}\n        />\n      );\n    }\n    return (\n      <div className={classes}>\n        { sheet && Sefaria._uid === sheet.owner ?\n        <div className=\"sheetContent\">\n          <SefariaEditor\n            data={sheet}\n            hasSidebar={this.props.hasSidebar}\n            handleClick={this.handleClick}\n            multiPanel={this.props.multiPanel}\n            sheetSourceClick={this.props.onSegmentClick}\n            highlightedNode={this.props.highlightedNode}\n            highlightedRefsInSheet={this.props.highlightedRefsInSheet}\n            setDivineNameReplacement={this.props.setDivineNameReplacement}\n            divineNameReplacement={this.props.divineNameReplacement}\n          />\n        </div>\n        :\n        content }\n      </div>\n    );\n  }\n}\n\n\nclass SheetContent extends Component {\n  componentDidMount() {\n      this.$container = $(ReactDOM.findDOMNode(this).parentNode);\n      this._isMounted = true;\n      var node = ReactDOM.findDOMNode(this).parentNode;\n      node.addEventListener(\"scroll\", this.handleScroll);\n      this.windowMiddle = $(window).outerHeight() / 2;\n      this.highlightThreshhold = this.props.multiPanel ? 200 : 70; // distance from the top of screen that we want highlighted segments to appear below.\n      this.debouncedAdjustHighlightedAndVisible = Sefaria.util.debounce(this.adjustHighlightedAndVisible, 100);\n      this.scrollToHighlighted();\n  }\n  componentWillUnmount() {\n    this._isMounted = false;\n    var node = ReactDOM.findDOMNode(this).parentNode;\n    node.removeEventListener(\"scroll\", this.handleScroll);\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (prevProps.highlightedNode !== this.props.highlightedNode &&\n      this.props.scrollToHighlighted) {\n      this.scrollToHighlighted();\n    }\n  }\n  handleScroll(event) {\n    if (this.justScrolled) {\n      this.justScrolled = false;\n      return;\n    }\n    this.debouncedAdjustHighlightedAndVisible();\n  }\n  handleTextSelection() {\n    const selectedWords = Sefaria.util.getNormalizedSelectionString(); //this gets around the above issue\n    if (selectedWords !== this.props.selectedWords) {\n      //console.log(\"setting selecting words\")\n      this.props.setSelectedWords(selectedWords);\n    }\n  }\n  adjustHighlightedAndVisible() {\n    //console.log(\"adjustHighlightedAndVisible\");\n    // Adjust which ref is current consider visible for header and URL,\n    // and while the TextList is open, update which segment should be highlighted.\n    // Keeping the highlightedRefs value in the panel ensures it will return\n    // to the right location after closing other panels.\n    if (!this._isMounted) { return; }\n\n    // When using tab to navigate (i.e. a11y) set ref to currently focused ref\n    var $segment = null;\n    if ($(\"body\").hasClass(\"user-is-tabbing\") && $(\".segment:focus\").length > 0) {\n      $segment = $(\".segment:focus\").eq(0);\n    } else {\n      var $container = this.$container;\n      var topThreshhold = this.highlightThreshhold;\n      $container.find(\"section .segment\").each(function(i, segment) {\n        var top = $(segment).offset().top - $container.offset().top;\n        var bottom = $(segment).outerHeight() + top;\n        if (bottom > this.windowMiddle || top >= topThreshhold) {\n          $segment = $(segment);\n          return false;\n        }\n      }.bind(this));\n    }\n    if (!$segment) { return; }\n\n    // don't move around highlighted segment when scrolling a single panel,\n    var shouldHighlight = this.props.hasSidebar || this.props.mode === \"SheetAndConnections\";\n    if (shouldHighlight) {\n      const node = parseInt($segment.attr(\"data-node\"));\n      if (!(this.props.highlightedNode === node)) {\n        $segment.click()\n      }\n    }\n  }\n  scrollToHighlighted() {\n    if (!this._isMounted) { return; }\n    var $container   = this.$container;\n    var $readerPanel = $container.closest(\".readerPanel\");\n    var $highlighted = $container.find(\".segment.highlight\").first();\n    if ($highlighted.length) {\n      this.scrolledToHighlight = true;\n      this.justScrolled = true;\n      var offset = this.highlightThreshhold;\n      var top = $highlighted.position().top - offset;\n\n      $container[0].scrollTop = top;\n      if ($readerPanel.attr(\"id\") === $(\".readerPanel:last\").attr(\"id\")) {\n        $highlighted.focus();\n      }\n    }\n  }\n  render() {\n    var sources = this.props.sources.length ? this.props.sources.map(function(source, i) {\n      const highlightedRef = this.props.highlightedRefsInSheet ? Sefaria.normRefList(this.props.highlightedRefsInSheet) : null;\n      if (\"ref\" in source) {\n        const highlighted = this.props.highlightedNode ?\n            this.props.highlightedNode === source.node :\n              highlightedRef ?\n              Sefaria.refContains(source.ref, highlightedRef) :\n                false;\n        return (\n          <SheetSource\n            key={i}\n            source={source}\n            sourceNum={i + 1}\n            cleanHTML={this.cleanHTML}\n            sheetSourceClick={this.props.sheetSourceClick.bind(this, source)}\n            highlighted={highlighted}\n            sheetNumbered={this.props.sheetNumbered}\n          />\n        );\n      }\n\n      else if (\"comment\" in source) {\n        return (\n          <SheetComment\n            key={i}\n            sourceNum={i + 1}\n            source={source}\n            cleanHTML={this.cleanHTML}\n            sheetSourceClick={this.props.sheetSourceClick.bind(this, source)}\n            highlightedNode={this.props.highlightedNode}\n            sheetNumbered={this.props.sheetNumbered}\n          />\n        );\n      }\n\n      else if (\"outsideText\" in source) {\n        const sourceIsHeader = source[\"outsideText\"].startsWith(\"<h1>\");\n\n        if (sourceIsHeader) {\n          return <SheetHeader\n            key={i}\n            sourceNum={i + 1}\n            source={source}\n            sheetSourceClick={this.props.sheetSourceClick.bind(this, source)}\n            highlightedNode={this.props.highlightedNode}\n            sheetNumbered={this.props.sheetNumbered}\n          />\n        }\n\n        else {\n          return (\n            <SheetOutsideText\n              key={i}\n              sourceNum={i + 1}\n              source={source}\n              cleanHTML={this.cleanHTML}\n              sheetSourceClick={this.props.sheetSourceClick.bind(this, source)}\n              highlightedNode={this.props.highlightedNode}\n              sheetNumbered={this.props.sheetNumbered}\n           />\n          );\n        }\n      }\n\n      else if (\"outsideBiText\" in source) {\n        return (\n          <SheetOutsideBiText\n            key={i}\n            sourceNum={i + 1}\n            source={source}\n            cleanHTML={this.cleanHTML}\n            sheetSourceClick={this.props.sheetSourceClick.bind(this, source)}\n            highlightedNode={this.props.highlightedNode}\n            sheetNumbered={this.props.sheetNumbered}\n          />\n        );\n      }\n\n      else if (\"media\" in source) {\n        return (\n          <SheetMedia\n            key={i}\n            sourceNum={i + 1}\n            cleanHTML={this.cleanHTML}\n            source={source}\n            sheetSourceClick={this.props.sheetSourceClick.bind(this, source)}\n            highlightedNode={this.props.highlightedNode}\n            sheetNumbered={this.props.sheetNumbered}\n            hideImages={this.props.hideImages}\n          />\n        );\n      }\n\n    }, this) : null;\n\n    return (\n      <div className=\"sheetContent\">\n        {this.props.sheetNotice ? <SheetNotice /> : null}\n        <SheetMetaDataBox>\n          <SheetTitle title={this.props.title} />\n\n          <SheetAuthorStatement\n            authorUrl={this.props.authorUrl}\n            authorStatement={this.props.authorStatement} >\n            <ProfilePic\n              url={this.props.authorImage}\n              len={30}\n              name={this.props.authorStatement}\n              outerStyle={{width: \"30px\", height: \"30px\", display: \"inline-block\", verticalAlign: \"middle\"}}\n            />\n            <InterfaceText text={{en: \"By\", he: \"מאת\"}}/>\n            <a href={this.props.authorUrl} className=\"sheetAuthorName\">\n              <InterfaceText>{this.props.authorStatement}</InterfaceText>\n            </a>\n          </SheetAuthorStatement>\n\n          <CollectionStatement\n            name={this.props.collectionName}\n            slug={this.props.collectionSlug}\n            image={this.props.collectionImage}\n          />\n\n        </SheetMetaDataBox>\n\n        <div className=\"text\">\n          <div className=\"textInner\" onMouseUp={this.handleTextSelection} onClick={this.props.handleClick}>\n            {sources}\n          </div>\n        </div>\n\n        <div id=\"printFooter\" style={{display:\"none\"}}>\n          <span className=\"int-en\">Created with <img src={`/static${Sefaria._siteSettings.LOGO}`} /></span>\n          <span className=\"int-he\">{Sefaria._(\"Created with\")} <img src={`/static${Sefaria._siteSettings.LOGO}`} /></span>\n        </div>\n      </div>\n    )\n  }\n}\n\n\nclass SheetSource extends Component {\n  render() {\n\n    const sectionClasses= classNames(\n      \"SheetSource\",\n      this.props.highlighted ? \"highlight\" : null,\n      this.props.source.options ? this.props.source.options.indented : null,\n    );\n\n    const containerClasses = classNames(\n      \"sheetItem\",\n      \"segment\",\n      this.props.highlighted ? \"highlight\" : null,\n      (this.props.source.text && this.props.source.text.en && this.props.source.text.en.stripHtml() === \"...\") || (this.props.source.text && (!this.props.source.text.en || !this.props.source.text.en.stripHtml())) ? \"heOnly\" : null,\n      (this.props.source.text && this.props.source.text.he && this.props.source.text.he.stripHtml() === \"...\") || (this.props.source.text && (!this.props.source.text.he || !this.props.source.text.he.stripHtml())) ? \"enOnly\" : null,\n      this.props.source.options && this.props.source.options.refDisplayPosition ? \"ref-display-\"+ this.props.source.options.refDisplayPosition : null\n    );\n\n    return (\n      <section className={sectionClasses} style={{\"borderColor\": Sefaria.palette.refColor(this.props.source.ref)}}>\n        <div className={containerClasses}\n          onClick={this.props.sheetSourceClick}\n          data-node={this.props.source.node}\n          aria-label={\"Click to see connections to this source\"}\n          tabIndex=\"0\"\n          onKeyPress={function(e) {\n            e.charCode === 13 ? this.props.sheetSourceClick(e):null}.bind(this)\n          } >\n          {this.props.source.title ?\n          <div className=\"customSourceTitle\" role=\"heading\" aria-level=\"3\">\n            <div className=\"titleBox\">{this.props.source.title.stripHtml()}</div>\n          </div> : null}\n\n          {this.props.source.text && this.props.source.text.he && this.props.source.text.he !== \"\" ?\n          <div className=\"he\">\n            {this.props.source.options && this.props.source.options.sourcePrefix && this.props.source.options.sourcePrefix != \"\" ? <sup className=\"sourcePrefix\">{this.props.source.options.sourcePrefix}</sup> : null }\n            <div className=\"ref\">\n              {this.props.source.options && this.props.source.options.PrependRefWithHe ? this.props.source.options.PrependRefWithHe : null}\n              <a href={\"/\" + Sefaria.normRef(this.props.source.ref)}>{this.props.source.heRef}</a>\n            </div>\n            <div className=\"sourceContentText\" dangerouslySetInnerHTML={ {__html: (Sefaria.util.cleanHTML(this.props.source.text.he))} }></div>\n          </div> : null }\n\n          {this.props.source.text && this.props.source.text.en && this.props.source.text.en !== \"\" ?\n          <div className=\"en\">\n            {this.props.source.options && this.props.source.options.sourcePrefix && this.props.source.options.sourcePrefix != \"\" ? <sup className=\"sourcePrefix\">{this.props.source.options.sourcePrefix}</sup> : null }\n            <div className=\"ref\">\n              {this.props.source.options && this.props.source.options.PrependRefWithEn ? this.props.source.options.PrependRefWithEn : null}\n              <a href={\"/\" + Sefaria.normRef(this.props.source.ref)}>{this.props.source.ref}</a>\n            </div>\n            <div className=\"sourceContentText\" dangerouslySetInnerHTML={ {__html: (Sefaria.util.cleanHTML(this.props.source.text.en))} }></div>\n          </div> : null }\n\n          <div className=\"clearFix\"></div>\n\n          {this.props.source.addedBy ?\n          <div className=\"addedBy\">\n            <small><em>{Sefaria._(\"Added by\")}: <span dangerouslySetInnerHTML={ {__html: Sefaria.util.cleanHTML(this.props.source.userLink)} }></span></em></small>\n          </div>\n          : null }\n\n        </div>\n      </section>\n    );\n  }\n}\n\n\nclass SheetComment extends Component {\n  render() {\n    const lang = Sefaria.hebrew.isHebrew(this.props.source.comment.stripHtml().replace(/\\s+/g, ' ')) ? \"he\" : \"en\";\n    const containerClasses = classNames(\n      \"sheetItem\",\n      \"segment\",\n      lang == \"he\" ? \"heOnly\" : \"enOnly\",\n      this.props.highlightedNode == this.props.source.node ? \"highlight\" : null,\n      this.props.source.options ? this.props.source.options.indented : null\n    );\n\n    return (\n      <section className=\"SheetComment\">\n        <div className={containerClasses} data-node={this.props.source.node} onClick={this.props.sheetSourceClick} aria-label={\"Click to see \" + this.props.linkCount +  \" connections to this source\"} tabIndex=\"0\" onKeyPress={function(e) {e.charCode == 13 ? this.props.sheetSourceClick(e):null}.bind(this)} >\n\n          <div className={lang}>\n              <div\n                className=\"sourceContentText\"\n                dangerouslySetInnerHTML={{__html: Sefaria.util.cleanHTML(this.props.source.comment)}}></div>\n          </div>\n\n          <div className=\"clearFix\"></div>\n          {this.props.source.addedBy ?\n          <div className=\"addedBy\">\n            <small><em>\n              {Sefaria._(\"Added by\")}: <span dangerouslySetInnerHTML={ {__html: Sefaria.util.cleanHTML(this.props.source.userLink)} }></span>\n            </em></small>\n          </div>\n          : null }\n\n        </div>\n      </section>\n    );\n  }\n}\n\nclass SheetHeader extends Component {\n  render() {\n    const lang = Sefaria.hebrew.isHebrew(this.props.source.outsideText.stripHtml().replace(/\\s+/g, ' ')) ? \"he\" : \"en\";\n    const containerClasses = classNames(\"sheetItem\",\n        \"segment\",\n        lang == \"he\" ? \"heOnly\" : \"enOnly\",\n        this.props.highlightedNode === this.props.source.node ? \"highlight\" : null,\n        this.props.source.options ? this.props.source.options.indented : null\n    );\n\n    return (\n        <div className={containerClasses} data-node={this.props.source.node} onClick={this.props.sheetSourceClick} aria-label={\"Click to see \" + this.props.linkCount +  \" connections to this source\"} tabIndex=\"0\" onKeyPress={function(e) {e.charCode == 13 ? this.props.sheetSourceClick(e):null}.bind(this)} >\n          <div className={lang}>\n              <div className=\"sourceContentText\"><h1><span>{this.props.source.outsideText.stripHtml()}</span></h1></div>\n          </div>\n        </div>\n    )\n\n\n  }\n\n}\n\n\nclass SheetOutsideText extends Component {\n  shouldPassClick(e) {\n    const target = e.target.closest('a')\n    if (target) {\n      return\n    }\n    else{\n      this.props.sheetSourceClick(this.props.source)\n    }\n  }\n\n  render() {\n    const lang = Sefaria.hebrew.isHebrew(this.props.source.outsideText.stripHtml().replace(/\\s+/g, ' ')) ? \"he\" : \"en\";\n    const containerClasses = classNames(\"sheetItem\",\n        \"segment\",\n        lang == \"he\" ? \"heOnly\" : \"enOnly\",\n        this.props.highlightedNode === this.props.source.node ? \"highlight\" : null,\n        this.props.source.options ? this.props.source.options.indented : null\n    );\n\n    return (\n      <section className=\"SheetOutsideText\">\n        <div className={containerClasses} data-node={this.props.source.node} onClick={(e) => this.shouldPassClick(e)} aria-label={\"Click to see \" + this.props.linkCount +  \" connections to this source\"} tabIndex=\"0\" onKeyPress={function(e) {e.charCode == 13 ? this.props.sheetSourceClick(e):null}.bind(this)} >\n\n          <div className={lang}>{this.props.source.options && this.props.source.options.sourcePrefix && this.props.source.options.sourcePrefix != \"\" ? <sup className=\"sourcePrefix\">{this.props.source.options.sourcePrefix}</sup> : null }\n              <div className=\"sourceContentText\" dangerouslySetInnerHTML={ {__html: Sefaria.util.cleanHTML(this.props.source.outsideText)} }></div>\n          </div>\n\n          <div className=\"clearFix\"></div>\n\n          {this.props.source.addedBy ?\n          <div className=\"addedBy\">\n            <small><em>{Sefaria._(\"Added by\")}: <span dangerouslySetInnerHTML={ {__html: Sefaria.util.cleanHTML(this.props.source.userLink)} }></span></em></small>\n          </div>\n          : null }\n\n        </div>\n      </section>\n    );\n  }\n}\n\n\nclass SheetOutsideBiText extends Component {\n  render() {\n    const containerClasses = classNames(\n      \"sheetItem\",\n      \"segment\",\n      (this.props.source.outsideBiText.en && this.props.source.outsideBiText.en.stripHtml() === \"...\") || (!this.props.source.outsideBiText.en.stripHtml()) ? \"heOnly\" : null,\n      (this.props.source.outsideBiText.he && this.props.source.outsideBiText.he.stripHtml() === \"...\") || (!this.props.source.outsideBiText.he.stripHtml()) ? \"enOnly\" : null,\n      this.props.highlightedNode == this.props.source.node ? \"highlight\" : null,\n    );\n\n    const sectionClasses= classNames(\"SheetOutsideBiText\",\n      this.props.source.options ? this.props.source.options.indented : null,\n    );\n\n    return (\n      <section className={sectionClasses}>\n        <div className={containerClasses} data-node={this.props.source.node} onClick={this.props.sheetSourceClick} aria-label={\"Click to see \" + this.props.linkCount +  \" connections to this source\"} tabIndex=\"0\" onKeyPress={function(e) {e.charCode == 13 ? this.props.sheetSourceClick(e):null}.bind(this)} >\n\n          <div className=\"he\">\n            {this.props.source.options && this.props.source.options.sourcePrefix && this.props.source.options.sourcePrefix != \"\" ? <sup className=\"sourcePrefix\">{this.props.source.options.sourcePrefix}</sup> : null }\n            <div className=\"sourceContentText outsideBiText\" dangerouslySetInnerHTML={ {__html: Sefaria.util.cleanHTML(this.props.source.outsideBiText.he)} }></div>\n          </div>\n          <div className=\"en\">\n            {this.props.source.options && this.props.source.options.sourcePrefix && this.props.source.options.sourcePrefix != \"\" ? <sup className=\"sourcePrefix\">{this.props.source.options.sourcePrefix}</sup> : null }\n            <div className=\"sourceContentText outsideBiText\" dangerouslySetInnerHTML={ {__html: Sefaria.util.cleanHTML(this.props.source.outsideBiText.en)} }></div>\n          </div>\n\n          <div className=\"clearFix\"></div>\n\n          {this.props.source.addedBy ?\n          <div className=\"addedBy\">\n            <small><em>{Sefaria._(\"Added by\")}: <span dangerouslySetInnerHTML={ {__html: Sefaria.util.cleanHTML(this.props.source.userLink)} }></span></em></small>\n          </div>\n          : null }\n\n        </div>\n      </section>\n    );\n  }\n}\n\n\nclass SheetMedia extends Component {\n  makeMediaEmbedContent() {\n    var mediaLink;\n    var mediaCaption = \"\";\n    var mediaClass = \"media fullWidth\";\n    var mediaURL = this.props.source.media;\n    var caption  = this.props.source.caption;\n\n    if (this.isImage()) {\n      mediaLink = '<img class=\"addedMedia\" src=\"' + mediaURL + '\" />';\n    }\n    else if (mediaURL.match(/https?:\\/\\/www\\.youtube\\.com\\/embed\\/.+?rel=0(&amp;|&)showinfo=0$/i) != null) {\n      mediaLink = '<div class=\"youTubeContainer\"><iframe width=\"100%\" height=\"100%\" src=' + mediaURL + ' frameborder=\"0\" allowfullscreen></iframe></div>';\n    }\n\n    else if (mediaURL.toLowerCase().match(/https?:\\/\\/player\\.vimeo\\.com\\/.*/i) != null) {\n      mediaLink = '<div class=\"youTubeContainer\"><iframe width=\"100%\" height=\"100%\" src=' + mediaURL + ' frameborder=\"0\"  allow=\"autoplay; fullscreen\" allowfullscreen></iframe></div>';\n    }\n\n    else if (mediaURL.match(/https?:\\/\\/w\\.soundcloud\\.com\\/player\\/\\?url=.*/i) != null) {\n      mediaLink = '<iframe width=\"100%\" height=\"166\" scrolling=\"no\" frameborder=\"no\" src=\"' + mediaURL + '\"></iframe>';\n    }\n\n    else if (mediaURL.match(/\\.(mp3)$/i) != null) {\n      mediaLink = '<audio src=\"' + mediaURL + '\" type=\"audio/mpeg\" controls>Your browser does not support the audio element.</audio>';\n    }\n\n    else {\n      mediaLink = 'Error loading media...';\n    }\n\n    if (caption && (caption.en || caption.he) ) {\n      var cls = caption.en && caption.he ? \"\" : caption.en ? \"enOnly\" : \"heOnly\";\n      mediaCaption = \"<div class='mediaCaption \" + cls + \"'><div class='mediaCaptionInner'>\" +\n                \"<div class='en'>\" + (caption.en || \"\") + \"</div>\" +\n                \"<div class='he'>\" + (caption.he || \"\") + \"</div>\" +\n                 \"</div></div>\";\n    }\n\n    return \"<div class='\" + mediaClass + \"'>\" + mediaLink + mediaCaption + \"</div>\";\n  }\n  isImage() {\n    return (this.props.source.media.match(/\\.(jpeg|jpg|gif|png)$/i) != null);\n  }\n  render() {\n    if (this.props.hideImages && this.isImage()) { return null; }\n    const containerClasses = classNames(\n      \"sheetItem\",\n      \"segment\",\n      this.props.highlightedNode === this.props.source.node ? \"highlight\" : null,\n      this.props.source.options ? this.props.source.options.indented : null\n    );\n    return (\n      <section className=\"SheetMedia\">\n        <div className={containerClasses} data-node={this.props.source.node} onClick={this.props.sheetSourceClick} aria-label={\"Click to  \" + this.props.linkCount +  \" connections to this source\"} tabIndex=\"0\" onKeyPress={function(e) {e.charCode == 13 ? this.props.sheetSourceClick(e):null}.bind(this)} >\n\n          <div className=\"sourceContentText centeredSheetContent\" dangerouslySetInnerHTML={ {__html: this.makeMediaEmbedContent()} }></div>\n          <div className=\"clearFix\"></div>\n          {this.props.source.addedBy ?\n            <div className=\"addedBy\"><small><em>{Sefaria._(\"Added by\")}: <span dangerouslySetInnerHTML={ {__html: Sefaria.util.cleanHTML(this.props.source.userLink)} }></span></em></small></div>\n            : null }\n        </div>\n      </section>\n    );\n  }\n}\n\nclass SheetNotice extends Component {\n  render() {\n    return (\n        <div className=\"sheetNotice sans-serif\">\n          <InterfaceText>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam arcu felis, molestie sed mauris a, hendrerit vestibulum augue.</InterfaceText>\n        </div>\n    );\n  }\n}\n\nexport default Sheet;\n","import {\n  CloseButton,\n  DisplaySettingsButton,\n  CategoryAttribution,\n  CategoryColorLine,\n  InterfaceText,\n  LoadingMessage,\n  LoginPrompt,\n  SheetAuthorStatement,\n  ProfilePic,\n\n} from './Misc';\nimport { CollectionsModal } from './CollectionsWidget'\nimport React  from 'react';\nimport ReactDOM  from 'react-dom';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport sanitizeHtml  from 'sanitize-html';\nimport Component from 'react-class';\nimport ReactTags from 'react-tag-autocomplete'\n\nclass SheetMetadata extends Component {\n  // Menu for the Table of Contents for a single text\n  constructor(props) {\n    super(props);\n    this.loadSaved();\n    this.state = {\n      sheetCopyStatus: \"Copy\",\n      copiedSheetId: null,\n      sheetSaves: null,\n      sheetLikeAdjustment: 0,\n      showCollectionsModal: false,\n      tags: [],\n      suggestions: [],\n      summary: '',\n      validationFailed: 'none',\n      validationMsg: '',\n      published: null,\n      lastModified: null,\n    };\n    this.reactTags = React.createRef()\n    this.debouncedSaveSummary = Sefaria.util.debounce(this.saveSummary, 250);\n  }\n  componentDidMount() {\n    this._isMounted = true;\n    const sheet = (this.getSheetFromCache())\n\n    const tags = sheet.topics.map((topic, i) => ({\n          id: i,\n          name: topic[\"asTyped\"],\n          slug: topic[\"slug\"],\n        })\n      )\n\n\n    this.setState({\n      tags: tags,\n      summary: sheet.summary,\n      published: sheet.status == \"public\",\n      lastModified: sheet.dateModified,\n\n    })\n\n  }\n  componentWillUnmount() {\n    this._isMounted = false;\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if ((this.props.settingsLanguage != prevProps.settingsLanguage)) {\n      this.forceUpdate();\n    }\n  }\n  loadSaved() {\n    Sefaria.getRefSavedHistory(\"Sheet \" + this.props.id).then(data => {\n      const sheetSaves = [];\n      for (let hist of data) {\n        sheetSaves.push(hist[\"uid\"]);\n      }\n      if (this._isMounted) {\n        this.setState({ sheetSaves });\n      }\n    });\n  }\n  getSheetFromCache() {\n    return Sefaria.sheets.loadSheetByID(this.props.id);\n  }\n  getSheetFromAPI() {\n    Sefaria.sheets.loadSheetByID(this.props.id, this.onDataLoad);\n  }\n  onDataLoad(data) {\n    this.forceUpdate();\n  }\n  updateSheetTags() {\n\n  }\n  isFormValidated() {\n    if ((!this.state.summary || this.state.summary.trim() == '') && this.state.tags.length == 0) {\n      this.setState({\n        validationMsg: Sefaria._(\"Please add a description and topics to publish your sheet.\"),\n        validationFailed: \"both\"\n      });\n      return false\n    }\n    else if (!this.state.summary || this.state.summary.trim() == '') {\n      this.setState({\n        validationMsg: Sefaria._(\"Please add a description to publish your sheet.\"),\n        validationFailed: \"summary\"\n      });\n      return false\n    }\n\n    else if (this.state.tags.length == 0) {\n      this.setState({\n        validationMsg: Sefaria._(\"Please add topics to publish your sheet.\"),\n        validationFailed: \"topics\"\n      });\n      return false\n    }\n\n    else {\n      this.setState({\n        validationMsg: \"\",\n        validationFailed: \"none\"\n      });\n      return true\n    }\n  }\n\n  async togglePublish() {\n    if (!this.state.published) {\n      if (!(this.isFormValidated())) {return}\n    }\n\n    const newPublishState = this.state.published ? \"unlisted\" : \"public\";\n    let updatedSheet = await (new Promise((resolve, reject) => Sefaria.sheets.loadSheetByID(this.props.id, sheet => resolve(sheet))));\n    updatedSheet.status = newPublishState;\n    updatedSheet.lastModified = this.state.lastModified;\n    delete updatedSheet._id;\n    this.setState({published: !this.state.published})\n    const postJSON = JSON.stringify(updatedSheet);\n    this.postSheet(postJSON);\n\n  }\n\n\n  loadSheetData(sheetID) {\n    if (Sefaria.sheets.loadSheetByID(sheetID)) {\n        return(Sefaria.sheets.loadSheetByID(sheetID));\n    }\n    else {\n      Sefaria.sheets.loadSheetByID(sheetID, (data) => {\n          return(data);\n      });\n    }\n  }\n\n  copySheet() {\n    if (!Sefaria._uid) {\n        this.props.toggleSignUpModal();\n    } else if (this.state.sheetCopyStatus == \"Copy\") {\n        this.setState({sheetCopyStatus: \"Copying...\"});\n        this.filterAndSaveCopiedSheetData(this.loadSheetData(this.props.id))\n    }\n  }\n\n  postSheet(postJSON) {\n    $.post(\"/api/sheets/\", {\"json\": postJSON}, (data) => {\n        if (data.id)  {\n          console.log('saved...')\n          this.setState({lastModified: data.dateModified})\n          Sefaria.sheets._loadSheetByID[data.id] = data;\n        } else {\n            console.log(data);\n        }\n    })\n  }\n\n  filterAndSaveCopiedSheetData(data) {\n    var newSheet = Sefaria.util.clone(data);\n    newSheet.status = \"unlisted\";\n    newSheet.title = newSheet.title + \" (Copy)\";\n\n    if (Sefaria._uid != newSheet.owner) {\n        newSheet.via = this.props.id;\n        newSheet.viaOwner = newSheet.owner;\n        newSheet.owner = Sefaria._uid\n    }\n    delete newSheet.id;\n    delete newSheet.ownerName;\n    delete newSheet.views;\n    delete newSheet.dateCreated;\n    delete newSheet.dateModified;\n    delete newSheet.displayedCollection;\n    delete newSheet.collectionName;\n    delete newSheet.collectionImage;\n    delete newSheet.likes;\n    delete newSheet.promptedToPublish;\n    delete newSheet._id;\n\n    var postJSON = JSON.stringify(newSheet);\n    $.post(\"/api/sheets/\", {\"json\": postJSON}, (data) => {\n        if (data.id)  {\n          this.setState({\n              sheetCopyStatus: \"Copied\",\n              copiedSheetId: data.id\n          });\n\n        } else if (\"error\" in data) {\n            console.log(data.error);\n        }\n    })\n  }\n  toggleCollectionsModal() {\n    if (!Sefaria._uid) {\n      this.props.toggleSignUpModal();\n    } else {\n      this.setState({showCollectionsModal: !this.state.showCollectionsModal});\n    }\n  }\n\n  async updateTopics(tags) {\n    let updatedSheet = await (new Promise((resolve, reject) => Sefaria.sheets.loadSheetByID(this.props.id, sheet => resolve(sheet))));\n\n    const topics = tags.map(tag => ({\n          asTyped: tag.name,\n          slug: tag.slug,\n        })\n    )\n    updatedSheet.topics = topics;\n    updatedSheet.lastModified = this.state.lastModified;\n    delete updatedSheet._id;\n    delete updatedSheet.error;\n    const postJSON = JSON.stringify(updatedSheet);\n    this.postSheet(postJSON)\n  }\n\n  onTagDelete(i) {\n    const tags = this.state.tags.slice(0);\n    tags.splice(i, 1);\n    this.setState({ tags });\n    this.updateTopics(tags);\n  }\n\n  onTagAddition(tag) {\n    const tags = [].concat(this.state.tags, tag);\n    this.setState({ tags });\n    this.updateTopics(tags);\n  }\n\n  onTagValidate(tag) {\n    return this.state.tags.every((item) => item.name !== tag.name)\n  }\n\n  updateSuggestedTags(input) {\n    if (input == \"\") return\n    Sefaria.getName(input, false, 0).then(d => {\n      const topics = d.completion_objects\n          .filter(obj => obj.type === \"Topic\")\n          .map((filteredObj, index) => ({\n            id: index,\n            name: filteredObj.title,\n            slug: filteredObj.key\n          })\n      )\n      return topics\n    }).then(topics => this.setState({suggestions: topics}))\n  }\n\n  async saveSummary() {\n    let updatedSheet = await (new Promise((resolve, reject) => Sefaria.sheets.loadSheetByID(this.props.id, sheet => resolve(sheet))));\n    updatedSheet.summary = this.state.summary;\n    updatedSheet.lastModified = this.state.lastModified;\n    delete updatedSheet._id;\n    const postJSON = JSON.stringify(updatedSheet);\n    this.postSheet(postJSON)\n  }\n\n  handleSummaryChange(event) {\n    const newSummary = event.target.value\n    if (event.target.value.length > 280) {\n      this.setState({\n        validationMsg: Sefaria._(\"The summary description is limited to 280 characters.\"),\n        validationFailed: \"summary\"\n      });\n    }\n    else {\n      this.setState({\n        validationMsg: \"\",\n        validationFailed: \"none\"\n      });\n    }\n    this.setState({summary: newSummary})\n    this.debouncedSaveSummary()\n  }\n\n  render() {\n    const sheet = this.getSheetFromCache();\n\n    if (!sheet) {return (<LoadingMessage/>)}\n\n    const timestampCreated = Date.parse(sheet.dateCreated)/1000;\n    const canEdit = Sefaria._uid == sheet.owner;\n    const title = sheet.title;\n\n    // Text Details\n    const details = sheet.summary;\n\n    var closeClick = this.props.close;\n    var classes = classNames({\n      bookPage:1,\n      sheetPage: 1,\n      readerNavMenu:1,\n      narrowPanel: this.props.narrowPanel,\n      noLangToggleInHebrew: this.props.interfaceLang == 'hebrew',\n      \"sans-serif\": 1,\n    });\n\n    return (<div className={classes}>\n              <CategoryColorLine category=\"Sheets\" />\n              <div className=\"readerControls\">\n                <div className=\"readerControlsInner\">\n                  <div className=\"leftButtons\">\n                    <CloseButton onClick={closeClick}/>\n                  </div>\n                  <div className=\"readerTextToc readerTextTocHeader\">\n                    <div className=\"readerTextTocBox\">\n                      <span className=\"int-en\">Table of Contents</span>\n                      <span className=\"int-he\">תוכן העניינים</span>\n                    </div>\n                  </div>\n                  <div className=\"rightButtons\">\n                    {this.props.interfaceLang !== \"hebrew\" ?\n                      <DisplaySettingsButton onClick={this.props.openDisplaySettings} />\n                      : <DisplaySettingsButton placeholder={true} />}\n                  </div>\n                </div>\n              </div>\n              <div className=\"content\">\n                <div className=\"contentInner\">\n                  <div className=\"tocTop\">\n                    <div className=\"tocTitle serif\" role=\"heading\" aria-level=\"1\">\n                      <span>{title.stripHtmlConvertLineBreaks()}</span>\n                    </div>\n\n                    <a className=\"tocCategory serif\" href=\"/sheets\">\n                      <span className=\"en\">Sheet</span>\n                      <span className=\"he\">{Sefaria.hebrewTerm(\"Sheets\")}</span>\n                    </a>\n\n                    <div className=\"tocDetail authorStatement\">\n                      <SheetAuthorStatement\n                          authorUrl={sheet.ownerProfileUrl}\n                          authorStatement={sheet.ownerName}\n                      >\n                        <ProfilePic\n                          url={sheet.ownerImageUrl}\n                          len={30}\n                          name={sheet.ownerName}\n                          outerStyle={{width: \"30px\", height: \"30px\", display: \"inline-block\", verticalAlign: \"middle\", marginRight: \"10px\"}}\n                        />\n                        <a href={sheet.ownerProfileUrl}>\n                          <InterfaceText>{sheet.ownerName}</InterfaceText>\n                        </a>\n                      </SheetAuthorStatement>\n                    </div>\n\n                    {sheet.displayedCollection ?\n                    <div className=\"tocDetail authorStatement\">\n                        <div className=\"collectionListingImageBox imageBox\">\n                            <a href={\"/collections/\" + sheet.displayedCollection}>\n                              <img className={classNames({collectionListingImage:1, \"img-circle\": 1, default: !sheet.collectionImage})} src={sheet.collectionImage || \"/static/icons/collection.svg\"} alt=\"Collection Logo\"/>\n                            </a>\n                        </div>\n                        <a href={\"/collections/\" + sheet.displayedCollection}>{sheet.collectionName}</a>\n                    </div> : null }\n                    <div className=\"sheetMeta\">\n                      <div className=\"int-en\">\n                          Created {Sefaria.util.naturalTime(timestampCreated, \"en\")} ago · {sheet.views} Views · { !!this.state.sheetSaves ? this.state.sheetSaves.length + this.state.sheetLikeAdjustment : '--'} Saves {this.state.published ? null : (<span className=\"unlisted\">· <img src=\"/static/img/eye-slash.svg\"/><span>{Sefaria._(\"Not Published\")}</span></span>)}\n\n                      </div>\n                      <div className=\"int-he\">\n                          <span>נוצר לפני  {Sefaria.util.naturalTime(timestampCreated, \"he\")} · </span>\n                          <span>{sheet.views} צפיות · </span>\n                          <span> {!!this.state.sheetSaves ? this.state.sheetSaves.length + this.state.sheetLikeAdjustment : '--' } שמירות </span> {this.state.published ? null : (<span className=\"unlisted\">· <img src=\"/static/img/eye-slash.svg\"/><span>{Sefaria._(\"Not Published\")}</span></span>)}                      </div>\n                    </div>\n\n                    <div>\n                      <div className=\"sheetMetaButtons\">\n\n                        <a href=\"#\" className=\"button white\" onClick={this.copySheet}>\n                          <img src=\"/static/icons/copy.svg\" alt=\"copy sheet\" />\n                          <InterfaceText>{this.state.sheetCopyStatus}</InterfaceText>\n                        </a>\n\n                        <a href=\"#\" className=\"button white\" onClick={this.toggleCollectionsModal}>\n                          <img src=\"/static/icons/plus.svg\" alt=\"copy sheet\" />\n                          <InterfaceText>Add to Collection</InterfaceText>\n                        </a>\n\n                      </div>\n\n                      {this.state.sheetCopyStatus == \"Copied\" ?\n                      <div><a href={\"/sheets/\"+this.state.copiedSheetId}>\n                          <span className=\"int-en\">View Copy &raquo;</span>\n                          <span className=\"int-he\">צפייה בהעתק &raquo;</span>\n                      </a></div> : null }\n\n\n                      {this.state.showCollectionsModal ?\n                      <CollectionsModal\n                        sheetID={sheet.id}\n                        close={this.toggleCollectionsModal} /> : null }\n                    </div>\n\n                    <div className=\"tocDetails sheetSummary\">\n                      <h3><InterfaceText>About this Sheet</InterfaceText></h3>\n                      {details && !canEdit ? <div className=\"description\" dangerouslySetInnerHTML={ {__html: details} }></div> : null}\n                    </div>\n\n                    {sheet.topics && sheet.topics.length > 0 && !canEdit ?\n                    <div className=\"tocDetails tagsSection\">\n                      <h3><InterfaceText>Tags</InterfaceText></h3>\n                      <div className=\"sheetTags\">\n                        {sheet.topics.map((topic, i) => (\n                            <a href={\"/topics/\" + topic.slug}\n                              target=\"_blank\"\n                              className=\"sheetTag button\"\n                              key={i}\n                            >\n                              <InterfaceText text={{en:topic.en, he:topic.he}} />\n                            </a>\n                          ))\n                        }\n                      </div>\n                    </div> : null }\n\n                    {canEdit ? <div className={\"publishBox sans-serif\"}>\n                      <h3 className={\"header\"}>\n                        <InterfaceText>{this.state.published ? \"Publish Settings\" : \"Publish Sheet\"}</InterfaceText>\n                      </h3>\n\n\n\n                      {this.state.published ?\n                        <p><InterfaceText>Your sheet is</InterfaceText> <strong><InterfaceText>published</InterfaceText></strong> <InterfaceText>on Sefaria and visible to others through search and topics.</InterfaceText></p> :\n                        <p><InterfaceText>List your sheet on Sefaria for others to discover.</InterfaceText></p>\n                      }\n\n\n                      <hr/>\n                      {this.state.validationFailed == \"none\" ? null :  <p className=\"error\"><InterfaceText>{this.state.validationMsg}</InterfaceText></p> }\n                      <p className={\"smallText\"}><InterfaceText>Summary</InterfaceText></p>\n                      <textarea\n                        className={this.state.validationFailed == \"both\" || this.state.validationFailed == \"summary\" ? \"error\" : \"\"}\n                        rows=\"3\"\n                        maxLength=\"281\"\n                        placeholder={Sefaria._(\"Write a short description of your sheet...\")}\n                        value={this.state.summary} onChange={this.handleSummaryChange}></textarea>\n                      <p className={\"smallText\"}><InterfaceText>Topics</InterfaceText></p>\n                      <div className={this.state.validationFailed == \"both\" || this.state.validationFailed == \"topics\" ? \"error\" : \"\"}>\n                      <ReactTags\n                        ref={this.reactTags}\n                        allowNew={true}\n                        tags={this.state.tags}\n                        suggestions={this.state.suggestions}\n                        onDelete={this.onTagDelete.bind(this)}\n                        placeholderText={Sefaria._(\"Add a topic...\")}\n                        delimiters={[\"Enter\", \"Tab\", \",\"]}\n                        onAddition={this.onTagAddition.bind(this)}\n                        onValidate={this.onTagValidate.bind(this)}\n                        onInput={this.updateSuggestedTags.bind(this)}\n                      />\n                      </div>\n\n                        <div className={\"publishButton\"}>\n                        <a href=\"#\" className={this.state.published ? \"button published\" : \"button\"} onClick={this.togglePublish}>\n                          <InterfaceText>{this.state.published ? \"Unpublish\" : \"Publish\"}</InterfaceText>\n                        </a>\n                        </div>\n\n                    </div> : null}\n\n                  </div>\n                </div>\n              </div>\n            </div>);\n  }\n}\nSheetMetadata.propTypes = {\n  id:               PropTypes.number.isRequired,\n  mode:             PropTypes.string.isRequired,\n  settingsLanguage: PropTypes.string.isRequired,\n  versionLanguage:  PropTypes.string,\n  version:          PropTypes.string,\n  narrowPanel:      PropTypes.bool,\n  close:            PropTypes.func.isRequired,\n  openNav:          PropTypes.func.isRequired,\n  showBaseText:     PropTypes.func.isRequired,\n  selectVersion:    PropTypes.func,\n  interfaceLang:    PropTypes.string,\n};\n\n\n\n\nexport default SheetMetadata;\n","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport Component from 'react-class';\nimport Sefaria  from './sefaria/sefaria';\nimport $  from './sefaria/sefariaJquery';\nimport Footer  from './Footer';\nimport { NavSidebar } from './NavSidebar';\nimport {\n  CategoryColorLine,\n  MenuButton,\n  DisplaySettingsButton,\n  LanguageToggleButton,\n  LoadingMessage,\n  ResponsiveNBox,\n  Link,\n  InterfaceText,\n} from './Misc';\n\nclass TopicPageAll extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      filter: '',\n      loading: true,\n      topicList: null,\n    };\n  }\n  componentDidMount() {\n    Sefaria.topicList().then(topicList => {\n      this.setState({ loading: false, topicList });\n    });\n  }\n  normalizeFilter(filter) { \n    return filter.toLowerCase();\n  }\n  handleFilterChange(e) {\n    this.setState({filter: this.normalizeFilter(e.currentTarget.value)});\n  }\n  resetFilter() {\n    this.setState({filter: ''});\n    $(\".topicFilterInput\").val(\"\");\n  }\n  render() {\n    const sidebarModules = [\n      {type: \"Promo\"},\n      {type: \"TrendingTopics\"},\n      {type: \"JoinTheConversation\"},\n      {type: \"SupportJMC\"},\n    ];\n\n    const hasFilter = this.state.filter.length > 1;  // dont filter by one letter. not useful\n    const isHeInt = Sefaria.interfaceLang == \"hebrew\";\n\n    const topicList = this.state.topicList ? this.state.topicList.filter(item => {\n      if (item.shouldDisplay === false || item.numSources == 0) { return false; }\n      \n      if (!hasFilter) {\n        const sortTitle = isHeInt ? item.primaryTitle.he : item.primaryTitle.en;\n        return sortTitle.toLowerCase().startsWith(this.props.topicLetter);\n      }\n\n      for (let title of item.normTitles) {\n        if (title.indexOf(this.state.filter) !== -1) { return true; }\n      }\n      return false;\n    \n    }).sort((a, b) => {\n      const lang = Sefaria.interfaceLang.slice(0,2);\n      if (!hasFilter) {\n        return b.primaryTitle[lang].stripNikkud() > a.primaryTitle[lang].stripNikkud() ? -1 : 1; // Alphabetical if no filter\n      } else {\n        return (0 + (!!b.primaryTitle[lang])) - (0 + (!!a.primaryTitle[lang])); // Keep original order (# source), but sort current interface lang first\n      }\n    \n    }).map(topic => {\n      const openTopic = e => {e.preventDefault(); this.props.setTopic(topic.slug, topic.primaryTitle)};\n      return (\n        <div className=\"navBlock\">\n          <a href={`/topics/${topic.slug}`} className=\"navBlockTitle\" onClick={openTopic}>\n            <InterfaceText text={topic.primaryTitle} />\n          </a>\n        </div>\n      );\n    }) : null;\n\n    const inputClasses = classNames({topicFilterInput: 1, en: !isHeInt, he: isHeInt});\n    return (\n      <div className=\"readerNavMenu\">\n        <div className=\"content\" onScroll={this.onScroll}>\n          <div className=\"sidebarLayout\">\n            <div className=\"contentInner\">\n              <h1>\n                <InterfaceText>All Topics</InterfaceText>\n              </h1>\n\n              <div className=\"topicFilterBox\">\n                <img className=\"searchIcon\" src=\"/static/icons/iconmonstr-magnifier-2.svg\" />\n                <input className={inputClasses} placeholder={Sefaria._(\"Search Topics\")} onChange={this.handleFilterChange} />\n                { this.state.filter.length ?\n                <div className=\"topicsFilterReset sans-serif\" onClick={this.resetFilter}>\n                  <InterfaceText>Reset</InterfaceText>\n                  <img className=\"topicsFilterResetIcon\" src=\"/static/icons/circled-x.svg\" />\n                </div>\n                : null }\n              </div>\n\n              <AlphabeticalTopicsNav />\n\n              <div className=\"allTopicsList\">\n                { topicList ?\n                  (topicList.length ?\n                    <div>\n                      <ResponsiveNBox content={topicList} initialWidth={this.props.initialWidth} />\n                    </div>\n                    : <LoadingMessage message=\"There are no topics here.\" heMessage=\"\" />)\n                  : <LoadingMessage />\n                }\n              </div>\n            </div>\n            <NavSidebar modules={sidebarModules} />\n          </div>\n          <Footer />\n        </div>\n      </div>\n    );\n  }\n}\nTopicPageAll.propTypes = {\n  interfaceLang:       PropTypes.string,\n  initialWidth:        PropTypes.number,\n  mutliPanel:          PropTypes.bool,\n  navHome:             PropTypes.func,\n  toggleLanguage:      PropTypes.func,\n  openDisplaySettings: PropTypes.func,\n};\nTopicPageAll.defaultProps = {\n  initialWidth:        1000,\n};\n\n\nconst AlphabeticalTopicsNav = () => {\n\n  const letterRange = (start, stop) => {\n    const result=[];\n    for (let idx = start.charCodeAt(0), end = stop.charCodeAt(0); idx <= end; ++idx) {\n      if ([\"ך\", \"ן\", \"ף\", \"ץ\"].indexOf(String.fromCharCode(idx)) === -1) {\n        result.push(String.fromCharCode(idx));\n      }\n    }\n    return result;\n  };\n\n  const letters = Sefaria.interfaceLang === \"hebrew\" ? letterRange(\"א\", \"ת\") : letterRange(\"A\", \"Z\");\n  return (\n    <div className=\"alphabeticalTopicsNav sans-serif\">\n      {letters.map(letter => (\n        <a href={\"/topics/all/\" + letter.toLowerCase()} key={letter}>\n          <InterfaceText>{letter}</InterfaceText>\n        </a>\n      ))}\n    </div>\n  );\n};\n\nexport default TopicPageAll;","import {\n    InterfaceText,\n    ResponsiveNBox\n} from './Misc';\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport Sefaria  from './sefaria/sefaria';\nimport $  from './sefaria/sefariaJquery';\nimport { NavSidebar, Modules } from './NavSidebar';\nimport Footer  from './Footer';\nimport {CategoryHeader} from \"./Misc\";\nimport Component from 'react-class';\n\n// The root topics page listing topic categories to browse\nconst TopicsPage = ({setNavTopic, multiPanel, initialWidth}) => {\n  let categoryListings = Sefaria.topic_toc.map(cat => {\n    const openCat = e => {e.preventDefault(); setNavTopic(cat.slug, {en: cat.en, he: cat.he})};\n    return (\n      <div className=\"navBlock\">\n        <a href={`/topics/category/${cat.slug}`} className=\"navBlockTitle\" onClick={openCat}>\n          <InterfaceText text={cat} />\n        </a>\n        <div className=\"navBlockDescription\">\n          <InterfaceText text={cat.categoryDescription} />\n        </div>\n      </div>\n    );\n  });\n  const letter = Sefaria.interfaceLang === \"hebrew\" ? \"א\" : \"a\";\n  categoryListings.push(\n    <div className=\"navBlock\">\n      <a href={\"/topics/all/\" + letter} className=\"navBlockTitle\">\n        <InterfaceText>All Topics A-Z</InterfaceText>\n      </a>\n      <div className=\"navBlockDescription\">\n        <InterfaceText>Browse or search our complete list of topics.</InterfaceText>\n      </div>\n    </div>\n  );\n  categoryListings = (\n    <div className=\"readerNavCategories\">\n      <ResponsiveNBox content={categoryListings} initialWidth={initialWidth} />\n    </div>\n  );\n\n  const about = multiPanel ? null :\n    <Modules type={\"AboutTopics\"} props={{hideTitle: true}} />;\n\n\n\n  const sidebarModules = [\n    multiPanel ? {type: \"AboutTopics\"} : {type: null},\n    {type: \"TrendingTopics\"},\n    {type: \"JoinTheConversation\"},\n    {type: \"SupportJMC\"},\n  ];\n\n\n  return (\n    <div className=\"readerNavMenu noLangToggleInHebrew\" key=\"0\">\n      <div className=\"content\">\n        <div className=\"sidebarLayout\">\n          <div className=\"contentInner\">\n              <div className=\"navTitle tight sans-serif\">\n                  <CategoryHeader type=\"topics\" buttonsToDisplay={[\"subcategory\", \"reorder\"]}>\n                    <h1><InterfaceText>Explore by Topic</InterfaceText></h1>\n                  </CategoryHeader>\n              </div>\n              { about }\n              { categoryListings }\n          </div>\n          <NavSidebar modules={sidebarModules} />\n        </div>\n        <Footer />\n      </div>\n    </div>\n  );\n};\n\n\n\nexport default TopicsPage;","import React  from 'react';\nimport Component from 'react-class';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport { NavSidebar } from './NavSidebar';\nimport Footer  from './Footer';\nimport {\n  CategoryColorLine,\n  DropdownModal,\n  DropdownButton,\n  DropdownOptionList,\n  FilterableList,\n  InterfaceText,\n  LanguageToggleButton,\n  LoadingMessage,\n  ProfilePic,\n  ResponsiveNBox,\n  SheetListing,\n  TabView,\n  TwoOrThreeBox,\n} from './Misc';\nimport {ContentText} from \"./ContentText\";\n\n\nclass CollectionPage extends Component {\n  constructor(props) {\n    super(props);\n\n    const collectionData = Sefaria.getCollectionFromCache(props.slug);\n\n    this.state = {\n      tab: props.tab,\n      showFilterHeader: !!props.tag,\n      sheetFilterTopic: props.tag || '',\n      collectionData: collectionData,\n    };\n \n    this.scrollableRef = React.createRef();\n  }\n  componentDidMount() {\n    this.loadData();\n    if (!!this.props.tag & !this.props.tab) {\n      this.props.setTab(\"sheets\");\n    }\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (this.props.slug !== prevProps.slug) {\n      this.setState({collectionData: null});\n      this.loadData();\n    }\n    if (this.props.tab != prevProps.tab) {\n      this.setState({tab: this.props.tab});\n    }\n    if (prevState.sheetFilterTopic !== this.state.sheetFilterTopic && $(\".content\").scrollTop() > 260) {\n      $(\".content\").scrollTop(0);\n    }\n  }\n  loadData() {\n    Sefaria.getCollection(this.props.slug)\n      .then(collectionData => {\n        this.setState({collectionData});\n        this.props.updateCollectionName(collectionData.name);\n      });\n  }\n  onDataChange() {\n    this.setState({collectionData: Sefaria._collections[this.props.slug]});\n  }\n  setFilter(filter) {\n    this.setState({sheetFilterTopic: filter, showFilterHeader: true});\n    this.props.setTab(\"sheets\");\n  }\n  memberList() {\n    var collection = this.state.collectionData;\n    if (!collection) { return null; }\n    var admins = collection.admins.map(function(member) {member.role = \"Owner\"; return member; });\n    var members = collection.members.map(function(member) {member.role = \"Editor\"; return member; });\n    var invitations = collection.invitations.map(function(member) {member.role = \"Invitation\"; return member; });\n\n    return admins.concat(members, invitations);\n  }\n  isMember() {\n    const members   = this.memberList();\n    return members && members.filter(function(x) { return x.uid == Sefaria._uid } ).length !== 0;\n  }\n  pinSheet(sheetId) {\n    if (this.pinning) { return; }\n    $.post(\"/api/collections/\" + this.props.slug + \"/pin-sheet/\" + sheetId, function(data) {\n      if (\"error\" in data) {\n        alert(data.error);\n      } else {\n        Sefaria._collections[this.props.slug] = data.collection;\n        this.setState({collectionData: data.collection});\n      }\n      this.pinning = false;\n    }.bind(this)).fail(function() {\n        alert(Sefaria._(\"There was an error pinning your sheet.\"));\n        this.pinning = false;\n    }.bind(this));\n    this.pinning = true;\n  }\n  sortSheets(option, a, b) {\n    // if x is not pinned, indexOf will return -1. Add 1 to make it zero and then convert to very high number so it will be sorted after pinned sheets\n    const [ai, bi] = [a, b].map(x => (this.state.collectionData.pinnedSheets.indexOf(x.id)+1) || 1e7);\n    if (ai !== bi) {\n      return  ai - bi;\n    \n    } else if (option == \"Recent\") {\n      return Date.parse(b.modified) - Date.parse(a.modified);\n  \n    } else if (option === \"Alphabetical\") {\n      return a.title.stripHtml().trim().toLowerCase() > b.title.stripHtml().trim().toLowerCase() ? 1 : -1;\n  \n    } else if (option === \"Views\") {\n      return b.views - a.views;\n    }\n  }\n  filterSheets(filter, sheet) {\n    //generally speaking we want to filter also by partial match of a tag, but there are cases where we want to load only sheets that match a passed in tag. |\n    //one such case is someone clicked a tag in the pinned tags view for the collection. For example if someone wants פורים they shouldnt get סיפורים\n    const exact = this.state.sheetFilterTopic == filter; \n    const n = text => text.toLowerCase();\n    filter = n(filter);\n    \n    //title and each topic in he and en\n    let filterableData  = sheet.topics.map(topic => [n(topic.en), n(topic.he), n(topic.asTyped)]).flat();\n    filterableData.push(n(sheet.title.stripHtml()));\n    \n    //this may be confusing- in the exact case, \"includes\" is an array func and returns if any of the above match filter exactly, \n    // if not \"includes\" is a string func and is testing for a substring, meaning the filter is a partial match to any of the above. \n    return exact ? filterableData.includes(filter) : filterableData.some(element => element.includes(filter));\n  }\n  renderSheet(sheet) {\n    return (\n      <SheetListing\n        sheet={sheet}\n        hideAuthor={true}\n        infoUnderneath={true}\n        showAuthorUnderneath={true}\n        hideCollection={true}\n        pinned={this.state.collectionData.pinnedSheets.indexOf(sheet.id) != -1}\n        pinnable={this.isMember()}\n        editable={sheet.author == Sefaria._uid}\n        saveable={sheet.author !== Sefaria._uid && !this.isMember()}\n        collectable={true}\n        pinSheet={this.pinSheet.bind(null, sheet.id)}\n        handleCollectionsChange={this.onDataChange}\n        toggleSignUpModal={this.props.toggleSignUpModal}\n        showSheetSummary={true}\n        key={sheet.id} />\n    );\n  }\n  renderEmptyList({filter}) {\n    if (filter) {\n      return (\n        <div className=\"emptyMessage sans-serif\">\n          <InterfaceText>No sheets matching </InterfaceText>;\n          \"<InterfaceText text={{en: filter, he: filter}} />\".\n        </div>\n      );\n    } else if (this.isMember()) {\n      return (\n        <div className=\"emptyMessage sans-serif\">\n          <InterfaceText>You can add sheets to this collection on your profile.</InterfaceText>\n          <br />\n          <a className=\"button\" href=\"/my/profile\">\n            <InterfaceText>Open Profile</InterfaceText>\n          </a>\n        </div>\n      );\n    } else {\n      return (\n        <div className=\"emptyMessage sans-serif\">\n          <InterfaceText>There are no sheets in this collection yet.</InterfaceText>\n        </div>\n      );\n    }\n  }\n  renderSearchLink({filter}) {\n    if (!filter || !this.state.collectionData.listed) { return null; }\n    return (\n      <a className=\"searchInCollectionLink sans-serif\" href={`/search?q=${filter}&tab=sheet&scollectionsFilters=${this.state.collectionData.name}`}\n        onClick={(e) => {\n          e.preventDefault();\n          this.props.searchInCollection(filter, this.state.collectionData.name);\n        }}>\n        <InterfaceText>Search the full text of this collection for</InterfaceText>&nbsp;\n        \"<InterfaceText text={{en: filter, he: filter}} />\" &raquo;\n      </a>\n    );\n  }\n  render() {\n    const collection = this.state.collectionData;\n    const sidebarModules = [];\n\n    let content;\n\n    if (!collection) {\n      content = <LoadingMessage />;\n    } else {\n      const sheets  = collection.sheets;\n      const isAdmin = collection.admins.filter(function(x) { return x.uid == Sefaria._uid } ).length !== 0;\n\n      if (collection.imageUrl) {\n        sidebarModules.push({type: \"Image\", props: {url: collection.imageUrl}});\n      }\n\n      const editorsBlock = (\n        <div>\n         {isAdmin ? <CollectionInvitationBox slug={this.props.slug} onDataChange={this.onDataChange}/> : null }\n         {this.memberList().map((member, i) => (\n            <CollectionMemberListing\n              member={member}\n              isAdmin={isAdmin}\n              isSelf={member.uid == Sefaria._uid}\n              slug={this.props.slug}\n              onDataChange={this.onDataChange}\n              key={i} />\n          ))}\n        </div>\n      );\n      sidebarModules.push({type: \"Wrapper\", props: {\n        title: \"Editors\",\n        content: editorsBlock}});\n\n      const hasContentsTab = (collection.pinnedTags && collection.pinnedTags.length);\n      const tabs = !hasContentsTab ? []\n        : [{id: \"contents\", title: {en: \"Contents\", he: Sefaria._(\"Contents\")}}];\n      tabs.push(\n        {id: \"sheets\", title: {en: \"Sheets\", he: Sefaria._(\"Sheets\")}},\n        {\n          id: 'filter',\n          title: {en: \"Filter\", he: Sefaria._(\"Filter\")},\n          icon: `/static/icons/arrow-${this.state.showFilterHeader ? 'up' : 'down'}-bold.svg`,\n          justifyright: true,\n          clickTabOverride: () => {\n            this.setState({showFilterHeader: !this.state.showFilterHeader});\n          }\n        }\n      );\n      const renderTab = t => (\n        <div className={classNames({tab: 1, noselect: 1, filter: t.justifyright, open: t.justifyright && this.state.showFilterHeader})}>\n          <InterfaceText text={t.title} />\n          { t.icon ? <img src={t.icon} alt={`${t.title.en} icon`} /> : null }\n        </div>\n      );\n\n      content = (\n        <>\n          <CollectionAbout\n            collection={collection}\n            isAdmin={isAdmin}\n            toggleLanguage={this.props.toggleLanguage} />\n\n          <TabView\n            tabs={tabs}\n            currTabName={this.state.tab}\n            renderTab={renderTab}\n            containerClasses={\"largeTabs\"}\n            setTab={this.props.setTab} >\n\n            {!hasContentsTab ? null :\n            <CollectionContentsTab \n              collection={collection}\n              setFilter={this.setFilter} />}\n\n            <FilterableList\n              pageSize={20}\n              filterFunc={this.filterSheets}\n              sortFunc={this.sortSheets}\n              renderItem={this.renderSheet}\n              renderEmptyList={this.renderEmptyList}\n              renderFooter={this.renderSearchLink}\n              sortOptions={[\"Recent\", \"Alphabetical\", \"Views\"]}\n              data={sheets}\n              containerClass={\"sheetList\"}\n              scrollableElement={this.scrollableRef}\n              initialRenderSize={collection._sheetsDisplayed}\n              onDisplayedDataChange={data => {collection._sheetsDisplayed = data.length}}\n              initialFilter={this.state.sheetFilterTopic}\n              showFilterHeader={this.state.showFilterHeader} />\n          \n          </TabView>\n        </>\n      );\n    }\n\n    return (\n      <div className=\"readerNavMenu\">\n        <CategoryColorLine category=\"Sheets\" />\n        <div className=\"content collectionPage\" ref={this.scrollableRef}>\n          <div className=\"sidebarLayout\">\n            <div className=\"contentInner\">\n              {content}\n            </div>\n            <NavSidebar modules={sidebarModules} />\n          </div>\n          <Footer />\n        </div>\n      </div>\n    );\n  }\n}\nCollectionPage.propTypes = {\n  setTab:             PropTypes.func.isRequired,\n  tab:                PropTypes.string,\n  name:               PropTypes.string,\n  slug:               PropTypes.string,\n  width:              PropTypes.number,\n  multiPanel:         PropTypes.bool,\n  tag:                PropTypes.string,\n  interfaceLang:      PropTypes.string,\n  searchInCollection: PropTypes.func,\n};\n\n\nconst CollectionAbout = ({collection, isAdmin, toggleLanguage}) => (\n  <div className=\"collectionInfo sans-serif\">\n    {collection.toc ?\n    <div className=\"navTitle\">\n      <h1>\n        <ContentText text={{en: collection.toc.title, he: collection.toc.heTitle}} />\n      </h1>\n      { isAdmin ? <EditCollectionButton slug={collection.slug} /> : null }\n      { Sefaria.multiPanel && Sefaria.interfaceLang !== \"hebrew\" ? <LanguageToggleButton toggleLanguage={toggleLanguage} /> : null }\n    </div>\n    : \n    <div className=\"navTitle\">\n      <h1>{collection.name}</h1>\n      { isAdmin ? <EditCollectionButton slug={collection.slug} /> : null }\n    </div> }\n\n    <a className=\"collectionLabel\" href=\"/collections\">\n      <InterfaceText>Collection</InterfaceText>\n    </a>\n\n    {collection.toc ?\n      <div className=\"collectionDescription\">\n        <ContentText html={{en: collection.toc.description, he: collection.toc.heDescription}} />\n      </div>\n    : collection.description ?\n      <div className=\"collectionDescription\"  dangerouslySetInnerHTML={ {__html: collection.description} }></div>\n    : null }\n\n    {collection.websiteUrl ?\n      <a className=\"collectionWebsite\" target=\"_blank\" href={collection.websiteUrl}>{collection.websiteUrl.replace(/https?:\\/\\//, \"\")}</a>\n      : null }\n  </div>\n);\n\n\nconst EditCollectionButton = ({slug}) => (\n  <a className=\"button small white\" href={`/collections/${slug}/settings`}>\n    <img className=\"buttonIcon\" src=\"/static/icons/tools-write-note.svg\" /><InterfaceText>Edit</InterfaceText>\n  </a>\n);\n\n\n\nconst CollectionContentsTab = ({collection, setFilter}) => {\n  let pinnedTags = collection.pinnedTags;\n  \n  if (!pinnedTags || !pinnedTags.length) { return null; }\n\n  if (collection.name === \"גיליונות נחמה\" && Sefaria.interfaceLang === \"english\"){\n    pinnedTags = [\"English\"].concat(pinnedTags);\n  }\n\n  // Tags may be grouped under labels which are represented as objects in `pinnedTags`, instead of strings.\n  const groupedTags = pinnedTags.reduce((accum, tag) => {\n    if (typeof tag === \"object\") {\n      return accum.concat([{label: tag, contents: []}]);\n    } else if (accum.length == 0) {\n      return accum.concat([{label: null, contents: [tag]}]);\n    } else {\n      accum[accum.length -1].contents.push(tag);\n      return accum;\n    }\n  }, []);\n\n  return (\n    <div className=\"collectionContentsTab\">\n      {groupedTags.map(tagGroup => (\n        <div key={tagGroup.label ? tagGroup.label.en : \"contents\"}>\n          {!tagGroup.label ? null :\n          <div className=\"collectionContentsSectionLabel sans-serif\">\n            <InterfaceText text={tagGroup.label} />\n          </div>}\n          <ResponsiveNBox content={tagGroup.contents.map(tag => (\n            <a href={`/collections/${collection.slug}?tag=${tag}`} className=\"collectionContentsTag\" onClick={(e) => {\n              e.preventDefault();\n              setFilter(tag);}}>\n              <InterfaceText>{tag}</InterfaceText>\n            </a>   \n          ))} />\n        </div>\n      ))}\n    </div>\n  );\n};\n\n\nclass CollectionInvitationBox extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      inviting: false,\n      message: null\n    };\n  }\n  onInviteClick() {\n    if (!this.state.inviting) {\n      this.inviteByEmail($(\"#collectionInvitationInput\").val());\n    }\n  }\n  flashMessage(message) {\n    this.setState({message: message});\n    setTimeout(function() {\n      this.setState({message: null});\n    }.bind(this), 5000);\n  }\n  inviteByEmail(email) {\n    if (!this.validateEmail(email)) {\n      this.flashMessage(Sefaria._(\"Please enter a valid email address.\"));\n      return;\n    }\n    this.setState({inviting: true, message: Sefaria._(\"Inviting...\")})\n    $.post(\"/api/collections/\" + this.props.slug + \"/invite/\" + email, function(data) {\n      if (\"error\" in data) {\n        alert(data.error);\n        this.setState({message: null, inviting: false});\n      } else {\n        Sefaria._collections[this.props.slug] = data.collection;\n        $(\"#collectionInvitationInput\").val(\"\");\n        this.flashMessage(data.message);\n        this.setState({inviting: false})\n        this.props.onDataChange();\n      }\n    }.bind(this)).fail(function() {\n        alert(Sefaria._(\"There was an error sending your invitation.\"));\n        this.setState({message: null, inviting: false});\n    }.bind(this));\n  }\n  validateEmail(email) {\n    var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n    return re.test(email);\n  }\n  render() {\n    return (<div className=\"collectionInvitationBox sans-serif\">\n              <div className=\"collectionInvitationBoxInner\">\n                <input id=\"collectionInvitationInput\" placeholder={Sefaria._(\"Email Address\")} />\n                <div className=\"button small\" onClick={this.onInviteClick}>\n                  <InterfaceText>Invite</InterfaceText>\n                </div>\n              </div>\n              {this.state.message ?\n                <div className=\"collectionInvitationBoxMessage\"><InterfaceText>{this.state.message}</InterfaceText></div>\n                : null}\n            </div>);\n  }\n}\nCollectionInvitationBox.propTypes = {\n  slug: PropTypes.string.isRequired,\n  onDataChange: PropTypes.func.isRequired,\n};\n\n\nclass CollectionMemberListing extends Component {\n  render() {\n    if (this.props.member.role == \"Invitation\") {\n      return this.props.isAdmin ?\n        <CollectionInvitationListing\n          member={this.props.member}\n          slug={this.props.slug}\n          onDataChange={this.props.onDataChange} />\n        : null;\n    }\n\n    return (\n      <div className=\"collectionMemberListing\">\n        <a href={this.props.member.profileUrl} className=\"collectionMemberListingPic\">\n          <ProfilePic\n            url={this.props.member.imageUrl}\n            name={this.props.member.name}\n            len={40}\n          />\n        </a>\n        <div className=\"collectionMemberListingText\">\n          <a href={this.props.member.profileUrl} className=\"collectionMemberListingName\">\n            {this.props.member.name}\n          </a>\n          <div className=\"collectionMemberListingRole\">\n            <InterfaceText>{this.props.member.role}</InterfaceText>\n          {this.props.isAdmin || this.props.isSelf ?\n            <CollectionMemberListingActions\n              member={this.props.member}\n              slug={this.props.slug}\n              isAdmin={this.props.isAdmin}\n              isSelf={this.props.isSelf}\n              onDataChange={this.props.onDataChange} />\n            : null }\n          </div>\n        </div>\n      </div>);\n  }\n}\nCollectionMemberListing.propTypes ={\n  member:       PropTypes.object.isRequired,\n  isAdmin:      PropTypes.bool,\n  isSelf:       PropTypes.bool,\n  slug:         PropTypes.string,\n  onDataChange: PropTypes.func.isRequired,\n};\n\n\nclass CollectionInvitationListing extends Component {\n  render() {\n    return (\n      <div className=\"collectionMemberListing\">\n        <div className=\"collectionMemberListingPic invitation\">\n          <img src=\"/static/icons/mail.svg\" />\n        </div>\n        <div className=\"collectionMemberListingText\">\n          <span className=\"collectionMemberListingName\">\n            {this.props.member.email}\n          </span>\n          <div className=\"collectionMemberListingRole\">\n            <InterfaceText>Invited</InterfaceText>\n            <CollectionMemberListingActions\n              member={this.props.member}\n              slug={this.props.slug}\n              isInvitation={true}\n              onDataChange={this.props.onDataChange} />\n          </div>\n        </div>\n      </div>);\n  }\n}\nCollectionInvitationListing.propTypes = {\n  member:       PropTypes.object.isRequired,\n  slug:         PropTypes.string,\n  onDataChange: PropTypes.func,\n};\n\n\nclass CollectionMemberListingActions extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      menuOpen: false,\n      invitationResent: false\n    };\n  }\n  componentDidMount() {\n    document.addEventListener('mousedown', this.handleClickOutside, false);\n  }\n  componentWillUnmount() {\n    document.removeEventListener('mousedown', this.handleClickOutside, false);\n  }\n  handleClickOutside(event) {\n    const domNode = ReactDOM.findDOMNode(this);\n    if (((!domNode || !domNode.contains(event.target))) && this.state.menuOpen) {\n      this.setState({menuOpen: false});\n    }\n  }\n  toggleMenu() {\n    this.setState({menuOpen: !this.state.menuOpen});\n  }\n  setRole(role) {\n    if (this.props.isSelf && this.props.isAdmin && role !== \"admin\") {\n      if (!confirm(Sefaria._(\"Are you sure you want to change your collection role? You won't be able to undo this action unless another owner restores your permissions.\"))) {\n        return;\n      }\n    }\n\n    $.post(\"/api/collections/\" + this.props.slug + \"/set-role/\" + this.props.member.uid + \"/\" + role, function(data) {\n      if (\"error\" in data) {\n        alert(data.error)\n      } else {\n        Sefaria._collections[data.slug] = data;\n        this.props.onDataChange();\n      }\n    }.bind(this));\n  }\n  removeMember() {\n    var message = this.props.isSelf ?\n      Sefaria._(\"Are you sure you want to leave this collection?\") :\n      Sefaria._(\"Are you sure you want to remove this person from this collection?\");\n\n    if (confirm(message)) {\n      this.setRole(\"remove\");\n    }\n  }\n  resendInvitation() {\n    $.post(\"/api/collections/\" + this.props.slug + \"/invite/\" + this.props.member.email, function(data) {\n      if (\"error\" in data) {\n        alert(data.error)\n      } else {\n        Sefaria._collections[this.props.slug] = data.collection;\n        this.props.onDataChange();\n        this.setState({\"invitationResent\": true});\n      }\n    }.bind(this));\n  }\n  removeInvitation() {\n    if (confirm(Sefaria._(\"Are you sure you want to remove this invitation?\"))) {\n      $.post(\"/api/collections/\" + this.props.slug + \"/invite/\" + this.props.member.email + \"/uninvite\", function(data) {\n        if (\"error\" in data) {\n          alert(data.error)\n        } else {\n          Sefaria._collections[this.props.slug] = data.collection;\n          this.props.onDataChange();\n        }\n      }.bind(this));\n    }\n  }\n  render() {\n    return (\n      <div className=\"collectionMemberListingActions\" onClick={this.toggleMenu}>\n        <div className=\"collectionMemberListingActionsButton\">\n          <i className=\"fa fa-gear\"></i>\n        </div>\n        {this.state.menuOpen ?\n          <div className=\"collectionMemberListingActionsMenu\">\n            {this.props.isAdmin ?\n              <div className=\"action\" onClick={this.setRole.bind(this, \"admin\")}>\n                <span className={classNames({role: 1, current: this.props.member.role == \"Owner\"})}><InterfaceText>Owner</InterfaceText></span>\n                - <InterfaceText>can invite & edit settings</InterfaceText>\n              </div>\n              : null }\n            {this.props.isAdmin ?\n              <div className=\"action\" onClick={this.setRole.bind(this, \"member\")}>\n                <span className={classNames({role: 1, current: this.props.member.role == \"Editor\"})}><InterfaceText>Editor</InterfaceText></span>\n                - <InterfaceText>can add & remove sheets</InterfaceText>\n              </div>\n              : null}\n            {this.props.isAdmin || this.props.isSelf ?\n              <div className=\"action\" onClick={this.removeMember}>\n                <span className=\"role\"><InterfaceText>{this.props.isSelf ? \"Leave Collection\" : \"Remove\"}</InterfaceText></span>\n              </div>\n            : null }\n            {this.props.isInvitation  && !this.state.invitationResent ?\n              <div className=\"action\" onClick={this.resendInvitation}>\n                <span className=\"role\"><InterfaceText>Resend Invitation</InterfaceText></span>\n              </div>\n              : null}\n            {this.props.isInvitation  && this.state.invitationResent ?\n              <div className=\"action\">\n                <span className=\"role\"><InterfaceText>Invitation Resent</InterfaceText></span>\n              </div>\n              : null}\n            {this.props.isInvitation ?\n              <div className=\"action\" onClick={this.removeInvitation}>\n                <span className=\"role\"><InterfaceText>Remove</InterfaceText></span>\n\n              </div>\n              : null}\n          </div>\n        : null }\n      </div>);\n  }\n}\nCollectionMemberListingActions.propTypes = {\n  member:       PropTypes.object.isRequired,\n  slug:         PropTypes.string.isRequired,\n  isAdmin:      PropTypes.bool,\n  isSelf:       PropTypes.bool,\n  isInvitation: PropTypes.bool,\n  onDataChange: PropTypes.func.isRequired\n};\n\n\nexport default CollectionPage;\n","import React, { useRef }  from 'react';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport Footer  from './Footer';\nimport ReactDOM  from 'react-dom';\nimport Sefaria  from './sefaria/sefaria';\nimport $  from './sefaria/sefariaJquery';\nimport Component from 'react-class';\nimport { NavSidebar }from './NavSidebar';\nimport {\n  InterfaceText,\n  LoginPrompt,\n  FollowButton,\n} from './Misc';\n\n\nclass NotificationsPanel extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      page: 1,\n      loadedToEnd: false,\n      loading: false\n    };\n  }\n  componentDidMount() {\n    $(ReactDOM.findDOMNode(this)).find(\".content\").bind(\"scroll\", this.handleScroll);\n    this.markAsRead();\n  }\n  componentDidUpdate() {\n    this.markAsRead();\n  }\n  handleScroll() {\n    if (this.state.loadedToEnd || this.state.loading) { return; }\n    var $scrollable = $(ReactDOM.findDOMNode(this)).find(\".content\");\n    var margin = 600;\n    if($scrollable.scrollTop() + $scrollable.innerHeight() + margin >= $scrollable[0].scrollHeight) {\n      this.getMoreNotifications();\n    }\n  }\n  markAllAsRead() {\n    $.post(\"/api/notifications/read\", {notifications: \"all\"}, function(data) {\n      this.props.setUnreadNotificationsCount(data.unreadCount);\n    }.bind(this));\n  }\n  markAsRead() {\n    // Marks each notification that is loaded into the page as read via API call\n    var ids = [];\n    Sefaria.notifications.map(n => {\n      if (!n.read) {\n        ids.push(n._id);\n        n.read = true;\n      }\n    });\n    if (ids.length) {\n      $.post(\"/api/notifications/read\", {notifications: JSON.stringify(ids)}, function(data) {\n        this.props.setUnreadNotificationsCount(data.unreadCount);\n      }.bind(this));\n    }\n  }\n  getMoreNotifications() {\n    $.getJSON(\"/api/notifications?page=\" + this.state.page, this.loadMoreNotifications);\n    this.setState({loading: true});\n  }\n  loadMoreNotifications(data) {\n    if (data.count < data.page_size) {\n      this.setState({loadedToEnd: true});\n    }\n    Sefaria.notifications = Sefaria.notifications.concat(data.notifications);\n    this.setState({page: data.page + 1, loading: false});\n    this.forceUpdate();\n  }\n  render() {\n    const notifications = Sefaria.notifications.map(n => \n      <Notifications type={n.type} props={n} key={n._id} />\n    );\n    const sidebarModules = [{type: \"StayConnected\"}];\n    return (\n      <div className=\"readerNavMenu sans-serif\">\n        <div className=\"content\">\n          <div className=\"sidebarLayout\">\n            <div className=\"contentInner\">\n            <div className=\"notificationsTopContainer\">\n              <div className=\"notificationsHeaderBox\"><h1>\n                <img className=\"notificationsTitleIcon\" src=\"/static/icons/notification.svg\" />\n                <InterfaceText>Notifications</InterfaceText>\n              </h1></div>{ Sefaria.notificationCount > 0 ? <button className=\"button small white\" onClick={this.markAllAsRead}>Mark all as Read</button> : null}\n              </div>\n              { Sefaria._uid ?\n              notifications :\n              <LoginPrompt fullPanel={true} /> }\n            </div>\n            {Sefaria._siteSettings.TORAH_SPECIFIC ? <NavSidebar modules={sidebarModules} /> : null}\n          </div>\n          <Footer />\n        </div>\n      </div>\n    );\n  }\n}\nNotificationsPanel.propTypes = {\n  setUnreadNotificationsCount: PropTypes.func.isRequired,\n  interfaceLang:               PropTypes.string,\n};\n\n\nconst Notifications = ({type, props}) => {\n  // Choose the appropriate component to render by `type`\n  const notificationTypes = {\n    \"sheet publish\":   SheetPublishNotification,\n    \"sheet like\":      SheetLikeNotification,\n    \"follow\":          FollowNotification,\n    \"collection add\":  CollectionAddNotification,\n    \"index\":           IndexNotification,\n    \"version\":         VersionNotification,\n    \"general\":         GeneralNotification,\n  };\n  if (!type || !notificationTypes[type]) { return null; }\n  const NotificationType = notificationTypes[type];\n  return <NotificationType {...props} />\n};\n\n\nconst Notification = ({imageUrl, imageLink, topLine, date, body}) => {\n  \n  let image = imageUrl ? <img src={imageUrl} /> : null\n  image     = imageLink ? <a href={imageLink}>{image}</a> : image;\n\n  return (\n    <div className=\"notification\">\n      <div className=\"imageSection\">\n        {image}\n      </div>\n      \n      <div className=\"mainSection\">\n        <div className=\"topLine\">\n          <div className=\"topLineText\">{topLine}</div>\n          <div className=\"date\">\n            <InterfaceText text={{en: `${Sefaria.util.naturalTime(date)} ago`, he: `לפני ${Sefaria.util.naturalTime(date)}`}} />\n          </div>\n        </div>\n        \n        {body ?\n        <div className=\"notificationBody\">\n          {body}\n        </div> :\n        null }\n      </div>\n    </div>\n  );\n};\n\n\nconst SheetPublishNotification = ({date, content}) => {\n  const topLine = (\n    <>\n      <a href={content.profileUrl}>{content.name}</a>&nbsp;\n      <InterfaceText>published a new sheet</InterfaceText>\n    </>\n  );\n\n  const body = (\n    <>\n      <a className=\"sheetTitle\" href={\"/sheets/\" + content.sheet_id}>{content.sheet_title}</a>\n      {content.summary ?\n      <div className=\"sheetSummary\">\n        {content.summary}\n      </div>\n      : null}\n    </>\n  );\n\n  return (\n    <Notification\n      topLine={topLine}\n      imageUrl={content.imageUrl}\n      imageLink={content.profileUrl}\n      date={date}\n      body={body} />\n  );\n};\n\n\nconst SheetLikeNotification = ({date, content}) => {\n  const topLine = (\n    <>\n      <a href={content.profileUrl}>{content.name}</a>&nbsp;\n      <InterfaceText>liked your sheet</InterfaceText>\n    </>\n  );\n\n  const body = (\n    <>\n      <a className=\"sheetTitle\" href={\"/sheets/\" + content.sheet_id}>{content.sheet_title}</a>\n    </>\n  );\n\n  return (\n    <Notification\n      topLine={topLine}\n      imageUrl={content.imageUrl}\n      imageLink={content.profileUrl}\n      date={date}\n      body={body} />\n  );\n};\n\n\nconst FollowNotification = ({date, content}) => {\n\n  const topLine = (\n    <>\n      <a href={content.profileUrl}>{content.name}</a>&nbsp;\n      <InterfaceText>is now following you</InterfaceText>\n    </>\n  );\n\n  const body = content.is_already_following ? null : (\n    <FollowButton\n      large={true}\n      uid={content.follower}\n      followBack={true}\n      smallText={false} />\n  );\n\n  return (\n    <Notification\n      topLine={topLine}\n      imageUrl={content.imageUrl}\n      imageLink={content.profileUrl}\n      date={date}\n      body={body} />\n  );\n};\n\n\n\nconst CollectionAddNotification = ({date, content}) => {\n\n  const topLine = (\n    <>\n      <a href={content.profileUrl}>{content.name}</a>&nbsp;\n      <InterfaceText>added you to a collection</InterfaceText>\n    </>\n  );\n\n  const body = (\n    <>\n      <a className=\"collectionName\" href={\"/collections/\" + content.collection_slug}>\n        {content.collection_name}\n      </a>\n    </>\n  );\n\n  return (\n    <Notification\n      topLine={topLine}\n      imageUrl={content.imageUrl}\n      imageLink={content.profileUrl}\n      date={date}\n      body={body} />\n  );\n};\n\n\nconst IndexNotification = ({date, content}) => {\n  const title = content.index;\n  const heTitle = Sefaria.index(title).heTitle;\n  const url = \"/\" + Sefaria.normRef(title);\n\n  const topLine = (\n    <>\n      <InterfaceText>New Text</InterfaceText>:&nbsp;\n      <a href={url}>\n        <InterfaceText text={{en: title, he: heTitle}} />\n      </a>\n    </>\n  );\n\n  const body = (\n    <div className=\"globalNotificationText\">\n      <InterfaceText html={content} />\n    </div>\n  );\n\n  return (\n    <Notification\n      topLine={topLine}\n      imageUrl={\"/static/img/icon.png\"}\n      date={date}\n      body={body} />\n  );\n};\n\n\nconst VersionNotification = ({date, content}) => {\n  const title = content.index;\n  const heTitle = Sefaria.index(title).heTitle;\n  const url = \"/\" + Sefaria.normRef(title);\n\n  const topLine = (\n    <>\n      <span className=\"int-en\">\n        New { content.language == \"en\"?\"English\":\"Hebrew\"} version of <a href={url}>{title}</a>: {content.version}\n      </span>\n      <span className=\"int-he\">\n        גרסה חדשה של <a href={url}>{heTitle}</a> ב{ content.language == \"en\"?\"אנגלית\":\"עברית\"} : {content.version}\n      </span>\n    </>\n  );\n\n  const body = (\n    <div className=\"globalNotificationText\">\n      <InterfaceText html={content} />\n    </div>\n  );\n\n  return (\n    <Notification\n      topLine={topLine}\n      imageUrl={\"/static/img/icon.png\"}\n      date={date}\n      body={body} />\n  );\n};\n\n\nconst GeneralNotification = ({date, content}) => {\n  const topLine = (\n    <div className=\"globalNotificationText\">\n      <InterfaceText html={content} />\n    </div>\n  );\n\n  return (\n    <Notification\n      topLine={topLine}\n      imageUrl={\"/static/img/icon.png\"}\n      date={date} />\n  );\n};\n\n\nexport { \n  NotificationsPanel,\n  Notifications,\n}","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport Component from 'react-class';\nimport Sefaria  from './sefaria/sefaria';\nimport { useScrollToLoad } from \"./Hooks\";\nimport { NavSidebar } from './NavSidebar';\nimport Footer  from './Footer';\nimport { \n  SheetBlock,\n  TextPassage\n} from './Story';\nimport {\n  CategoryColorLine,\n  MenuButton,\n  DisplaySettingsButton,\n  TextBlockLink,\n  LanguageToggleButton,\n  LoadingMessage,\n  InterfaceText,\n} from './Misc';\n\n\nconst UserHistoryPanel = ({menuOpen, toggleLanguage, openDisplaySettings, openNav, compare, toggleSignUpModal}) => {\n  const store = menuOpen === \"saved\" ? Sefaria.saved : Sefaria.userHistory;\n  const contentRef = useRef();\n\n  const title = (\n    <span className=\"sans-serif\">\n      <a href=\"/texts/saved\" className={\"navTitleTab\" + (menuOpen === \"saved\" ? \" current\" : \"\")}>\n        <img src=\"/static/icons/bookmark.svg\" />\n        <InterfaceText>Saved</InterfaceText>\n      </a>\n      <a href=\"/texts/history\" className={\"navTitleTab\" + (menuOpen === \"history\" ? \" current\" : \"\")}>\n        <img src=\"/static/icons/clock.svg\" />\n        <InterfaceText>History</InterfaceText>\n      </a>\n    </span>\n  );\n\n  const sidebarModules = [\n    {type: \"Promo\"},\n    {type: \"SupportJMC\"},\n  ];\n\n  const footer = compare ? null : <Footer />;\n  const navMenuClasses = classNames({readerNavMenu: 1, compare, noLangToggleInHebrew: 1});\n\n  return (\n    <div className={navMenuClasses}>\n      <div className=\"content\" ref={contentRef}>\n        <div className=\"sidebarLayout\">\n          <div className=\"contentInner\">\n            <div className=\"navTitle sans-serif-in-hebrew\">\n              <h1>{ title }</h1>\n              {Sefaria.interfaceLang !== \"hebrew\" && Sefaria._siteSettings.TORAH_SPECIFIC ?\n              <LanguageToggleButton toggleLanguage={toggleLanguage} /> : null}\n            </div>\n            <UserHistoryList\n              store={store}\n              scrollableRef={contentRef}\n              menuOpen={menuOpen}\n              toggleSignUpModal={toggleSignUpModal}\n              key={menuOpen}/>\n          </div>\n          <NavSidebar modules={sidebarModules} />\n        </div>\n        {footer}\n      </div>\n    </div>\n    );\n};\nUserHistoryPanel.propTypes = {\n  toggleLanguage:      PropTypes.func.isRequired,\n  openDisplaySettings: PropTypes.func.isRequired,\n  openNav:             PropTypes.func.isRequired,\n  compare:             PropTypes.bool,\n  menuOpen:            PropTypes.string.isRequired,\n};\n\n\nconst UserHistoryList = ({store, scrollableRef, menuOpen, toggleSignUpModal}) => {\n  const [items, setItems] = useState(store.loaded ? store.items : null);\n\n  // Store changes when switching tabs, reset items\n  useEffect(() => {\n    setItems(store.loaded ? store.items : null);\n  }, [store]);\n\n  useScrollToLoad({\n    scrollableRef: scrollableRef,\n    url: \"/api/profile/user_history?secondary=0&annotate=1\" + (menuOpen === \"saved\" ? \"&saved=1\" : \"\"),\n    setter: data => {\n      if (!store.loaded) {\n        store.items = []; // saved intially has items that have not been annotated with text\n        store.loaded = true;\n      }\n      store.items.push(...data);\n      setItems(store.items.slice());\n    },\n    itemsPreLoaded: items ? items.length : 0,\n  });\n\n  if (menuOpen === 'history' && !Sefaria.is_history_enabled) {\n    return (\n      <div className=\"savedHistoryMessage\">\n        <span className=\"int-en\">Reading history is currently disabled. You can re-enable this feature in your <a href=\"/settings/account\">account settings</a>.</span>\n        <span className=\"int-he\">היסטורית קריאה כבויה כרגע. ניתן להפעילה מחדש במסך <a href=\"/settings/account\">ההגדרות</a>.</span>\n      </div>\n    );\n  } else if (!items) {\n    return <LoadingMessage />;\n  } else if (items.length === 0) {\n    return (\n      <div className=\"savedHistoryMessage sans-serif\">\n        {menuOpen === \"history\" ?\n        <InterfaceText>Texts and sheets that you read will be available for you to see here.</InterfaceText>\n        : <InterfaceText>Click the bookmark icon on texts or sheets to save them here.</InterfaceText>}\n      </div>\n    );\n  }\n  \n  return (\n    <div className=\"savedHistoryList\">\n      {items.reduce((accum, curr, index) => {\n        // reduce consecutive history items with the same text/sheet\n        if (!accum.length || menuOpen === \"saved\") {return accum.concat([curr]); }\n        const prev = accum[accum.length-1];\n\n        if (curr.is_sheet && curr.sheet_id === prev.sheet_id) {\n          return accum;\n        } else if (!curr.is_sheet && curr.book === prev.book) {\n          return accum;\n        } else {\n          return accum.concat(curr);\n        }\n      }, [])\n      .map((item, iitem) => {\n        const key = item.ref + \"|\" + item.time_stamp + \"|\" + iitem;\n        \n        const timeStamp = menuOpen === \"saved\" ? null : (\n          <div className=\"timeStamp sans-serif\">\n            { Sefaria.util.naturalTime(item.time_stamp, {short: true}) }\n          </div>\n        );\n\n        if (item.is_sheet) {\n          return <SheetBlock sheet={{\n              sheet_id: item.sheet_id,\n              sheet_title: item.title,\n              publisher_name: item.ownerName,\n              publisher_id: item.owner,\n              publisher_image: item.ownerImageUrl,\n              publisher_url: item.ownerProfileUrl,\n              publisher_organization: item.ownerOrganization,\n              publisher_followed: Sefaria.following.includes(item.owner),\n            }}\n            afterSave={timeStamp}\n            smallfonts={true}\n            key={key}\n          />\n        }else if (!!item?.text) {\n          // item.versions\n          return <TextPassage text={{\n                ref: item.ref,\n                heRef: item.he_ref,\n                en: item.text.en,\n                he: item.text.he,\n                versions: item.versions,\n              }}\n             afterSave={timeStamp}\n             toggleSignUpModal={toggleSignUpModal}\n             key={key}\n          />;\n        }else{\n          return null;\n        }\n      })}\n    </div>\n  );\n};\n\n\nexport default UserHistoryPanel;","import React  from 'react';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport TextRange  from './TextRange';\nimport { AddToSourceSheetWindow } from './AddToSourceSheet';\nimport { Note } from './Misc';\nimport PropTypes  from 'prop-types';\nimport Component      from 'react-class';\n\nclass NoteListing extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      showSheetModal: false\n    };\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (!prevState.showSheetModal && this.state.showSheetModal) {\n      this.positionSheetModal();\n    }\n  }\n  showSheetModal() {\n    this.setState({showSheetModal: true});\n  }\n  hideSheetModal() {\n    this.setState({showSheetModal: false});\n  }\n  positionSheetModal() {\n    $(\".addToSourceSheetModal\").position({my: \"center center-40\", at: \"center center\", of: window});\n  }\n  deleteNote() {\n    if (!confirm(Sefaria._(\"Are you sure you want to delete this note?\"))) { return; }\n    const resolve = this.props.onDeleteNote || (()=>{});\n    Sefaria.deleteNote(this.props.data._id).then(resolve);\n  }\n  render() {\n    var data = this.props.data;\n    var url  = \"/\" + Sefaria.normRef(data.ref) + \"?with=Notes\";\n\n    return (<div className=\"noteListing\">\n              <div className=\"actionButtons\">\n                <img src=\"/static/icons/sheet.svg\" onClick={this.showSheetModal} />\n                <img src=\"/static/icons/circled-x.svg\" onClick={this.deleteNote} />\n              </div>\n              <a href={url}>\n                {this.props.showText ?\n                  <TextRange sref={data.ref} /> :\n                  <span className=\"textRange placeholder\">\n                    <span className=\"title\">\n                      {data.ref}\n                    </span>\n                  </span> }\n              </a>\n              <Note text={data.text} />\n              {this.state.showSheetModal ?\n                <div>\n                  <AddToSourceSheetWindow\n                    srefs={[data.ref]}\n                    note={data.text}\n                    close={this.hideSheetModal} />\n                  <div className=\"mask\" onClick={this.hideSheetModal}></div>\n                </div>\n                : null }\n\n            </div>);\n  }\n}\nNoteListing.propTypes = {\n  data:         PropTypes.object.isRequired,\n  showText:     PropTypes.bool,\n  onDeleteNote: PropTypes.func,\n};\nNoteListing.defaultProps = {\n  showText: true\n};\n\nexport default NoteListing;\n","import React, { useState } from 'react';\nimport Component from 'react-class';\nimport PropTypes  from 'prop-types';\nimport Sefaria  from './sefaria/sefaria';\nimport NoteListing  from './NoteListing';\nimport Footer  from './Footer';\nimport {\n  CollectionListing,\n  FilterableList,\n  LoadingMessage,\n  TabView,\n  SheetListing,\n  ProfileListing,\n  ProfilePic,\n  FollowButton,\n  InterfaceText,\n} from './Misc';\n\nclass UserProfile extends Component {\n  constructor(props) {\n    super(props);\n    this.state = this.getPrivateTabState(props);\n  }\n  componentDidUpdate(prevProps) {\n    if (!!this.props.profile && (!prevProps || prevProps.profile.id !== this.props.profile.id)\n        || this.props.tab !== prevProps.tab) {\n      this.setState(this.getPrivateTabState(this.props));\n    }\n  }\n  getPrivateTabState(props) {\n    const showNotes = !!props.profile.id && Sefaria._uid === props.profile.id;\n    const showBio = !!props.profile.bio;\n    let tabs = [\n      { id: \"sheets\", text: \"Sheets\", icon: \"/static/icons/sheet.svg\" },\n      { id: \"collections\", text: \"Collections\", icon: \"/static/icons/collection.svg\" },\n      { id: \"followers\", text: \"Followers\", invisible: true },\n      { id: \"following\", text: \"Following\", invisible: true },\n    ];\n    if (Sefaria._siteSettings.TORAH_SPECIFIC) {\n        tabs.push({\n            id: \"torah-tracker\",\n            text: \"Torah Tracker\",\n            invisible: Sefaria._uid !== props.profile.id,\n            icon: \"/static/icons/chart-icon.svg\",\n            href: \"/torahtracker\",\n            applink: true,\n            justifyright: true\n        });\n    }\n    if (showNotes) {\n      tabs.splice(2, 0, { id: \"notes\", text: Sefaria._(\"Notes\"), icon: \"/static/icons/note.svg\" });\n    }\n    if (showBio) {\n      tabs.push({ id: \"about\", text: Sefaria._(\"About\"), icon: \"/static/icons/info.svg\" });\n    }\n    return {\n      showNotes,\n      showBio,\n      tabs,\n    };\n  }\n  _getTabViewRef(ref) { this._tabViewRef = ref; }\n  getCollections() {\n    return Sefaria.getUserCollections(this.props.profile.id);\n  }\n  getCollectionsFromCache() {\n    return Sefaria.getUserCollectionsFromCache(this.props.profile.id);\n  }\n  filterCollection(currFilter, collection) {\n    const n = text => text.toLowerCase();\n    currFilter = n(currFilter);\n    return n(collection.name).indexOf(currFilter) > -1;\n  }\n  sortCollection(currSortOption, collectionA, collectionB) {\n    switch(currSortOption) {\n      case \"Recent\":\n        return collectionB.lastModified > collectionA.lastModified ? 1 : -1;\n        break;\n      case \"Name\":\n        return collectionB.name > collectionA.name ? -1 : 1;\n        break;\n      case \"Sheets\":\n        return collectionB.sheetCount - collectionA.sheetCount;\n        break;\n    }\n  }\n  handleCollectionsChange() {\n    // Rerender Collections tab when data changes in cache.\n    this.setState({ refreshCollectionsData: Math.random(), refreshSheetData: Math.random() });\n  }\n  renderEmptyCollectionList() {\n    if (Sefaria._uid !== this.props.profile.id) {\n     return (\n        <div className=\"emptyList\">\n          <div className=\"emptyListText\">\n            <InterfaceText>{this.props.profile.full_name}</InterfaceText>\n            <InterfaceText> hasn't shared any collections yet.</InterfaceText>\n          </div>\n        </div>);\n    }\n    return (\n      <div className=\"emptyList\">\n        <div className=\"emptyListText\">\n          <InterfaceText>You can use collections to organize your sheets or public sheets you like. Collections can be shared privately or made public on Sefaria.</InterfaceText>\n        </div>\n        <a href=\"/collections/new\" className=\"resourcesLink sans-serif\">\n          <img src=\"/static/icons/collection.svg\" alt=\"Collection icon\" />\n            <InterfaceText>Create a New Collection</InterfaceText>\n        </a>\n      </div>);\n  }\n  renderCollection(collection) {\n    return (\n      <CollectionListing key={collection.slug} data={collection} />\n    );\n  }\n  renderCollectionHeader() {\n    if (Sefaria._uid !== this.props.profile.id) { return null; }\n    return (\n      <div className=\"sheet-header\">\n        <a href=\"/collections/new\" className=\"resourcesLink sans-serif\">\n          <img src=\"/static/icons/collection.svg\" alt=\"Collection icon\" />\n            <InterfaceText>Create a New Collection</InterfaceText>\n        </a>\n      </div>\n    );\n  }\n  getNotes() {\n    return new Promise((resolve, reject) => {\n      Sefaria.allPrivateNotes(notes => {\n        resolve(notes);\n      });\n    });\n  }\n  getNotesFromCache() {\n    return Sefaria.allPrivateNotes();\n  }\n  onDeleteNote() {\n    Sefaria.clearPrivateNotes();\n    this.getNotes().then(() => this.setState({ refreshNoteData: Math.random() }));\n  }\n  filterNote(currFilter, note) {\n    const n = text => text.toLowerCase();\n    currFilter = n(currFilter);\n    return n(note.text).indexOf(currFilter) > -1;\n  }\n  sortNote(currSortOption, noteA, noteB) {\n    return 0;\n  }\n  renderEmptyNoteList() {\n    return (\n      <div className=\"emptyList\">\n        <div className=\"emptyListText\">\n          <span className=\"int-en\">0 Notes</span>\n          <span className=\"int-he\">0 הערות</span>\n        </div>\n      </div>\n    );\n  }\n  renderNote(note) {\n    return (\n      <NoteListing\n        key={`${note.text}|${note.ref}`}\n        data={note}\n        onDeleteNote={this.onDeleteNote}\n      />\n    );\n  }\n  getSheets() {\n    return new Promise((resolve, reject) => {\n      Sefaria.sheets.userSheets(this.props.profile.id, sheets => {\n        resolve(sheets);\n      }, undefined, 0, 0);\n    });\n  }\n  getSheetsFromCache() {\n    return Sefaria.sheets.userSheets(this.props.profile.id, null, undefined, 0, 0);\n  }\n  filterSheet(currFilter, sheet) {\n    const n = text => text.toLowerCase();\n    currFilter = n(currFilter);\n    const filterText = [sheet.title.stripHtml(),\n                        sheet.topics.map(topic => topic.asTyped).join(\" \"),\n                        sheet.collections ? sheet.collections.map(collection => collection.name).join(\" \") : \"\",\n                        \"displayedCollectionName\" in sheet ? sheet.displayedCollectionName : \"\",\n                        ].join(\" \");\n    return n(filterText).indexOf(currFilter) > -1;\n  }\n  sortSheet(currSortOption, sheetA, sheetB) {\n    if (currSortOption === \"Recent\") { return 0; /* already in order */}\n    else {\n      return sheetB.views - sheetA.views;\n    }\n  }\n  renderEmptySheetList() {\n    if (Sefaria._uid !== this.props.profile.id) {\n      return (\n        <div className=\"emptyList\">\n          <div className=\"emptyListText\">\n            <InterfaceText>{this.props.profile.full_name}</InterfaceText>\n            <InterfaceText> hasn't shared any sheets yet.</InterfaceText>\n          </div>\n        </div>\n      );\n    }\n    return (\n      <div className=\"emptyList\">\n        <div className=\"emptyListText\">\n          <span className=\"int-en\">\n            You can use sheets to save and organize sources, write new texts, create\n            lessons, lectures, articles, and more.\n          </span>\n          <span className=\"int-he\">\n            באפשרותכם להשתמש בדפי מקורות בכדי לארגן מקורות, ליצור טקסטים חדשים, לתכנן שיעורים, הרצאות, כתבות ועוד.\n          </span>\n        </div>\n        <a href=\"/sheets/new\" className=\"resourcesLink sans-serif\">\n          <img src=\"/static/img/sheet.svg\" alt=\"Source sheet icon\" />\n          <span className=\"int-en\">Create a New Sheet</span>\n          <span className=\"int-he\">צור דף חדש</span>\n        </a>\n      </div>\n    );\n  }\n  handleSheetDelete() {\n    Sefaria.sheets.clearUserSheets(Sefaria._uid);\n    this.getSheets().then(() => this.setState({ refreshSheetData: Math.random() }));\n    Sefaria._collections = {};\n    delete Sefaria._userCollections[Sefaria._uid];\n    this.getCollections().then(() => this.setState({refreshCollectionsData: Math.random() }));\n  }\n  renderSheet(sheet) {\n    return (\n      <SheetListing\n        key={sheet.id}\n        sheet={sheet}\n        hideAuthor={true}\n        handleSheetDelete={this.handleSheetDelete}\n        handleCollectionsChange={this.handleCollectionsChange}\n        editable={Sefaria._uid === this.props.profile.id}\n        deletable={Sefaria._uid === this.props.profile.id}\n        saveable={Sefaria._uid !== this.props.profile.id}\n        collectable={true}\n        connectedRefs={[]}\n        infoUnderneath={true}\n        toggleSignUpModal={this.props.toggleSignUpModal}\n      />\n    );\n  }\n  renderSheetHeader() {\n    if (Sefaria._uid !== this.props.profile.id) { return null; }\n    return (\n      <div className=\"sheet-header\">\n        <a href=\"/sheets/new\" className=\"resourcesLink sans-serif\">\n          <img src=\"/static/img/sheet.svg\" alt=\"Source sheet icon\" />\n          <span className=\"int-en\">Create a New Sheet</span>\n          <span className=\"int-he\">יצירת דף מקורות</span>\n        </a>\n      </div>\n    );\n  }\n  getFollowers() {\n    return Sefaria.followAPI(this.props.profile.slug, \"followers\");\n  }\n  getFollowing() {\n    return Sefaria.followAPI(this.props.profile.slug, \"following\");\n  }\n  filterFollower(currFilter, follower) {\n    const n = text => text.toLowerCase();\n    currFilter = n(currFilter);\n    return n(follower.full_name).indexOf(currFilter) > -1 || n(follower.position).indexOf(currFilter) > -1;\n  }\n  renderFollowerHeader() {\n    return (\n      <div className=\"follow-header sans-serif\">\n        <InterfaceText>Followers</InterfaceText> <span className=\"follow-count\">{`(${this.props.profile.followers.length})`}</span>\n      </div>\n    );\n  }\n  renderFollowingHeader() {\n    return (\n      <div className=\"follow-header sans-serif\">\n        <InterfaceText>Following</InterfaceText> <span className=\"follow-count\">{`(${this.props.profile.followees.length})`}</span>\n      </div>\n    );\n  }\n  renderFollower(item) {\n    return (\n      <ProfileListing\n        key={item.id}\n        uid={item.id}\n        slug={item.slug}\n        url={`/profile/${item.slug}`}\n        name={item.full_name}\n        image={item.profile_pic_url}\n        is_followed={Sefaria.following.indexOf(item.id) > -1}\n        position={item.position}\n        organization={item.organization}\n        toggleSignUpModal={this.props.toggleSignUpModal}\n      />\n    );\n  }\n  renderEmptyFollowerList() {\n    return (\n      <div>\n        <span className=\"int-en\">0 followers</span>\n        <span className=\"int-he\">0 עוקבים</span>\n      </div>\n    );\n  }\n  renderEmptyFollowingList() {\n    return (\n      <div>\n        <span className=\"int-en\">0 following</span>\n        <span className=\"int-he\">0 נעקבים</span>\n      </div>\n    );\n  }\n  renderTab(tab) {\n    if (tab.invisible) { return null; }\n    if (tab.applink) {\n      return (\n          <div className=\"tab\">\n            <a href={tab.href}>\n              <img className=\"tabIcon\" src={tab.icon} alt={`${tab.text} icon`}/>\n              <InterfaceText>{tab.text}</InterfaceText>\n            </a>\n          </div>\n      );\n    }\n    return (\n      <div className=\"tab\">\n        <img className=\"tabIcon\" src={tab.icon} alt={`${tab.text} icon`} />\n        <InterfaceText>{tab.text}</InterfaceText>\n      </div>\n    );\n  }\n  follow() {\n    Sefaria.followAPI(this.props.profile.id);\n  }\n  openFollowers(e) {\n    e.preventDefault();\n    this.props.setTab(\"followers\");\n  }\n  openFollowing(e) {\n    e.preventDefault();\n    this.props.setTab(\"following\");\n  }\n\n  render() {\n    return (\n      <div key={this.props.profile.id} className=\"profile-page readerNavMenu\">\n        <div className=\"content noOverflowX\">\n          <div className=\"contentInner\">\n            { !this.props.profile.id ? <LoadingMessage /> :\n              <div>\n                <ProfileSummary\n                  profile={this.props.profile}\n                  follow={this.follow}\n                  openFollowers={this.openFollowers}\n                  openFollowing={this.openFollowing}\n                  toggleSignUpModal={this.props.toggleSignUpModal}\n                />\n                <TabView\n                  ref={this._getTabViewRef}\n                  currTabName={this.props.tab}\n                  tabs={this.state.tabs}\n                  renderTab={this.renderTab}\n                  setTab={this.props.setTab}\n                >\n                  <FilterableList\n                    key=\"sheet\"\n                    pageSize={1e6}\n                    filterFunc={this.filterSheet}\n                    sortFunc={this.sortSheet}\n                    renderItem={this.renderSheet}\n                    renderEmptyList={this.renderEmptySheetList}\n                    renderHeader={this.renderSheetHeader}\n                    sortOptions={[\"Recent\", \"Views\"]}\n                    containerClass={\"sheetList\"}\n                    getData={this.getSheets}\n                    data={this.getSheetsFromCache()}\n                    refreshData={this.state.refreshSheetData}\n                  />\n                  <FilterableList\n                    key=\"collection\"\n                    pageSize={1e6}\n                    filterFunc={this.filterCollection}\n                    sortFunc={this.sortCollection}\n                    renderItem={this.renderCollection}\n                    renderEmptyList={this.renderEmptyCollectionList}\n                    renderHeader={this.renderCollectionHeader}\n                    sortOptions={[\"Recent\", \"Name\", \"Sheets\"]}\n                    getData={this.getCollections}\n                    data={this.getCollectionsFromCache()}\n                    refreshData={this.state.refreshCollectionsData}\n                  />\n                  {\n                    this.state.showNotes ? (\n                      <FilterableList\n                        key=\"note\"\n                        pageSize={1e6}\n                        filterFunc={this.filterNote}\n                        sortFunc={this.sortNote}\n                        renderItem={this.renderNote}\n                        renderEmptyList={this.renderEmptyNoteList}\n                        sortOptions={[]}\n                        getData={this.getNotes}\n                        data={this.getNotesFromCache()}\n                        refreshData={this.state.refreshNoteData}\n                      />\n                    ) : null\n                  }\n                  <FilterableList\n                    key=\"follower\"\n                    pageSize={1e6}\n                    filterFunc={this.filterFollower}\n                    sortFunc={() => { return 0; }}\n                    renderItem={this.renderFollower}\n                    renderEmptyList={this.renderEmptyFollowerList}\n                    renderHeader={this.renderFollowerHeader}\n                    sortOptions={[]}\n                    getData={this.getFollowers}\n                  />\n                  <FilterableList\n                    key=\"following\"\n                    pageSize={1e6}\n                    filterFunc={this.filterFollower}\n                    sortFunc={() => { return 0; }}\n                    renderItem={this.renderFollower}\n                    renderEmptyList={this.renderEmptyFollowingList}\n                    renderHeader={this.renderFollowingHeader}\n                    sortOptions={[]}\n                    getData={this.getFollowing}\n                  />\n                  <div className=\"torahTrackerPlaceholder filterable-list\" />\n                  { this.state.showBio ?\n                    <div className=\"systemText filterable-list\">\n                      <div  className=\"aboutText\" dangerouslySetInnerHTML={{ __html: this.props.profile.bio }} />\n                    </div> : null\n                  }\n                </TabView>\n            </div>\n            }\n          </div>\n          <Footer />\n        </div>\n      </div>\n    );\n  }\n}\nUserProfile.propTypes = {\n  profile: PropTypes.object.isRequired,\n};\n\n\nconst EditorToggleHeader = ({usesneweditor}) => {\n const [feedbackHeaderState, setFeedbackHeaderState] = useState(\"hidden\")\n\n const text = <InterfaceText>{usesneweditor ? \"You are currently testing the new Sefaria editor.\" : \"You are currently using the old Sefaria editor.\"}</InterfaceText>;\n const buttonText = <InterfaceText>{usesneweditor ? \"Go back to old version\" : \"Try the new version\"}</InterfaceText>;\n\n const sendFeedback = () => {\n\n   const feedback = {\n       type: \"new_editor\",\n       email: null,\n       msg: $(\"#feedbackText\").val(),\n       url: \"\",\n       uid: Sefaria._uid || null\n   };\n   if (!feedback.msg) {\n     setFeedbackHeaderState(\"thanks\")\n     return;\n   }\n   var postData = {json: JSON.stringify(feedback)};\n   var url = \"/api/send_feedback\";\n\n   $.post(url, postData, function (data) {\n       if (data.error) {\n           alert(data.error);\n       } else {\n           console.log(data);\n           $(\"#feedbackText\").val(\"\");\n           Sefaria.track.event(\"New Editor\", \"Send Feedback\", null);\n           setFeedbackHeaderState(\"thanks\")\n\n       }\n   }.bind(this)).fail(function (xhr, textStatus, errorThrown) {\n       alert(Sefaria._(\"Unfortunately, there was an error sending this feedback. Please try again or try reloading this page.\"));\n   });\n }\n\n const disableOverlayContent = (\n   <div class=\"sans-serif-in-hebrew\">\n      <h2><InterfaceText>Request for Feedback</InterfaceText></h2>\n      <p><InterfaceText>Thank you for trying the new Sefaria editor! We’d love to hear what you thought. Please take a few minutes to give us feedback on your experience.</InterfaceText></p>\n      <p><InterfaceText>Did you encounter any issues while using the new editor? For example:</InterfaceText></p>\n      <ul>\n        <li><InterfaceText>Technical problems</InterfaceText></li>\n        <li><InterfaceText>Difficulties using the editor</InterfaceText></li>\n        <li><InterfaceText>Missing features
</InterfaceText></li>\n      </ul>\n\n      <p>\n        <textarea className=\"feedbackText\" placeholder={Sefaria._(\"Tell us about it...\")} id=\"feedbackText\"></textarea>\n      </p>\n      <p>\n        <a href=\"#\" className=\"button\" role=\"button\" onClick={()=>sendFeedback()}>\n            <InterfaceText>Submit Feedback</InterfaceText>\n        </a>\n      </p>\n\n   </div>\n )\n const enableOverlayContent = (\n   <div class=\"sans-serif-in-hebrew\">\n      <h2><InterfaceText>Thanks for Trying the New Editor!</InterfaceText></h2>\n      <p><InterfaceText>Go to your profile to create a new sheet, or edit an existing sheet, to try out the new experience. After you’ve had a chance to try it out, we would love to hear your feedback. You can reach us at</InterfaceText> <a href=\"mailto:hello@sefaria.org\">hello@sefaria.org</a></p>\n      <div className=\"buttonContainer\"><a href=\"/enable_new_editor\" onClick={()=>toggleFeedbackOverlayState()} className=\"button\" role=\"button\"><InterfaceText>Back to Profile</InterfaceText></a></div>\n   </div>\n )\n const thankYouContent = (\n   <div class=\"sans-serif-in-hebrew\">\n      <h2><InterfaceText>Thank you!</InterfaceText></h2>\n      <p><InterfaceText>Your feedback is greatly appreciated. You can now edit your sheets again using the old source sheet editor. If you have any questions or additional feedback you can reach us at</InterfaceText> <a href=\"mailto:hello@sefaria.org\">hello@sefaria.org</a>.</p>\n      <div className=\"buttonContainer\"><a href=\"/disable_new_editor\" className=\"button\" role=\"button\"><InterfaceText>Back to Profile</InterfaceText></a></div>\n   </div>\n )\n\n let overlayContent;\n switch (feedbackHeaderState) {\n   case \"disableOverlay\":\n     overlayContent = disableOverlayContent;\n     break;\n   case \"enableOverlay\":\n     overlayContent = enableOverlayContent;\n     break;\n   case \"thanks\":\n     overlayContent = thankYouContent;\n     break;\n }\n\n const toggleFeedbackOverlayState = () => {\n   if (usesneweditor) {\n     setFeedbackHeaderState(\"disableOverlay\")\n   }\n   else {\n     setFeedbackHeaderState(\"enableOverlay\")\n   }\n }\n const buttonLink = (usesneweditor ? \"/disable_new_editor\" : \"\");\n\n return (\n   <>\n   <div className=\"editorToggleHeader sans-serif\">{text}\n     <a href=\"#\" onClick={()=>toggleFeedbackOverlayState()} className=\"button white\" role=\"button\">{buttonText}</a>\n   </div>\n   {feedbackHeaderState != \"hidden\" ? <div className=\"feedbackOverlay\">{overlayContent}</div> : null}\n   </>\n )\n}\n\n\nconst ProfileSummary = ({ profile:p, follow, openFollowers, openFollowing, toggleSignUpModal }) => {\n  // collect info about this profile in `infoList`\n  const social = ['facebook', 'twitter', 'youtube', 'linkedin'];\n  let infoList = [];\n  if (p.location) { infoList.push(p.location); }\n  infoList = infoList.concat(p.jewish_education);\n  if (p.website) {\n    infoList.push(<span><a href={p.website} target=\"_blank\"><InterfaceText>Website</InterfaceText></a></span>);\n  }\n  const socialList = social.filter(s => !!p[s]);\n  if (socialList.length) {\n    infoList = infoList.concat(\n      // we only store twitter handles so twitter needs to be hardcoded\n      <span>\n        {\n          socialList.map(s => (<a key={s} className=\"social-icon\" target=\"_blank\" href={(s == 'twitter' ? 'https://twitter.com/' : '') + p[s]}><img src={`/static/img/${s}.svg`} /></a>))\n        }\n      </span>\n    );\n  }\n  return (\n    <div className=\"profile-summary sans-serif\">\n      <div className=\"summary-column profile-summary-content start\">\n        <div className=\"title pageTitle\">\n          <span className=\"int-en\">{p.full_name}</span>\n          <span className=\"int-he\">{p.full_name}</span>\n        </div>\n        { p.position || p.organization ?\n          <div className=\"title sub-title\">\n            <span>{p.position}</span>\n            { p.position && p.organization ? <span>{ Sefaria._(\" at \") }</span> : null }\n            <span>{p.organization}</span>\n          </div> : null\n        }\n        { infoList.length ?\n          <div className=\"title sub-sub-title\">\n            {\n              infoList.map((i, ii) => (\n                <span key={ii}>\n                  { ii !== 0 ? '\\u2022' : null }\n                  <span className=\"small-margin\">{i}</span>\n                </span>\n              ))\n            }\n          </div> : null\n        }\n        {\n          Sefaria._uid === p.id ? (\n          <div className=\"profile-actions\">\n            <a href=\"/settings/profile\" className=\"resourcesLink sans-serif\">\n              <span className=\"int-en\">Edit Profile</span>\n              <span className=\"int-he\">עריכת פרופיל</span>\n            </a>\n            <a href=\"/settings/account\" className=\"resourcesLink sans-serif profile-settings\">\n              <img src=\"/static/icons/settings.svg\" alt=\"Profile Settings\" />\n              <span className=\"int-en\">Settings</span>\n              <span className=\"int-he\">הגדרות</span>\n            </a>\n            <a href=\"/logout\" className=\"button transparent logoutLink\">\n              <span className=\"int-en\">Log Out</span>\n              <span className=\"int-he\">ניתוק</span>\n            </a>\n          </div>) : (\n          <div className=\"profile-actions\">\n            <FollowButton\n              large={true}\n              uid={p.id}\n              following={Sefaria.following.indexOf(p.id) > -1}\n              toggleSignUpModal={toggleSignUpModal}\n            />\n          </div>)\n        }\n        <div className=\"follow\">\n          <a href=\"\" onClick={openFollowers}>\n            <InterfaceText>{String(p.followers.length)}</InterfaceText>&nbsp;\n            <InterfaceText>followers</InterfaceText>\n          </a>\n          <span className=\"follow-bull\">&bull;</span>\n          <a href=\"\" onClick={openFollowing}>\n            <InterfaceText>{String(p.followees.length)}</InterfaceText>&nbsp;\n            <InterfaceText>following</InterfaceText>\n          </a>\n        </div>\n      </div>\n      <div className=\"summary-column end\">\n        <ProfilePic\n          url={p.profile_pic_url}\n          name={p.full_name}\n          len={175}\n          hideOnDefault={Sefaria._uid !== p.id}\n          showButtons={Sefaria._uid === p.id}\n        />\n      </div>\n    </div>\n  );\n};\nProfileSummary.propTypes = {\n  profile:       PropTypes.object.isRequired,\n  follow:        PropTypes.func.isRequired,\n  openFollowers: PropTypes.func.isRequired,\n  openFollowing: PropTypes.func.isRequired,\n  toggleSignUpModal: PropTypes.func.isRequired,\n};\n\n\nexport default UserProfile;","import React  from 'react';\nimport ReactDOM  from 'react-dom';\nimport Component from 'react-class';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport classNames  from 'classnames';\nimport PropTypes  from 'prop-types';\nimport Footer  from './Footer';\nimport { Notifications } from './NotificationsPanel';\nimport { NavSidebar }from './NavSidebar';\nimport {\n  InterfaceText,\n} from './Misc';\n\n\nclass UpdatesPanel extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      page: 0,\n      loadedToEnd: false,\n      loading: false,\n      updates: [],\n      submitting: false,\n      submitCount: 0,\n      error: null\n    };\n  }\n  componentDidMount() {\n    $(ReactDOM.findDOMNode(this)).find(\".content\").bind(\"scroll\", this.handleScroll);\n    this.getMoreNotifications();\n  }\n  handleScroll() {\n    if (this.state.loadedToEnd || this.state.loading) { return; }\n    var $scrollable = $(ReactDOM.findDOMNode(this)).find(\".content\");\n    var margin = 600;\n    if($scrollable.scrollTop() + $scrollable.innerHeight() + margin >= $scrollable[0].scrollHeight) {\n      this.getMoreNotifications();\n    }\n  }\n  getMoreNotifications() {\n    $.getJSON(\"/api/updates?page=\" + this.state.page, this.loadMoreNotifications);\n    this.setState({loading: true});\n  }\n  loadMoreNotifications(data) {\n    if (data.count < data.page_size) {\n      this.setState({loadedToEnd: true});\n    }\n    this.setState({page: data.page + 1, loading: false, updates: this.state.updates.concat(data.updates)});\n  }\n  onDelete(id) {\n    $.ajax({\n        url: '/api/updates/' + id,\n        type: 'DELETE',\n        success: function(result) {\n          if (result.status == \"ok\") {\n              this.setState({updates: this.state.updates.filter(u => u._id != id)});\n          }\n        }.bind(this)\n    });\n  }\n  handleSubmit(type, content) {\n    this.setState({\"submitting\": true, \"error\": null});\n    var payload = {\n      type: type,\n      content: content\n    };\n    $.ajax({\n      url: \"/api/updates\",\n      dataType: 'json',\n      type: 'POST',\n      data: {json: JSON.stringify(payload)},\n      success: function(data) {\n        if (data.status == \"ok\") {\n          payload.date = Date();\n          this.state.updates.unshift(payload);\n          this.setState({submitting: false, updates: this.state.updates, submitCount: this.state.submitCount + 1});\n        } else {\n          this.setState({\"error\": \"Error - \" + data.error});\n        }\n      }.bind(this),\n      error: function(xhr, status, err) {\n        this.setState({\"error\": \"Error - \" + err.toString()});\n        console.error(this.props.url, status, err.toString());\n      }.bind(this)\n    });\n  }\n  render() {\n    const sidebarModules = [{type: \"Promo\"}, {type: \"StayConnected\"}];\n\n    return (\n      <div className=\"readerNavMenu sans-serif\">\n        <div className=\"content\">\n          <div className=\"sidebarLayout\">\n            <div className=\"contentInner\">\n              <h1><InterfaceText>Updates</InterfaceText></h1>\n\n              {Sefaria.is_moderator?<NewUpdateForm handleSubmit={this.handleSubmit} key={this.state.submitCount} error={this.state.error}/>:\"\"}\n\n              <div className=\"notificationsList\">\n              {this.state.updates.map(u =>\n                <SingleUpdate\n                  type={u.type}\n                  content={u.content}\n                  date={u.date}\n                  key={u._id}\n                  id={u._id}\n                  onDelete={this.onDelete}\n                  submitting={this.state.submitting}\n                />\n              )}\n              </div>\n            </div>\n            <NavSidebar modules={sidebarModules} />\n          </div>\n          <Footer />\n        </div>\n      </div>\n    );\n  }\n}\nUpdatesPanel.propTypes = {\n  interfaceLang:  PropTypes.string\n};\n\n\nclass NewUpdateForm extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {type: 'index', index: '', language: 'en', version: '', en: '', he: '', error: ''};\n  }\n  componentWillReceiveProps(nextProps) {\n    this.setState({\"error\": nextProps.error});\n  }\n  handleEnChange(e) {\n    this.setState({en: e.target.value, error: null});\n  }\n  handleHeChange(e) {\n    this.setState({he: e.target.value, error: null});\n  }\n  handleTypeChange(e) {\n    this.setState({type: e.target.value, error: null});\n  }\n  handleIndexChange(e) {\n    this.setState({index: e.target.value, error: null});\n  }\n  handleVersionChange(e) {\n    this.setState({version: e.target.value, error: null});\n  }\n  handleLanguageChange(e) {\n    this.setState({language: e.target.value, error: null});\n  }\n  handleSubmit(e) {\n    e.preventDefault();\n    var content = {\n      \"en\": this.state.en.trim(),\n      \"he\": this.state.he.trim()\n    };\n    if (this.state.type == \"general\") {\n      if (!this.state.en || !this.state.he) {\n        this.setState({\"error\": \"Both Hebrew and English are required\"});\n        return;\n      }\n    } else {\n      if (!this.state.index) {\n        this.setState({\"error\": \"Index is required\"});\n        return;\n      }\n      content[\"index\"] = this.state.index.trim();\n    }\n    if (this.state.type == \"version\") {\n      if (!this.state.version || !this.state.language) {\n        this.setState({\"error\": \"Version is required\"});\n        return;\n      }\n      content[\"version\"] = this.state.version.trim();\n      content[\"language\"] = this.state.language.trim();\n    }\n    this.props.handleSubmit(this.state.type, content);\n\n  }\n  render() {\n    return (\n      <form className=\"globalUpdateForm\" onSubmit={this.handleSubmit}>\n        <div>\n          <input type=\"radio\" name=\"type\" value=\"index\" onChange={this.handleTypeChange} checked={this.state.type==\"index\"}/>Index&nbsp;&nbsp;\n          <input type=\"radio\" name=\"type\" value=\"version\" onChange={this.handleTypeChange} checked={this.state.type==\"version\"}/>Version&nbsp;&nbsp;\n          <input type=\"radio\" name=\"type\" value=\"general\" onChange={this.handleTypeChange} checked={this.state.type==\"general\"}/>General&nbsp;&nbsp;\n        </div>\n        <div>\n          {(this.state.type != \"general\")?<input type=\"text\" placeholder=\"Index Title\" onChange={this.handleIndexChange} />:\"\"}\n          {(this.state.type == \"version\")?<input type=\"text\" placeholder=\"Version Title\" onChange={this.handleVersionChange}/>:\"\"}\n          {(this.state.type == \"version\")?<select type=\"text\" placeholder=\"Version Language\" onChange={this.handleLanguageChange}>\n            <option value=\"en\">English</option>\n            <option value=\"he\">Hebrew</option>\n          </select>:\"\"}\n        </div>\n        <div>\n          <textarea\n            placeholder=\"English Description (optional for Index and Version)\"\n            onChange={this.handleEnChange}\n            rows=\"3\"\n            cols=\"80\"\n          />\n        </div>\n        <div>\n          <textarea\n            placeholder=\"Hebrew Description (optional for Index and Version)\"\n            onChange={this.handleHeChange}\n            rows=\"3\"\n            cols=\"80\"\n          />\n        </div>\n        <input type=\"submit\" value=\"Submit\" disabled={this.props.submitting}/>\n        <span className=\"error\">{this.state.error}</span>\n      </form>\n    );\n  }\n}\nNewUpdateForm.propTypes = {\n  error:               PropTypes.string,\n  handleSubmit:        PropTypes.func\n};\n\n\nclass SingleUpdate extends Component {\n  onDelete() {\n    this.props.onDelete(this.props.id);\n  }\n  render() {\n    return (\n      <div className=\"update\">\n        {Sefaria.is_moderator?<i className=\"fa fa-times-circle delete-update-button\" onClick={this.onDelete} aria-hidden=\"true\"/>:\"\"}\n        <Notifications\n          type={this.props.type}\n          props={this.props} />\n      </div>);\n  }\n}\nSingleUpdate.propTypes = {\n  id:        PropTypes.string,\n  type:      PropTypes.string,\n  content:   PropTypes.object,\n  onDelete:  PropTypes.func,\n  date:      PropTypes.number\n};\n\n\nexport default UpdatesPanel;","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport Component from 'react-class';\nimport $ from './sefaria/sefariaJquery';\nimport Sefaria from './sefaria/sefaria';\nimport PropTypes from 'prop-types';\nimport classNames  from 'classnames';\nimport { NavSidebar, Modules } from './NavSidebar';\nimport Footer from'./Footer';\nimport {\n  InterfaceText,\n  LoadingMessage,\n  NBox,\n  ResponsiveNBox,\n  ProfileListing,\n} from './Misc';\n\n\nconst CommunityPage = ({multiPanel, toggleSignUpModal, initialWidth}) => {\n\n  const [dataLoaded, setDataLoaded] = useState(!!Sefaria.community);\n\n  const sidebarModules = [\n    {type: \"JoinTheConversation\"},\n    {type: \"Promo\"},\n    {type: \"SupportJMC\", props: {blue: true}},\n  ];\n\n  useEffect(() => {\n    if (!dataLoaded) {\n      Sefaria.getBackgroundData().then(() => { setDataLoaded(true); });\n    }\n  }, []);\n\n  let featuredContent;\n  if (dataLoaded) {\n    const {parashah, calendar, discover, featured} = Sefaria.community;\n    const sheets = [parashah, calendar, discover, featured].filter(x => !!x)\n      .map(x => x.sheet ? <FeaturedSheet sheet={x.sheet} key={x.sheet.id} toggleSignUpModal={toggleSignUpModal} trackClicks={true}/> : null);\n    featuredContent = (\n      <>\n        <ResponsiveNBox content={sheets.slice(0,2)} stretch={true} initialWidth={initialWidth} />\n        {sheets.slice(2).map(sheet => <NBox content={[sheet]} n={1} key={sheet.id} /> )}\n      </>\n    );\n  } else {\n    featuredContent = <LoadingMessage />\n  }\n\n  return (\n    <div className=\"readerNavMenu communityPage sans-serif\" key=\"0\">\n      <div className=\"content\">\n        <div className=\"sidebarLayout\">\n          <div className=\"contentInner mainColumn\">\n            \n            <h1><InterfaceText>Today on Sefaria</InterfaceText></h1>\n\n            {featuredContent}\n            \n            <RecentlyPublished multiPanel={multiPanel} toggleSignUpModal={toggleSignUpModal} />\n\n          </div>\n          <NavSidebar modules={sidebarModules} />\n        </div>\n        <Footer />\n      </div>\n    </div>\n  );\n}\nCommunityPage.propTypes = {\n  toggleSignUpModal:  PropTypes.func.isRequired,\n};\n\n\nconst RecentlyPublished = ({multiPanel, toggleSignUpModal}) => {\n  const options = Sefaria.interfaceLang === \"hebrew\" ? {\"lang\": \"hebrew\"} : {};\n  options[\"filtered\"] = true;\n  const pageSize = 18;\n  const [nSheetsLoaded, setNSheetsLoded] = useState(0); // counting sheets loaded from the API, may be different than sheets displayed\n  // Start with recent sheets in the cache, if any\n  const [recentSheets, setRecentSheets] = useState(collapseSheets(Sefaria.sheets.publicSheets(0, pageSize, options)));\n\n  // But also make an API call immeditately to check for updates\n  useEffect(() => {\n    loadMore();\n  }, []);\n\n  const loadMore = (e, until=pageSize) => {\n    Sefaria.sheets.publicSheets(nSheetsLoaded, pageSize, options, true, (data) => {\n      const collapsedSheets = collapseSheets(data);\n      const newSheets = recentSheets ? recentSheets.concat(collapsedSheets) : collapsedSheets;\n      setRecentSheets(newSheets);\n      setNSheetsLoded(nSheetsLoaded + pageSize);\n      if (collapsedSheets.length < until) {\n        loadMore(null, until - collapsedSheets.length);\n      }\n    });\n  };\n\n  const recentSheetsContent = !recentSheets ? [<LoadingMessage />] :\n          recentSheets.map(s => <FeaturedSheet sheet={s} showDate={true} toggleSignUpModal={toggleSignUpModal} />);\n  const joinTheConversation = (\n    <div className=\"navBlock\">\n      <Modules type={\"JoinTheConversation\"} props={{wide:multiPanel}} />\n    </div>\n  );\n  if (recentSheets) {\n    recentSheetsContent.splice(6, 0, joinTheConversation);\n    recentSheetsContent.push(\n      <a className=\"button small white loadMore\" onClick={loadMore}>\n        <InterfaceText context=\"RecentlyPublished\">Load More</InterfaceText>\n      </a>\n    );\n  }\n  return (\n    <div className=\"recentlyPublished\">            \n      <h2><InterfaceText>Recently Published</InterfaceText></h2>\n      <NBox content={recentSheetsContent} n={1} />\n    </div>\n  );\n};\n\n\nconst collapseSheets = (sheets) => {\n  // Collapses consecutive sheets with the same author\n  if (!sheets) { return null; }\n\n  return sheets.reduce((accum, sheet) => {\n    if (!accum.length) {\n      return [sheet];\n    }\n    const prev = accum[accum.length-1];\n    if (prev.author === sheet.author) {\n      prev.moreSheets = prev.moreSheets || [];\n      prev.moreSheets.push(sheet);\n    } else {\n      accum.push(sheet);\n    }\n    return accum;\n  }, []);\n}\n\nconst FeaturedSheet = ({sheet, showDate, trackClicks, toggleSignUpModal}) => {\n  if (!sheet) { return null; }\n  const {heading, title, id, summary} = sheet;\n  const uid = sheet.author || sheet.owner;\n  const author = {\n    uid,\n    url: sheet.ownerProfileUrl,\n    image: sheet.ownerImageUrl,\n    name: sheet.ownerName,\n    organization: sheet.ownerOrganization,\n    is_followed: Sefaria._uid ? Sefaria.following.indexOf(uid) !== -1 : false,\n    toggleSignUpModal: toggleSignUpModal,\n  };\n\n  const now = new Date();\n  const published = new Date(sheet.published);\n  const naturalPublished = Sefaria.util.naturalTime(published.getTime()/1000, {short:true});\n\n  const trackClick = () => {\n    Sefaria.track.event(\"Community Page Featured Click\", title, `/sheets/${id}`);\n  };\n\n  return (\n    <div className=\"featuredSheet navBlock\">\n      { heading ?\n      <div className=\"featuredSheetHeading\">\n        <InterfaceText text={heading} />\n      </div>\n      : null}\n      <a href={`/sheets/${id}`} className=\"navBlockTitle\" onClick={trackClicks ? trackClick : null}>\n        <InterfaceText>{title}</InterfaceText>\n      </a>\n      {summary ?\n      <div className=\"navBlockDescription\">\n        <InterfaceText>{summary}</InterfaceText>\n      </div>\n      : null}\n      <div className=\"featuredSheetBottom\">\n        <ProfileListing {...author} />\n        {showDate ? <div className=\"featuredSheetDate\">• {naturalPublished}</div> : null}\n      </div>\n    </div>\n  );\n};\n\n\n\n/*\n\n\n            {parashah ?\n            <HomepageRow \n              title=\"The Torah Portion\"\n              aboutContent={parashah.topic}\n              sheet={parashah.sheet}\n              AboutComponent={AboutParashah} \n              initialWidth={initialWidth} />\n            : null }\n\n            {calendar ?\n            <HomepageRow \n              title=\"The Jewish Calendar\"\n              aboutContent={calendar.topic}\n              sheet={calendar.sheet}\n              AboutComponent={AboutCalendar} \n              initialWidth={initialWidth} />\n            : null }\n\n            {discover ?\n            <HomepageRow \n              biTitles={{\n                en: \"Discover \" + discover.about.category.en,\n                he: Sefaria._(\"Discover \") + discover.about.category.he\n              }}\n              aboutContent={discover.about}\n              sheet={discover.sheet}\n              AboutComponent={AboutDiscover} \n              initialWidth={initialWidth} />\n            : null }\n\n            {featured ?\n            <HomepageRow \n              title={featured.heading}\n              sheet={featured.sheet}\n              initialWidth={initialWidth} />\n            : null }\n\n\nconst HomepageRow = ({title, biTitles, aboutContent, sheet, AboutComponent, initialWidth}) => {\n  const blocks = [];\n  if (aboutContent) {\n    blocks.push(<AboutComponent content={aboutContent} />);\n  }\n  if (sheet) {\n    blocks.push(<FeaturedSheet sheet={sheet} />);\n  }\n\n  return (\n    <div>\n      <h2>\n        {biTitles ? \n        <InterfaceText text={biTitles} />\n        : <InterfaceText>{title}</InterfaceText>}\n      </h2>\n\n      {blocks.length > 1 ?\n      <ResponsiveNBox content={blocks} initialWidth={initialWidth} />\n      : <NBox content={blocks} n={1} /> }\n    </div>\n  );\n};\n\n\nconst AboutParashah = ({content}) => {\n  if (!content) { return null; }\n  const {primaryTitle, description, slug, ref} = content;\n  const title = {\n    en: primaryTitle.en.replace(\"Parashat \", \"\"),\n    he: primaryTitle.he.replace(\"פרשת \", \"\"),\n  }\n  const style = {\"borderColor\": Sefaria.palette.categoryColor(\"Tanakh\")};\n  return (\n    <div className=\"navBlock withColorLine\" style={style}>\n      <a href={`/topics/${slug}`} className=\"navBlockTitle serif\">\n        <InterfaceText text={title} />\n      </a>       \n      <div className=\"navBlockDescription\">\n        <InterfaceText text={description} />\n      </div>\n      <div className=\"readingLinks\">\n        <div className=\"readingLinksHeader\">\n          <InterfaceText context=\"AboutParashah\">Torah Reading</InterfaceText>\n        </div>\n        <div className=\"calendarRef\">\n          <img src=\"/static/icons/book.svg\" className=\"navSidebarIcon\" alt=\"book icon\" />\n          <a href={`/${ref.url}`} className=\"serif\">\n            <InterfaceText text={ref} />\n          </a> \n        </div>\n      </div>\n    </div>\n  )\n};\n\n\nconst AboutCalendar = ({content}) => {\n  if (!content) { return null; }\n  const {primaryTitle, description, slug, date, readings} = content;\n\n  return (\n    <div className=\"navBlock\" >\n      <a href={`/topics/${slug}`} className=\"navBlockTitle\">\n        <InterfaceText text={primaryTitle} />\n      </a>\n      <div className=\"calendarDate\">\n        <InterfaceText>{date}</InterfaceText>\n      </div>\n      <div className=\"navBlockDescription\">\n        <InterfaceText text={description} />\n      </div>\n      {!readings ? null :\n      <div className=\"readingLinks\">\n        <div className=\"readingLinksHeader\">\n          <InterfaceText>Readings for</InterfaceText>&nbsp;<InterfaceText text={primaryTitle} />\n        </div>\n        {readings.map(ref => (\n          <div className=\"calendarRef\" key={ref.url}>\n            <img src=\"/static/icons/book.svg\" className=\"navSidebarIcon\" alt=\"book icon\" />\n            <a href={`/${ref.url}`} className=\"serif\">\n              <InterfaceText text={ref} />\n           </a> \n          </div>)\n        )}\n      </div> }\n    </div>\n  )\n};\n\n\nconst AboutDiscover = ({content}) => {\n  if (!content) { return null; }\n  const {title, description, ref} = content;\n  const cat   = Sefaria.refCategories(ref.url)[0]; \n  const style = {\"borderColor\": Sefaria.palette.categoryColor(cat)};\n\n  return (\n    <div className=\"navBlock withColorLine\" style={style}>\n      <a href={`/topics/${ref.url}`} className=\"navBlockTitle\">\n        <InterfaceText>{title}</InterfaceText>\n      </a>\n      <div className=\"navBlockDescription\">\n        <InterfaceText>{description}</InterfaceText>\n      </div>\n      <div className=\"readingLinks\">\n        <div className=\"readingLinksHeader\">\n          <InterfaceText>Readings</InterfaceText>\n        </div>\n          <div className=\"calendarRef\" key={ref.url}>\n            <img src=\"/static/icons/book.svg\" className=\"navSidebarIcon\" alt=\"book icon\" />\n            <a href={`/${ref.url}`} className=\"serif\">\n              <InterfaceText text={ref} />\n           </a> \n          </div>\n      </div>\n    </div>\n  )\n};\n*/\n\n\nexport default CommunityPage;","import {\n  InterfaceText,\n  ResponsiveNBox,\n} from './Misc';\nimport React, { useState } from 'react';\nimport classNames  from 'classnames';\nimport Sefaria  from './sefaria/sefaria';\nimport $  from './sefaria/sefariaJquery';\nimport { NavSidebar, Modules }from './NavSidebar';\nimport Footer  from './Footer';\nimport Component from 'react-class';\n\n\nconst CalendarsPage = ({multiPanel, initialWidth}) => {\n\n  const calendars = reformatCalendars();\n\n  const parashaCalendars = [\"Parashat Hashavua\", \"Haftarah (A)\", \"Haftarah (S)\", \"Haftarah\"];\n  const dailyCalendars   = [\"Daf Yomi\", \"929\", \"Daily Mishnah\", \"Daily Rambam\", \"Daily Rambam (3 Chapters)\",\n    \"Halakhah Yomit\", \"Arukh HaShulchan Yomi\", \"Tanakh Yomi\", \"Zohar for Elul\", \"Chok LeYisrael\", \"Tanya Yomi\", \"Yerushalmi Yomi\"];\n  const weeklyCalendars  = [\"Daf a Week\"];\n\n  const makeListings = list => calendars.filter(c => list.indexOf(c.title.en) != -1)\n                              .map(c => <CalendarListing calendar={c} />);\n\n  const parashaListings = makeListings(parashaCalendars);\n  const dailyListings   = makeListings(dailyCalendars);\n  const weeklyListings  = makeListings(weeklyCalendars);\n\n  const about = multiPanel ? null :\n    <Modules type={\"AboutLearningSchedules\"} />\n\n  const sidebarModules = [\n    {type: \"StayConnected\"},\n    {type: \"SupportJMC\"},\n    {type: \"Promo\"},\n  ];\n\n  return (\n    <div className=\"readerNavMenu\" key=\"0\">\n      <div className=\"content\">\n        <div className=\"sidebarLayout\">\n          <div className=\"contentInner\">\n            {about}\n            <h2 className=\"styledH1 sans-serif\"><InterfaceText>Weekly Torah Portion</InterfaceText></h2>\n            <div className=\"readerNavCategories\">\n              <ResponsiveNBox content={parashaListings} initialWidth={initialWidth} />\n            </div>\n            <h2 className=\"styledH1 sans-serif\"><InterfaceText>Daily Learning</InterfaceText></h2>\n            <div className=\"readerNavCategories\">\n              <ResponsiveNBox content={dailyListings} initialWidth={initialWidth} />\n            </div>\n            <h2 className=\"styledH1 sans-serif\"><InterfaceText>Weekly Learning</InterfaceText></h2>\n            <div className=\"readerNavCategories\">\n              <ResponsiveNBox content={weeklyListings} initialWidth={initialWidth} />\n            </div>\n          </div>\n          <NavSidebar modules={sidebarModules} />\n        </div>\n        <Footer />\n      </div>\n    </div>\n  );\n};\n\n\nconst CalendarListing = ({calendar}) => {\n  const style = {\"borderColor\": Sefaria.palette.categoryColor(calendar.category)};\n  return (\n    <div className=\"navBlock withColorLine calendarListing\" style={style}>\n      <a href={`/${calendar.url}`} className=\"navBlockTitle\">\n        <InterfaceText text={calendar.displayTitle} />\n        {calendar.enSubtitle ?\n        <span className=\"subtitle\">\n          <InterfaceText context=\"CalendarListing\">{calendar.enSubtitle}</InterfaceText>\n        </span> : null }\n      </a>\n      <div className=\"calendarRefs\">\n        {calendar.refs.map(ref => (\n        <div className=\"calendarRef\" key={ref.url}>\n          <img src=\"/static/icons/book.svg\" className=\"navSidebarIcon\" alt=\"book icon\" />\n          <a href={`/${ref.url || calendar.url}`} className=\"\">\n            <InterfaceText text={ref.displayValue} />\n          </a>\n        </div>\n        ))}\n      </div>          \n      { calendar.description ?\n      <div className=\"navBlockDescription\">\n        <InterfaceText text={calendar.description} />\n      </div>\n      : null}\n    </div>\n  );\n};\n\n\nconst reformatCalendars = () => {\n  // Reformats the calendar data as it is given by the API into the shape we need,\n  // combining with descriptions written here.\n  const calendars = Sefaria.util.clone(Sefaria.calendars);\n  const mergedCalendars = [];\n  calendars.map(cal => {\n    let calData = calendarDescriptions[cal.title.en.replace(/ \\([AS]\\)$/, \"\")]\n    if (!cal.description && calData) {\n      cal.description = {en: calData.en, he: calData.he};\n    }\n    if (cal.title.en === \"Parashat Hashavua\") {\n      cal.displayTitle = cal.displayValue;\n      cal.displayValue = {en: cal.ref, he: cal.heRef};\n    } else {\n      cal.displayTitle = Sefaria.util.clone(cal.title);\n      if (calData && calData.enSubtitle) {\n        cal.enSubtitle = calData.enSubtitle;\n      }\n      if (calData && calData.heSubtitle) {\n        cal.heSubtitle = calData.heSubtitle;\n      }\n    }\n\n    // Merge multiple calendar entries that from from the same schedule\n    // (e.g., when a Haftarah has multiple refs)\n    let len = mergedCalendars.length;\n    if (len && cal.title.en === mergedCalendars[len-1].title.en) {\n      mergedCalendars[len-1].refs.push({url: cal.url, displayValue: cal.displayValue});\n    } else {\n      cal.refs = [{url: cal.url, displayValue: cal.displayValue}];\n      mergedCalendars.push(cal);\n    }\n  });\n\n  return mergedCalendars;\n};\n\n\n// TODO these descriptions should be moved to the DB\n// For now, to get this descriptions on mobile, we have copied this data to MobileContentServer/JsonExporterForIOS.py\n// Engineers need to be careful to keep these two copies in sync if one of them is edited.\nconst calendarDescriptions = {\n  \"Parashat Hashavua\": {},\n  \"Haftarah\": {\n    en: \"The portion from Prophets (a section of the Bible) read on any given week, based on its thematic connection to the weekly Torah portion.\",\n    he: \"קטע קבוע לכל פרשה מספרי הנביאים הנקרא בכל שבת ומועד, ויש לו קשר רעיוני לפרשת השבוע.\"\n  },\n  \"Daf Yomi\": {\n    en: \"A learning program that covers a page of Talmud a day. In this way, the entire Talmud is completed in about seven and a half years.\",\n    he: \"סדר לימוד לתלמוד הבבלי הכולל לימוד של דף אחד בכל יום. הלומדים בדרך זו מסיימים את קריאת התלמוד כולו בתוך כשבע שנים וחצי.\",\n    enSubtitle: \"Talmud\",\n  },\n  \"929\": {\n    en: \"A learning program in which participants study five of the Bible’s 929 chapters a week, completing it in about three and a half years.\",\n    he: \"סדר שבועי ללימוד תנ\\\"ך שבו נלמדים בכל שבוע חמישה מתוך 929 פרקי התנ\\\"ך. הלומדים בדרך זו מסיימים את קריאת התנ\\\"ך כולו כעבור שלוש שנים וחצי.\",\n    enSubtitle: \"Tanakh\",\n  },\n  \"Daily Mishnah\": {\n    en: \"A program of daily learning in which participants study two Mishnahs (teachings) each day in order to finish the entire Mishnah in six years.\",\n    he: \"סדר לימוד משנה שבמסגרתו נלמדות שתי משניות בכל יום. הלומדים בדרך זו מסיימים את קריאת המשנה כולה כעבור שש שנים.\"\n  },\n  \"Daily Rambam\": {\n    en: \"A learning program that divides Maimonides’ Mishneh Torah legal code into daily units, to complete the whole work in three years.\",\n    he: \"סדר לימוד הספר ההלכתי של הרמב\\\"ם, \\\"משנה תורה\\\", המחלק את הספר ליחידות יומיות. הלומדים בדרך זו מסיימים את קריאת הספר כולו בתוך שלוש שנים.\"\n  },\n  \"Daily Rambam (3 Chapters)\": {\n    en: \"A learning program that divides Maimonides’ Mishneh Torah legal code into daily units, to complete the whole work in one year.\",\n    he: \"סדר לימוד הספר ההלכתי של הרמב\\\"ם, \\\"משנה תורה\\\", המחלק את הספר ליחידות יומיות. הלומדים בדרך זו מסיימים את קריאת הספר כולו בתוך שנה אחת.\",\n  },\n  \"Daf a Week\": {\n    en: \"A learning program that covers a page of Talmud a week. By going at a slower pace, it facilitates greater mastery and retention.\",\n    he: \"סדר שבועי ללימוד התלמוד הבבלי שבו נלמד דף תלמוד אחד בכל שבוע. קצב הלימוד האיטי מאפשר ללומדים הפנמה ושליטה רבה יותר בחומר הנלמד.\",\n    enSubtitle: \"Talmud\",\n  },\n  \"Halakhah Yomit\": {\n    en: \"A four year daily learning program in which participants study central legal texts that cover most of the daily and yearly rituals.\",\n    he: \"תוכנית ארבע־שנתית ללימוד מקורות הלכתיים מרכזיים העוסקים ברוב הלכות היום־יום והמועדים.\",\n  },\n  \"Arukh HaShulchan Yomi\": {\n    en: \"A four-year daily learning program covering ritual halakhot, practical kashrut and interpersonal mitzvot within Rabbi Yechiel Michel Epstein’s legal code, Arukh HaShulchan.\",\n    he: \"תכנית לימוד ארבע-שנתית של הלכות מעשיות מתוך ספר ערוך השלחן, חיבורו ההלכתי של הרב יחיאל מיכל עפשטיין.\",\n  },\n  \"Tanya Yomi\": {\n    \"en\": \"A daily learning cycle for completing Tanya annually, starting at the 19th of Kislev, “Rosh Hashanah of Chasidut.”\",\n    \"he\": \"סדר לימוד המשלים את ספר התניא אחת לשנה, החל מיום י\\\"ט בכסליו \\\"ראש השנה לחסידות\\\".\"\n  },\n  \"Tanakh Yomi\": {\n    en: \"A daily learning cycle for completing Tanakh annually. On Shabbat, each Torah portion is recited. On weekdays, Prophets and Writings are recited according to the ancient Masoretic division of sedarim.\",\n    he: \"סדר לימוד המשלים את קריאת התנ\\\"ך כולו אחת לשנה. בשבתות קוראים את התורה לפי סדר פרשיות השבוע. בימות החול קוראים את הנ\\\"ך על פי חלוקת הסדרים של המסורה.\",\n    enSubtitle: \"Tanakh\",\n  },\n  \"Zohar for Elul\": {\n    en: \"A 40 day learning schedule in which participants learn the Kabbalistic work \\\"Tikkunei Zohar\\\" over the course of the days between the First of the month of Elul and Yom Kippur.\",\n    he: \"סדר יומי ללימוד הספר \\\"תיקוני הזהר\\\". הסדר נמשך 40 יום, בתקופה שבין ראש חודש אלול ויום הכיפורים.\",\n  },\n  \"Chok LeYisrael\": {\n    en: \"A book designed for daily study. Each day’s learning consists of biblical verses together with commentary, a chapter of Mishnah, and short passages of Talmud, Zohar, and of works of Halakhah and Musar.\",\n    he: 'לימוד יומי הכולל פסוקי תנ״ך ופירושם, פרק משנה, קטע מהתלמוד, קטע מהזוהר, קטע מספר הלכה וקטע מספר מוסר.',\n  }\n}\n\n\nexport default CalendarsPage;\n","import React, { useState, useEffect, useContext, useRef} from 'react';\nimport $  from './sefaria/sefariaJquery';\nimport * as d3 from './lib/d3.v5.min';\nimport Sefaria  from './sefaria/sefaria';\nimport {StorySheetList} from './Story';\nimport { useDebounce } from './Hooks';\nimport {\n    SimpleLinkedBlock,\n    SimpleInterfaceBlock,\n    TextBlockLink,\n    NBox,\n    LoadingRing\n} from './Misc';\n\n\nconst UserStats = () => {\n\n    const [uid, setUid] = useState(null);\n    const [user_data, setUserData] = useState({});\n    const [site_data, setSiteData] = useState({});\n    const [active_mode, setMode] = useState(\"Previous Year\");\n\n    const modes = [\"Previous Year\", \"All Time\"];\n    const modekeys = {\n        \"Previous Year\": \"currently\",\n        \"All Time\": \"alltime\"\n    };\n\n    const debouncedUID = useDebounce(uid, 500);\n\n    useEffect(() => {\n        $.getJSON(\"/api/site_stats\")\n            .then(d => setSiteData(d));\n    }, []);\n\n    useEffect(() => {\n        const uid = debouncedUID || Sefaria._uid;\n        setUserData({});\n        $.getJSON(\"/api/user_stats/\" + uid)\n            .then(d => setUserData(d));\n    }, [debouncedUID]);\n\n\n    const all_ready = !!(user_data.uid && site_data.alltime);\n    let mode_user_data;\n    let user_active;\n    if (all_ready) {\n        mode_user_data = user_data[modekeys[active_mode]];\n        user_active = (mode_user_data.textsRead > 2) || (mode_user_data.sheetsRead > 2) || (mode_user_data.sheetsThisPeriod > 1);\n    }\n    // let user_active = true;\n    return (\n    <div className=\"homeFeedWrapper userStats\">\n      <div className=\"content\" style={{padding: \"0 40px 80px\"}}>\n          <div className=\"contentInner\">\n              <h1 style={{textAlign: \"center\"}}>\n                  {all_ready? user_data.name : <LoadingRing />}\n              </h1>\n              {Sefaria.is_moderator && <UserChooser setter={setUid}/>}\n              <UserStatModeChooser modes={modes} activeMode={active_mode} setMode={setMode}/>\n              {all_ready && user_active &&  <UserDataBlock user_data={mode_user_data} site_data={site_data[modekeys[active_mode]]}/>}\n              {all_ready && (!user_active) && <SiteDataBlock site_data={site_data[modekeys[active_mode]]}/>}\n          </div>\n      </div>\n    </div>\n    );\n};\n\nconst UserStatModeChooser = ({modes, activeMode, setMode}) => (\n  <div className=\"userStatModeChooser\">\n      {modes.map(m => <UserStatModeButton key={m} thisMode={m} activeMode={activeMode} setMode={setMode}/>)}\n  </div>\n);\n\nconst UserStatModeButton = ({thisMode, activeMode, setMode}) => (\n    <div className={\"userStatModeButton\" + (thisMode === activeMode?\" active\":\"\")}\n         onClick  ={()=>setMode(thisMode)}>\n        <span>{Sefaria._(thisMode)}</span>\n    </div>\n);\n\nconst UserChooser = ({setter}) => (\n    <div style={{textAlign: \"center\"}}>\n      <label>\n        <span className=\"int-en\"> User ID: </span>\n        <span className=\"int-he\"> מספר משתמש: </span>\n        <input type=\"text\" onChange={e => setter(parseInt(e.target.value))}/>\n      </label>\n    </div>\n);\n\nconst SiteDataBlock = ({site_data}) => (\n    <div>\n        <div className=\"chartRow centered\">\n            <div className=\"systemText statHeader\">\n                <span className=\"int-he\">\n                    מזמן לא התראינו!\n                    <br/>\n                    בואו ונראה מה משתמשים אחרים בספריא לומדים\n                </span>\n                <span className=\"int-en\">\n                    Looks like we haven’t seen you in a while!<br/>\n                    Discover what other people are doing on Sefaria...\n                </span>\n            </div>\n        </div>\n\n        <div>\n            <h2>\n                <span className=\"int-en\">What People are Reading</span>\n                <span className=\"int-he\">מה אנשים קוראים</span>\n            </h2>\n            <div className=\"chartRow centered\">\n                <CategoriesDonut title=\"Average Sefaria User\" heTitle=\"משתמש ממוצע בספריא\" cats={site_data.categoriesRead}/>\n            </div>\n        </div>\n        <div>\n            <h2>\n                <span className=\"int-en\">Top Categories</span>\n                <span className=\"int-he\">קטגוריות פופולריות</span>\n            </h2>\n            <div className=\"chartRow\">\n                <CategoryBars user_cats={site_data.categoriesRead} site_cats={site_data.categoriesRead}/>\n            </div>\n        </div>\n    </div>\n);\nconst UserDataBlock = ({user_data, site_data}) => (\n    <div>\n        <OverallActivityBlock user_data={user_data}/>\n        <UserDonutsBlock user_data={user_data} site_data={site_data}/>\n        <UserCategoryBarchartBlock user_data={user_data} site_data={site_data}/>\n        <YourFavoriteTextsBlock user_data={user_data} />\n        <YourFavoriteSheetsBlock user_data={user_data} />\n        <MostPopularSheetsBlock user_data={user_data} />\n    </div>\n);\n\nconst OverallActivityBlock = ({user_data}) => (\n        <div>\n            <h2>\n                <span className=\"int-en\">Your Overall Activity</span>\n                <span className=\"int-he\">הפעילות שלך במבט</span>\n            </h2>\n            <div className=\"statcardRow\">\n                <StatCard icon_file=\"book-icon-black.svg\" number={user_data.textsRead} name=\"Texts Read\"/>\n                <StatCard icon_file=\"file-icon-black.svg\" number={user_data.sheetsRead} name=\"Sheets Read\"/>\n                <StatCard icon_file=\"plus-icon-black.svg\" number={user_data.sheetsThisPeriod} name=\"Sheets Created\"/>\n            </div>\n        </div>\n);\n\nconst StatCard = ({icon_file, name, number}) => (\n    <div className=\"statcard\">\n        <img src={\"static/img/\" + icon_file}/>\n        <div className=\"statcardValue\">{number}</div>\n        <div className=\"statcardLabel\">{Sefaria._(name)}</div>\n    </div>\n);\n\nconst UserDonutsBlock = ({user_data, site_data}) => (\n        <div>\n            <h2>\n                <span className=\"int-en\">Your Reading by Category</span>\n                <span className=\"int-he\">לימוד לפי סוגה</span>\n            </h2>\n            <div className=\"chartRow\">\n                <CategoriesDonut title=\"Your Reading\" heTitle=\"הלימוד שלך\" cats={user_data.categoriesRead}/>\n                <CategoriesDonut title=\"Average Sefaria User\" heTitle=\"משתמש ממוצע בספריא\" cats={site_data.categoriesRead}/>\n            </div>\n        </div>\n);\nconst UserCategoryBarchartBlock = ({user_data, site_data}) => (\n        <div>\n            <h2>\n                <span className=\"int-en\">Your Top Categories</span>\n                <span className=\"int-he\">מצעד סוגות הלימוד</span>\n            </h2>\n            <div className=\"chartRow\">\n                <CategoryBars user_cats={user_data.categoriesRead} site_cats={site_data.categoriesRead}/>\n            </div>\n        </div>\n);\nconst YourFavoriteTextsBlock = ({user_data}) => (\n    user_data.mostViewedRefs.length ?\n        <div className=\"yourFavoriteTextsBlock\">\n            <h2>\n                <span className=\"int-en\">Your Favorite Texts</span>\n                <span className=\"int-he\">טקסטים מועדפים</span>\n            </h2>\n            <NBox n={3} content={user_data.mostViewedRefs.map((r,i) =>\n                <TextBlockLink key={i} sref={r.en} title={r.en} heTitle={r.he} book={r.book} intlang={true}/>)}/>\n        </div>\n    : null\n);\nconst YourFavoriteSheetsBlock = ({user_data}) => (\n    user_data.mostViewedSheets.length ?\n        <div className=\"yourFavoriteSheetsBlock\">\n            <h2>\n                <span className=\"int-en\">Your Favorite Sheets</span>\n                <span className=\"int-he\">דפי מקורות מועדפים</span>\n            </h2>\n            <div className=\"story\">\n                <StorySheetList sheets={user_data.mostViewedSheets} compact={true} smallfonts={true}/>\n            </div>\n        </div>\n    : null\n);\nconst MostPopularSheetsBlock = ({user_data}) => (\n    user_data.popularSheets.length ?\n        <div className=\"yourPopularSheetsBlock\">\n            <h2>\n                <span className=\"int-en\">Your Most Popular Sheets</span>\n                <span className=\"int-he\">דפי מקורות פופולריים שלך</span>\n            </h2>\n            {user_data.popularSheets.map((sheet, i) => <div key={i}>\n                    <SimpleLinkedBlock classes=\"chapterText lowercase sheetLink\" en={sheet.title} he={sheet.title} url={\"/sheets/\" + sheet.id}/>\n                    <SimpleInterfaceBlock classes=\"sheetViews smallText\" en={sheet.views +\" Views\"} he={sheet.views + \" צפיות\"}/>\n                </div>\n            )}\n        </div>\n    : null\n);\n\nconst mapToPercentage = data => {\n    const newData = {};\n    const total = Object.entries(data).map(k => k[1]).reduce((a, b) => a + b, 0);\n    Object.keys(data).forEach(k => newData[k] = data[k]/total);\n    return newData;\n};\n\nconst makeOtherCategory = data => {\n    const total = data.map(e => e.value).reduce((a, b) => a + b, 0);\n    const bar = total * .04;\n    const remainder = data.filter(e => e.value < bar).map(e => e.value).reduce((a, b) => a + b, 0);\n    const result = data.filter(e => e.value >= bar);\n    result.push({name: \"Etc\", value: remainder});\n    return result;\n};\n\nconst CategoryBars = ({user_cats, site_cats}) => {\n    const svg_ref = useRef();\n\n    const margin = {top: 20, right: 0, bottom: 0, left: 0};\n    const perBarHeight = 75;\n    const max_cats = 5;\n    const height = margin.top + margin.bottom + (perBarHeight * Math.min(Object.keys(user_cats).length, max_cats));\n    const width = 660;\n\n    const keys = [\"user\", \"site\"];\n\n\n    useEffect(()=> {\n        const svg = d3.select(svg_ref.current);\n        if (!svg) {return;}\n\n        const user_percents = mapToPercentage(user_cats);\n        const site_percents = mapToPercentage(site_cats);\n        const orderedCats = Object.entries(user_cats).sort((a, b) => b[1] - a[1]).map(d => d[0]);\n        const data = orderedCats.slice(0,max_cats).map(cat => ({cat: cat, site: site_percents[cat], user: user_percents[cat]}));\n\n        const y = d3.scaleBand()\n            .domain(data.map(d => d.cat))\n            .rangeRound([margin.top, height - margin.bottom])\n            .paddingInner(0.1);\n\n        const inter_bar_padding = 0.05;\n        const below_text_padding = 10;\n        const userbar = 5;\n        const sitebar = 34;\n\n        const x = d3.scaleLinear()\n            .domain([0, d3.max(data.map(d => [d.site, d.user]).flat()) + .10]).nice();\n        if (Sefaria.interfaceLang === \"english\") {\n            x.rangeRound([0,width - margin.right]);\n        } else {\n            x.rangeRound([0,width - margin.right]);\n        }\n\n        const groups = svg.append(\"g\")\n            .selectAll(\"g\")\n            .data(data)\n            .join(\"g\")\n            .attr(\"transform\", d => `translate(${margin.left}, ${y(d.cat)})`);\n\n        groups.append(\"text\")\n            .attr(\"font-family\", (Sefaria.interfaceLang === \"english\" ? '\"Taamey Frank\", \"adobe-garamond-pro\", \"Crimson Text\", Georgia, serif' : '\"Heebo\", sans-serif'))\n            .attr(\"text-anchor\", \"start\")\n            .attr(\"x\", d => Sefaria.interfaceLang === \"hebrew\" ? width - margin.right : null)\n            .attr(\"letter-spacing\", Sefaria.interfaceLang === \"english\" ? 1.5 : null)\n            .attr(\"font-size\", 16)\n            .text(d => Sefaria._(d.cat).toUpperCase());\n\n        groups.selectAll(\"rect\")\n            .data(d => keys.map(key => ({key, cat:d.cat, value: d[key]})))\n            .join(\"rect\")\n            .attr(\"class\", d => d.key)\n            .attr(\"x\", d => Sefaria.interfaceLang === \"english\" ? 0 : width - margin.right - x(d.value))\n            .attr(\"y\", d => d.key === \"user\" ? below_text_padding : below_text_padding + userbar + inter_bar_padding)\n            .attr(\"width\", d => x(d.value))\n            .attr(\"height\", d => d.key === \"user\" ? userbar : sitebar)\n            .attr(\"fill\", d => d.key === \"user\" ? Sefaria.palette.categoryColor(d.cat) : \"#ededec\");\n\n        d3.select(\"svg g g:first-child\")\n            .append(\"text\")\n            .attr(\"y\", below_text_padding + userbar + inter_bar_padding + sitebar - 11)\n            .attr(\"x\", d => x(d.site) > 250 ? x(d.site) - 20 : x(d.site) + 20)\n            .attr(\"font-size\", 16)\n            .attr(\"fill\", \"#999\")\n            .attr(\"text-anchor\", d => x(d.site) > 250 ? \"end\" : \"start\")\n            .text(Sefaria._(\"Average Sefaria User\"));\n\n        return () => {svg.selectAll(\"*\").remove();}\n    }, [user_cats, site_cats]);\n\n    return (\n        <div className=\"chartWrapper\">\n            <svg ref={svg_ref} width={width} height={height} textAnchor=\"middle\" />\n        </div>\n    );\n};\n\nconst CategoriesDonut = ({cats, title, heTitle}) => {\n    const svg_ref = useRef();\n\n    const width = 280;\n    const height = 280;\n    const raw_data = Object.entries(cats).map(e => ({name: e[0], value: e[1]}));\n    const data = (raw_data.length > 2)?makeOtherCategory(raw_data):raw_data;\n    const total = data.map(e => e.value).reduce((a, b) => a + b, 0);\n    const compare = (a,b) => (\n        a.name===\"Etc\"? 1\n        :b.name===\"Etc\"? -1\n        :b.value - a.value);\n    const pie = d3.pie()\n        .sort(compare)\n        .value(d => d.value);\n    const arcs = pie(data);\n    const radius = Math.min(width, height) / 2 * 0.75;\n    const arcLabel = d3.arc().innerRadius(radius).outerRadius(radius);\n    const arc = d3.arc()\n        .innerRadius(Math.min(width, height) / 2 - 10)\n        .outerRadius(Math.min(width, height) / 2 - 1);\n\n    useEffect(()=>{\n        const svg = d3.select(svg_ref.current);\n        if (!svg) {return;}\n\n        const g = svg.append(\"g\")\n            .attr(\"transform\", `translate(${width / 2},${height / 2})`);\n        g.selectAll(\"path\")\n          .data(arcs)\n          .enter().append(\"path\")\n            .attr(\"fill\", d => Sefaria.palette.categoryColor(d.data.name))\n            .attr(\"stroke\", \"white\")\n            .attr(\"d\", arc)\n          .append(\"title\")\n            .text(d => `${d.data.name}: ${d.data.value.toLocaleString(undefined,{style: 'percent', minimumFractionDigits:2})}`);\n\n        const text = g.selectAll(\"text\")\n          .data(arcs)\n          .enter().append(\"text\")\n            .attr(\"transform\", d => `translate(${arcLabel.centroid(d)})`)\n            .attr(\"dy\", \"0.35em\");\n\n      text.append(\"tspan\")\n          .attr(\"x\", 0)\n          .attr(\"y\", \"-0.7em\")\n          .text(d => Sefaria._(d.data.name));\n\n      text.filter(d => (d.endAngle - d.startAngle) > 0.25).append(\"tspan\")\n          .attr(\"x\", 0)\n          .attr(\"y\", \"0.7em\")\n          .attr(\"fill\", \"#999\")\n          .text(d => (d.data.value/total).toLocaleString(undefined,{style: 'percent'}) );\n\n        return () => {svg.selectAll(\"*\").remove();}\n    }, [cats]);\n\n\n    return (\n        <div className=\"chartWrapper\">\n            <svg ref={svg_ref} width={width} height={height} textAnchor=\"middle\" />\n            <SimpleInterfaceBlock classes=\"chartLabel smallText\" en={title} he={heTitle}/>\n        </div>\n    );\n};\n\n\nexport default UserStats;\n","import React  from 'react';\nimport PropTypes  from 'prop-types';\nimport Sefaria  from './sefaria/sefaria';\nimport $  from './sefaria/sefariaJquery';\nimport Component from 'react-class';\nimport Cookies from 'js-cookie';\nimport { saveAs } from 'file-saver';\nimport qs from 'qs';\nimport { useState } from 'react';\n\nclass ModeratorToolsPanel extends Component {\n  constructor(props) {\n    super(props);\n    this.handleWfSubmit = this.handleWfSubmit.bind(this);\n    this.wfFileInput = React.createRef();\n\n    this.state = {\n      // Bulk Download\n      bulk_format: null,\n      bulk_title_pattern: null,\n      bulk_version_title_pattern: null,\n      bulk_language: null,\n      // CSV Upload\n      files: [],\n      uploading: false,\n      uploadError: null,\n      uploadMessage: null,\n    };\n  }\n  handleFiles(event) {\n    this.setState({files: event.target.files});\n  }\n  uploadFiles(event) {\n    event.preventDefault();\n    this.setState({uploading: true, uploadMessage:\"Uploading...\"});\n    let formData = new FormData();\n    for (let i = 0; i < this.state.files.length; i++) {\n      let file = this.state.files[i];\n      formData.append('texts[]', file, file.name);\n    }\n    $.ajax({\n      url: \"api/text-upload\",\n      type: 'POST',\n      data: formData,\n      success: function(data) {\n        if (data.status == \"ok\") {\n          this.setState({uploading: false, uploadMessage: data.message, uploadError: null, files:[]});\n          $(\"#file-form\").get(0).reset(); //Remove selected files from the file selector\n        } else {\n          this.setState({\"uploadError\": \"Error - \" + data.error, uploading: false, uploadMessage: data.message});\n        }\n      }.bind(this),\n      error: function(xhr, status, err) {\n        this.setState({\"uploadError\": \"Error - \" + err.toString(), uploading: false, uploadMessage: null});\n      }.bind(this),\n      cache: false,\n      contentType: false,\n      processData: false\n    });\n  }\n  onDlTitleChange(event) {\n    this.setState({bulk_title_pattern: event.target.value});\n  }\n  onDlVersionChange(event) {\n    this.setState({bulk_version_title_pattern: event.target.value});\n  }\n  onDlLanguageSelect(event) {\n    this.setState({bulk_language: event.target.value});\n  }\n  onDlFormatSelect(event) {\n    this.setState({bulk_format: event.target.value});\n  }\n  bulkVersionDlLink() {\n    let args = [\"format\",\"title_pattern\",\"version_title_pattern\",\"language\"].map(\n        arg => this.state[\"bulk_\" + arg]?`${arg}=${encodeURIComponent(this.state[\"bulk_\"+arg])}`:\"\"\n    ).filter(a => a).join(\"&\");\n    return \"download/bulk/versions/?\" + args;\n  }\n\n  handleInputChange(event) {\n    const target = event.target;\n    const value = target.type === 'checkbox' ? target.checked : target.value;\n    const name = target.name;\n\n    this.setState({\n      [name]: value\n    });\n  }\n\n  handleWfSubmit(event) {\n    event.preventDefault();\n    alert(\n      `Selected file - ${this.wfFileInput.current.files[0].name}`\n    );\n  }\n\n  render () {\n    // Bulk Download\n    const dlReady = (this.state.bulk_format && (this.state.bulk_title_pattern || this.state.bulk_version_title_pattern));\n    const downloadButton = <div className=\"modtoolsButton\">\n        <div className=\"modtoolsButtonInner\">\n          <span className=\"int-en\">Download</span>\n          <span className=\"int-he\">הורדה</span>\n        </div>\n      </div>;\n    const downloadSection = (\n      <div className=\"modToolsSection dlSection\">\n        <div className=\"dlSectionTitle\">\n          <span className=\"int-en\">Bulk Download Text</span>\n          <span className=\"int-he\">הורדת הטקסט</span>\n        </div>\n        <input className=\"dlVersionSelect\" type=\"text\" placeholder=\"Index Title Pattern\" onChange={this.onDlTitleChange} />\n        <input className=\"dlVersionSelect\" type=\"text\" placeholder=\"Version Title Pattern\" onChange={this.onDlVersionChange}/>\n        <select className=\"dlVersionSelect dlVersionLanguageSelect\" value={this.state.bulk_language || \"\"} onChange={this.onDlLanguageSelect}>\n          <option disabled>Language</option>\n          <option key=\"all\" value=\"\" >Hebrew & English</option>\n          <option key=\"he\" value=\"he\" >Hebrew</option>\n          <option key=\"en\" value=\"en\" >English</option>\n        </select>\n        <select className=\"dlVersionSelect dlVersionFormatSelect\" value={this.state.bulk_format || \"\"} onChange={this.onDlFormatSelect}>\n          <option disabled>File Format</option>\n          <option key=\"txt\" value=\"txt\" >Text (with tags)</option>\n          <option key=\"plain.txt\" value=\"plain.txt\" >Text (without tags)</option>\n          <option key=\"csv\" value=\"csv\" >CSV</option>\n          <option key=\"json\" value=\"json\" >JSON</option>\n        </select>\n        {dlReady?<a href={this.bulkVersionDlLink()} download>{downloadButton}</a>:downloadButton}\n      </div>);\n\n    // Uploading\n    const ulReady = (!this.state.uploading) && this.state.files.length > 0;\n    const uploadButton = <a><div className=\"modtoolsButton\" onClick={this.uploadFiles}><div className=\"modtoolsButtonInner\">\n       <span className=\"int-en\">Upload</span>\n       <span className=\"int-he\">העלאה</span>\n      </div></div></a>;\n    const uploadForm = (\n      <div className=\"modToolsSection\">\n        <div className=\"dlSectionTitle\">\n          <span className=\"int-en\">Bulk Upload CSV</span>\n          <span className=\"int-he\">הורדת הטקסט</span>\n        </div>\n         <form id=\"file-form\">\n           <input className=\"dlVersionSelect\" type=\"file\" id=\"file-select\"  multiple onChange={this.handleFiles}/>\n           {ulReady?uploadButton:\"\"}\n         </form>\n        {this.state.uploadMessage?<div className=\"message\">{this.state.uploadMessage}</div>:\"\"}\n        {this.state.uploadError?<div className=\"error\">{this.state.uploadError}</div>:\"\"}\n      </div>);\n    const wflowyUpl = (\n      <div className=\"modToolsSection\">\n          <WorkflowyModeratorTool />\n      </div>);\n    const uploadLinksFromCSV = (\n      <div className=\"modToolsSection\">\n          <UploadLinksFromCSV />\n      </div>);\n    const getLinks = (\n      <div className=\"modToolsSection\">\n          <GetLinks/>\n      </div>);\n    return (Sefaria.is_moderator)?\n        <div className=\"modTools\"> {downloadSection}{uploadForm}{wflowyUpl}{uploadLinksFromCSV}{getLinks} </div> :\n        <div className=\"modTools\"> Tools are only available to logged in moderators.</div>;\n  }\n}\nModeratorToolsPanel.propTypes = {\n  interfaceLang: PropTypes.string\n};\n\n\nclass WorkflowyModeratorTool extends Component{\n    constructor(props) {\n    super(props);\n    this.handleWfSubmit = this.handleWfSubmit.bind(this);\n    this.wfFileInput = React.createRef();\n    this.state = {c_index: true};\n  }\n\n  handleInputChange(event) {\n    const target = event.target;\n    const value = target.type === 'checkbox' ? target.checked : target.value;\n    const name = target.name;\n\n    this.setState({\n      [name]: value\n    });\n  }\n\n  handleWfSubmit(event) {\n    event.preventDefault();\n    /*console.log(\n      `Selected file - ${this.wfFileInput.current.files[0].name}`\n    );*/\n    this.setState({uploading: true, uploadMessage:\"Uploading...\"});\n    const data = new FormData(event.target);\n    console.log(data);\n    const request = new Request(\n        '/modtools/upload_text',\n        {headers: {'X-CSRFToken': Cookies.get('csrftoken')}}\n    );\n    fetch(request, {\n      method: 'POST',\n      mode: 'same-origin',\n      credentials: 'same-origin',\n      body: data,\n    }).then(response => {\n        this.setState({uploading: false, uploadMessage:\"\"});\n        if (!response.ok) {\n            response.text().then(resp_text=> {\n                console.log(\"error in html form\", resp_text);\n                this.setState({uploading: false,\n                    error: true,\n                    errorIsHTML: true,\n                     uploadResult: resp_text});\n            })\n        }else{\n            response.json().then(resp_json=>{\n                console.log(\"okay response\", resp_json);\n                this.setState({uploading: false,\n                    error: false,\n                    uploadMessage:resp_json[\"data\"][\"message\"],\n                    uploadResult: JSON.stringify(resp_json[\"data\"][\"index\"], undefined, 4)})\n            });\n        }\n    }).catch(error => {\n        console.log(\"network error\", error);\n        this.setState({uploading: false, error: true, errorIsHTML: false, uploadMessage:error.message});\n    });\n  }\n\n  parseErrorHTML(htmltext){\n    console.log(\"pparsing html\", htmltext);\n    // Initialize the DOM parser\n    let parser = new DOMParser();\n    // Parse the text\n    let doc = parser.parseFromString(htmltext, \"text/html\");\n    //return {__html: doc};\n    return doc\n  }\n\n  render() {\n    return(\n        <div className=\"workflowy-tool\">\n        <div className=\"dlSectionTitle\">\n          <span className=\"int-en\">Workflowy Outline Upload</span>\n          <span className=\"int-he\">העלאת קובץ - workflowy</span>\n        </div>\n        <form id=\"wf-file-form\" className=\"workflowy-tool-form\" onSubmit={this.handleWfSubmit}>\n           <label>\n              Upload Workflowy file:\n              <input type=\"file\" name=\"wf_file\" ref={this.wfFileInput} />\n           </label>\n           <label>\n              Create Index Record:\n              <input\n                name=\"c_index\"\n                type=\"checkbox\"\n                checked={this.state.c_index}\n                onChange={this.handleInputChange} />\n           </label>\n           <label>\n              Create Version From Notes on Outline:\n              <input\n                name=\"c_version\"\n                type=\"checkbox\"\n                checked={this.state.c_version || false}\n                onChange={this.handleInputChange} />\n           </label>\n           <label>\n            Custom Delimiters (In the following Order- 1. Title Language 2. Alt Titles 3. Categories):\n              <input\n                className=\"dlVersionSelect\"\n                name=\"delims\"\n                type=\"text\"\n                value={this.state.delims}\n                onChange={this.handleInputChange} />\n            </label>\n            <label>\n              Optional Term Scheme Name:\n              <input\n                className=\"dlVersionSelect\"\n                name=\"term_scheme\"\n                type=\"text\"\n                value={this.state.term_scheme}\n                onChange={this.handleInputChange} />\n            </label>\n             <button className=\"modtoolsButton\" name=\"wf-submit\" type=\"submit\">\n                <span className=\"int-en\">Upload</span>\n                <span className=\"int-he\">Upload</span>\n             </button>\n         </form>\n        <div id=\"wf-upl-msg\" className=\"wf-upl-msg\">{this.state.uploadMessage || \"\"}</div>\n        { (this.state.error && this.state.errorIsHTML) ?\n              <div id=\"wf-upl-message\" className=\"wf-upl-message\" dangerouslySetInnerHTML={{__html: this.state.uploadResult}}/> :\n              <textarea id=\"wf-upl-message\" className=\"wf-upl-message\" cols=\"80\" rows=\"30\" value={this.state.uploadResult}></textarea> }\n        </div>);\n  }\n}\n\nclass UploadLinksFromCSV extends Component{\n  constructor(props) {\n    super(props);\n    this.state = {projectName: ''};\n    this.handleChange = this.handleChange.bind(this);\n    this.handleSubmit = this.handleSubmit.bind(this);\n  }\n  isSubmitDisabled() {\n      return !this.state.hasFile || !this.state.projectName.length;\n  }\n  handleChange(event) {\n    const target = event.target;\n    this.setState({[target.name]: target.value});\n  }\n  handleFileChange(event) {\n      this.setState({hasFile: !!event.target.files[0]});\n  }\n  handleSubmit(event) {\n    event.preventDefault();\n    this.setState({uploading: true, uploadMessage:\"Uploading...\"});\n    const data = new FormData(event.target);\n    const request = new Request(\n        '/modtools/links',\n        {headers: {'X-CSRFToken': Cookies.get('csrftoken')}}\n    );\n    fetch(request, {\n      method: 'POST',\n      mode: 'same-origin',\n      credentials: 'same-origin',\n      body: data\n    }).then(response => {\n        if (!response.ok) {\n            response.text().then(resp_text => {\n                this.setState({uploading: false,\n                    uploadMessage: \"\",\n                    error: true,\n                    errorIsHTML: true,\n                    uploadResult: resp_text});\n            })\n        } else {\n            response.json().then(resp_json => {\n                this.setState({uploading: false,\n                    error: false,\n                    uploadMessage: resp_json.data.message,\n                    uploadResult: JSON.stringify(resp_json.data.index, undefined, 4)});\n                if (resp_json.data.errors) {\n                    let blob = new Blob([resp_json.data.errors], {type: \"text/plain;charset=utf-8\"});\n                    saveAs(blob, 'errors.csv');\n                }\n            });\n        }\n    }).catch(error => {\n        this.setState({uploading: false, error: true, errorIsHTML: false, uploadMessage:error.message});\n    });\n\n  }\n  getOptions() {\n      const options = ['Commentary', 'Quotation', 'Related', 'Mesorat hashas', 'Ein Mishpat', 'Reference'];\n      return options.map((option) => {\n          return <option value={option.toLowerCase()} key={option}>{option}</option>;\n      });\n  }\n\n  render() {\n    return (\n        <div className=\"uploadLinksFromCSV\">\n            <div className=\"dlSectionTitle\">Upload links</div>\n            <form id=\"upload-links-form\" onSubmit={this.handleSubmit}>\n                <label>\n                    Upload file:\n                    <input type=\"file\" name=\"csv_file\"  onChange={this.handleFileChange} />\n                    <br />\n                    Choose a csv file with two columns. First row should include titles, and the others valid refs to link\n                    <br />\n                </label>\n                <label>\n                    Select links type:\n                    <select name=\"linkType\" value={this.state.linkType} onChange={this.handleChange}>\n                        {this.getOptions()}\n                    </select>\n                </label>\n                <label>\n                    Project name\n                    <input\n                        name=\"projectName\"\n                        type=\"text\"\n                        value={this.state.generatedBy}\n                        onChange={this.handleChange}\n                    />\n                </label>\n                <input type=\"submit\" value=\"Submit\" disabled={this.isSubmitDisabled()} />\n            </form>\n            { this.state.uploadMessage && <div>{this.state.uploadMessage}</div> }\n            { (this.state.errorIsHTML) && <div dangerouslySetInnerHTML={{__html: this.state.uploadResult}}/> }\n        </div>\n    );\n  }\n}\n\nconst InputRef = ({ id, value, handleChange, handleBlur, error }) => (\n  <label>\n    Ref{id}\n    <input\n      type=\"text\"\n      name={`ref${id}`}\n      value={value}\n      onChange={handleChange}\n      onBlur={handleBlur}\n      style={error ? { backgroundColor: \"rgba(255, 0, 0, 0.5)\" } : {}}\n      placeholder={id === 2 ? 'all library, limited to 15k links' : null}\n    />\n    <p role=\"alert\" style={{ color: \"rgb(255, 0, 0)\" }}>{(error) ? \"Not a valid ref\" : \"\"}</p>\n  </label>\n);\nInputRef.propTypes = {\n  id: PropTypes.number.isRequired,\n  value: PropTypes.string.isRequired,\n  handleChange: PropTypes.func.isRequired,\n  handleBlur: PropTypes.func.isRequired,\n  error: PropTypes.bool,\n};\n\nconst InputNonRef = ({ name, value, handleChange }) => (\n  <label>\n    {name.charAt(0).toUpperCase() + name.slice(1)}\n    <input\n      type=\"text\"\n      name={name}\n      value={value}\n      onChange={handleChange}\n      placeholder=\"any\"\n    />\n  </label>\n);\nInputNonRef.propTypes = {\n  name: PropTypes.string.isRequired,\n  value: PropTypes.string.isRequired,\n  handleChange: PropTypes.func.isRequired,\n};\n\nconst DownloadButton = () => (\n  <div className=\"modtoolsButton\">\n    <div className=\"modtoolsButtonInner\">\n      Download\n    </div>\n  </div>\n);\n\nfunction GetLinks() {\n  const [refs, setRefs] = useState({ ref1: '', ref2: '' });\n  const [errors, setErrors] = useState({ref2: false});\n  const [type, setType] = useState('');\n  const [generatedBy, setGeneratedBy] = useState('');\n  const [bySegment, setBySegment] = useState(false)\n\n  const handleCheck = () => {\n    setBySegment(!bySegment)\n  }\n\n  const handleChange = async (event) => {\n    const { name, value } = event.target;\n    setRefs(prev => ({ ...prev, [name]: value }));\n    if (errors[name]) {\n      if (!value) {\n          setErrors(prev => ({...prev, [name]: false}));\n      }\n      else {\n          try {\n              const response = await Sefaria.getName(value);\n              setErrors(prev => ({...prev, [name]: !response.is_ref}));\n          } catch (error) {\n              console.error(error);\n          }\n      }\n    }\n  }\n\n\n  const handleBlur = async (event) => {\n    const name = event.target.name;\n    if (refs[name]) {\n      try {\n        const response = await Sefaria.getName(refs[name]);\n        setErrors(prev => ({ ...prev, [name]: !response.is_ref }));\n      } catch (error) {\n        console.error(error);\n      }\n    }\n  }\n\n  const formReady = () => {\n    return refs.ref1 && errors.ref1 === false && errors.ref2 === false;\n  }\n\n  const linksDownloadLink = () => {\n    const queryParams = qs.stringify({ type: (type) ? type : null, generated_by: (generatedBy) ? generatedBy : null },\n        { addQueryPrefix: true, skipNulls: true });\n    const tool = (bySegment) ? 'index_links' : 'links';\n    return `modtools/${tool}/${refs.ref1}/${refs.ref2 || 'all'}${queryParams}`;\n  }\n\n  return (\n    <div className=\"getLinks\">\n      <div className=\"dlSectionTitle\">Download links</div>\n      <form id=\"download-links-form\">\n        <fieldset>\n            <InputRef id={1} value={refs.ref1} handleChange={handleChange} handleBlur={handleBlur} error={errors.ref1} />\n            <label>\n                <input\n                    type=\"checkbox\"\n                    checked={bySegment}\n                    onChange={handleCheck}\n                />\n                iterate by segments (include empties)\n            </label>\n        </fieldset>\n        <br/>\n        <InputRef id={2} value={refs.ref2} handleChange={handleChange} handleBlur={handleBlur} error={errors.ref2} />\n        <br/>\n        <InputNonRef name='type' value={type} handleChange={(e) => setType(e.target.value)} />\n        <br/>\n        <InputNonRef name='generated_by' value={generatedBy} handleChange={(e) => setGeneratedBy(e.target.value)} />\n      </form>\n      {formReady() ? <a href={linksDownloadLink()} download><DownloadButton /></a> : <DownloadButton />}\n    </div>\n  );\n}\n\nexport default ModeratorToolsPanel;\n","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport PropTypes  from 'prop-types';\nimport classNames  from 'classnames';\nimport Footer  from './Footer';\nimport Sefaria  from './sefaria/sefaria';\nimport Component from 'react-class';\nimport { NavSidebar, Modules } from './NavSidebar';\nimport {\n  InterfaceText,\n  LoadingMessage,\n  ResponsiveNBox\n} from './Misc';\n\nconst PublicCollectionsPage = ({multiPanel, initialWidth}) => {\n  const [collectionsList, setCollectionsList] = useState(Sefaria.getCollectionsListFromCache());\n  \n  const sortCollectionList = d => {\n    // Sort alphabetically, ignoring punctuation, putting numbers at the end, with collections in the current interface lang first.\n    d.public.sort((a, b) => {\n      const [strippedA, strippedB] = [a.name, b.name].map(x => x.stripPunctuation());\n      const [aHe, bHe] = [strippedA, strippedB].map(Sefaria.hebrew.isHebrew);\n      const [aNum, bNum] = [strippedA, strippedB].map(x => /^\\d/.test(x));\n\n      if (aHe !== bHe) {\n        return (Sefaria.interfaceLang === \"hebrew\" ? aHe : bHe) ? -1 : 1; \n      } else if (aNum !== bNum) {\n        return aNum ? 1 : -1;\n      } else {\n        return strippedA < strippedB ? -1 : 1;\n      }\n    });\n    return d;\n  };\n\n  if (collectionsList) {\n    sortCollectionList(collectionsList);\n  }\n\n  useEffect(() => {\n    Sefaria.getCollectionsList()\n      .then(d => sortCollectionList(d))\n      .then(d => setCollectionsList(d));\n  });\n\n  const sidebarModules = [\n    multiPanel ? {type: \"AboutCollections\"} : {type: null},\n    {type: \"StayConnected\"},\n  ];\n\n  let enCollections, heCollections, enCollBox, heCollBox;  \n  if (collectionsList) {\n    enCollections = collectionsList.public.filter(c => !Sefaria.hebrew.isHebrew(c.name));\n    heCollections = collectionsList.public.filter(c => Sefaria.hebrew.isHebrew(c.name));\n\n    [enCollBox, heCollBox] = [enCollections, heCollections].map(coll => (\n      <ResponsiveNBox \n        content={coll.map(item => \n          <CollectionBlockListing data={item} key={item.name} />)}\n        initialWidth={initialWidth} />\n    ));\n  }\n\n  return (\n    <div className=\"readerNavMenu\">\n      <div className=\"content\">\n        <div className=\"sidebarLayout\">\n          <div className=\"contentInner\">\n            <h1>\n              <InterfaceText>Collections</InterfaceText>\n            </h1>\n\n            {multiPanel ? null :\n            <Modules type={\"AboutCollections\"} props={{hideTitle: true}} /> }\n\n            <div className=\"collectionsList\">\n              { !!collectionsList ?\n              (collectionsList.public.length ?\n                (Sefaria.interfaceLang === \"hebrew\" ?\n                <>\n                  <div className=\"heCollections\">{heCollBox}</div>\n                  <div className=\"enCollections\">{enCollBox}</div>\n                </>\n                :\n                <>\n                  <div className=\"enCollections\">{enCollBox}</div>\n                  <div className=\"heCollections\">{heCollBox}</div>\n                </>)\n                : <InterfaceText>There are no public collections yet.</InterfaceText>)\n              : <LoadingMessage /> }\n            </div>\n          </div>\n          <NavSidebar modules={sidebarModules} />\n        </div>\n        <Footer />\n      </div>\n    </div>\n  );\n}\n\n\nconst CollectionBlockListing = ({data}) => {\n  return (\n    <div className=\"navBlock\">\n      <a href={`/collections/${data.slug}`} className=\"navBlockTitle\">\n        <div className=\"collectionListingImageBox\">\n          <img className=\"collectionListingImage\" src={data.imageUrl} alt=\"Collection Logo\"/>\n        </div>\n        <InterfaceText>{data.name}</InterfaceText>\n      </a>\n      {data.description ?\n      <div className=\"navBlockDescription clamped clamped5\">\n        <InterfaceText>{data.description.stripHtml()}</InterfaceText>\n      </div> : null }\n    </div>\n  );\n}\n\n\nexport default PublicCollectionsPage","import { useState, useEffect } from \"react\";\nimport Sefaria from \"./sefaria/sefaria\";\nimport classNames  from 'classnames';\nimport {InterfaceText, TabView} from './Misc';\nimport { NavSidebar, Modules } from './NavSidebar';\nimport Footer  from './Footer';\n\n\nconst TranslationsPage = ({translationsSlug}) => {\n    const [translations, setTranslations] = useState(null);\n    const [uncategorized, setUncategorized] = useState({});\n    const [prioritized, setPrioritized] = useState({});\n    let sidebarModules = [{type: \"AboutTranslatedText\", props: {translationsSlug: translationsSlug}}];\n    let translation = Sefaria.getTranslation(translationsSlug).then(x => {\n        setTranslations(x)\n    });\n    useEffect(() => {\n        setPrioritized(translations ? Object.keys(translations).reduce((uncategorized, key) => {\n                uncategorized[key] = translations[key]['Uncategorized'] ? translations[key]['Uncategorized']\n                    .filter(translation => Sefaria.tocItemsByCategories([key])\n                        .map(x => x.title).includes(translation.title)) : null;\n                return uncategorized;\n            },{}) : {})\n        setUncategorized(translations ? Object.keys(translations).reduce((uncategorized, key) => {\n                uncategorized[key] = translations[key]['Uncategorized'] ? translations[key]['Uncategorized']\n                    .filter(translation => !Sefaria.tocItemsByCategories([key])\n                        .map(x => x.title).includes(translation.title)) : null;\n                return uncategorized;\n            },{}) : {})\n    }, [translations])\n    const tabs = [{id: \"texts\", title: {en: \"Texts\", he: Sefaria._(\"Texts\", \"Header\")}}];\n    const sortFx = (a, b) => {\n      if(a[\"order\"] && b[\"order\"]) {\n        return a['order'][0] - b['order'][0];\n      } else {\n        return 0;\n      }\n    }\n    return (\n        <div className=\"readerNavMenu noLangToggleInHebrew\" key=\"0\">\n        <div className=\"content\">\n          <div className=\"sidebarLayout\">\n            <div className=\"contentInner\">\n              <h1 className=\"serif pageTitle\"><InterfaceText>{Sefaria.getHebrewTitle(translationsSlug)}</InterfaceText></h1>\n              {<TabView\n                  currTabIndex={0}\n                  tabs={tabs}\n                  containerClasses={\"largeTabs\"}\n                  renderTab={t => (\n                            <div className={classNames({tab: 1, noselect: 1, filter: t.justifyright, open: t.justifyright && showFilterHeader})}>\n                              <InterfaceText text={t.title} />\n                              { t.icon ? <img src={t.icon} alt={`${t.title.en} icon`} /> : null }\n                            </div>\n                          )}\n                 \n                  ><> {translations ?  Sefaria.toc.filter(w => Object.keys(translations).includes(w.category))\n                  .map(w => w.category)\n                  .map(corpus => {\n                return (<div key={corpus} className=\"translationsPage\">\n                  <h2><InterfaceText>{corpus}</InterfaceText></h2>\n                    {prioritized[corpus] ?\n                        <ul>\n                            {prioritized[corpus].sort(sortFx).map(x => <li key={x.title} className=\"bullet languageItem\">\n                                <a href={x.url}><InterfaceText>{x.title}</InterfaceText></a></li>)}\n                        </ul> :\n                        null }\n                  {Sefaria.tocObjectByCategories([corpus]).contents.filter(x => Object.keys(translations[corpus]).includes(x.category)).map(x => {\n                    return (<details key={x.category} open={translationsSlug !== \"en\"}><summary><InterfaceText>{x.category}</InterfaceText></summary>\n                    <ul>\n                      {translations[corpus][x.category].sort(sortFx).map((y, i) => {\n                        return (<li key={i+y.title} className=\"bullet languageItem\"><a href={y.url}><InterfaceText>{y.title}</InterfaceText></a></li>)\n                      })}\n                    </ul>\n                    </details>)\n                  })}\n                  {\n                    uncategorized[corpus] && uncategorized[corpus].length > 0?\n                    <details open={translationsSlug !== \"en\"}><summary><InterfaceText>Uncategorized</InterfaceText></summary>\n                    <ul>\n                      {uncategorized[corpus].sort(sortFx).map((y, i) => {\n                        return (<li key={i+y.title} className=\"bullet languageItem\"><a href={y.url}>{y.title}</a></li>)\n                      })}\n                    </ul>\n                    </details>\n                    : null\n                  }       \n                </div>)\n              }) : null}\n              </>\n              </TabView>}\n              </div>\n            <NavSidebar modules={sidebarModules} />\n          </div>\n          <Footer />\n        </div>\n      </div>\n    )\n}\n\nexport default TranslationsPage","import React, {useState} from \"react\";\nimport Sefaria  from './sefaria/sefaria';\nimport $  from './sefaria/sefariaJquery';\nimport {\n    CloseButton, InterfaceText, EnglishText, HebrewText\n} from './Misc';\n\nconst cookie = Sefaria._inBrowser ? $.cookie : Sefaria.util.cookie;\nconst { translation_language_preference_suggestion } = Sefaria;\n\nexport const TextColumnBannerChooser = ({ setTranslationLanguagePreference, openTranslations, openTransBannerApplies }) => {\n    const [transLangPrefAccepted, setTransLangPrefAccepted] = useState(false);\n    const shouldTransPrefBannerRender = () => {\n        // we haven't suggested yet and we have a suggestion\n        return transLangPrefAccepted || (!cookie(\"translation_language_preference_suggested\") && translation_language_preference_suggestion);\n    };\n    const shouldOpenTransBannerRender = () => {\n        return openTransBannerApplies() && !cookie(\"open_trans_banner_shown\"); // && textMode in (bilingual, english) && category in (Tanakh, Mishnah, Bavli)\n    }\n\n    if (shouldTransPrefBannerRender())  {\n        return (\n            <TransLangPrefBanner\n                accepted={transLangPrefAccepted}\n                setAccepted={setTransLangPrefAccepted}\n                setTranslationLanguagePreference={setTranslationLanguagePreference}\n            />\n        );\n    }\n    else if (shouldOpenTransBannerRender()) {\n        return <OpenTransBanner openTranslations={openTranslations} />;\n    }\n    return null;\n};\n\n\nconst TransLangPrefBanner = ({accepted, setAccepted, setTranslationLanguagePreference}) => {\n    if (accepted) {\n        return <TransLangPrefAcceptedBanner />;\n    }\n\n    return (\n        <TransLangPrefAskBanner\n            setAccepted={setAccepted}\n            setTranslationLanguagePreference={setTranslationLanguagePreference}\n        />\n    );\n}\n\n\nconst TransLangPrefAcceptedBanner = () => {\n    const lang = Sefaria.translateISOLanguageCode(translation_language_preference_suggestion);\n    return (\n        <TextColumnBanner>\n            <InterfaceText>\n                <EnglishText> Thanks! We'll show you {lang} translations first when we have them. </EnglishText>\n                <HebrewText>תודה! כשנוכל, נציג לכם תרגומים בשפה ה<span className=\"bold\">{Sefaria._(lang)}</span> כאשר אלו יהיו זמינים. </HebrewText>\n            </InterfaceText>\n        </TextColumnBanner>\n    );\n}\n\n\nconst TransLangPrefAskBanner = ({ setAccepted, setTranslationLanguagePreference }) => {\n    const reject = () => {\n        cookie(\"translation_language_preference_suggested\", JSON.stringify(1), {path: \"/\"});\n        Sefaria.editProfileAPI({settings: {translation_language_preference_suggested: true}});\n    }\n    const accept = () => {\n        setAccepted(true);\n        setTranslationLanguagePreference(translation_language_preference_suggestion);\n    }\n    const lang = Sefaria.translateISOLanguageCode(translation_language_preference_suggestion);\n    const buttons = [{text: \"Yes\", onClick: accept}, {text: \"No\", onClick: reject, sideEffect: \"close\" }];\n\n    return (\n        <TextColumnBanner buttons={buttons} onClose={reject}>\n            <InterfaceText>\n                <EnglishText> Prefer to see <span className=\"bold\"> {lang} </span> translations when available? </EnglishText>\n                <HebrewText>האם תעדיפו לראות תרגומים בשפה ה<span className=\"bold\">{Sefaria._(lang)}</span> כאשר הם זמינים?</HebrewText>\n            </InterfaceText>\n        </TextColumnBanner>\n    );\n}\n\n\n/**\n *\n * @param openTranslations: function with no parameters that opens translations in the resources panel\n * @returns {JSX.Element}\n * @constructor\n */\nconst OpenTransBanner = ({ openTranslations }) => {\n    const buttons = [{\n        text: \"Go to translations\",\n        onClick: () => { openTranslations(); },\n        sideEffect: \"close\",\n    }];\n    const onClose = () => {\n        cookie(\"open_trans_banner_shown\", JSON.stringify(1), {path: \"/\"});\n    };\n    return (\n        <TextColumnBanner buttons={buttons} onClose={onClose}>\n            <InterfaceText>\n                <EnglishText> Want to <span className=\"bold\">change</span> the translation?</EnglishText>\n                <HebrewText> מעוניינים בתרגום אחר?</HebrewText>\n            </InterfaceText>\n        </TextColumnBanner>\n    );\n};\n\n\n\n/**\n * Banner which appears right above text column and informs a user of an action they can take\n * @param children: React element to display the call-to-action text.\n * @param buttons: List of objects. Each object should have keys \"text\" and \"onClick\". Can optionally have key \"sideEffect\" whose value can be \"close\" if the button should close the banner.\n * @param onClose: Optional callback that gets called when the banner is closed.\n * @returns {JSX.Element|null}\n * @constructor\n */\nconst TextColumnBanner = ({ children, buttons, onClose }) => {\n    const [closed, setClosed] = useState(false);\n    const closeBanner = () => {\n        setClosed(true);\n        onClose?.();\n    };\n    if (closed) { return null; }\n    return (\n        <div className=\"readerControls transLangPrefSuggBann\">\n            <div className=\"readerControlsInner transLangPrefSuggBannInner sans-serif\">\n                <div className=\"transLangPrefCentered\">\n                    { children }\n                    <div className=\"yesNoGroup\">\n                        { buttons?.map(button => <TextColumnBannerButton key={button.text} button={button} closeBanner={closeBanner}/>) }\n                    </div>\n                </div>\n                <CloseButton onClick={closeBanner} />\n            </div>\n        </div>\n    );\n}\n\nconst TextColumnBannerButton = ({ button, closeBanner }) => {\n    const onClick = () => {\n        button.onClick();\n        if (button.sideEffect === \"close\") { closeBanner(true); }\n    }\n    return (\n        <a className=\"yesNoButton\" onClick={onClick}>\n            <InterfaceText>{button.text}</InterfaceText>\n        </a>\n    );\n}\n","import React, {useState}  from 'react';\nimport Component from 'react-class';\nimport classNames  from 'classnames';\nimport ReactDOM  from 'react-dom';\nimport PropTypes  from 'prop-types';\nimport extend  from 'extend';\nimport Sefaria  from './sefaria/sefaria';\nimport {ContentLanguageContext} from './context';\nimport $  from './sefaria/sefariaJquery';\nimport TextColumn  from './TextColumn';\nimport TextsPage  from './TextsPage';\nimport {\n  ConnectionsPanel,\n  ConnectionsPanelHeader,\n} from './ConnectionsPanel';\nimport BookPage  from './BookPage';\nimport SearchPage  from './SearchPage';\nimport Sheet  from './Sheet';\nimport SheetMetadata  from './SheetMetadata';\nimport TopicPageAll  from './TopicPageAll';\nimport {TopicPage, TopicCategory}  from './TopicPage';\nimport TopicsPage from './TopicsPage';\nimport CollectionPage from \"./CollectionPage\"\nimport { NotificationsPanel } from './NotificationsPanel';\nimport UserHistoryPanel  from './UserHistoryPanel';\nimport UserProfile  from './UserProfile';\nimport UpdatesPanel  from './UpdatesPanel';\nimport CommunityPage  from './CommunityPage';\nimport CalendarsPage from './CalendarsPage'\nimport UserStats  from './UserStats';\nimport ModeratorToolsPanel  from './ModeratorToolsPanel';\nimport PublicCollectionsPage from './PublicCollectionsPage';\nimport TranslationsPage from './TranslationsPage';\nimport { TextColumnBannerChooser } from './TextColumnBanner';\nimport {\n  CloseButton,\n  MenuButton,\n  DisplaySettingsButton,\n  SaveButton,\n  CategoryColorLine,\n  CategoryAttribution,\n  ToggleSet, InterfaceText, EnglishText, HebrewText, SignUpModal\n} from './Misc';\nimport {ContentText} from \"./ContentText\";\n\n\nclass ReaderPanel extends Component {\n  constructor(props) {\n    super(props);\n\n    let state = this.clonePanel(props.initialState);\n    state[\"initialAnalyticsTracked\"] = false;\n    state.width = this.props.multiPanel ? 1000 : 500; // Assume we're in a small panel not using multipanel\n    this.state = state;\n    this.sheetRef = React.createRef();\n    this.readerContentRef = React.createRef();\n  }\n  componentDidMount() {\n    window.addEventListener(\"resize\", this.setWidth);\n    this.setWidth();\n    if (this.props.panelPosition) {  //Focus on the first focusable element of the newly loaded panel. Mostly for a11y\n      const curPanel = $(\".readerPanel\")[this.props.panelPosition];\n      $(curPanel).find(':focusable').first().focus();\n    }\n  }\n  componentWillUnmount() {\n    window.removeEventListener(\"resize\", this.setWidth);\n  }\n  componentWillReceiveProps(nextProps) {\n    if (nextProps.searchQuery && this.state.menuOpen !== \"search\") {\n      this.openSearch(nextProps.searchQuery);\n    }\n    if (this.state.menuOpen !== nextProps.initialMenu) {\n      this.setState({menuOpen: nextProps.initialMenu});\n    }\n    this.setState(nextProps.initialState);\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (prevProps.layoutWidth !== this.props.layoutWidth) {\n      this.setWidth();\n    }\n    if ($('*:focus').length == 0 && this.props.multiPanel && $(\"body\").hasClass(\"user-is-tabbing\")) {\n        const curPanel = $(\".readerPanel\")[($(\".readerPanel\").length)-1];\n        $(curPanel).find(':focusable').first().focus();\n    }\n    this.replaceHistory = false;\n    if (this.state.displaySettingsOpen) {\n      $(\".readerOptionsPanel\").find('.on:focusable').first().focus();\n    }\n  }\n  conditionalSetState(state) {\n    // Set state either in the central app or in the local component.\n    // If setCentralState function is present, then this ReaderPanel's state is managed from within the ReaderApp component.\n    // If it is not present, then the state for this ReaderPanel is managed from the component itself.\n    if (this.props.setCentralState) {\n      this.props.setCentralState(state, this.replaceHistory);\n      this.replaceHistory = false;\n    } else {\n      this.setState(state);\n    }\n  }\n  onError(message) {\n    if (this.props.onError) {\n      this.props.onError(message);\n      return;\n    }\n    this.setState({\"error\": message})\n  }\n  getContentLanguageOverride(originalLanguage, mode, menuOpen) {\n    // Determines the actual content language used inside this ReaderPanel.\n    // Because it's called in the constructor, assume state isnt necessarily defined and pass\n    // variables mode and menuOpen manually\n    let contentLangOverride = originalLanguage;\n    if ([\"topics\", \"allTopics\", \"calendars\", \"community\", \"collection\" ].includes(menuOpen)) {   //  \"story_editor\",\n      // Always bilingual for English interface, always Hebrew for Hebrew interface\n      contentLangOverride = (Sefaria.interfaceLang === \"english\") ? \"bilingual\" : \"hebrew\";\n\n    } else if (mode === \"Connections\" || !!menuOpen){\n      // Always Hebrew for Hebrew interface, treat bilingual as English for English interface\n      contentLangOverride = (Sefaria.interfaceLang === \"hebrew\") ? \"hebrew\" : ((originalLanguage === \"bilingual\") ? \"english\" : originalLanguage);\n\n    }\n    return contentLangOverride;\n  }\n  clonePanel(panel) {\n    // Todo: Move the multiple instances of this out to a utils file\n    return Sefaria.util.clone(panel);\n  }\n  handleBaseSegmentClick(ref, showHighlight = true) {\n    if (this.state.mode === \"TextAndConnections\") {\n      this.closeConnectionsInPanel();\n    } else if (this.state.mode === \"Text\") {\n      Sefaria.track.event(\"Reader\", \"Open Connections Panel\", ref);\n      if (this.props.multiPanel) {\n        this.conditionalSetState({showHighlight: showHighlight});\n        this.props.onSegmentClick(ref);\n      } else {\n        this.openConnectionsInPanel(ref);\n      }\n    }\n  }\n  handleSheetSegmentClick(source) {\n    if(source === 0){\n      //the click may be coming from the sheet reader controls, and so we need to find\n      // the first node or the node thats in the url\n      const sheet = Sefaria.sheets.loadSheetByID(this.state.sheetID); // Should already be loaded and in cache\n      source = this.state.highlightedNode ? sheet.sources.find(source => source.node === this.state.highlightedNode) : sheet.sources[0];\n    }\n    this.conditionalSetState({highlightedNode: source.node});\n    const sheetRef = \"Sheet \" + this.state.sheetID + \":\" + source.node;\n    if (this.state.mode ===\"SheetAndConnections\") {\n      this.closeSheetConnectionsInPanel();\n    }\n    else if (this.state.mode === \"Sheet\") {\n      if (this.props.multiPanel) {\n        if (source.ref) {\n          this.props.onSegmentClick(Sefaria.splitRangingRef(source.ref), source.node);\n        } else {\n          this.props.onSegmentClick(sheetRef, source.node)\n        }\n      } else {\n        this.openSheetConnectionsInPanel(source.ref || sheetRef, source.node);\n      }\n    }\n  }\n  handleCitationClick(citationRef, textRef, replace, currVersions) {\n    if (this.props.multiPanel) {\n      this.props.onCitationClick(citationRef, textRef, replace, currVersions);\n    } else {\n      this.showBaseText(citationRef, replace, currVersions);\n    }\n  }\n  handleTextListClick(ref, replaceHistory, currVersions) {\n    this.showBaseText(ref, replaceHistory, currVersions);\n  }\n  updateCurrVersionsToMatchAPIResult(enVTitle, heVTitle) {\n    const newVersions = {\n        ...this.state.currVersions,\n        enAPIResult: enVTitle,\n        heAPIResult: heVTitle,\n    };\n    if (Sefaria.util.object_equals(this.state.currVersions, newVersions)) { return; }\n    this.conditionalSetState({ currVersions: newVersions });\n  }\n  openConnectionsPanel(ref, additionalState) {\n    /**\n     * Decides whether to open a new connections panel or to open connections in the current panel\n     * depending on whether we're in multi-panel mode\n     */\n    if (this.props.multiPanel) {\n      this.props.openConnectionsPanel(ref, null, additionalState);\n    } else {\n      this.openConnectionsInPanel(ref, additionalState);\n    }\n  }\n  openConnectionsInPanel(ref, additionalState) {\n    let refs = typeof ref == \"string\" ? [ref] : ref;\n    this.replaceHistory = this.state.mode === \"TextAndConnections\"; // Don't push history for change in Connections focus\n    let newState = {highlightedRefs: refs, mode: \"TextAndConnections\" };\n    if (additionalState) {\n      newState = {...newState, ...additionalState};\n    }\n    this.conditionalSetState(newState, this.replaceHistory);\n  }\n  onNamedEntityClick(slug, textRef, namedEntityText) {\n    // make sure text list is highlighted for segment with named entity\n    this.setTextListHighlight(textRef, true);\n\n    // decide whether to open side panel in current panel or in new panel based on whether app is multipanel\n    const namedEntityState = { connectionsMode: \"Lexicon\", selectedNamedEntity: slug, selectedNamedEntityText: namedEntityText };\n    if (this.props.multiPanel) {\n      this.props.openNamedEntityInNewPanel(textRef, namedEntityState);\n    } else {\n      this.openConnectionsInPanel([textRef], namedEntityState);\n    }\n  }\n  closeConnectionsInPanel() {\n    // Return to the original text in the ReaderPanel contents\n    this.conditionalSetState({highlightedRefs: [], mode: \"Text\"});\n  }\n  openSheetConnectionsInPanel(ref, node) {\n    let refs = typeof ref == \"string\" ? [ref] : ref;\n    this.replaceHistory = this.state.mode === \"SheetAndConnections\"; // Don't push history for change in Connections focus\n    this.conditionalSetState({highlightedNode: node, highlightedRefs: refs, mode: \"SheetAndConnections\" }, this.replaceHistory);\n  }\n  closeSheetConnectionsInPanel() {\n    // Return to the original text in the ReaderPanel contents\n    this.conditionalSetState({highlightedNode: null, highlightedRefs: [], mode: \"Sheet\"});\n  }\n  handleSheetClick(e, sheet, highlightedNode, highlightedRefsInSheet) {\n    e.preventDefault();\n    this.conditionalSetState({\n      mode: \"Sheet\",\n      sheetID: sheet.id,\n      highlightedNode,\n      highlightedRefsInSheet\n    });\n  }\n  showBaseText(ref, replaceHistory, currVersions={en: null, he: null}, filter=[]) {\n    // Set the current primary text `ref`, which may be either a string or an array of strings.\n    // `replaceHistory` - bool whether to replace browser history rather than push for this change\n    if (!ref) { return; }\n    this.replaceHistory = Boolean(replaceHistory);\n    // console.log(\"showBaseText\", ref, replaceHistory);\n    if (this.state.mode === \"Connections\" && this.props.masterPanelLanguage === \"bilingual\") {\n      // Connections panels are forced to be mono-lingual. When opening a text from a connections panel,\n      // allow it to return to bilingual.\n      this.state.settings.language = \"bilingual\";\n    }\n    let refs, currentlyVisibleRef, highlightedRefs;\n    if (ref.constructor === Array) {\n      // When called with an array, set highlight for the whole spanning range\n      refs = ref;\n      currentlyVisibleRef = Sefaria.humanRef(ref);\n      let splitArray = refs.map(ref => Sefaria.splitRangingRef(ref));\n      highlightedRefs = [].concat.apply([], splitArray);\n    } else {\n      const oRef = Sefaria.parseRef(ref);\n      if (oRef.book === \"Sheet\") {\n        this.openSheet(ref);\n        return;\n      }\n      refs = [ref];\n      currentlyVisibleRef = ref;\n      highlightedRefs = [];\n    }\n\n    if (this.replaceHistory) {\n      this.props.saveLastPlace({ mode: \"Text\", refs, currVersions, settings: this.state.settings }, this.props.panelPosition);\n    }\n    this.conditionalSetState({\n      mode: \"Text\",\n      refs,\n      filter,\n      currentlyVisibleRef,\n      currVersions,\n      highlightedRefs,\n      recentFilters: [],\n      menuOpen: null,\n      compare: false,\n      sheetID: null,\n      connectionsMode: \"Resources\",\n      settings: this.state.settings\n    });\n  }\n  openSheet(sheetRef, replaceHistory) {\n    this.replaceHistory = Boolean(replaceHistory);\n    const parsedRef = Sefaria.parseRef(sheetRef);\n    let [sheetID, sheetNode] = parsedRef.sections;\n    sheetID = parseInt(sheetID);\n    sheetNode = sheetNode ? parseInt(sheetNode) : null;\n    if (this.replaceHistory) {\n      // Replacing sheet history occurs after sheet data has been loaded,\n      // when we have all the data we need to store history.\n      this.props.saveLastPlace({ mode: \"Sheet\", sheetID, settings: this.state.settings}, this.props.panelPosition);\n    }\n    this.conditionalSetState({\n      mode: 'Sheet',\n      sheetID,\n      highlightedNode: sheetNode,\n      menuOpen: null\n    });\n  }\n  updateTextColumn(refs) {\n    // Change the refs in the current TextColumn, for infinite scroll up/down.\n    this.replaceHistory = true;\n    this.conditionalSetState({ refs: refs });\n  }\n  setTextListHighlight(refs, showHighlight) {\n    refs = typeof refs === \"string\" ? [refs] : refs;\n    this.replaceHistory = true;\n    if (!Sefaria.util.object_equals(refs, this.state.highlightedRefs)) {\n      this.props.closeNamedEntityInConnectionPanel();\n    }\n    this.conditionalSetState({highlightedRefs: refs, showHighlight: showHighlight});\n    this.props.setTextListHighlight(refs);\n  }\n  setFocusedText(refs) {\n    refs = typeof refs === \"string\" ? [refs] : refs;\n    this.replaceHistory = true;\n    this.conditionalSetState({highlightedRefs: refs});\n    if (this.props.multiPanel) {\n      this.props.setTextListHighlight(refs);\n    }\n  }\n  updateCollectionName(name) {\n    // Replace history with collection name, which may be loaded from API with slug\n    // after the CollectionPage has initiall rendered.\n    this.replaceHistory = true;\n    this.conditionalSetState({ collectionName: name });\n  }\n  setSelectedWords(words){\n    words = (typeof words !== \"undefined\" && words.length) ?  words : \"\";\n    words = words.trim();\n    this.replaceHistory = false;\n    if (this.props.multiPanel) {\n      this.props.setSelectedWords(words);\n    } else {\n      this.conditionalSetState({'selectedWords':  words});\n    }\n  }\n  clearSelectedWords() {\n    this.replaceHistory = false;\n    if (this.props.multiPanel) {\n      this.props.clearSelectedWords();\n    } else {\n      this.conditionalSetState({'selectedWords':  ''});\n    }\n  }\n  closeMenus() {\n    let state = {\n      // If there's no content to show, return to navigation\n      menuOpen: this.state.refs.slice(-1)[0] ? null: \"navigation\",\n      navigationCategories: null,\n      navigationTopicCategory: null,\n    };\n    this.conditionalSetState(state);\n  }\n  closeSheetMetaData() {\n    let state = {\n      menuOpen: null,\n      mode: \"Sheet\",\n      navigationCategories: null,\n      navigationTopicCategory: null,\n    };\n    this.conditionalSetState(state);\n\n  }\n  openMenu(menu) {\n    this.conditionalSetState({\n      menuOpen: menu,\n      mode: \"Text\",\n      initialAnalyticsTracked: false,\n      navigationCategories: null,\n      navigationTopic: null,\n      navigationTopicTitle: null,\n      topicTitle: null,\n    });\n  }\n  setNavigationCategories(categories) {\n    this.conditionalSetState({navigationCategories: categories});\n  }\n  setNavigationTopic(topic, topicTitle) {\n    this.conditionalSetState({\n      menuOpen: 'topics',\n      navigationTopicCategory: topic,\n      navigationTopicTitle: topicTitle,\n      navigationTopic: null,\n      topicTitle: null,\n      navigationCategories: null,\n    });\n  }\n  setCollectionTag (tag) {\n    this.conditionalSetState({collectionTag: tag});\n  }\n  setFilter(filter, updateRecent) {\n    // Sets the current filter for Connected Texts (TextList)\n    // If updateRecent is true, include the current setting in the list of recent filters.\n    if (this.props.setConnectionsFilter) {\n      this.props.setConnectionsFilter(filter, updateRecent);\n    } else {\n      if (updateRecent && filter) {\n        if (Sefaria.util.inArray(filter, this.state.recentFilters) !== -1) {\n          this.state.recentFilters.toggle(filter);\n        }\n        this.state.recentFilters = [filter].concat(this.state.recentFilters);\n      }\n      filter = filter ? [filter] : [];\n      this.conditionalSetState({recentFilters: this.state.recentFilters, filter: filter, connectionsMode: \"TextList\"});\n    }\n\n  }\n  setVersionFilter(filter) {\n    if (this.props.setVersionFilter) {\n      this.props.setVersionFilter(filter);\n    } else {\n      const filtInd = Sefaria.util.inArray(filter, this.state.recentVersionFilters);\n      if (filtInd === -1) {\n        this.state.recentVersionFilters = [filter].concat(this.state.recentVersionFilters);\n      }\n      filter = filter ? [filter] : [];\n      this.conditionalSetState({recentVersionFilters: this.state.recentVersionFilters, versionFilter: filter, connectionsMode: \"Translation Open\"});\n    }\n  }\n  setWebPagesFilter(filter) {\n    this.conditionalSetState({webPagesFilter: filter, connectionsMode: \"WebPagesList\"});\n  }\n  setTopic(navigationTopic, topicTitle) {\n    this.conditionalSetState({\n      menuOpen: \"topics\",\n      navigationTopicCategory: null,\n      topicTestVersion: this.props.topicTestVersion,\n      navigationTopic,\n      topicTitle\n    });\n  }\n  openCompareTextTOC(title) {\n    // Opens the Text TOC in a compare panel\n    console.log(\"openCompareTextTOC\")\n    this.conditionalSetState({\n      menuOpen: \"book toc\",\n      compare: true,\n      bookRef: title,\n      previousCategories: this.state.navigationCategories,\n    });\n  }\n  toggleLanguage() {\n    if (this.state.settings.language === \"hebrew\") {\n      this.setOption(\"language\", \"english\");\n      if (Sefaria.site) { Sefaria.track.event(\"Reader\", \"Change Language\", \"english\");}\n    } else {\n      this.setOption(\"language\", \"hebrew\");\n      if (Sefaria.site) { Sefaria.track.event(\"Reader\", \"Change Language\", \"hebrew\");}\n    }\n  }\n  openSearch(query) {\n    this.conditionalSetState({\n      menuOpen: \"search\",\n      searchQuery: query\n    });\n  }\n  openDisplaySettings() {\n    this.conditionalSetState({displaySettingsOpen: true});\n  }\n  closeDisplaySettings() {\n    this.conditionalSetState({displaySettingsOpen: false});\n  }\n  setOption(option, value) {\n    if (option === \"fontSize\") {\n      const step = 1.15;\n      const size = this.state.settings.fontSize;\n      value = (value === \"smaller\" ? size/step : size*step);\n    } else if (option === \"layout\") {\n      const category = this.currentCategory();\n      option = category === \"Tanakh\" || category === \"Talmud\" ? \"layout\" + category : \"layoutDefault\";\n    }\n\n    this.state.settings[option] = value;\n    let state = {settings: this.state.settings};\n    if (option !== \"fontSize\") { state.displaySettingsOpen = false; }\n    if (option === \"language\") {\n      $.cookie(\"contentLang\", value, {path: \"/\"});\n      this.replaceHistory = true;\n      this.props.setDefaultOption && this.props.setDefaultOption(option, value);\n    }\n    $.cookie(option, value, {path: \"/\"});\n    this.conditionalSetState(state);\n  }\n  setConnectionsMode(mode, connectionData = null) {\n    let loginRequired = {\n      \"Add Connection\": 1,\n    };\n    if (mode == \"Add Connection\" && this.props.allOpenRefs.length == 1) {\n      this.props.openComparePanel(true);\n      return;\n    }\n    Sefaria.track.event(\"Tools\", mode + \" Click\"); // TODO Shouldn't be tracking clicks here, this function is called programmatically\n    if (!Sefaria._uid && mode in loginRequired) {\n      Sefaria.track.event(\"Tools\", \"Prompt Login\");\n      mode = \"Login\";\n    }\n    let state = {connectionsMode: mode};\n    if (mode === \"Resources\") {\n      this.setFilter();\n    }\n    state[\"connectionData\"] = !!connectionData ? connectionData : null;\n    this.conditionalSetState(state);\n  }\n  setConnectionsCategory(category) {\n    this.setFilter(category, false); // Set filter so that basetext shows link dots according to this category\n    this.conditionalSetState({connectionsCategory: category, connectionsMode: \"ConnectionsList\"});\n  }\n  editNote(note) {\n    this.conditionalSetState({\n      connectionsMode: \"Edit Note\",\n      noteBeingEdited: note\n    });\n  }\n  setWidth() {\n    this.setState({width: $(ReactDOM.findDOMNode(this)).width()});\n    //console.log(\"Setting panel width\", this.width);\n  }\n  setCurrentlyVisibleRef(ref) {\n    this.replaceHistory = true;\n    //var ref = this.state.highlightedRefs.length ? Sefaria.normRef(this.state.highlightedRefs) : ref;\n    this.conditionalSetState({\n      currentlyVisibleRef: ref,\n    });\n  }\n  setTab(tab, replaceHistoryIfReaderAppUpdated=false) {\n    // There is a race condition such that when navigating to a new page that has a TabView component, sometimes TabView\n    // mounts before ReaderApp's componentDidUpdate gets called, which results in setTab calling conditionalSetState\n    // before the previous page's history state has been pushed to the history object. If this happens, we want\n    // this.replaceHistory to be false so that we don't override the previous page's history.\n    // If history.state.panels[0].mode is undefined, we know that conditionalSetState has been called already, and we\n    // can replace the history state. Otherwise, we want to push the history state, so we set replaceHistory to false.\n    this.replaceHistory = replaceHistoryIfReaderAppUpdated ?\n        history.state ? !history.state.panels[0].mode : true // on page load history state may not yet exist -- in that case force update\n        : false\n    this.conditionalSetState({tab: tab})\n  }\n  onSetTopicSort(topicSort) {\n    this.conditionalSetState({topicSort});\n  }\n  currentMode() {\n    return this.state.mode;\n  }\n  currentRef() {\n    // Returns a string of the current ref, the first if there are many\n    return this.state.refs && this.state.refs.length ? this.state.refs[0]\n            : this.state.highlightedRefs && this.state.highlightedRefs ? this.state.highlightedRefs[0]\n              : null;\n  }\n  currentData() {\n    // Returns the data from the library of the current ref\n    const ref  = this.currentRef();\n    if (!ref) { return null; }\n    if (typeof ref !== \"string\") { debugger; }\n    let data = Sefaria.ref(ref);\n    return data;\n  }\n  currentBook() {\n    let data = this.currentData();\n    if (data) {\n      return data.indexTitle;\n    } else {\n      let pRef = Sefaria.parseRef(this.currentRef());\n      return \"index\" in pRef ? pRef.index : (\"book\" in pRef ? pRef.book : null);\n    }\n  }\n  currentCategory() {\n    if (this.state.mode == \"Sheet\") {\n      return \"Sheets\"\n    }\n    else {\n      const book = this.currentBook();\n      return (Sefaria.index(book) ? Sefaria.index(book)['primary_category'] : null);\n    }\n  }\n  currentLayout() {\n    if (this.state.settings.language == \"bilingual\") {\n      return this.state.width > 500 ? this.state.settings.biLayout : \"stacked\";\n    }\n    // dont allow continuous mode in sidebar since it's currently not possible to control layout from sidebar\n    if (this.state.mode === \"Connections\") {return \"segmented\"}\n    const category = this.currentCategory();\n    const option = (category && (category === \"Tanakh\" || category === \"Talmud\")) ? \"layout\" + category : \"layoutDefault\";\n    return this.state.settings[option];\n  }\n  handleKeyPress(e) {\n    if (e.keyCode === 27) {\n      this.props.closePanel(e);\n    }\n  }\n  backFromExtendedNotes(){\n    let bookRef = this.state.bookRef ? this.state.bookRef : this.currentBook();\n    this.props.backFromExtendedNotes(bookRef, this.state.currVersions);\n  }\n  whereIsElementInViewport(element) {\n    const elementbbox = element.getBoundingClientRect();\n    const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)\n    if (elementbbox.top >= 200 && elementbbox.bottom < vh) {\n        return \"in viewport\"\n    }\n    if (elementbbox.bottom >= vh/2 && element) {\n        return \"past half\"\n    }\n  };\n  getHighlightedByScrollPos() {\n    let segmentToHighlight = null\n\n    const segments = this.readerContentRef.current.querySelectorAll(\".sheetItem\");\n\n    for (let segment of segments) {\n        const elementLoc = this.whereIsElementInViewport(segment);\n        if (elementLoc === \"in viewport\" || elementLoc === \"past half\") {\n            segmentToHighlight = segment;\n            break;\n        }\n    }\n\n    return segmentToHighlight\n  };\n  openSidePanel() {\n    const highlighted = this.getHighlightedByScrollPos();\n    highlighted.click();\n  }\n  render() {\n    if (this.state.error) {\n      return (\n        <div\n        ref={this.readerContentRef}\n        className=\"readerContent\">\n          <div className=\"readerError\">\n            <span className=\"int-en\">Something went wrong! Please use the back button or the menus above to get back on track.</span>\n            <span className=\"int-he\">ארעה תקלה במערכת. אנא חזרו לתפריט הראשי או אחורנית על ידי שימוש בכפתורי התפריט או החזור.</span>\n            <div className=\"readerErrorText\">\n              <span className=\"int-en\">Error Message: </span>\n              <span className=\"int-he\">שגיאה: </span>\n              {this.state.error}\n            </div>\n          </div>\n        </div>\n      );\n    }\n\n    let items = [];\n    let menu = null;\n    const contextContentLang = {\"language\": this.getContentLanguageOverride(this.state.settings.language, this.state.mode, this.state.menuOpen)};\n\n    if (this.state.mode === \"Text\" || this.state.mode === \"TextAndConnections\") {\n      const oref  = Sefaria.parseRef(this.state.refs[0]);\n      const showHighlight = this.state.showHighlight || (this.state.highlightedRefs.length > 1);\n      const index = oref && oref.index ? Sefaria.index(oref.index) : null;\n      const [textColumnBookTitle, heTextColumnBookTitle] = index ? [index.title, index.heTitle] : [null, null];\n      items.push(\n        <TextColumn\n          panelPosition ={this.props.panelPosition}\n          srefs={this.state.refs.slice()}\n          currVersions={this.state.currVersions}\n          highlightedRefs={this.state.highlightedRefs}\n          currentlyVisibleRef={this.state.currentlyVisibleRef}\n          showHighlight={showHighlight}\n          basetext={true}\n          bookTitle={textColumnBookTitle}\n          heBookTitle={heTextColumnBookTitle}\n          withContext={true}\n          loadLinks={true}\n          prefetchNextPrev={true}\n          multiPanel={this.props.multiPanel}\n          mode={this.state.mode}\n          settings={Sefaria.util.clone(this.state.settings)}\n          hasSidebar={this.props.hasSidebar}\n          interfaceLang={this.props.interfaceLang}\n          setOption={this.setOption}\n          showBaseText={this.showBaseText}\n          updateTextColumn={this.updateTextColumn}\n          onSegmentClick={this.handleBaseSegmentClick}\n          onCitationClick={this.handleCitationClick}\n          onNamedEntityClick={this.onNamedEntityClick}\n          setTextListHighlight={this.setTextListHighlight}\n          setCurrentlyVisibleRef={this.setCurrentlyVisibleRef}\n          setSelectedWords={this.setSelectedWords}\n          selectedWords={this.state.selectedWords}\n          panelsOpen={this.props.panelsOpen}\n          layoutWidth={this.props.layoutWidth}\n          filter={this.state.filter}\n          textHighlights={this.state.textHighlights}\n          unsetTextHighlight={this.props.unsetTextHighlight}\n          translationLanguagePreference={this.props.translationLanguagePreference}\n          updateCurrVersionsToMatchAPIResult={this.updateCurrVersionsToMatchAPIResult}\n          navigatePanel={this.props.navigatePanel}\n          key={`${textColumnBookTitle ? textColumnBookTitle : \"empty\"}-TextColumn`} />\n      );\n    }\n    if (this.state.mode === \"Sheet\" || this.state.mode === \"SheetAndConnections\" ) {\n      items.push(\n        <Sheet\n          nodeRef={this.sheetRef}\n          adjustHighlightedAndVisible={this.adjustSheetHighlightedAndVisible}\n          panelPosition ={this.props.panelPosition}\n          id={this.state.sheetID}\n          key={\"sheet-\"+this.state.sheetID}\n          multiPanel={this.props.multiPanel}\n          highlightedNode={this.state.highlightedNode}\n          highlightedRefsInSheet={this.state.highlightedRefsInSheet}\n          scrollToHighlighted={this.state.scrollToHighlighted}\n          onRefClick={this.handleCitationClick}\n          onSegmentClick={this.handleSheetSegmentClick}\n          onCitationClick={this.handleCitationClick}\n          openSheet={this.openSheet}\n          hasSidebar={this.props.hasSidebar}\n          setSelectedWords={this.setSelectedWords}\n          contentLang={this.state.settings.language}\n          setDivineNameReplacement={this.props.setDivineNameReplacement}\n          divineNameReplacement={this.props.divineNameReplacement}\n        />\n      );\n    }\n\n    if (this.state.mode === \"Connections\" || this.state.mode === \"TextAndConnections\" || this.state.mode === \"SheetAndConnections\") {\n      const langMode = this.props.masterPanelLanguage || this.state.settings.language;\n      let data     = this.currentData();\n      const canEditText = data &&\n                        ((langMode === \"hebrew\" && data.heVersionStatus !== \"locked\") ||\n                        (langMode === \"english\" && data.versionStatus !== \"locked\") ||\n                        (Sefaria.is_moderator && langMode !== \"bilingual\"));\n      items.push(\n        <ConnectionsPanel\n          panelPosition ={this.props.panelPosition}\n          selectVersion={this.props.selectVersion}\n          srefs={this.state.mode === \"Connections\" ? this.state.refs.slice() : this.state.highlightedRefs.slice()}\n          filter={this.state.filter || []}\n          mode={this.state.connectionsMode || \"Resources\"}\n          recentFilters={this.state.recentFilters}\n          connectionsCategory={this.state.connectionsCategory}\n          connectionData={this.state.connectionData}\n          interfaceLang={this.props.interfaceLang}\n          contentLang={this.state.settings.language}\n          title={this.currentBook()}\n          currentlyVisibleRef={this.state.currentlyVisibleRef}\n          currVersions={this.state.currVersions}\n          fullPanel={this.props.multiPanel}\n          multiPanel={this.props.multiPanel}\n          allOpenRefs={this.props.allOpenRefs}\n          canEditText={canEditText}\n          setFilter={this.setFilter}\n          scrollPosition={this.state.sideScrollPosition || 0}\n          setSideScrollPosition={this.props.setSideScrollPosition}\n          toggleSignUpModal={this.props.toggleSignUpModal}\n          setConnectionsMode={this.setConnectionsMode}\n          setConnectionsCategory={this.setConnectionsCategory}\n          webPagesFilter={this.state.webPagesFilter}\n          setWebPagesFilter={this.setWebPagesFilter}\n          nodeRef={this.state.nodeRef}\n          closeConectionsInPanel={this.closeConnectionsInPanel}\n          handleSheetClick={this.handleSheetClick}\n          openNav={this.openMenu.bind(null, \"navigation\")}\n          openDisplaySettings={this.openDisplaySettings}\n          editNote={this.editNote}\n          noteBeingEdited={this.state.noteBeingEdited}\n          onTextClick={this.handleTextListClick}\n          onCitationClick={this.handleCitationClick}\n          openComparePanel={this.props.openComparePanel}\n          closePanel={this.props.closePanel}\n          selectedWords={this.state.selectedWords}\n          sidebarSearchQuery={this.state.sidebarSearchQuery}\n          onSidebarSearchClick={this.props.onSidebarSearchClick}\n          selectedNamedEntity={this.state.selectedNamedEntity}\n          selectedNamedEntityText={this.state.selectedNamedEntityText}\n          clearSelectedWords={this.clearSelectedWords}\n          clearNamedEntity={this.props.clearNamedEntity}\n          setSidebarSearchQuery={this.props.setSidebarSearchQuery}\n          masterPanelLanguage={this.props.masterPanelLanguage}\n          masterPanelMode={this.props.initialState.mode === \"SheetAndConnections\" && this.props.multiPanel === false ? \"Sheet\" : this.props.masterPanelMode}\n          masterPanelSheetId={this.props.initialState.mode === \"SheetAndConnections\" && this.props.multiPanel === false ? this.props.initialState.sheetID : this.props.masterPanelSheetId}\n          versionFilter={this.state.versionFilter}\n          recentVersionFilters={this.state.recentVersionFilters}\n          setVersionFilter={this.setVersionFilter}\n          viewExtendedNotes={this.props.viewExtendedNotes.bind(null, \"Connections\")}\n          checkIntentTimer={this.props.checkIntentTimer}\n          navigatePanel={this.props.navigatePanel}\n          translationLanguagePreference={this.props.translationLanguagePreference}\n          setDivineNameReplacement={this.props.setDivineNameReplacement}\n          divineNameReplacement={this.props.divineNameReplacement}\n          key=\"connections\" />\n      );\n    }\n\n    if (this.state.menuOpen === \"navigation\") {\n\n      const openNav     = this.state.compare ? this.props.openComparePanel : this.openMenu.bind(null, \"navigation\");\n      const openTextTOC = this.state.compare ? this.openCompareTextTOC : null;\n\n      menu = (<TextsPage\n                    key={this.state.navigationCategories ? this.state.navigationCategories.join(\"-\") : this.state.navigationTopicCategory ? this.state.navigationTopicCategory: \"navHome\"}\n                    compare={this.state.compare}\n                    multiPanel={this.props.multiPanel}\n                    categories={this.state.navigationCategories || []}\n                    settings={this.state.settings}\n                    setCategories={this.setNavigationCategories}\n                    openTextTOC={openTextTOC}\n                    setOption={this.setOption}\n                    toggleLanguage={this.toggleLanguage}\n                    onCompareBack={this.props.closePanel}\n                    openSearch={this.openSearch}\n                    openDisplaySettings={this.openDisplaySettings}\n                    initialWidth={this.state.width}\n                    toggleSignUpModal={this.props.toggleSignUpModal} />);\n\n    } else if (this.state.menuOpen === \"sheet meta\") {\n      menu = (<SheetMetadata\n                    mode={this.state.menuOpen}\n                    toggleSignUpModal={this.props.toggleSignUpModal}\n                    interfaceLang={this.props.interfaceLang}\n                    close={this.closeSheetMetaData}\n                    id={this.state.sheetID}\n                    versionLanguage={this.state.versionLanguage}\n                    settingsLanguage={this.state.settings.language == \"hebrew\"?\"he\":\"en\"}\n                    narrowPanel={!this.props.multiPanel}\n                    currentRef={this.state.currentlyVisibleRef}\n                    openNav={this.openMenu.bind(null, \"navigation\")}\n                    openDisplaySettings={this.openDisplaySettings}\n                    selectVersion={this.props.selectVersion}\n                    showBaseText={this.showBaseText} />);\n\n    } else if (this.state.menuOpen === \"text toc\") {\n      menu = (<BookPage\n                    tab={this.state.tab}\n                    setTab={this.setTab}\n                    mode={this.state.menuOpen}\n                    multiPanel={this.props.multiPanel}\n                    close={this.closeMenus}\n                    title={this.currentBook()}\n                    currVersions={this.state.currVersions}\n                    settingsLanguage={this.state.settings.language == \"hebrew\"?\"he\":\"en\"}\n                    category={this.currentCategory()}\n                    narrowPanel={!this.props.multiPanel}\n                    currentRef={this.state.currentlyVisibleRef}\n                    openNav={this.openMenu.bind(null, \"navigation\")}\n                    openDisplaySettings={this.openDisplaySettings}\n                    selectVersion={this.props.selectVersion}\n                    viewExtendedNotes={this.props.viewExtendedNotes.bind(null, \"toc\")}\n                    showBaseText={this.showBaseText}/>);\n\n    } else if (this.state.menuOpen === \"book toc\") {\n      const onCompareBack = () => {\n        this.conditionalSetState({\n          menuOpen: \"navigation\",\n          navigationCategories: this.state.previousCategories,\n        });\n      };\n      menu = (<BookPage\n                    tab={this.state.tab}\n                    setTab={this.setTab}\n                    mode={this.state.menuOpen}\n                    multiPanel={this.props.multiPanel}\n                    close={this.closeMenus}\n                    title={this.state.bookRef}\n                    currVersions={this.state.currVersions}\n                    settingsLanguage={this.state.settings.language == \"hebrew\"?\"he\":\"en\"}\n                    toggleLanguage={this.toggleLanguage}\n                    category={Sefaria.index(this.state.bookRef).primary_category}\n                    currentRef={this.state.bookRef}\n                    compare={this.state.compare}\n                    onCompareBack={onCompareBack}\n                    narrowPanel={!this.props.multiPanel}\n                    key={this.state.bookRef}\n                    openDisplaySettings={this.openDisplaySettings}\n                    selectVersion={this.props.selectVersion}\n                    showBaseText={this.showBaseText}\n                    viewExtendedNotes={this.props.viewExtendedNotes.bind(null, \"toc\")} />);\n\n    } else if (this.state.menuOpen === \"extended notes\" && this.state.mode !== \"Connections\") {\n      menu = (<BookPage\n                    tab={this.state.tab}\n                    setTab={this.setTab}\n                    mode={this.state.menuOpen}\n                    interfaceLang={this.props.interfaceLang}\n                    close={this.closeMenus}\n                    title={this.state.bookRef ? this.state.bookRef : this.currentBook()}\n                    currVersions={this.state.currVersions}\n                    settingsLanguage={this.state.settings.language == \"hebrew\"?\"he\":\"en\"}\n                    category={Sefaria.index(this.state.bookRef) ? Sefaria.index(this.state.bookRef).primary_category : this.currentCategory()}\n                    currentRef={this.state.bookRef ? this.state.bookRef : this.state.currentlyVisibleRef}\n                    narrowPanel={!this.props.multiPanel}\n                    openDisplaySettings={this.openDisplaySettings}\n                    selectVersion={this.props.selectVersion}\n                    showBaseText={this.showBaseText}\n                    backFromExtendedNotes={\n                      this.state.mode===\"Connections\" ? this.closeMenus : this.backFromExtendedNotes\n                    }/>);\n\n    } else if (this.state.menuOpen === \"search\" && this.state.searchQuery) {\n      menu = (<SearchPage\n                    key={\"searchPage\"}\n                    interfaceLang={this.props.interfaceLang}\n                    query={this.state.searchQuery}\n                    tab={this.state.searchTab}\n                    textSearchState={this.state.textSearchState}\n                    sheetSearchState={this.state.sheetSearchState}\n                    settings={Sefaria.util.clone(this.state.settings)}\n                    panelsOpen={this.props.panelsOpen}\n                    onResultClick={this.props.onSearchResultClick}\n                    openDisplaySettings={this.openDisplaySettings}\n                    toggleLanguage={this.toggleLanguage}\n                    close={this.props.closePanel}\n                    onQueryChange={this.props.onQueryChange}\n                    updateTab={this.props.updateSearchTab}\n                    updateAppliedFilter={this.props.updateSearchFilter}\n                    updateAppliedOptionField={this.props.updateSearchOptionField}\n                    updateAppliedOptionSort={this.props.updateSearchOptionSort}\n                    registerAvailableFilters={this.props.registerAvailableFilters}\n                    compare={this.state.compare}\n                  />);\n\n    } else if (this.state.menuOpen === \"topics\") {\n      if (this.state.navigationTopicCategory) {\n        menu = (\n          <TopicCategory\n            topic={this.state.navigationTopicCategory}\n            topicTitle={this.state.navigationTopicTitle}\n            setTopic={this.setTopic}\n            setNavTopic={this.setNavigationTopic}\n            interfaceLang={this.props.interfaceLang}\n            compare={this.state.compare}\n            initialWidth={this.state.width}\n            openDisplaySettings={this.openDisplaySettings}\n            openSearch={this.openSearch}\n          />\n        );\n      } else if (this.state.navigationTopic) {\n        menu = (\n          <TopicPage\n            tab={this.state.tab}\n            setTab={this.setTab}\n            onSetTopicSort={this.onSetTopicSort}\n            topicSort={this.state.topicSort}\n            topic={this.state.navigationTopic}\n            topicTitle={this.state.topicTitle}\n            interfaceLang={this.props.interfaceLang}\n            setTopic={this.setTopic}\n            setNavTopic={this.setNavigationTopic}\n            openTopics={this.openMenu.bind(null, \"topics\")}\n            showBaseText={this.props.onNavTextClick || this.showBaseText}\n            openNav={this.openMenu.bind(null, \"navigation\")}\n            openSearch={this.openSearch}\n            close={this.closeMenus}\n            multiPanel={this.props.multiPanel}\n            navHome={this.openMenu.bind(null, \"navigation\")}\n            openDisplaySettings={this.openDisplaySettings}\n            toggleSignUpModal={this.props.toggleSignUpModal}\n            translationLanguagePreference={this.props.translationLanguagePreference}\n            topicTestVersion={this.props.topicTestVersion}\n            key={\"TopicPage\"}\n          />\n        );\n      } else {\n        menu = (\n          <TopicsPage\n            key={\"TopicsPage\"}\n            setNavTopic={this.setNavigationTopic}\n            multiPanel={this.props.multiPanel}\n            initialWidth={this.state.width}\n          />\n        );\n      }\n\n    } else if (this.state.menuOpen === \"allTopics\") {\n      menu = (\n        <TopicPageAll\n          interfaceLang={this.props.interfaceLang}\n          topicLetter={this.state.navigationTopicLetter}\n          intiialWidth={this.state.width}\n          setTopic={this.setTopic}\n          openNav={this.openMenu.bind(null, \"navigation\")}\n          close={this.closeMenus}\n          multiPanel={this.props.multiPanel}\n          toggleLanguage={this.toggleLanguage}\n          navHome={this.openMenu.bind(null, \"navigation\")}\n          openDisplaySettings={this.openDisplaySettings}\n          key={\"TopicPageAll\"} />\n      );\n\n    } else if (this.state.menuOpen === \"notifications\") {\n      menu = (\n        <NotificationsPanel\n          setUnreadNotificationsCount={this.props.setUnreadNotificationsCount}\n          interfaceLang={this.props.interfaceLang} />\n      );\n\n    } else if (this.state.menuOpen === \"collection\") {\n      menu = (\n        <CollectionPage\n          name={this.state.collectionName}\n          setTab={this.setTab}\n          tab={this.state.tab}\n          slug={this.state.collectionSlug}\n          tag={this.state.collectionTag}\n          setCollectionTag={this.setCollectionTag}\n          width={this.state.width}\n          searchInCollection={this.props.searchInCollection}\n          toggleLanguage={this.toggleLanguage}\n          toggleSignUpModal={this.props.toggleSignUpModal}\n          updateCollectionName={this.updateCollectionName}\n          navHome={this.openMenu.bind(null, \"navigation\")}\n          multiPanel={this.props.multiPanel}\n          initialWidth={this.state.width}\n          interfaceLang={this.props.interfaceLang} />\n      );\n\n    } else if (this.state.menuOpen === \"collectionsPublic\") {\n      menu = (\n        <PublicCollectionsPage\n          multiPanel={this.props.multiPanel}\n          initialWidth={this.state.width} />\n      );\n\n    } else if (this.state.menuOpen === \"translationsPage\") {\n      menu = <TranslationsPage\n        translationsSlug={this.state.translationsSlug}\n      />\n    }\n    else if (this.state.menuOpen === \"community\") {\n      menu = (\n        <CommunityPage\n          multiPanel={this.props.multiPanel}\n          toggleSignUpModal={this.props.toggleSignUpModal}\n          initialWidth={this.state.width} />\n      );\n\n    } else if (this.state.menuOpen === \"updates\") {\n      menu = (\n        <UpdatesPanel\n          interfaceLang={this.props.interfaceLang}\n          multiPanel={this.props.multiPanel}\n          navHome={this.openMenu.bind(null, \"navigation\")} />\n      );\n\n    } else if (this.state.menuOpen === \"user_stats\") {\n      menu = (<UserStats />);\n\n    } else if (this.state.menuOpen === \"modtools\") {\n      menu = (\n        <ModeratorToolsPanel\n          interfaceLang={this.props.interfaceLang} />\n      );\n\n    } else if (this.state.menuOpen === \"saved\" || this.state.menuOpen === \"history\") {\n      menu = (\n        <UserHistoryPanel\n          multiPanel={this.props.multiPanel}\n          menuOpen={this.state.menuOpen}\n          openMenu={this.openMenu}\n          openNav={this.openMenu.bind(null, \"navigation\")}\n          openDisplaySettings={this.openDisplaySettings}\n          toggleLanguage={this.toggleLanguage}\n          compare={this.state.compare}\n          toggleSignUpModal={this.props.toggleSignUpModal} />\n      );\n\n    } else if (this.state.menuOpen === \"profile\") {\n      menu = (\n        <UserProfile\n          profile={this.state.profile}\n          tab={this.state.tab}\n          setTab={this.setTab}\n          toggleSignUpModal={this.props.toggleSignUpModal}\n          multiPanel={this.props.multiPanel}\n          navHome={this.openMenu.bind(null, \"navigation\")} />\n      );\n\n    } else if (this.state.menuOpen === \"calendars\") {\n      menu = (\n        <CalendarsPage\n          multiPanel={this.props.multiPanel}\n          initialWidth={this.state.width} />\n      );\n    }\n\n    let classes  = {readerPanel: 1, serif: 1, narrowColumn: this.state.width < 730};\n    classes[contextContentLang.language] = 1;\n    classes[this.currentLayout()]        = 1;\n    classes[this.state.settings.color]   = 1;\n    classes = classNames(classes);\n\n    const style = {\"fontSize\": this.state.settings.fontSize + \"%\"};\n\n    const sheet = Sefaria.sheets.loadSheetByID(this.state.sheetID);\n    const sheetTitle = !!sheet ? sheet.title.stripHtmlConvertLineBreaks() : null;\n\n    const hideReaderControls = (\n      this.state.mode === \"TextAndConnections\" ||\n      this.state.menuOpen ||\n      this.props.hideNavHeader\n    );\n    return (\n      <ContentLanguageContext.Provider value={contextContentLang}>\n        <div ref={this.readerContentRef} className={classes} onKeyDown={this.handleKeyPress} role=\"region\" id={\"panel-\"+this.props.panelPosition}>\n          {hideReaderControls ? null :\n          <ReaderControls\n            showBaseText={this.showBaseText}\n            hasSidebar={this.state.hasSidebar}\n            toggleSheetEditMode={this.toggleSheetEditMode}\n            currentRef={this.state.currentlyVisibleRef}\n            highlightedRefs={this.state.highlightedRefs}\n            sheetID={this.state.sheetID}\n            sheetTitle={sheetTitle}\n            currentMode={this.currentMode.bind(this)}\n            currentCategory={this.currentCategory}\n            currentBook={this.currentBook.bind(this)}\n            currVersions={this.state.currVersions}\n            multiPanel={this.props.multiPanel}\n            settings={this.state.settings}\n            setOption={this.setOption}\n            setConnectionsMode={this.setConnectionsMode}\n            setConnectionsCategory={this.setConnectionsCategory}\n            openMenu={this.openMenu}\n            closeMenus={this.closeMenus}\n            onTextTitleClick={this.handleBaseSegmentClick}\n            onSheetTitleClick={this.handleSheetSegmentClick}\n            openMobileNavMenu={this.props.openMobileNavMenu}\n            openDisplaySettings={this.openDisplaySettings}\n            currentLayout={this.currentLayout}\n            onError={this.onError}\n            openConnectionsPanel={this.openConnectionsPanel}\n            connectionsMode={this.state.filter.length && this.state.connectionsMode === \"Connections\" ? \"Connection Text\" : this.state.connectionsMode}\n            connectionsCategory={this.state.connectionsCategory}\n            closePanel={this.props.closePanel}\n            toggleLanguage={this.toggleLanguage}\n            interfaceLang={this.props.interfaceLang}\n            toggleSignUpModal={this.props.toggleSignUpModal}\n            historyObject={this.props.getHistoryObject(this.state, this.props.hasSidebar)}\n            connectionData={this.state.connectionData}\n            translationLanguagePreference={this.props.translationLanguagePreference}\n            setTranslationLanguagePreference={this.props.setTranslationLanguagePreference}\n          />}\n\n          {(items.length > 0 && !menu) ?\n          <div className=\"readerContent\" style={style}>\n            {items}\n          </div> : null}\n\n          {menu}\n\n          {this.state.displaySettingsOpen ?\n          <ReaderDisplayOptionsMenu\n            settings={this.state.settings}\n            multiPanel={this.props.multiPanel}\n            setOption={this.setOption}\n            parentPanel={this.props.initialState.mode}\n            currentLayout={this.currentLayout}\n            currentBook={this.currentBook}\n            currentData={this.currentData}\n            width={this.state.width}\n            menuOpen={this.state.menuOpen} /> : null}\n\n          {this.state.displaySettingsOpen ?\n          <div className=\"mask\" onClick={this.closeDisplaySettings}></div> : null}\n\n        </div>\n      </ContentLanguageContext.Provider>\n    );\n  }\n}\nReaderPanel.propTypes = {\n  initialState:                PropTypes.object,\n  interfaceLang:               PropTypes.string,\n  setCentralState:             PropTypes.func,\n  onSegmentClick:              PropTypes.func,\n  onCitationClick:             PropTypes.func,\n  openNamedEntityInNewPanel:   PropTypes.func,\n  onNavTextClick:              PropTypes.func,\n  onSearchResultClick:         PropTypes.func,\n  onUpdate:                    PropTypes.func,\n  onError:                     PropTypes.func,\n  closePanel:                  PropTypes.func,\n  closeMenus:                  PropTypes.func,\n  setConnectionsFilter:        PropTypes.func,\n  setSideScrollPosition:       PropTypes.func,\n  setDefaultOption:            PropTypes.func,\n  selectVersion:               PropTypes.func,\n  viewExtendedNotes:           PropTypes.func,\n  backFromExtendedNotes:       PropTypes.func,\n  unsetTextHighlight:          PropTypes.func,\n  onQueryChange:               PropTypes.func,\n  updateSearchTab:             PropTypes.func,\n  updateSearchFilter:          PropTypes.func,\n  updateSearchOptionField:     PropTypes.func,\n  updateSearchOptionSort:      PropTypes.func,\n  registerAvailableFilters:    PropTypes.func,\n  searchInCollection:          PropTypes.func,\n  openComparePanel:            PropTypes.func,\n  setUnreadNotificationsCount: PropTypes.func,\n  highlightedRefs:             PropTypes.array,\n  multiPanel:                  PropTypes.bool,\n  masterPanelLanguage:         PropTypes.string,\n  panelsOpen:                  PropTypes.number,\n  allOpenRefs:                 PropTypes.array,\n  hasSidebar:                  PropTypes.bool,\n  layoutWidth:                 PropTypes.number,\n  setTextListHighlight:        PropTypes.func,\n  setSelectedWords:            PropTypes.func,\n  analyticsInitialized:        PropTypes.bool,\n  setVersionFilter:            PropTypes.func,\n  saveLastPlace:               PropTypes.func,\n  setDivineNameReplacement:    PropTypes.func,\n  checkIntentTimer:            PropTypes.func,\n  toggleSignUpModal:           PropTypes.func.isRequired,\n  getHistoryRef:               PropTypes.func,\n  profile:                     PropTypes.object,\n  masterPanelMode:             PropTypes.string,\n  masterPanelSheetId:          PropTypes.number,\n  translationLanguagePreference: PropTypes.string,\n  setTranslationLanguagePreference: PropTypes.func.isRequired,\n  topicTestVersion:            PropTypes.string,\n};\n\n\nclass ReaderControls extends Component {\n  // The Header of a Reader panel when looking at a text\n  // contains controls for display, navigation etc.\n  constructor(props) {\n    super(props);\n    this.state = {\n      displayVersionTitle: {},  // lang codes as keys and version title to display in header as values. prefers shortVersionTitle when available but falls back on versionTitle\n    };\n  }\n  openTextConnectionsPanel(e) {\n    e.preventDefault();\n    if(!this.props.hasSidebar){ //Prevent click on title from opening connections panel if its already open\n      Sefaria.track.event(\"Reader\", \"Open Connections Panel from Header\", this.props.currentRef);\n      this.props.onTextTitleClick(this.props.currentRef, false);\n    }\n  }\n  openSheetConnectionsPanel(e) {\n    e.preventDefault();\n    this.props.onSheetTitleClick(0);\n  }\n  shouldShowVersion(props) {\n    props = props || this.props;\n    // maybe one day sheets will have versions (e.g Nachama) but for now, let's ignore that possibility\n    return !props.sheetID && (props.settings.language === \"english\" || props.settings.language === \"bilingual\");\n  }\n  setDisplayVersionTitle(version) {\n    const en = version.shortVersionTitle || version.versionTitle;\n    this.setState({\n      displayVersionTitle: {\n        en,\n        he: version.shortVersionTitleInHebrew || en,\n      }\n    });\n  }\n  loadTranslations() {\n    /**\n     * Preload translation versions to get shortVersionTitle to display\n     */\n    if (!this.shouldShowVersion()) { return; }\n    Sefaria.getTranslations(this.props.currentRef).then(versions => {\n      const enVTitle = this.props.currVersions.enAPIResult;\n      if (!enVTitle) {\n        // merged version from API\n        this.setDisplayVersionTitle({});\n        return;\n      }\n      for (let version of Object.values(versions).flat()) {\n        if (version.versionTitle === enVTitle) {\n          this.setDisplayVersionTitle(version);\n          break;\n        }\n      }\n    });\n  }\n  openTranslations() {\n    this.props.openConnectionsPanel([this.props.currentRef], {\"connectionsMode\": \"Translations\"});\n  }\n  componentDidMount() {\n    const title = this.props.currentRef;\n    if (title) {\n      // If we don't have this data yet, rerender when we do so we can set the Hebrew title\n      const versionPref = Sefaria.versionPreferences.getVersionPref(title);\n      const getTextPromise = Sefaria.getText(title, {context: 1, translationLanguagePreference: this.props.translationLanguagePreference, versionPref}).then(data => {\n        if (\"error\" in data) { this.props.onError(data.error); }\n        this.setState({runningQuery: null});   // Causes re-render\n      });\n      this.setState({runningQuery: Sefaria.makeCancelable(getTextPromise)});\n    }\n    this.loadTranslations();\n  }\n  componentDidUpdate(prevProps, prevState) {\n    if (\n      this.shouldShowVersion() !== this.shouldShowVersion(prevProps) ||\n      this.props.currVersions !== prevProps.currVersions\n    ) {\n      this.loadTranslations();\n    }\n  }\n  componentWillUnmount() {\n    if (this.state.runningQuery) {\n      this.state.runningQuery.cancel();\n    }\n  }\n  stopPropagation(e){\n    e.stopPropagation();\n  }\n  render() {\n    let title = this.props.currentRef || \"\";\n    let heTitle = \"\";\n    let sectionString = \"\";\n    let heSectionString = \"\";\n    let categoryAttribution = null;\n    const oref = Sefaria.getRefFromCache(this.props.currentRef);\n\n    if (this.props.sheetID) {\n      if (this.props.sheetTitle === null) {\n        title = heTitle = Sefaria._(\"Loading...\");\n      } else {\n        title = heTitle = this.props.sheetTitle;\n        if (title === \"\") {\n          title = heTitle = Sefaria._(\"Untitled\")\n        }\n      }\n\n    } else if (oref) {\n      sectionString = oref.ref.replace(oref.indexTitle, \"\");\n      heSectionString = oref.heRef.replace(oref.heIndexTitle, \"\");\n      title = oref.indexTitle;\n      heTitle = oref.heIndexTitle;\n      categoryAttribution = oref && Sefaria.categoryAttribution(oref.categories);\n    }\n\n    const mode              = this.props.currentMode();\n    const hideHeader        = !this.props.multiPanel && mode === \"Connections\";\n    const connectionsHeader = this.props.multiPanel && mode === \"Connections\";\n    let displayVersionTitle = this.props.settings.language === 'hebrew' ? this.state.displayVersionTitle.he : this.state.displayVersionTitle.en;\n    if (categoryAttribution && displayVersionTitle) { displayVersionTitle = `(${displayVersionTitle})`; }\n    const url = this.props.sheetID ? \"/sheets/\" + this.props.sheetID : oref ? \"/\" + Sefaria.normRef(oref.book) : Sefaria.normRef(this.props.currentRef);\n    const readerTextTocClasses = classNames({readerTextToc: 1, attributed: !!categoryAttribution || this.shouldShowVersion(), connected: this.props.hasSidebar});\n\n\n    let centerContent = connectionsHeader ?\n      <div className=\"readerTextToc\">\n        <ConnectionsPanelHeader\n          connectionsMode={this.props.connectionsMode}\n          previousCategory={this.props.connectionsCategory}\n          previousMode={this.props.connectionData?.previousMode}\n          multiPanel={this.props.multiPanel}\n          setConnectionsMode={this.props.setConnectionsMode}\n          setConnectionsCategory={this.props.setConnectionsCategory}\n          closePanel={this.props.closePanel}\n          toggleLanguage={this.props.toggleLanguage}\n          interfaceLang={this.props.interfaceLang}\n        />\n      </div>\n      :\n      <div className={readerTextTocClasses} onClick={this.props.sheetID ? this.openSheetConnectionsPanel : this.openTextConnectionsPanel}>\n        <div className={\"readerTextTocBox\" + (this.props.sheetID ? \" sheetBox\" : \"\")} role=\"heading\" aria-level=\"1\" aria-live=\"polite\">\n          <div>\n            <a href={url} aria-label={\"Show Connection Panel contents for \" + title} >\n              <div className=\"readerControlsTitle\">\n                { this.props.sheetID ?\n                <img src={\"/static/img/sheet.svg\"} className=\"sheetTocIcon\" alt=\"\" /> : null}\n                { this.props.sheetID ?\n                <h1 style={{direction: Sefaria.hebrew.isHebrew(title) ? \"rtl\" : \"ltr\"}}>\n                  {title}\n                </h1>\n                :\n                <h1>\n                  <ContentText text={{en: title, he: heTitle}} defaultToInterfaceOnBilingual={true} />\n                  <span className=\"sectionString\">\n                    <ContentText text={{en: sectionString, he: heSectionString }} defaultToInterfaceOnBilingual={true} />\n                  </span>\n                </h1>\n                }\n              </div>\n              <div className=\"readerTextVersion\">\n                {categoryAttribution ? <CategoryAttribution categories={oref.categories} linked={false} /> : null }\n                {\n                  this.shouldShowVersion() && displayVersionTitle ?\n                  <span className=\"readerTextVersion\">\n                    <span className=\"en\">{displayVersionTitle}</span>\n                  </span> : null\n                }\n              </div>\n            </a>\n          </div>\n        </div>\n      </div>;\n\n    let leftControls = hideHeader || connectionsHeader ? null :\n      (<div className=\"leftButtons\">\n          {this.props.multiPanel ? (<CloseButton onClick={this.props.closePanel} />) : null}\n          {this.props.multiPanel ? null : (<MenuButton onClick={this.props.openMobileNavMenu}/>)}\n          <SaveButton placeholder={true}/>\n        </div>);\n\n    let rightControls = hideHeader || connectionsHeader ? null :\n      (<div className=\"rightButtons\">\n          <SaveButton\n            historyObject={this.props.historyObject}\n            tooltip={true}\n            toggleSignUpModal={this.props.toggleSignUpModal}\n          />\n          <DisplaySettingsButton onClick={this.props.openDisplaySettings} />\n        </div>);\n    const openTransBannerApplies = () => Sefaria.openTransBannerApplies(this.props.currentBook(), this.props.settings.language);\n    let banner = (hideHeader || connectionsHeader) ? null : (\n        <TextColumnBannerChooser\n            setTranslationLanguagePreference={this.props.setTranslationLanguagePreference}\n            openTranslations={this.openTranslations}\n            openTransBannerApplies={openTransBannerApplies}\n        />\n    );\n    const classes = classNames({\n      readerControls: 1,\n      connectionsHeader: mode == \"Connections\",\n      fullPanel: this.props.multiPanel,\n      sheetReaderControls: !!this.props.sheetID\n    });\n\n    let readerControls = hideHeader ? null :\n        (<header className={classes}>\n          <div className=\"readerControlsInner\">\n            {leftControls}\n            {centerContent}\n            {rightControls}\n          </div>\n        </header>);\n    return (\n      <div>\n        {connectionsHeader ? null : <CategoryColorLine category={this.props.currentCategory()} />}\n        {readerControls}\n        {banner}\n      </div>\n    );\n  }\n}\nReaderControls.propTypes = {\n  settings:                PropTypes.object.isRequired,\n  showBaseText:            PropTypes.func.isRequired,\n  setOption:               PropTypes.func.isRequired,\n  setConnectionsMode:      PropTypes.func.isRequired,\n  setConnectionsCategory:  PropTypes.func.isRequired,\n  openMenu:                PropTypes.func.isRequired,\n  openDisplaySettings:     PropTypes.func.isRequired,\n  openMobileNavMenu:       PropTypes.func.isRequired,\n  closeMenus:              PropTypes.func.isRequired,\n  currentMode:             PropTypes.func.isRequired,\n  currentCategory:         PropTypes.func.isRequired,\n  currentBook:             PropTypes.func.isRequired,\n  currentLayout:           PropTypes.func.isRequired,\n  onError:                 PropTypes.func.isRequired,\n  closePanel:              PropTypes.func,\n  toggleLanguage:          PropTypes.func,\n  currentRef:              PropTypes.string,\n  currVersions:            PropTypes.object,\n  connectionsMode:         PropTypes.string,\n  connectionsCategory:     PropTypes.string,\n  multiPanel:              PropTypes.bool,\n  openSidePanel:           PropTypes.func.isRequired,\n  interfaceLang:           PropTypes.string,\n  toggleSignUpModal:       PropTypes.func.isRequired,\n  historyObject:           PropTypes.object,\n  setTranslationLanguagePreference: PropTypes.func.isRequired,\n};\n\n\nclass ReaderDisplayOptionsMenu extends Component {\n  renderAliyotToggle() {\n    let torah = [\"Genesis\", \"Exodus\", \"Leviticus\", \"Numbers\", \"Deuteronomy\", \"Onkelos Genesis\", \"Onkelos Exodus\", \"Onkelos Leviticus\", \"Onkelos Numbers\", \"Onkelos Deuteronomy\"];\n    return this.props.currentBook ? torah.includes(this.props.currentBook()) : false;\n  }\n  vowelToggleAvailability(){\n    let data = this.props.currentData();\n    if(!data) return 2;\n    let sample = data[\"he\"];\n    while (Array.isArray(sample)) {\n        sample = sample[0];\n    }\n    const vowels_re = /[\\u05b0-\\u05c3\\u05c7]/g;\n    const cantillation_re = /[\\u0591-\\u05af]/g;\n    if(cantillation_re.test(sample)){\n      //console.log(\"all\");\n      return 0;\n    }else if(vowels_re.test(sample)){\n      //console.log(\"partial\");\n      return 1;\n    }else{\n      //console.log(\"none\");\n      return 2;\n    }\n  }\n  showLanguageToggle() {\n    if (Sefaria._siteSettings.TORAH_SPECIFIC) return true;\n\n    let data = this.props.currentData();\n    if (!data) return false; // Sheets don't have currentData\n\n    const hasHebrew = !!data.he.length;\n    const hasEnglish = !!data.text.length;\n    return hasHebrew && hasEnglish;\n  }\n  shouldPunctuationToggleRender() {\n    if (this.props.currentData?.()?.primary_category === \"Talmud\" && (this.props.settings?.language === \"hebrew\" || this.props.settings?.language === \"bilingual\")) { return true; }\n    else { return false; }\n  }\n\n  render() {\n    let languageOptions = [\n      {name: \"english\",   content: \"<span class='en'>A</span>\", role: \"radio\", ariaLabel: \"Show English Text\" },\n      {name: \"bilingual\", content: \"<span class='en'>A</span><span class='he'>א</span>\", role: \"radio\", ariaLabel: \"Show English & Hebrew Text\" },\n      {name: \"hebrew\",    content: \"<span class='he'>א</span>\", role: \"radio\", ariaLabel: \"Show Hebrew Text\" }\n    ];\n    let languageToggle = this.showLanguageToggle() ? (\n        <ToggleSet\n          ariaLabel=\"Language toggle\"\n          label={Sefaria._(\"Language\")}\n          name=\"language\"\n          options={languageOptions}\n          setOption={this.props.setOption}\n          currentValue={this.props.settings.language} />) : null;\n\n    let layoutOptions = [\n      {name: \"continuous\", fa: \"align-justify\", role: \"radio\", ariaLabel: \"Show Text as a paragram\" },\n      {name: \"segmented\", fa: \"align-left\", role: \"radio\", ariaLabel: \"Show Text segmented\" },\n    ];\n    let biLayoutOptions = [\n      {name: \"stacked\", content: \"<img src='/static/img/stacked.png' alt='Stacked Language Toggle'/>\", role: \"radio\", ariaLabel: \"Show Hebrew & English Stacked\"},\n      {name: \"heLeft\", content: \"<img src='/static/img/backs.png' alt='Hebrew Left Toggle' />\", role: \"radio\", ariaLabel: \"Show Hebrew Text Left of English Text\"},\n      {name: \"heRight\", content: \"<img src='/static/img/faces.png' alt='Hebrew Right Toggle' />\", role: \"radio\", ariaLabel: \"Show Hebrew Text Right of English Text\"}\n    ];\n    let layoutToggle = this.props.settings.language !== \"bilingual\" || !Sefaria._siteSettings.TORAH_SPECIFIC ?\n      this.props.parentPanel == \"Sheet\" ? null :\n      (<ToggleSet\n          ariaLabel=\"text layout toggle\"\n          label={Sefaria._(\"Layout\")}\n          name=\"layout\"\n          options={layoutOptions}\n          setOption={this.props.setOption}\n          currentValue={this.props.currentLayout()} />) :\n      (this.props.width > 500 ?\n        <ToggleSet\n          ariaLabel=\"bidirectional text layout toggle\"\n          label={Sefaria._(\"Bilingual Layout\")}\n          name=\"biLayout\"\n          options={biLayoutOptions}\n          setOption={this.props.setOption}\n          currentValue={this.props.currentLayout()} /> : null);\n\n    let colorOptions = [\n      {name: \"light\", content: \"\", role: \"radio\", ariaLabel: \"Toggle light mode\" },\n      /*{name: \"sepia\", content: \"\", role: \"radio\", ariaLabel: \"Toggle sepia mode\" },*/\n      {name: \"dark\", content: \"\", role: \"radio\", ariaLabel: \"Toggle dark mode\" }\n    ];\n    let colorToggle = (\n        <ToggleSet\n          ariaLabel=\"Color toggle\"\n          label={Sefaria._(\"Color\")}\n          name=\"color\"\n          separated={true}\n          options={colorOptions}\n          setOption={this.props.setOption}\n          currentValue={this.props.settings.color} />);\n    colorToggle = this.props.multiPanel ? null : colorToggle;\n\n    let sizeOptions = [\n      {name: \"smaller\", content: Sefaria._(\"Aa\"), role: \"button\", ariaLabel: Sefaria._(\"Decrease font size\") },\n      {name: \"larger\", content: Sefaria._(\"Aa\"), role: \"button\", ariaLabel: Sefaria._(\"Increase font size\")  }\n    ];\n    let sizeToggle = (\n        <ToggleSet\n          ariaLabel=\"Increase/Decrease Font Size Buttons\"\n          label={Sefaria._(\"Font Size\")}\n          name=\"fontSize\"\n          options={sizeOptions}\n          setOption={this.props.setOption}\n          currentValue={null} />);\n\n    let aliyahOptions = [\n      {name: \"aliyotOn\",   content: Sefaria._(\"On\"), role: \"radio\", ariaLabel: Sefaria._(\"Show Parasha Aliyot\") },\n      {name: \"aliyotOff\", content: Sefaria._(\"Off\"), role: \"radio\", ariaLabel: Sefaria._(\"Hide Parasha Aliyot\") },\n    ];\n    let aliyahToggle = this.renderAliyotToggle() ? (\n      this.props.parentPanel == \"Sheet\" ? null :\n        <ToggleSet\n          ariaLabel=\"Toggle Aliyot\"\n          label={Sefaria._(\"Aliyot\")}\n          name=\"aliyotTorah\"\n          options={aliyahOptions}\n          setOption={this.props.setOption}\n          currentValue={this.props.settings.aliyotTorah} />) : null;\n\n    let vowelsOptions = [\n      {name: \"all\", content: \"<span class='he'>אָ֑</span>\", role: \"radio\", ariaLabel: Sefaria._(\"Show Vowels and Cantillation\")},\n      {name: \"partial\", content: \"<span class='he'>אָ</span>\", role: \"radio\", ariaLabel: Sefaria._(\"Show only vowel points\")},\n      {name: \"none\", content: \"<span class='he'>א</span>\", role: \"radio\", ariaLabel: Sefaria._(\"Show only consonantal text\")}\n    ];\n    let vowelToggle = null;\n    if(!this.props.menuOpen){\n      let vowelOptionsSlice = this.vowelToggleAvailability();\n      let vowelOptionsTitle = (vowelOptionsSlice == 0) ? Sefaria._(\"Vocalization\") : Sefaria._(\"Vowels\");\n      vowelsOptions = vowelsOptions.slice(vowelOptionsSlice);\n      vowelToggle = (this.props.settings.language !== \"english\" && vowelsOptions.length > 1) ?\n        this.props.parentPanel == \"Sheet\" ? null :\n        (<ToggleSet\n          ariaLabel=\"vowels and cantillation toggle\"\n          label={vowelOptionsTitle}\n          name=\"vowels\"\n          options={vowelsOptions}\n          setOption={this.props.setOption}\n          currentValue={this.props.settings.vowels} />): null;\n    }\n\n    let punctuationOptions = [\n      {name: \"punctuationOn\", content: Sefaria._(\"On\"), role: \"radio\", ariaLabel: Sefaria._(\"Show Punctuation\")},\n      {name: \"punctuationOff\", content: Sefaria._(\"Off\"), role: \"radio\", ariaLabel: Sefaria._(\"Hide Punctuation\")}\n    ]\n    let punctuationToggle = this.shouldPunctuationToggleRender() ? (\n        <ToggleSet\n          ariaLabel=\"Punctuation Toggle\"\n          label={Sefaria._(\"Punctuation\")}\n          name=\"punctuationTalmud\"\n          options={punctuationOptions}\n          setOption={this.props.setOption}\n          currentValue={this.props.settings.punctuationTalmud} />) : null;\n    if (this.props.menuOpen === \"search\") {\n      return (<div className=\"readerOptionsPanel\" role=\"dialog\">\n                <div className=\"readerOptionsPanelInner\">\n                  {languageToggle}\n                  {sizeToggle}\n                </div>\n            </div>);\n    } else if (this.props.menuOpen) {\n      return (<div className=\"readerOptionsPanel\" role=\"dialog\">\n                <div className=\"readerOptionsPanelInner\">\n                  {languageToggle}\n                </div>\n            </div>);\n    } else {\n      return (<div className=\"readerOptionsPanel\" role=\"dialog\">\n                <div className=\"readerOptionsPanelInner\">\n                  {languageToggle}\n                  {layoutToggle}\n                  {colorToggle}\n                  {sizeToggle}\n                  {aliyahToggle}\n                  {vowelToggle}\n                  {punctuationToggle}\n                </div>\n              </div>);\n    }\n  }\n}\nReaderDisplayOptionsMenu.propTypes = {\n  setOption:     PropTypes.func.isRequired,\n  currentLayout: PropTypes.func.isRequired,\n  currentBook:   PropTypes.func,\n  currentData:   PropTypes.func,\n  menuOpen:      PropTypes.string,\n  multiPanel:    PropTypes.bool.isRequired,\n  width:         PropTypes.number.isRequired,\n  settings:      PropTypes.object.isRequired,\n};\n\n\nexport default ReaderPanel;\n","import React  from 'react';\nimport PropTypes  from 'prop-types';\nimport Component from 'react-class';\nimport $  from './sefaria/sefariaJquery';\nimport Sefaria  from './sefaria/sefaria';\nimport { InterfaceText } from './Misc';\n\n\nclass EditCollectionPage extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = props.initialData || {\n        name: null,\n        description: null,\n        websiteUrl: null,\n        imageUrl: null,\n        headerUrl: null,\n        listed: false\n    };\n  }\n  componentDidMount() {\n    $(window).on(\"beforeunload\", function() {\n      if (this.changed) {\n        return Sefaria._(\"You have unsaved changes to your collection.\");\n      }\n    }.bind(this));\n  }\n  handleImageChange(e) {\n    var MAX_IMAGE_MB = 2;\n    var MAX_IMAGE_SIZE = MAX_IMAGE_MB * 1024 * 1024;\n    var idToField = {\n      collectionHeader: \"headerUrl\",\n      collectionImage: \"imageUrl\",\n    };\n    var field = idToField[e.target.id];\n    var file = e.currentTarget.files[0];\n    if (file.size > MAX_IMAGE_SIZE) {\n      alert(Sefaria._(\"Images must be smaller than \") + MAX_IMAGE_MB + \"MB.\");\n      return;\n    }\n    var formData = new FormData();\n    formData.append(\"file\", e.currentTarget.files[0])\n    $.ajax({\n        url: '/api/collections/upload',\n        data: formData,\n        type: 'POST',\n        contentType: false,\n        processData: false,\n        success: function(data) {\n          if (\"error\" in data) {\n            alert(data.error);\n            this.clearUploading(field);\n          } else {\n            var state = {};\n            state[field] = data.url;\n            this.setState(state);\n            this.changed = true;\n          }\n        }.bind(this),\n        fail: function() {\n          alert(Sefaria._(\"Unfortunately an error occurred uploading your file.\"))\n          this.clearUploading(field);\n        }\n    });\n    this.setUploading(field);\n  }\n  setUploading(field) {\n    var state = {};\n    state[field] = \"/static/img/loading.gif\";\n    this.setState(state);\n  }\n  clearUploading(field) {\n    var state = {};\n    state[field] = null;\n    this.setState(state);\n  }\n  handleInputChange(e) {\n    var idToField = {\n      collectionName: \"name\",\n      collectionWebsite: \"websiteUrl\",\n      collectionDescription: \"description\"\n    }\n    var field = idToField[e.target.id];\n    var state = {};\n    state[field] = e.target.value;\n    this.setState(state);\n    this.changed = true;\n  }\n  handleListingChange(e) {\n    this.setState({listed: !!e.target.checked});\n  }\n  delete() {\n    if (confirm(Sefaria._(\"Are you sure you want to delete this collection? This cannot be undone.\"))) {\n     $.ajax({\n        url: \"/api/collections/\" + this.props.initialData.slug,\n        type: \"DELETE\",\n        success: function(data) {\n          if (\"error\" in data) {\n            alert(data.error);\n          } else {\n            window.location = \"/my/profile\";\n          }\n        },\n        fail: function() {\n          alert(Sefaria._(\"Unfortunately an error occurred deleting your collection.\"));\n        }\n      });\n    }\n  }\n  save() {\n    var collectionData = Sefaria.util.clone(this.state);\n\n    if (collectionData[\"headerUrl\"] == \"/static/img/loading.gif\") { collectionData[\"headerUrl\"] = null; }\n    if (collectionData[\"imageUrl\"] == \"/static/img/loading.gif\") { collectionData[\"imageUrl\"] = null; }\n\n    $.post(\"/api/collections\", {json: JSON.stringify(collectionData)}, function(data) {\n        if (\"error\" in data) {\n          alert(data.error);\n        } else {\n          this.changed = false;\n          window.location = \"/collections/\" + data.collection.slug;\n        }\n    }.bind(this)).fail(function() {\n        alert(Sefaria._(\"Unfortunately an error occurred saving your collection.\"));\n    });\n  }\n  render() {\n    const title = this.props.initialData ? \"Edit Collection\" : \"Create a Collection\";\n    return (\n      <div id=\"editCollectionPage\">\n        <div className=\"headerWithButtons\">\n          <div className=\"start\"></div>\n          <h1>\n            <InterfaceText>{title}</InterfaceText>\n          </h1>\n          <div className=\"end\">\n              <a className=\"button small transparent control-elem\" href={this.props.initialData ? \"/collections/\" + this.state.slug : \"/my/profile\"}>\n                  <InterfaceText>Cancel</InterfaceText>\n              </a>\n              <div id=\"saveCollection\" className=\"button small blue control-elem\" onClick={this.save}>\n                  <InterfaceText>Save</InterfaceText>\n              </div>\n          </div>\n        </div>\n\n        <div className=\"field halfWidth\">\n          <label>\n            <InterfaceText>Collection Name</InterfaceText>\n          </label>\n          <input id=\"collectionName\" value={this.state.name||\"\"} onChange={this.handleInputChange}/>\n        </div>\n\n        <div className=\"field halfWidth\">\n          <label>\n            <InterfaceText>Website</InterfaceText>\n          </label>\n          <input id=\"collectionWebsite\" value={this.state.websiteUrl||\"\"} onChange={this.handleInputChange}/>\n        </div>\n\n        <div className=\"field\">\n          <label>\n            <InterfaceText>Description</InterfaceText>\n          </label>\n          <textarea id=\"collectionDescription\" onChange={this.handleInputChange} value={this.state.description||\"\"}></textarea>\n        </div>\n\n        <div className=\"field\">\n          <label>\n            <InterfaceText>Collection Image</InterfaceText>\n          </label>\n          {this.state.imageUrl\n            ? <img className=\"collectionImage\" src={this.state.imageUrl} alt=\"Collection Image\" />\n            : <div className=\"collectionImage placeholder\"></div>}\n          <FileInput\n             name=\"collectionImage\"\n             accept=\"image/*\"\n             text={Sefaria._(\"Upload Image\")}\n             className=\"button white\"\n             onChange={this.handleImageChange} />\n          <div className=\"helperText\">\n            <InterfaceText>Recommended size: 350px x 350px or larger</InterfaceText>\n          </div>\n        </div>\n\n        {/* Header images are only supported for legacy collections which already had them */}\n        {this.state.headerUrl ? \n        <div className=\"field\">\n          <label>\n            <InterfaceText>Default Sheet Header</InterfaceText>\n          </label>\n          {this.state.headerUrl\n            ? <div className=\"collectionHeaderBox\">\n                <img className=\"collectionHeader\" src={this.state.headerUrl} alt=\"Collection Header Image\" />\n                <div className=\"clearFix\"></div>\n              </div>\n            : <div className=\"collectionHeader placeholder\"></div>}\n          <FileInput\n             name=\"collectionHeader\"\n             accept=\"image/*\"\n             text=\"Upload Image\"\n             className=\"button white\"\n             onChange={this.handleImageChange} />\n          <div className=\"helperText\">\n            <InterfaceText>Recommended size: 1000px width to fill sheet, smaller images align right</InterfaceText>\n          </div>\n        </div>\n        : null }\n\n        {/* Only show publish option on existing collections, since new collections are empty */}\n        {this.props.initialData ?\n        <div className=\"field\">\n          <label>\n              <InterfaceText>List on {Sefaria._siteSettings.SITE_NAME.en}</InterfaceText>\n          </label>\n          {this.state.moderationStatus !== \"nolist\" ?\n          <div className=\"onoffswitch\">\n            <input type=\"checkbox\"\n              name=\"onoffswitch\"\n              className=\"onoffswitch-checkbox\"\n              id=\"collectionPublicToggle\"\n              checked={!!this.state.listed}\n              onChange={this.handleListingChange} />\n            <label className=\"onoffswitch-label\" htmlFor=\"collectionPublicToggle\">\n                <span className=\"onoffswitch-inner\"></span>\n                <span className=\"onoffswitch-switch\"></span>\n            </label>\n            <div className=\"helperText\">\n              <InterfaceText>Your collection will appear on the public collections page where others can find it.</InterfaceText>\n            </div>\n          </div>\n          : <div>\n              <span className=\"int-en\">Your collection was previously made public, but our moderators determined it was not generally useful for all Sefaria users. Please contact <a href=\"mailto:hello@sefari.org\">hello@sefaria.org</a> with any questions.</span>\n              <span className=\"int-he\">האסופה שלך הוגדרה כציבורית, אך המנהלים שלנו הגיעו למסקנה שהיא אינה רלוונטית לכלל משתמשי ספריא. לשאלות יש ליצור עימנו קשר בכתובת <a href=\"mailto:hello@sefari.org\">hello@sefaria.org</a>.</span>\n          </div> }\n        </div>\n        : null }\n\n        {this.props.initialData ?\n        <div className=\"deleteCollection\" onClick={this.delete}>\n          <InterfaceText>Delete Collection</InterfaceText>\n        </div>\n        : null}\n\n      </div>);\n  }\n}\nEditCollectionPage.propTypes = {\n  initialData:  PropTypes.object // If present this view is for editing a collection, otherwise for creating a new collection\n};\n\n\nclass FileInput extends Component {\n  handleChange(e) {\n    if (this.props.onChange) { this.props.onChange(e); }\n  }\n  render() {\n    return (<div>\n              <label htmlFor={this.props.name} className={this.props.className}>{this.props.text}</label>\n              <input\n                type=\"file\"\n                id={this.props.name}\n                name={this.props.name}\n                className=\"hiddenFileInput\"\n                accept={this.props.accept}\n                onChange={this.handleChange} />\n            </div>);\n  }\n}\n\n\nexport default EditCollectionPage;\n","import React, {useState, useRef, useEffect, memo} from 'react';\nimport {\n    SimpleInterfaceBlock,\n    TwoOrThreeBox,\n    ResponsiveNBox,\n    NBox, InterfaceText,\n} from './Misc';\nimport {NewsletterSignUpForm} from \"./NewsletterSignUpForm\";\nimport palette from './sefaria/palette';\nimport classNames from 'classnames';\nimport Cookies from 'js-cookie';\n\n\n\n/*  Templates:\n\n        <Header\n            enTitle=\"\"\n            enText=\"\"\n            enImg=\"/static/img/\"\n            enImgAlt=\"\"\n            enActionURL={null}\n            enActionText={null}\n            heTitle=\"\"\n            heText=\"\"\n            heImg=\"/static/img/\"\n            heImgAlt=\"\"\n            heActionURL={null}\n            heActionText={null}\n        />\n\n        <H2Block\n            en=\"\"\n            he=\"\"\n        />\n\n        <EnBlock padded={true}>\n            {Any content}\n        </EnBlock\n\n        <HeBlock padded={true}>\n            {Any content}\n        </HeBlock>\n\n        <Feature\n            enTitle=\"\"\n            enText=\"\"\n            enImg=\"/static/img/\"\n            enImgAlt=\"\"\n            heTitle=\"\"\n            heText=\"\"\n            heImg=\"/static/img/\"\n            heImgAlt=\"\"\n            borderColor=\"#\"\n        />\n\n        <About\n            enTitle=\"\"\n            heTitle=\"\"\n            enText=\"\"\n            heText=\"\"\n            backgroundColor=\"\"\n        />\n */\n\n\nconst ContestLandingPage = () => (\n    <StaticPage>\n        <Header\n            enTitle=\"Powered by Sefaria Contest\"\n            enText=\"Advance the frontiers of tech and Torah this summer. Build something new using our free data or API.\"\n            enImg=\"/static/img/contest-landing-page/codemockup3.png\"\n            enImgAlt=\"\"\n            enActionURL=\"http://sefaria.nationbuilder.com/contest2021\"\n            enActionText=\"Register to Join\"\n            heTitle=\"תחרות פיתוח תוכנה\"\n            heText=\"הצטרפו אלינו לאתגר שיקדם את תחום התורה והטכנולוגיה בבניית תוצר יצירתי ועצמאי בעזרת המאגר החופשי וממשק ה־API של ספריא.\"\n            heImg=\"/static/img/contest-landing-page/codemockup3.png\"\n            heImgAlt=\"\"\n            heActionURL=\"http://sefaria.nationbuilder.com/contest2021\"\n            heActionText=\"הרשמה לתחרות\"\n        />\n\n        <H2Block en=\"The Contest\" he=\"התחרות\"/>\n        <EnBlock padded={true}>\n            <p>Sefaria offers a free digital dataset of Jewish texts, translations, and interconnections that is open for anyone to reuse in novel ways. Last year, we received over 50 innovative Powered by Sefaria projects using our open data or API (<a href=\"/powered-by-sefaria-contest-2020\">see the winners and honorable mentions!</a>). We’re eager to see what else our community can dream up to advance the frontiers of Torah and technology in this year’s contest!</p>\n            <p>What you create is up to you. It could be a functioning web app or just a compelling demo; an interactive visualization, or just a question that digs into data quantitatively in search of an answer; something useful and impactful to the world of learning, or just a crazy experiment that fascinates you without a clear application. <b>The only requirement is that your project must prominently make use of the data that Sefaria has to offer</b>.</p>\n            <p>To get your ideas flowing, here are three great examples from last year’s Powered by Sefaria contest. You can find dozens more projects on our <a href=\"https://github.com/Sefaria/Sefaria-Project/wiki/Projects-Powered-by-Sefaria\">Powered by Sefaria list</a> on GitHub and on the <a href=\"https://www.sefaria.org/powered-by-sefaria-contest-2020\">Powered by Sefaria 2020 Winners & Honorable Mentions page</a>.</p>\n        </EnBlock>\n        <HeBlock padded={true}>\n            <p>ספריא מציעה לציבור מסד נתונים דיגיטלי וחופשי של מקורות יהודיים, תרגומים וקישורים בין־טקסטואליים.  בשנה שעברה הגיעו לפתחנו יותר מ־50 מיזמים חדשניים שהשתמשו במסד הנתונים הפתוח  או ב־API שלנו (<a href=\"/powered-by-sefaria-contest-2020\">ראו את המיזמים הזוכים ואת המיזמים שזכו להערכה מיוחדת</a>). אנו מלאי ציפייה לראות מה עוד מסוגלת הקהילה שלנו לעשות כדי לחצות את הגבולות המוכרים של התורה והטכנולוגיה?</p>\n            <p>המיזם תלוי רק בכם: זה יכול להיות יישומון רשת פעיל או דמו משכנע; ויזואליזציה אינטראקטיבית או שאלה שיורדת לעומקם של הנתונים הכמותיים של המערכת; כלי שימושי ויעיל לעולם הלימוד או ניסוי מדליק ללא תוצר ברור שפשוט מרתק אתכם. <b>הדרישה היחידה היא שבמיזם ייעשה שימוש מובהק במסד הנתונים של ספריא</b>.</p>\n            <p>כדי לעזור לכם להתחיל הינה שלוש דוגמאות מעולות מתחרות פיתוח התוכנה בשנה שעברה. אפשר למצוא עשרות מיזמים אחרים ברשימת המיזמים של התחרות ב<a href=\"https://github.com/Sefaria/Sefaria-Project/wiki/Projects-Powered-by-Sefaria\">גיטהאב</a> וב<a href=\"/powered-by-sefaria-contest-2020\">עמוד המיזמים הזוכים והמיזמים שזכו להערכה מיוחדת בתחרות פיתוח התוכנה לשנת 2020</a>.</p>\n        </HeBlock>\n\n        <ButtonRow white={true}>\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"https://www.youtube.com/watch?v=C6nMn4CLuEU\"\n                he_href=\"https://www.youtube.com/watch?v=C6nMn4CLuEU\"\n                he=\"סרגל הכלים של התלמוד\"\n                en=\"Talmud Sidebar Extension\"\n            />\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"https://www.youtube.com/watch?v=uB4In-Nc2WU\"\n                he_href=\"https://www.youtube.com/watch?v=uB4In-Nc2WU\"\n                he=\"מזמור שיר\"\n                en=\"Mizmor Shir\"\n            />\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"https://jhostyk.github.io/SeferSimilarityMap/\"\n                he_href=\"https://jhostyk.github.io/SeferSimilarityMap/\"\n                he=\"ספר – מפת דמיון בין טקסטים\"\n                en=\"Sefer Similarity Map\"\n            />\n        </ButtonRow>\n\n\n        <H2Block en=\"Timeline and Prize\" he=\"לוח זמנים ופרסים\" />\n        <EnBlock padded={true}>\n            <p>The contest is open from Sunday, June 13th through Tuesday, August 31st. <a href=\"https://sefaria.nationbuilder.com/contest2021\">Registered participants</a> will receive a form to submit their projects. The contest deliverable must be in the form of a URL where our judges can directly access your work. For many projects, this will be a running demo of an app on the web. For other projects, your URL may point to a description and summary of the work you've done, much like a poster for a research project presented at a conference. For desktop or mobile apps, you will need to host your app on a web-based emulator (like <a href=\"https://appetize.io/\">Appetize.io</a>) so our judges can interact with it without downloading executables.</p>\n            <p>A jury will select three projects to win cash prizes: $5,000 for the grand prize, $5,000 for the Women in Tech prize, and $3,600 for the youth prize.</p>\n            <p>A selection of completed projects will also be featured on a contest page and shared with our community.</p>\n        </EnBlock>\n        <HeBlock padded={true}>\n            <p>התחרות תתחיל ביום רשון, 13 ביוני, ותסתיים ביום שלישי, 31 באוגוסט. <a href=\"https://sefaria.nationbuilder.com/contest2021\">המשתתפים והמשתתפות שיירשמו</a> יקבלו טופס להגשת המיזם. ההגשה צריכה להיות בפורמט URL שדרכו יוכלו השופטים לגשת ישירות אל המיזם. עבור מיזמים רבים משמעות הדבר היא העלאת גרסת דמו חיה של היישומון, שתפעל ברשת. עבור מיזמים אחרים כתובת ה־URL תוביל לתיאור ולתקציר של המיזם, בדומה לכרזות המציגות מיזמי מחקר בכנסים. אם המיזם שלכם הוא יישומון לשולחן עבודה או לטלפון נייד, יש להפעיל אותו באמצעות אמולטור מבוסס רשת (לדוגמה <a href=\"https://appetize.io\">Appetize.io</a>), כדי שהשופטים והשופטות יוכלו להשתמש בו בלי להוריד קובצי הרצה כלשהם.</p>\n            <p>השופטים יבחרו שלושה מיזמים שיזכו בפרס כספי: 5,000 דולר לפרס הכללי, 5,000 דולר לפרס לנשים מפתחות תוכנה ו־3,600 דולר לפרס המתמודד הצעיר.</p>\n            <p>מבחר מיזמים אחרים שיושלמו, יופיעו אף הם בדף התחרות וישותפו עם קהילת ספריא.</p>\n        </HeBlock>\n\n        <H2Block en=\"Eligibility\" he=\"זכאות\" />\n        <EnBlock padded={true}>\n            <p>The Contest is open to applicants from the United States and Israel. All participants are eligible to enter the grand prize. Eligible participants for the Women in Tech prize include a) individuals who identify as women or b) groups of 3 or more, the majority of whom identify as women. Participants who are eligible for the Women in Tech prize may submit their project into both the Women in Tech prize and grand prize categories, and the youth prize category if eligible. Eligible participants for the youth prize include people under the age of 23. Participants who are eligible for the youth prize may submit their project into both the youth prize and grand prize categories, as well as the Women in Tech category if eligible. All entrants under the age of 18 must obtain permission from their parent or guardian before entering the contest. <b>To learn more, see our official <a href=\"https://drive.google.com/file/d/1CMlxEe-xIk8RNpfdBRlytLDWsdLMXPpl/view\">Contest Rules</a></b>.</p>\n        </EnBlock>\n        <HeBlock padded={true}>\n            <p>התחרות הכללית פתוחה למועמדים מארצות הברית ומישראל (נשים וגברים). הפרס המיוחד עבור נשים מיועד לנשים שמפתחות תוכנה או לקבוצה בתנאי שיש בה רוב נשי. א. אישה; ב. קבוצה של שלושה משתתפים או יותר, שמורכבת רובה מנשים. המשתתפות הזכאיות יכולות לשלוח את המיזם שלהן להתמודדות על כמה פרסים: הפרס הכללי, הפרס לנשים מפתחות תוכנה ועל פרס המתמודד הצעיר, אם הן עומדות בתנאיו. התנאי להתמודדות בקטגוריית פרס המתמודד הצעיר הוא שגיל המשתתף אינו עולה על 23. כל המשתתפים בתחרות מתחת לגיל 18 חייבים להציג אישור מהורה או מאפטרופוס לפני הכניסה לתחרות. לעיון נוסף, ראו את <a href=\"https://drive.google.com/file/d/1CMlxEe-xIk8RNpfdBRlytLDWsdLMXPpl/view\">תקנון התחרות הרשמי שלנו</a>.</p>\n        </HeBlock>\n        <Spacer/>\n\n        <GreyBox>\n            <ImageWithText\n                enText=\"<i>“By open-sourcing a vast array of Jewish texts, Sefaria's API makes programmatic analysis of Jewish tradition simple for the everyday programmer. talmud.page began as my own hand-tailored UI for learning Daf Yomi. The more developers use Sefaria's API to solve creative questions, the richer Jewish learning will be worldwide.”\n                    <br/><br/>\n                    - Ron Shapiro, <a href='https://talmud.page'>talmud.page</a></i></div>\"\n                enImg=\"/static/img/contest-landing-page/AdobeStock_314348719.png\"\n                enImgAlt=\"\"\n                heText='<i>\"על-ידי אספקת גישה למגוון עצום של טקסטים יהודיים, ה-API של ספריא מאפשר למתכנת הפשוט לבצע ניתוח פרוגרמטי של המסורת היהודי. talmud.page החל כממשק משתמש אישי לצורך לימוד דף יומי. ככל שמפתחים ישתמשו יותר  ב-API של ספריא לפתרון שאלות יצירתיות- הלימוד היהודי בכל העולם- יזכה\"\n                    <br/><br/>\n                    - רון שפירא, <a href=\"https://talmud.page\">talmud.page</a></i>'\n                heImg=\"/static/img/contest-landing-page/AdobeStock_314348719.png\"\n                heImgAlt=\"\"\n            />\n        </GreyBox>\n\n        <H2Block en=\"Winner Selection\" he=\"בחירת הזוכה\" />\n        <EnBlock padded={true}>\n            <p>Winners will be selected by a panel of three judges. The judges will evaluate each project on the basis of four criteria:</p>\n            <ol>\n                <li>Highlighting of Jewish texts and their unique value</li>\n                <li>Technological accomplishment</li>\n                <li>Potential for impact or inspiration</li>\n                <li>Creativity</li>\n            </ol>\n            <p>Projects that existed prior to the call for submission may enter on the basis of additional work added since the time the contest began. Judges will evaluate the projects on the basis of the additional work. Projects don’t have to be 100% complete or polished to enter either; our judges will be happy to see the potential in a promising start. </p>\n        </EnBlock>\n        <HeBlock padded={true}>\n            <p>הזוכים ייבחרו על ידי פאנל של שלושה שופטים. השופטים יבחנו כל פרויקט על בסיס הקריטריונים הבאים:</p>\n            <ol>\n                <li>דגש על טקסטים יהודיים וערכם המיוחד</li>\n                <li>ההישגים הטכנולוגיים שבמיזם</li>\n                <li>פוטנציאל ההשפעה או ההשראה הטמון במיזם</li>\n                <li>יצירתיות המיזם</li>\n            </ol>\n            <p>אפשר להגיש מיזמים שהתחילו עוד לפני פרסום הקול קורא, כל עוד תיעשה עבודה נוספת במיזם אחרי שהתחרות כבר החלה. השופטים יעריכו את המיזמים על פי העבודה שהתווספה.</p>\n        </HeBlock>\n\n        <H2Block en=\"Registration\" he=\"הרשמה\"/>\n        <EnBlock padded={true}>\n            <p>Interested in participating in the contest? <a href=\"http://sefaria.nationbuilder.com/contest2021\">Sign up</a> for updates and resources, including office hours with the Sefaria engineering team. We'll share a link for project submissions with you in the coming weeks!</p>\n        </EnBlock>\n        <HeBlock padded={true}>\n            <p>אם אתם מעוניינים להשתתף בתחרות, <a href=\"https://sefaria.nationbuilder.com/contest2021\">לחצו כאן להרשמה</a>, כדי שנוכל לשלוח לכם עדכונים במהלך התחרות בנוגע לכלים ומשאבים, כולל שעות העבודה של המתכנתים שלנו, שתוכלו לשאול אותם שאלות ולהתייעץ איתם על רעיונות אחד־על־אחד. תוכלו להתמודד באופן עצמאי או כחלק מצוות, ולהירשם בכל שלב מעכשיו ועד לסיום התחרות.</p>\n        </HeBlock>\n\n        <ButtonRow white={true}>\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"http://sefaria.nationbuilder.com/contest2021\"\n                he_href=\"http://sefaria.nationbuilder.com/contest2021\"\n                he=\"טופס הרשמה\"\n                en=\"Register\"\n            />\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"https://drive.google.com/file/d/1CMlxEe-xIk8RNpfdBRlytLDWsdLMXPpl/view\"\n                he_href=\"https://drive.google.com/file/d/1CMlxEe-xIk8RNpfdBRlytLDWsdLMXPpl/view\"\n                he=\"כללי התחרות\"\n                en=\"Official Rules\"\n            />\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"https://github.com/Sefaria/Sefaria-Project\"\n                he_href=\"https://github.com/Sefaria/Sefaria-Project\"\n                he=\"GitHub\"\n                en=\"GitHub\"\n            />\n        </ButtonRow>\n\n        <CallToActionFooterWithButton\n            href=\"/powered-by-sefaria-contest-2020\"\n            he_href=\"/powered-by-sefaria-contest-2020\"\n            enText=\"Need Inspiration?\"\n            heText=\"רוצה לקבל השראה?\"\n            enButtonText=\"See 2020 Projects\"\n            heButtonText=\"למיזמי 2020\"\n        />\n\n        {/*\n        <CallToActionFooterWithButton\n            href=\"https://docs.google.com/forms/d/e/1FAIpQLSdYygtWWCte6ljlNUq7qwVItoJREeaVRXznuuVC8213xw6k4w/viewform\"\n            he_href=\"https://docs.google.com/forms/d/e/1FAIpQLSdYygtWWCte6ljlNUq7qwVItoJREeaVRXznuuVC8213xw6k4w/viewform\"\n            enText=\"Ready to share what you created?\"\n            heText=\"מוכנים לשתף את מה שיצרתם?\"\n            enButtonText=\"Submit your project\"\n            heButtonText=\"הגישו את הפרוייקט שלכם\"\n        />\n        */}\n    </StaticPage>\n);\n\n\nconst RambanLandingPage = () => {\n    const emailLink = <a target=\"_blank\" href=\"mailto:hannah@sefaria.org?Subject=Ramban Sponsorship\">hannah@sefaria.org</a>\n    return <StaticPage optionalClass=\"englishOnly\">\n        <Header\n            enTitle=\"Ramban on Torah: A Translation\"\n            enText=\"Sefaria is thrilled to release Rabbi Charles Chavel's classic English translation of Rabbi Moshe ben Nachman (known as Ramban or Nachmanides) on Torah. This historic launch makes a complete bilingual version of Ramban's commentary available online for the very first time, and it will remain free for use and re-use under a CC-BY license. We are profoundly grateful to the following donors for making this possible.\"\n            enActionText=\"Read the Text\"\n            enActionURL=\"/texts/Tanakh/Rishonim%20on%20Tanakh/Ramban\"\n            heTitle=\"Ramban on Torah: A Translation\"\n            heText=\"Sefaria is thrilled to be able to offer Rabbi Charles Chavel's classic English translation of Ramban (Nachmanides) on Torah\n            to the world.  This historic launch makes a complete version of this work available online for the very first time,\n            and it will remain free for use and re-use under a CC-BY license. We are profoundly grateful to the following donors for making this possible.\"\n            heActionURL=\"/texts/Tanakh/Rishonim%20on%20Tanakh/Ramban\"\n            heActionText=\"Read the Text\"\n            enImg=\"\"\n            heImg=\"\"\n        />\n        <div className=\"staticPageBlockInner flexContainer\">\n        <ResponsiveNBox content={\n            [['Bereshit', 'Leib and Linda Koyfman', 'In honor of Hilary and Mo Koyfman and family', '/Genesis.1.1?with=Ramban'],\n            ['Noach', 'Tali and Sender Cohen', '', '/Genesis.6.9?with=Ramban'],\n            ['Lech Lecha', 'Rabbi David Aladjem', 'In support of Sefaria', '/Genesis.12.1?with=Ramban'],\n            ['Vayera', 'Howard and Tova Weiser', 'In honor of their children and grandchildren', '/Genesis.18.1?with=Ramban'],\n            ['Chayei Sara', 'Rechtschaffen Family', \"In honor of the 30th anniversary of Andrew Rechtscaffen's bar mitzvah\", '/Genesis.23.1?with=Ramban'],\n            ['Toldot', 'Shapira-Stern Family', 'In honor of David Shapira', '/Genesis.25.19?with=Ramban'],\n            ['Vayetzei', null, null, '/Genesis.28.10?with=Ramban'],\n            ['Vayishlach', null, null, '/Genesis.32.4?with=Ramban'],\n            ['Vayashev', null, null, '/Genesis.37.1?with=Ramban'],\n            ['Miketz', 'Raquel and Aryeh Rubin', 'In memory of the one and a half million children', '/Genesis.41.1?with=Ramban'],\n            ['Vayigash', 'Laurie and Milton Wakschlag', 'In memory of their parents Fishel and Sheva Wakschlag', '/Genesis.44.18?with=Ramban'],\n            ['Vayechi', 'The Stein Children', 'In memory of their father Jacob K. Stein z\"l', '/Genesis.47.28?with=Ramban']]\n            .map(i => <ParashaSponsorship title={i[0]} sponsorNames={i[1]} message={i[2]} link={i[3]}/>)}/>\n        </div>\n\n        <StaticHR />\n\n        <div className=\"staticPageBlockInner flexContainer\">\n        <ResponsiveNBox content={\n            [['Shemot', 'Sam and Debbie Moed', 'In memory of Henry I. Zeisel, who derived tremendous joy from learning. This perush of his bar mitzvah parashah is dedicated with love.', '/Exodus.1.1?with=Ramban'],\n            ['Vaera', 'The loving children and children-in-law of Arthur Helft', 'In memory of Dr. Arthur Helft', '/Exodus.6.2?with=Ramban'],\n            ['Bo', 'Honey Kessler Amado', 'In memory of her husband, Ralph A. Amado; her parents, Bernard and Mildred Kessler; and our teacher, Rabbi Moshe ben Nachman (Nachmanides).', '/Exodus.10.1?with=Ramban'],\n            ['Beshalach', 'Nicole and Raanan Agus', 'In memory of Dr. Saul G. Agus z\"l', '/Exodus.13.17?with=Ramban'],\n            ['Yitro', 'Anonymous', 'To honor the memory of Joe and Rose Rudis', '/Exodus.18.1?with=Ramban'],\n            ['Mishpatim ', null, null, '/Exodus.21.1?with=Ramban'],\n            ['Terumah', 'Julia Baum and Adam Feldman', 'In memory of Earl Katz and Annette Steinman', '/Exodus.25.1?with=Ramban'],\n            ['Tetzaveh', 'Huti and Jay', 'In Gratitude to all the Health Care Workers during the Pandemic', '/Exodus.27.20?with=Ramban'],\n            ['Ki Tisa', 'Nicole and Raanan Agus', 'In memory of Dr. Saul G. Agus z\"l', '/Exodus.30.11?with=Ramban'],\n            ['Vayahkel', 'The Berkowitz Family', 'In honor of their parents and grandparents (Bebe, Bepop, Pop pop, and grandmama) who provide a sense of inspiration and demonstrate a desire to constantly learn more.', '/Exodus.35.1?with=Ramban'],\n            ['Pekudei', 'The Hiltzik Family', '', '/Exodus.38.21?with=Ramban']]\n            .map(i => <ParashaSponsorship title={i[0]} sponsorNames={i[1]} message={i[2]} link={i[3]}/>)}/>\n        </div>\n\n        <StaticHR />\n\n        <div className=\"staticPageBlockInner flexContainer\">\n        <ResponsiveNBox content={\n            [['Vayikra', 'Edy and Jacob Kupietzky and Family', '', '/Leviticus.1.1?with=Ramban'],\n            ['Tzav', 'Rabbi Ruth Adar', 'In memory of K\\'vod HaRav André Zaoui, z\"l', '/Leviticus.6.1?with=Ramban'],\n            ['Shmini', 'Joshua and Dinah Foer', '', '/Leviticus.9.1?with=Ramban'],\n            ['Tazria', 'Diane and Howard Zack and Family', 'In honor of their parents', '/Leviticus.12.1?with=Ramban'],\n            ['Metzora', 'Anne Germanacos', 'In honor of Rabbi Noa Kusher and Rabbi Jessica Kate Meyer in gratitude for their brilliance and resilience during the pandemic, and their friendship in all times.', '/Leviticus.14.1?with=Ramban'],\n            ['Achrei Mot', 'Anne Germanacos', 'In honor of Rabbi Noa Kusher and Rabbi Jessica Kate Meyer in gratitude for their brilliance and resilience during the pandemic, and their friendship in all times.', '/Leviticus.16.1?with=Ramban'],\n            ['Kedoshim', 'Karine and Michael Bloch', 'In honor of our children Eitan, Yoel, and Tali'], ['Emor', 'Joshua and Dinah Foer', '', '/Leviticus.19.1?with=Ramban'],\n            ['Behar ', 'Tamar and Eric Goldstein', 'In honor of Aryeh’s aufruf', '/Leviticus.25.1?with=Ramban'],\n            ['Bechukotai ', 'Tamar and Eric Goldstein', 'In honor of Aryeh’s aufruf', '/Leviticus.26.3?with=Ramban']]\n            .map(i => <ParashaSponsorship title={i[0]} sponsorNames={i[1]} message={i[2]} link={i[3]}/>)}/>\n        </div>\n\n        <StaticHR />\n\n        <div className=\"staticPageBlockInner flexContainer\">\n        <ResponsiveNBox content={\n            [['Bamidbar', 'The Hiltzik Family', '', '/Numbers.1.1?with=Ramban'],\n            ['Nasso', 'Annoymous Sponsor', 'In honor of Tzeela, Rina Faiga, Dalia and Penina Malka', '/Numbers.4.21?with=Ramban'],\n            [\"Beha'alotcha\", null, null, '/Numbers.8.1?with=Ramban'],\n            [\"Sh'lach\", 'Meyer Family', 'In honor of the bar mitzvah of George Meyer', '/Numbers.13.1?with=Ramban'],\n            ['Korach', 'Fred Blau and Maayan Roth', 'In memory of Sarita Blau, loving mother and teacher', '/Numbers.16.1?with=Ramban'],\n            ['Chukat', 'Kevin Waldman', 'In support of Sefaria', '/Numbers.19.1?with=Ramban'],\n            ['Balak', null, null, '/Numbers.22.2?with=Ramban'],\n            ['Pinchas', 'The Berkowitz Family', \"In honor of our parent's and grandparent's (Bebe, Bepop, Pop pop, and grandmama) who provide a sense of inspiration and demonstrate a desire to constantly learn more.\", '/Numbers.25.10?with=Ramban'],\n            ['Matot', 'Shprintzy and Effy', 'Dedicated in memory of the late Mendel Schoenberg, son of the late Naftali Binyamin and Shprintza. Born in Sanok, Poland, in Elul, between the years 5684 and 5686. Passed away at a ripe old age at his home in Brooklyn, New York, on the First Night of Chanukah 5779.', '/Numbers.30.2?with=Ramban', '/Numbers.33.1?with=Ramban'],\n            ['Masei', 'Nadine and Beni Gesundheit', '', '/Numbers.33.1?with=Ramban']]\n            .map(i => <ParashaSponsorship title={i[0]} sponsorNames={i[1]} message={i[2]} link={i[3]}/>)}/>\n        </div>\n\n        <StaticHR />\n\n        <div className=\"staticPageBlockInner flexContainer\">\n        <ResponsiveNBox content={\n            [['Devarim', null, null, '/Deuteronomy.1.1?with=Ramban'],\n            ['Vaetchanan', 'Becky and Avi Katz', 'In honor of Sefaria', '/Deuteronomy.3.23?with=Ramban'],\n            ['Eikev', 'Annoymous Sponsor', '', '/Deuteronomy.7.12?with=Ramban'],\n            [\"Re'eh\", 'Tamar and Eric Goldstein', \"In honor of Adin's aufruf\", '/Deuteronomy.11.26?with=Ramban'],\n            ['Shoftim', 'Tricia Gibbs', 'In memory of F. Warren Hellman', '/Deuteronomy.16.18?with=Ramban'],\n            ['Ki Tetzei', 'The Katz Family', 'In honor of the victims of Covid-19', '/Deuteronomy.21.10?with=Ramban'],\n            ['Ki Tavo ', 'Rechtschaffen Family', \"In honor of the 3rd anniversary of Jordan Rechtscaffen's bar mitzvah\", '/Deuteronomy.26.1?with=Ramban'],\n            ['Nitzavim', 'Jeremy Rosenthal', 'In honor of Judy and Stuart Rosenthal, in gratitude for their commitment to a sustained Jewish future.', '/Deuteronomy.29.9?with=Ramban'],\n            ['Vayeilech', 'Nicole and Raanan Agus', 'In memory of Dr. Saul G. Agus z\"l', '/Deuteronomy.31.1?with=Ramban'],\n            [\"Ha'Azinu\", 'Mayer', 'In honour of Shalom Rosenzweig, on the occasion of his Bar Mitzvah, October 10, 1992', '/Deuteronomy.32.1?with=Ramban'],\n            [\"V'Zot HaBerachah\", 'Elisha Wiesel', 'In memory of Elie Wiesel', '/Deuteronomy.33.1?with=Ramban']]\n            .map(i => <ParashaSponsorship title={i[0]} sponsorNames={i[1]} message={i[2]} link={i[3]}/>)}/>\n        </div>\n        <Spacer/>\n        <Spacer/>\n        <Spacer/>\n        <div className=\"staticPageCallToActionFooter\">\n            <div className=\"staticPageBlockInner flexContainer\">\n                <div className=\"callToActionText noButton\">\n                    <span className=\"int-en\">Interested in sponsoring a parashah? Please email {emailLink} for more information.</span>\n                    <span className=\"int-he\">Interested in sponsoring a parashah? Please email {emailLink} for more information.</span>\n                </div>\n            </div>\n        </div>\n    </StaticPage>\n};\n\n\nconst ContextUSsheetsLandingPage = () => (\n    <StaticPage>\n        <Header\n            enTitle=\"Create with ContextUS\"\n            enText=\"Mix and match sources from ContextUS’s library of texts, and add your comments, images and videos.\"\n            enImg=\"/static/img/sheets-landing-page/sheetspage_headerimage.png\"\n            enImgAlt=\"ContextUS Sheets\"\n            enActionURL=\"/sheets/new?utm_source=ContextUS&utm_medium=LandingPage&utm_campaign=Sheets\"\n            enActionText=\"Make a Sheet\"\n            heTitle=\"דפי מקורות\"\n            heText=\"בחרו לכם מקורות מארון הספרים היהודי של ספריא והוסיפו הערות, תמונות או סרטונים משלכם.\"\n            heImg=\"/static/img/sheets-landing-page/sheetspage_headerimage_HEB.png\"\n            heImgAlt=\"דפי מקורות\"\n            heActionURL=\"/sheets/new?utm_source=ContextUS&utm_medium=LandingPage&utm_campaign=Sheets_HEB\"\n            heActionText=\"בנו דף מקורות\"\n        />\n        {/*<GreyBox light={true}>*/}\n        {/*    <H2Block*/}\n        {/*        en=\"Discover new ways to learn & teach\"*/}\n        {/*        he=\"גלו דרכים חדשות ללמוד וללמד\"*/}\n        {/*    />*/}\n        {/*</GreyBox>*/}\n        {/*<Feature*/}\n        {/*    enTitle=\"Organize Sources\"*/}\n        {/*    enText=\"Sheets let you mix and match sources from our library. Type in a source title and chapter to add it to your sheet, then edit the source to cut it down or customize  the translation. Use sources in any order you wish. \"*/}\n        {/*    enImg=\"/static/img/sheets-landing-page/organizesources.jpg\"*/}\n        {/*    enImgAlt=\"Organize Sources\"*/}\n        {/*    heTitle=\"סדרו את המקורות\"*/}\n        {/*    heText=\"תוכלו לבחור טקסטים מתוך שלל המקורות בספרייה שלנו ולצרף אותם לדף מקורות. הקלידו את שם המקור ואת מספר הפרק כדי להוסיף אותו לדף המקורות שלכם. בשלב הבא תוכלו לערוך ולקצר את המקור, לבחור בתרגום אחר ולארגן את המקורות בסדר הרצוי לכם.\"*/}\n        {/*    heImg=\"/static/img/sheets-landing-page/organizesources_HEB.jpg\"*/}\n        {/*    heImgAlt=\"סדרו את המקורות\"*/}\n        {/*    borderColor=\"#004E5F\"*/}\n        {/*/>*/}\n        {/*<Feature*/}\n        {/*    enTitle=\"Add Your Commentary\"*/}\n        {/*    enText=\"Make it more than sources. You can easily add your own commentary or texts from outside our library to create something new. You can also add images and videos to enhance your reader’s experience even more. \"*/}\n        {/*    enImg=\"/static/img/sheets-landing-page/commentary_sheet.jpg\"*/}\n        {/*    enImgAlt=\"Add Your Commentary\"*/}\n        {/*    heTitle=\"הוסיפו הערות משלכם\"*/}\n        {/*    heText=\"התוצר שלכם יכול להיות יותר מרשימת מקורות בלבד. תוכלו בקלות להוסיף הערות, פרשנות והסברים משלכם וכן טקסטים אחרים כדי ליצור משהו חדש. לחוויית לימוד משמעותית יותר תוכלו אפילו להוסיף תמונות וסרטונים.\"*/}\n        {/*    heImg=\"/static/img/sheets-landing-page/addcommentary_HEB.jpg\"*/}\n        {/*    heImgAlt=\"הוסיפו הערות משלכם\"*/}\n        {/*    borderColor=\"#CCB479\"*/}\n        {/*/>*/}\n        {/*<Feature*/}\n        {/*    enTitle=\"Share Your Work\"*/}\n        {/*    enText=\"You can share your sheet privately with a link, publicly on our site, or print it out for your class. Make your sheet public and add it to our library of over 200,000 user-created sheets. \"*/}\n        {/*    enImg=\"/static/img/sheets-landing-page/shareyoursheets.jpg\"*/}\n        {/*    enImgAlt=\"Share Your Work\"*/}\n        {/*    heTitle=\"שתפו\"*/}\n        {/*    heText=\"תוכלו לשתף את דף המקורות באופן פרטי בעזרת לינק, להדפיס אותו עבור הכיתה שלכם או להעלות אותו לאתר שלנו לתועלת ציבור הגולשים. אתם מוזמנים להוסיף את דף המקורות לספרייה שלנו – תוכלו למצוא בה למעלה מ־200,000 דפי מקורות שנוצרו על ידי גולשי האתר.\"*/}\n        {/*    heImg=\"/static/img/sheets-landing-page/shareyoursheets_HEB.jpg\"*/}\n        {/*    heImgAlt=\"שתפו\"*/}\n        {/*    borderColor=\"#802F3E\"*/}\n        {/*/>*/}\n        {/*<Feature*/}\n        {/*    enTitle=\"Find Great Resources\"*/}\n        {/*    enText=\"Browse user-created sheets by topic to research for your next class, learn something new, or to get inspiration for your own sheets. Filter results further by keyword and sort by relevance, views, or creation date.\"*/}\n        {/*    enImg=\"/static/img/sheets-landing-page/sheetssearch.jpg\"*/}\n        {/*    enImgAlt=\"Find Great Resources\"*/}\n        {/*    heTitle=\"אתרו מקורות מעולים\"*/}\n        {/*    heText=\"כדי להעשיר את השיעור הבא שלכם, ללמוד משהו חדש או לחפש השראה לדף מקורות משלכם, דפדפו לפי נושא בדפי מקורות שיצרו משתמשים אחרים. סננו את התוצאות לפי מילות מפתח או לפי רלוונטיות, תצוגה או תאריך.\"*/}\n        {/*    heImg=\"/static/img/sheets-landing-page/sheetssearch_HEB.jpg\"*/}\n        {/*    heImgAlt=\"אתרו מקורות מעולים\"*/}\n        {/*    borderColor=\"#5A99B7\"*/}\n        {/*/>*/}\n        {/*<Spacer />*/}\n        <CallToActionFooterWithButton\n            href=\"/sheets/212911?utm_source=ContextUS&utm_medium=LandingPage&utm_campaign=Sheets\"\n            he_href=\"/sheets/212911?utm_source=ContextUS&utm_medium=LandingPage&utm_campaign=Sheets_HEB\"\n            enText=\"Start creating a sheet today.\"\n            heText=\"צרו דף מקורות היום\"\n            enButtonText=\"How to Create a Sheet\"\n            heButtonText=\"איך יוצרים דף מקורות\"\n        />\n\n    </StaticPage>\n);\n\nconst SheetsLandingPage = () => (\n    <StaticPage>\n        <Header\n            enTitle=\"Create with Sefaria\"\n            enText=\"Mix and match sources from Sefaria’s library of Jewish texts, and add your comments, images and videos.\"\n            enImg=\"/static/img/sheets-landing-page/sheetspage_headerimage.png\"\n            enImgAlt=\"Sefaria Sheets\"\n            enActionURL=\"/sheets/new?utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets\"\n            enActionText=\"Make a Sheet\"\n            heTitle=\"דפי מקורות\"\n            heText=\"בחרו לכם מקורות מארון הספרים היהודי של ספריא והוסיפו הערות, תמונות או סרטונים משלכם.\"\n            heImg=\"/static/img/sheets-landing-page/sheetspage_headerimage_HEB.png\"\n            heImgAlt=\"דפי מקורות\"\n            heActionURL=\"/sheets/new?utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets_HEB\"\n            heActionText=\"בנו דף מקורות\"\n        />\n        <GreyBox light={true}>\n            <H2Block\n                en=\"Discover new ways to learn & teach\"\n                he=\"גלו דרכים חדשות ללמוד וללמד\"\n            />\n        </GreyBox>\n        <Feature\n            enTitle=\"Organize Sources\"\n            enText=\"Sheets let you mix and match sources from our library. Type in a source title and chapter to add it to your sheet, then edit the source to cut it down or customize  the translation. Use sources in any order you wish. \"\n            enImg=\"/static/img/sheets-landing-page/organizesources.jpg\"\n            enImgAlt=\"Organize Sources\"\n            heTitle=\"סדרו את המקורות\"\n            heText=\"תוכלו לבחור טקסטים מתוך שלל המקורות בספרייה שלנו ולצרף אותם לדף מקורות. הקלידו את שם המקור ואת מספר הפרק כדי להוסיף אותו לדף המקורות שלכם. בשלב הבא תוכלו לערוך ולקצר את המקור, לבחור בתרגום אחר ולארגן את המקורות בסדר הרצוי לכם.\"\n            heImg=\"/static/img/sheets-landing-page/organizesources_HEB.jpg\"\n            heImgAlt=\"סדרו את המקורות\"\n            borderColor=\"#004E5F\"\n        />\n        <Feature\n            enTitle=\"Add Your Commentary\"\n            enText=\"Make it more than sources. You can easily add your own commentary or texts from outside our library to create something new. You can also add images and videos to enhance your reader’s experience even more. \"\n            enImg=\"/static/img/sheets-landing-page/commentary_sheet.jpg\"\n            enImgAlt=\"Add Your Commentary\"\n            heTitle=\"הוסיפו הערות משלכם\"\n            heText=\"התוצר שלכם יכול להיות יותר מרשימת מקורות בלבד. תוכלו בקלות להוסיף הערות, פרשנות והסברים משלכם וכן טקסטים אחרים כדי ליצור משהו חדש. לחוויית לימוד משמעותית יותר תוכלו אפילו להוסיף תמונות וסרטונים.\"\n            heImg=\"/static/img/sheets-landing-page/addcommentary_HEB.jpg\"\n            heImgAlt=\"הוסיפו הערות משלכם\"\n            borderColor=\"#CCB479\"\n        />\n        <Feature\n            enTitle=\"Share Your Work\"\n            enText=\"You can share your sheet privately with a link, publicly on our site, or print it out for your class. Make your sheet public and add it to our library of over 200,000 user-created sheets. \"\n            enImg=\"/static/img/sheets-landing-page/shareyoursheets.jpg\"\n            enImgAlt=\"Share Your Work\"\n            heTitle=\"שתפו\"\n            heText=\"תוכלו לשתף את דף המקורות באופן פרטי בעזרת לינק, להדפיס אותו עבור הכיתה שלכם או להעלות אותו לאתר שלנו לתועלת ציבור הגולשים. אתם מוזמנים להוסיף את דף המקורות לספרייה שלנו – תוכלו למצוא בה למעלה מ־200,000 דפי מקורות שנוצרו על ידי גולשי האתר.\"\n            heImg=\"/static/img/sheets-landing-page/shareyoursheets_HEB.jpg\"\n            heImgAlt=\"שתפו\"\n            borderColor=\"#802F3E\"\n        />\n        <Feature\n            enTitle=\"Find Great Resources\"\n            enText=\"Browse user-created sheets by topic to research for your next class, learn something new, or to get inspiration for your own sheets. Filter results further by keyword and sort by relevance, views, or creation date.\"\n            enImg=\"/static/img/sheets-landing-page/sheetssearch.jpg\"\n            enImgAlt=\"Find Great Resources\"\n            heTitle=\"אתרו מקורות מעולים\"\n            heText=\"כדי להעשיר את השיעור הבא שלכם, ללמוד משהו חדש או לחפש השראה לדף מקורות משלכם, דפדפו לפי נושא בדפי מקורות שיצרו משתמשים אחרים. סננו את התוצאות לפי מילות מפתח או לפי רלוונטיות, תצוגה או תאריך.\"\n            heImg=\"/static/img/sheets-landing-page/sheetssearch_HEB.jpg\"\n            heImgAlt=\"אתרו מקורות מעולים\"\n            borderColor=\"#5A99B7\"\n        />\n        <H2Block\n            en=\"See what people are making with Sheets\"\n            he=\"ראו מה משתמשים אחרים יוצרים בעזרת דפי המקורות שלהם\"\n        />\n        <EnBlock>\n            <Section>\n                <Sheet\n                    title=\"Creation and Consciousness\"\n                    link=\"/sheets/17566?lang=bi&utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets\"\n                    author=\"Michael Feuer\"\n                    image=\"/static/img/sheets-landing-page/michael.png\"\n                />\n                <Sheet\n                    title=\"Is Love the Death of Duty? A Tanakh Take on the Game of Thrones Maxim\"\n                    link=\"/sheets/184685?lang=bi&utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets\"\n                    author=\"Olivia Friedman\"\n                    image=\"/static/img/sheets-landing-page/olivia.png\"\n                />\n                <Sheet\n                    title=\"Practical Torah for Time Management\"\n                    link=\"/sheets/193023?utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets\"\n                    author=\"Loren Berman (Moishe House)\"\n                    image=\"/static/img/sheets-landing-page/loren.png\"\n                />\n                <Sheet\n                    title=\"The Four (Thousand) Questions: Cultivating Question-Asking at Your Pesach Seder\"\n                    link=\"/sheets/9219?lang=bi&utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets\"\n                    author=\"Dasi Fruchter\"\n                    image=\"/static/img/sheets-landing-page/dasi.png\"\n                />\n            </Section>\n        </EnBlock>\n        <HeBlock>\n            <Section>\n                <Sheet\n                    title=\"תפילת הדרך\"\n                    link=\"/sheets/216261?lang=he&utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets_HEB\"\n                    author=\"אתר מדרשת\"\n                    image=\"/static/img/sheets-landing-page/midreshet.png\"\n                />\n                <Sheet\n                    title=\"כיצד למד הבעל שם טוב את התורה?\"\n                    link=\"/sheets/112651?lang=he&utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets_HEB\"\n                    author=\"יכין אפשטיין (זושא: מגלים את הסיפור החסידי)\"\n                    image=\"/static/img/sheets-landing-page/yachin.png\"\n                />\n                <Sheet\n                    title=\"ילדים רואים את עצמם כאילו יצאו ממצרים\"\n                    link=\"/sheets/222661?lang=he&utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets_HEB\"\n                    author=\"חדוה יחיאלי\"\n                    image=\"/static/img/sheets-landing-page/hedva.png\"\n                />\n                <Sheet\n                    title=\"מעשה ברבי ישמעאל\"\n                    link=\"/sheets/141399?lang=he&utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets_HEB\"\n                    author=\"יורם גלילי (בואו נלמד משפט ויושר)\"\n                    image=\"/static/img/sheets-landing-page/yoram.png\"\n                />\n            </Section>\n        </HeBlock>\n        <Section>\n            <SimpleButton\n                he=\"חפשו עוד לפי נושא\"\n                en=\"Explore More by Topic\"\n                href=\"/topics?utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets\"\n                he_href=\"/topics?utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets_HEB\"\n            />\n        </Section>\n        <Spacer />\n        <CallToActionFooterWithButton\n            href=\"/sheets/228095?utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets\"\n            he_href=\"/sheets/226003?utm_source=Sefaria&utm_medium=LandingPage&utm_campaign=Sheets_HEB\"\n            enText=\"Start creating a sheet today.\"\n            heText=\"צרו דף מקורות היום\"\n            enButtonText=\"How to Create a Sheet\"\n            heButtonText=\"איך יוצרים דף מקורות\"\n        />\n\n    </StaticPage>\n);\n\n\n\n\n\nconst RemoteLearningPage = () => (\n    <StaticPage>\n        <Header\n            enTitle=\"Remote Learning\"\n            enText=\"Discover the power of online education. Sefaria is always available to provide foundational Jewish texts, educational materials, and the tools to allow you to engage with dynamic Jewish learning.\"\n            enImg=\"/static/img/distance-learning-landing-page/remotelearning_headerimage.png\"\n            enImgAlt=\"Sefaria on tablet.\"\n            enActionURL={null}\n            enActionText={null}\n            heTitle=\"מקורות ללימוד וללמידה מרחוק\"\n            heText=\"לומדים רבים ברחבי העולם מגלים את הכוח והפוטנציאל שיש בלמידה מקוונת. אתר ספריא פתוח לכולם בחינם, ומציע מאגר רחב של מקורות יהודיים וכלים מתקדמים להעצמת הלמידה.\"\n            heImg=\"/static/img/distance-learning-landing-page/remotelearningpage_headerimage_HEB.png\"\n            heImgAlt=\"Sefaria on tablet.\"\n            heActionURL={null}\n            heActionText={null}\n        />\n        <GreyBox>\n            <ButtonRow enTitle=\"Browse our Latest Resources\" heTitle=\"מקורות בספריא\">\n                <SimpleButton\n                    white={true}\n                    rounded={false}\n                    tall={true}\n                    href=\"/collections/educator-newsletters?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                    he_href=\"/sheets/219410?lang=he?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                    he=\"דפי מקורות אקטואליים\"\n                    en=\"Educator Newsletters\"\n                />\n                <SimpleButton\n                    white={true}\n                    rounded={false}\n                    tall={true}\n                    href=\"/sheets/227733?lang=bi?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                    he_href=\"/sheets/227981.5?lang=he&utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                    he=\"נגיף הקורונה\"\n                    en=\"A Jewish Response to COVID-19\"\n                />\n                <SimpleButton\n                    white={true}\n                    rounded={false}\n                    tall={true}\n                    href=\"/collections/KGvMhYW3#?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                    he_href=\"/collections/KGvMhYW3?lang=he&utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                    he=\"עשרת הדיברות ללמידה מרחוק\"\n                    en=\"Online Learning Resources\"\n                />\n            </ButtonRow>\n        </GreyBox>\n        <GreyBox light={true}>\n            <H2Block en=\"Resources for Everyone\" he=\"לומדים עם ספריא\" />\n        </GreyBox>\n        <Feature\n            enTitle=\"Learners\"\n            enText=\"Whether you’re a pro, or a new user, Sefaria has resources to help your virtual study thrive. Join a Sefaria 101 webinar, browse our tutorials, or sign up for the online student training course to up your skills on all things Sefaria. <a href='/register?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning'>Create a free account</a> to track your learning, save texts, and follow users creating things that interest you.\"\n            enImg=\"/static/img/distance-learning-landing-page/remotelearningpage_learners.png\"\n            enImgAlt=\"Source Sheet - Pesach 101\"\n            heTitle=\"לומדים עם ספריא\"\n            heText={\n                \"ספריא נותנת כלים להעצים את הלימוד המקוון שלכם. השתמשו בוובינרים וב'מדריך למשתמש המתחיל' כדי ללמוד איך להשתמש באתר. \"\n                + \"<a href='/register?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning'>\"\n                + \"צרו חשבון משתמש\"\n                + \"</a>\"\n                + \" כדי לארגן את חומרי הלימוד שלכם, לשמור מקורות ולעקוב אחר חומרים של אנשים אחרים שמעניינים אתכם.\"\n            }\n            heImg=\"/static/img/distance-learning-landing-page/remotelearningpage_learners_HEB.png\"\n            heImgAlt=\"\"\n            borderColor=\"#004E5F\"\n        />\n        <ButtonRow light={true}>\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"/collections/webinars-for-learners?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he_href=\"/sheets/224909?lang=he?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he=\"וובינרים\"\n                en=\"Webinars for Learners\"\n            />\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"/collections/sefaria-faqs?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he_href=\"/sheets/224919?lang=he?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he=\"מדריך למשתמש המתחיל\"\n                en=\"Tutorials for Learners\"\n            />\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"/collections/sefaria-student-course?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he_href=\"/sheets/228260?lang=he&utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he=\"הסודות של ספריא\"\n                en=\"Student Course\"\n            />\n        </ButtonRow>\n        <Feature\n            enTitle=\"Educators & Rabbis\"\n            enText=\"Sefaria is here to support your online teaching. Our <a href='/educators?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning'>Learning Department</a> has a variety of resources to get you started with distance learning using Sefaria. <a href='/register?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning'>Create a free account</a> to make and assign source sheets to your students, organize your sheets into groups, and save texts.\"\n            enImg=\"/static/img/distance-learning-landing-page/remotelearningpage_educators.png\"\n            enImgAlt=\"Source Sheet - Teaching with Sefaria Online\"\n            heTitle=\"מורים ואנשי הוראה\"\n            heText={\"צוות ספריא תומך בהוראה דיגיטלית ובהוראה מרחוק. למדו בעזרת החומרים שצוות החינוך שלנו יצר עבורכם, בכיתה ומחוצה לה. \"\n                + \"<a href='/register?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning'>\"\n                + \"צרו חשבון משתמש\"\n                + \"</a>\"\n                + ' כדי ליצור דפי מקורות עבורכם או עבור תלמידים, לארגן דפי מקורות ע\"פי נושאים ולשמור מקורות נבחרים.'\n            }\n            heImg=\"/static/img/distance-learning-landing-page/remotelearningpage_educators_HEB.png\"\n            heImgAlt=\"\"\n            borderColor=\"#CCB479\"\n        />\n        <ButtonRow light={true}>\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"/collections/webinars-for-educators?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he_href=\"/sheets/224909?lang=he?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he=\"וובינרים\"\n                en=\"Webinars for Educators\"\n            />\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"/collections/tutorials-for-educators?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he_href=\"/sheets/224923?lang=he?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he=\"קורס למורים: 'ספריא בכיתה'\"\n                en=\"Tutorials for Educators\"\n            />\n            <SimpleButton\n                white={true}\n                rounded={false}\n                tall={true}\n                href=\"https://sefaria.typeform.com/to/tJVexqpG?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he_href=\"/sheets/223245?lang=he?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\"\n                he=\"טיפים להוראה עם ספריא\"\n                en=\"Educator Course\"\n            />\n        </ButtonRow>\n        <Feature\n            enTitle=\"Institutions & Organizations\"\n            enText=\"Is it time to start incorporating digital texts into your website, blog, or app? Sefaria has you covered. All of our software is open source and our texts are all in the creative commons – meaning you can use anything we have for your own projects. Take a look at these resources and get in touch with your web/app developer to start including Sefaria’s texts on your site.\"\n            enImg=\"/static/img/distance-learning-landing-page/remotelearningpage_developers.png\"\n            enImgAlt=\"Source Sheet - Link Sefaria to your Site\"\n            heTitle=\"מוסדות וארגונים\"\n            heText=\"האם תרצו להטמיע מקורות דיגיטליים לאתר, לבלוג או לאפליקציה שלכם? ספריא יכולה לסייע לכם. כל המידע שיש באתר הינו בקוד פתוח, ותוכלו להשתמש בכל המקורות של ספריא עבור הפרוייקטים האישיים שלכם. אתם מוזמנים לפנות למפתחים ולמהנדסים שלכם בכדי להשתמש במקורות של ספריא באתר שלכם.\"\n            heImg=\"/static/img/distance-learning-landing-page/remotelearningpage_developers_HEB.png\"\n            heImgAlt=\"\"\n            borderColor=\"#802F3E\"\n        />\n        <ButtonRow light={true}>\n            <SimpleButton white={true} tall={true} rounded={false} href=\"/linker?utm_source=sefaria&utm_medium=landingpage&utm_campaign=remotelearning\" he=\"לינקר דו צדדי\" en=\"Two-Way Linker\"/>\n            <SimpleButton white={true} tall={true} rounded={false} href=\"https://github.com/Sefaria/Sefaria-Project/wiki/Projects-Powered-by-Sefaria\" he=\"אתרים המופעלים ע”י ספריא\" en=\"Powered by Sefaria\"/>\n            <SimpleButton white={true} tall={true} rounded={false} href=\"https://github.com/Sefaria/Sefaria-Project/wiki#developers\" he=\"Github גיטהאב\" en=\"GitHub\"/>\n        </ButtonRow>\n        <CallToActionFooterWithNewsletter\n            enText=\"Sign up for our mailing list to get updates in your inbox.\"\n            heText=\"הרשמו לרשימת התפוצה שלנו על מנת לקבל עדכונים מספריא.\"\n            includeEducatorOption={true}\n        />\n    </StaticPage>\n);\n\nconst EducatorsPage = () => (\n  <StaticPage>\n    <HeaderForEducatorsPage/>\n    <GreyBox>\n      <H2Block en=\"Empower and Engage\" he=\"מסע של גילוי\"/>\n      <EnBlock padded={true}>\n        <p>Empower your students with Sefaria’s free library of digital texts, in Hebrew and English translation, and use our teaching materials to spark creativity and foster independence. Learn new ways of teaching and engaging your students in the centuries-old conversation around Jewish texts, and join Sefaria’s Educator community.</p>\n      </EnBlock>\n      <HeBlock padded={true}>\n        <p>            דמיינו את התלמידים שלכם  מטיילים במסדרונות ספריית ענק ושולפים ספרים עתיקים וחדשים בהם מתגלים דמויות, רעיונות ומחשבות מתוך העולם היהודי שנכתבו במשך 3000 שנה. בספריא החלום הופך למציאות. הובילו את התלמידים למסע של גילוי ולמידה בין המקורות של ארון הספרים היהודי.</p>\n      </HeBlock>\n      <Spacer/>\n    </GreyBox>\n\n\n    <Feature\n      enTitle=\"Professional Development\"\n      enText=\"Whether you’re a pro or a new user, Sefaria has resources to help you and your students learn and thrive. Join a Sefaria webinar, browse our tutorials, sign up for our Educator course, or request a custom workshop for your team or your students.\"\n      enImg=\"/static/img/educators-landing-page/teaching-with-sefaria-library.png\"\n      enImgAlt=\"Professional Development\"\n      heTitle=\"איך להשתמש באתר?\"\n      heText='נתחיל בהתחלה: \"המדריך למשתמש בספריא\" מורכב מיחידות מודרכות בהן נלמדות צעד אחר צעד האפשרויות השונות באתר ספריא. באסופה \"ספריא לתלמידים\" נמצאות הדרכות על השימוש באתר שמותאמות במיוחד עבור למידה עצמאית של תלמידים. כדי ללמוד ולהכיר חלק מסוים באתר תוכלו להשתמש באסופה של \"שאלות נפוצות\".'\n      heImg=\"/static/img/educators-landing-page/teaching-with-sefaria-library-heb.png\"\n      heImgAlt=\"Professional Development\"\n      borderColor={palette.colors.darkblue}\n    />\n\n    <ButtonRow white={true} enTitle=\"\" heTitle=\"\">\n      { [\n          [\"Online Educator Course\", \"מדריך למשתמש בספריא\", \"https://sefaria.typeform.com/to/tJVexqpG\", \"https://www.sefaria.org.il/sheets/361600?lang=he\"],\n          [\"Lesson Plans on Sefaria\", \"ספריא לתלמידים\", \"/collections/pedagogy-on-sefaria-exemplary-lesson-plans\", \"https://www.sefaria.org.il/collections/KGMlHrvA\"],\n          [\"Schedule A Workshop\", \"שאלות נפוצות\", \"https://sefaria.typeform.com/to/Pl3biam8\", \"https://www.sefaria.org.il/collections/%D7%A9%D7%90%D7%9C%D7%95%D7%AA-%D7%A0%D7%A4%D7%95%D7%A6%D7%95%D7%AA-%D7%91%D7%A1%D7%A4%D7%A8%D7%99%D7%90\"]\n      ].map(i =>\n          <SimpleButton\n              white={true}\n              rounded={false}\n              tall={true}\n              newTab={true}\n              href={i[2]}\n              he_href={i[3]}\n              he={i[1]}\n              en={i[0]}\n          />)\n      }\n    </ButtonRow>\n\n     <Feature\n      enTitle=\"Resources for Educators\"\n      enText=\"Stay up to date with the latest news and resources from Sefaria. Learn from other educators’ experiences teaching and using Sefaria’s resources, and get inspired to try new things in your work. Discover our adaptable lesson plans and resources, or find learning materials and activities ready-to-go for your classroom!\"\n      enImg=\"/static/img/educators-landing-page/megillah-activity.png\"\n      enImgAlt=\"Resources for Educators\"\n      heTitle=\"מערכי שיעור וחומרי הוראה\"\n      heText=\"צוות החינוך של ספריא יצר ואסף עבורכם המורים, חומרי הוראה בעזרתם תוכלו להעשיר ולהעמיק את הלמידה. <br><br>לפניכם אסופה של מערכי שיעור בנושאים שונים, הצעה לתהליך של עבודת חקר באמצעות ספריא ורעיונות להערכה חלופית.\"\n      heImg=\"/static/img/educators-landing-page/369968.png\"\n      heImgAlt=\"\"\n      borderColor={palette.colors.gold}\n      link=\"\"\n     />\n\n    <ButtonRow white={true} enTitle=\"\" heTitle=\"\">\n      { [\n          [\"Past Educator Newsletters\", \"10 רעיונות להערכה חלופית\", \"/collections/qZ0UWi5y\", \"https://www.sefaria.org.il/sheets/281661?lang=he\"],\n          [\"Sefaria in Action\", \"עבודת חקר: מסע בין מקורות\", \"/sheets/311116?lang=bi\", \"https://www.sefaria.org.il/collections/%D7%A2%D7%91%D7%95%D7%93%D7%AA-%D7%97%D7%A7%D7%A8-%D7%91%D7%A1%D7%A4%D7%A8%D7%99%D7%90-%D7%9E%D7%A1%D7%A2-%D7%91%D7%99%D7%9F-%D7%9E%D7%A7%D7%95%D7%A8%D7%95%D7%AA\"],\n          [\"For Your Students\", \"מערכי שיעור\", \"/sheets/311291?lang=bi\", \"https://www.sefaria.org.il/sheets/361593?lang=he\"]\n      ].map(i =>\n          <SimpleButton\n              white={true}\n              rounded={false}\n              tall={true}\n              newTab={true}\n              href={i[2]}\n              he_href={i[3]}\n              he={i[1]}\n              en={i[0]}\n          />)\n      }\n    </ButtonRow>\n    <Feature\n      enTitle=\"Sefaria for Educators How-Tos\"\n      enText=\"Browse our FAQ’s and learn more about how to use Sefaria’s tools to study and to teach. Sefaria’s Learning Team is always available to support you and your students or answer any questions you might have. If there are texts, translations, lesson plans, or student materials that would enhance your teaching, please share that with us as well.\"\n      enImg=\"/static/img/educators-landing-page/tutorials-for-educators.png\"\n      enImgAlt=\"Sefaria for Educators How-Tos\"\n      heTitle=\"גם את זה יש בספריא! אל תחמיצו!\"\n      heText='מאגר ספריא הוא גדול ובתוכו אפשרויות לימוד רבות. מוזמנים לעיין באסופות מעניינות ושימושיות, להכיר את עמוד הקהילה והתכנים שבו וגם לגלות את \"הסודות של ספריא\"'\n      heImg=\"/static/img/educators-landing-page/228260.png\"\n      heImgAlt=\"\"\n      borderColor={palette.colors.red}\n    />\n\n    <ButtonRow white={true} enTitle=\"\" heTitle=\"\">\n      { [\n          [\"Educator FAQ\", \"אסופות מומלצות\", \"/collections/tutorials-for-educators\",\"https://www.sefaria.org.il/sheets/360599?lang=he\"],\n          [\"Request New Resources\", \"עמוד הקהילה\", \"https://sefaria.typeform.com/to/aaZmi4JD\",\"https://www.sefaria.org.il/community\"],\n          [\"Webinars for Educators\", \"הסודות של ספריא\", \"/collections/qJLU68HQ\",\"https://www.sefaria.org.il/sheets/228260.2?lang=he\"]\n      ].map(i =>\n          <SimpleButton\n              white={true}\n              rounded={false}\n              tall={true}\n              newTab={true}\n              href={i[2]}\n              he_href={i[3]}\n              he={i[1]}\n              en={i[0]}\n          />)\n      }\n    </ButtonRow>\n\n    <GreyBox>\n      <H2Block en=\"Get in touch\" he=\"אנחנו רוצים לשמוע מכם\"/>\n      <EnBlock padded={true}>\n          <p>Was your teaching enhanced by Sefaria? Did you have a “Sefaria moment” with your students? Share it with us! We love to hear how educators are using Sefaria in the field and we learn from the feedback we receive. We are also available to answer all of your Sefaria questions. Write to us at education@sefaria.org.</p>\n      </EnBlock>\n      <HeBlock padded={true}>\n          <p>אנחנו לומדים רבות ממורים ותלמידים שמספרים לנו על ההתנסות שלהם עם ספריא. נשמח מאד אם תשתפו אותנו בחוויית הלימוד שלכם. אתם מוזמנים ליצור איתנו קשר כדי לתאם הדרכה למורים וגם לתלמידים,  לספר לנו על חוויית הלמידה עם ספריא ולהתייעץ איתנו בכל דבר ועניין</p>\n          <p>כתבו לנו לכתובת המייל hello@sefaria.org</p>\n\n      </HeBlock>\n      <Spacer/>\n    </GreyBox>\n\n    <H2Block en=\"What the educators have to say…\" he=\"מורים ותלמידים ממליצים\"/>\n\n    <EnBlock>\n    <Section>\n      <UserQuote\n          heText=\"\"\n          enText=\"As an educator, I have come to appreciate Sefaria more and more. I now make sure to expose all of my students to what Sefaria has to offer. I show them how to use Sefaria to make source sheets. <b>I love hearing their excitement as they realize how easy it is to make a sheet on Sefaria and how organized their final products look.</b> They also are impressed at how Sefaria helps them do research by finding sources that connect to their topic. I am grateful that Sefaria is there to provide Torah resources to my students after they complete their formal Jewish education. Overall, the experience of using Sefaria with my students has been very positive!\"\n          enName=\"Sarit Anstandig | High School Judaics Teacher | Farber Hebrew Day School\"\n          heName=\"\"\n          image=\"/static/img/educators-landing-page/sarit anstandig.png\"\n      />\n      <UserQuote\n          enText=\"I really appreciate Sefaria. I use it all the time studying for tests, doing homework, doing learning on my own or even preparing for a seminary interview. <b>The fact that I can quickly and easily find whatever I need wherever I am and understand and study it is incredible.</b> I'm so so grateful for Sefaria. I've introduced all my friends to it and they all use it now too.\"\n          heText=\"\"\n          enName=\"Anonymous day school student\"\n          heName=\"\"\n          image=\"/static/img/educators-landing-page/anonymous.png\"\n      />\n      <UserQuote\n        heText=\"\"\n        enText=\"Digital learning is making its way into all aspects of our students' education and learning, and if we are not on the train we will lose the hearts and minds of our students. We risk Torah being viewed as antiquated if it does not respond to our students' way of thinking about the world. Equally important, there are tools at our disposal which can enhance the experience of learning Torah and it would be malpractice not to see them. Through Sefaria's innovative educational features, my students' learning has been greatly enhanced. <b>We owe it to our students, and to ourselves, to make the most of this platform and to help make it better.</b>\"\n        enName=\"Leib Zalesch | Judaic Studies Teacher | Beth Tfiloh Dahan Community School\"\n        heName=\"\"\n        image=\"/static/img/educators-landing-page/Leib Pic Prof.png\"\n      />\n      <UserQuote\n        enText=\"Students have exposure to so many more commentaries than they would have in the past because of Sefaria and online texts. What I like most about Sefaria is the ability to compare and contrast texts clearly with the text side by side. It is a very powerful tool in the classroom and allows students to be more active in the learning process. Sefaria has also enhanced the level of sophistication of student project based learning.\"\n        heText=\"\"\n        enName=\"Yael Goldfischer | Chair: Chumash Department | The Frisch School\"\n        heName=\"\"\n        image=\"/static/img/educators-landing-page/Yael Goldfischer.png\"\n      />\n    </Section>\n    </EnBlock>\n\n\n    <HeBlock>\n    <Section>\n      <UserQuote\n          heText='מצאתי ש-\"ספריא\" היא דרך טובה להמחיש לתלמידים את מה שהתגלה לנו והפעים אותנו, ומה שאנחנו לפעמים מתקשים להסביר להם: שהיהדות היא מארג שלם של הקשרים, שאינו מפסיק ליצור ולהתקיים. ב-\"ספריא\" ההקשרים האלה נראים לעין, מתגלים בקליק, ולוקחים את התלמיד/ה איתם למסע מסחרר שאינו נגמר: דבר מוביל לדבר, דבר קשור לדבר: פסוק לפרשנות, למדרש, לדף לימוד, לשיר עכשווי שבו מצוטט פסוק, שגם עליו יש מדרש, וכך הלאה וכך הלאה. \"ספריא\" היא המחשה של העושר הבלתי-נתפס של היצירה היהודית, והיא גם הזמנה לקחת בו חלק ולהוסיף את החוליה שלך לשלשלת הזהב.'\n          enText=\"\"\n          enName=\"\"\n          heName='יורם גלילי, מורה לתושב\"ע, מנחה מורים במשרד החינוך ובתכנית בארי של מכון הרטמן'\n          image=\"/static/img/educators-landing-page/yoram-galil.png\"\n      />\n      <UserQuote\n          enText=\"\"\n          heText='עבורי ספריא הוא מרחב פעילות חינוכי רב ענפים, בית מדרש דיגיטלי שלם. משמש עבורי כספריה  ללימוד ולהכנת חומרי לימוד ודפי מקורות  לתלמידיי. עבור תלמידיי זה המקום שאליו נכנסים לחפש, לקרא ולבנות דפי מקורות אותם הם לומדים בחברותא ומלמדים את חבריהם.    דבר גדול הוא שתלמיד נכנס כל פעם להיכל, לספריה שלמה מחפש ומדפדף  ואגב כך  נחשף לעושר גדול - זה דבר חשוב מאין כמותו. כך  שלפעמים מחפשים אתונות ומוצאים מלוכה.'\n          enName=\"\"\n          heName='איציק רבי, מורה ומדריך ארצי לתושב\"ע ומשפט עברי בחינוך הממלכתי, מנחה להוראת תרבות יהודית ישראלית בתכנית בארי של מכון הרטמן'\n          image=\"/static/img/educators-landing-page/izhak-rabi.png\"\n      />\n      <UserQuote\n        heText='אני משתמשת בספריא לא פעם כמורה - לעתים בהכנת השיעורים בעצמי , אבל בעיקר - ככלי מעשי עבור התלמידות: עבור גישה לפרשנים ומקורות שלא נגישים להן בכיתה או בבית, להדגמת הקישוריות בין סוגיות בגמרא לבין פסיקת ההלכה, להיכרות עם הדמויות המוזכרות במקורות חז\"ל, ועוד. הכלי של דפי מקורות הוא נהדר כפרוייקט הערכה חלופית - תהליך של איתור חומרים, חשיבה על היחס ביניהם, והגעה לתוצר שיכול להיות מעניין גם לחברותיהן לכיתה וגם לציבור הרחב דרך האתר.'\n        enText=\"\"\n        enName=\"\"\n        heName='אביגיל גרוס-גלמן, מובילה רוחנית בתיכון \"פלך\" לבנות בזכרון יעקב'\n        image=\"/static/img/educators-landing-page/avigail-gross.png\"\n      />\n    </Section>\n    </HeBlock>\n\n\n    <div className=\"staticPageCallToActionFooter\">\n      <div className=\"staticPageBlockInner flexContainer\">\n        <SimpleInterfaceBlock classes=\"callToActionText\" en=\"Sign up for our mailing list to get updates in your inbox\" he=\"קבלו עדכונים והפניות למקורות מעניינים\" />\n        <SubscribeButton\n                     enAction={\"Sign up to get updates\"}\n                     heAction={\"הירשמו לקבלת הניוזלטר\"}\n                     heLists={\"Announcements_General_Hebrew|Announcements_Edu_Hebrew\"}\n                     enLists={\"Announcements_General|Announcements_Edu\"}\n                     redirectURL={\"/register?educator=true&next=/educators\"}\n        />\n      </div>\n    </div>\n\n\n  </StaticPage>\n);\n\nconst RabbisPage = () => (\n  <StaticPage>\n    <HeaderForRabbisPage/>\n    <GreyBox>\n      <H2Block en=\"Engage Your Community and Share Your Torah\" he=\"\"/>\n      <EnBlock padded={true}>\n        <p>Engage your community in learning using Sefaria’s free library of digital texts, in Hebrew and English translation. Enjoy having an extensive library at your fingertips for learning in the synagogue, on campus, at home or on the go. Share your Torah with Sefaria learners near and far.</p>\n      </EnBlock>\n      <Spacer/>\n    </GreyBox>\n\n\n    <Feature\n      enTitle=\"Sefaria in Your Community\"\n      enText=\"Explore the ways in which Sefaria supports teaching and learning. Whether you’re a pro or a new user, Sefaria has resources to help you and your community learn and thrive. Request a custom workshop for your team or your community, discover how to use Chavruta for learning events, and share your Divrei Torah and Sermons using Collections.\"\n      enImg=\"/static/img/rabbis-landing-page/sara+rabbis.jpg\"\n      enImgAlt=\"Sefaria in Your Community\"\n      borderColor={palette.colors.darkblue}\n    />\n\n    <ButtonRow white={true} enTitle=\"\" heTitle=\"\">\n      { [\n          [\"Schedule A Workshop\", \"שאלות נפוצות\", \"https://www.sefaria.org/sheets/370615?lang=bi\", \"https://www.sefaria.org.il/collections/%D7%A9%D7%90%D7%9C%D7%95%D7%AA-%D7%A0%D7%A4%D7%95%D7%A6%D7%95%D7%AA-%D7%91%D7%A1%D7%A4%D7%A8%D7%99%D7%90\"],\n          [\"Innovating with a Digital Library\", \"\", \"https://www.sefaria.org/sheets/415628?lang=bi\", \"\"],\n          [\"Collections: A Home for Sermons and Classes\", \"\", \"https://www.sefaria.org/sheets/370836?lang=bi\", \"\"]\n      ].map(i =>\n          <SimpleButton\n              white={true}\n              rounded={false}\n              tall={true}\n              newTab={true}\n              href={i[2]}\n              he_href={i[3]}\n              he={i[1]}\n              en={i[0]}\n          />)\n      }\n    </ButtonRow>\n\n     <Feature\n      enTitle=\"Resources for Rabbis\"\n      enText=\"Stay up to date with the latest news and resources from Sefaria. Find relevant texts and sheets for thousands of topics, use and share Sefaria’s Chavruta feature for your own chavruta study, and get inspired to try something new in your work.\"\n      enImg=\"/static/img/rabbis-landing-page/Sermon landing page screenshot.png\"\n      enImgAlt=\"Resources for Rabbis\"\n      borderColor={palette.colors.gold}\n      link=\"\"\n     />\n\n    <ButtonRow white={true} enTitle=\"\" heTitle=\"\">\n      { [\n          [\"Past Rabbi Newsletters\", \"\", \"https://www.sefaria.org/collections/T-5hbqOq?tab=sheets\", \"\"],\n          [\"Topics Tutorial\", \"\", \"https://www.sefaria.org/sheets/231377?lang=bi\", \"\"],\n          [\"Studying With a Partner: A Chavruta Tutorial\", \"\", \"https://www.sefaria.org/sheets/263246?lang=bi\", \"\"]\n      ].map(i =>\n          <SimpleButton\n              white={true}\n              rounded={false}\n              tall={true}\n              newTab={true}\n              href={i[2]}\n              he_href={i[3]}\n              he={i[1]}\n              en={i[0]}\n          />)\n      }\n    </ButtonRow>\n    <Feature\n      enTitle=\"Sefaria How-Tos\"\n      enText=\"Browse our Help Center and learn more about how to use Sefaria’s tools to study and to teach. Sefaria’s Learning Team is always available to support you or answer any questions you might have. If there are texts, translations, or learning materials that would enhance your work, please share that with us as well!\"\n      enImg=\"/static/img/rabbis-landing-page/help-center-screenshot.png\"\n      enImgAlt=\"Sefaria How-Tos\"\n      borderColor={palette.colors.red}\n    />\n\n    <ButtonRow white={true} enTitle=\"\" heTitle=\"\">\n      { [\n          [\"Help Center\", \"\", \"https://www.sefaria.org/collections/sefaria-faqs\",\"\"],\n          [\"Webinars\", \"\", \"https://www.sefaria.org/sheets/228105?lang=bi\",\"\"],\n          [\"Request New Resources\", \"\", \"https://sefaria.typeform.com/to/aaZmi4JD?typeform-source=www.sefaria.org\",\"\"]\n      ].map(i =>\n          <SimpleButton\n              white={true}\n              rounded={false}\n              tall={true}\n              newTab={true}\n              href={i[2]}\n              he_href={i[3]}\n              he={i[1]}\n              en={i[0]}\n          />)\n      }\n    </ButtonRow>\n\n    <GreyBox>\n      <H2Block en=\"Keep in touch\" he=\"אנחנו רוצים לשמוע מכם\"/>\n      <EnBlock padded={true}>\n          <p>Was your work enhanced by Sefaria? Did you have a “Sefaria moment” with your learning community? Share it with us! We love to hear how rabbis are using Sefaria in the field and we learn from the feedback we receive. We are also available to answer all of your Sefaria questions. Write to us at education@sefaria.org.</p>\n      </EnBlock>\n      <Spacer/>\n    </GreyBox>\n\n    <H2Block en=\"As the Rabbis say…\" he=\"מורים ותלמידים ממליצים\"/>\n\n    <EnBlock>\n    <Section>\n      <UserQuote\n          heText=\"\"\n          enText=\"“Sefaria is a gift to those of us seeking not just the conclusions to Halakhic arguments, but the entirety of the conversation; we are the ones who look up every citation and want to fully grasp the web of discourse for ourselves and Sefaria makes that so easy. It is equally a gift to those of us who teach and know the importance of providing readable and easy to find sources for our students. I use Sefaria to create and share annotated source sheets with some of the more complicated sources we discuss and invite my students to iterate on those sheets in turn. Before applying to rabbinical school, I studied how Sefaria shaped students' experiences of learning. Now, I am lucky to study Torah with my students using Sefaria.”\"\n          enName=\"Rabbanit Dr. Liz Shayne\"\n          heName=\"\"\n          image=\"/static/img/rabbis-landing-page/lizshayne 1.png\"\n      />\n      <UserQuote\n          enText=\"“Sefaria’s commitment to digital text access for all who seek to take hold of Torah played a pivotal and unparalleled role in my rabbinical school journey. As a blind woman in the rabbinate, Sefaria’s digital library enabled me to access texts with ease for both educational and Torah lishma purposes. With much hakarat hatov do I thank Sefaria for the holy work you are doing.”\"\n          heText=\"\"\n          enName=\"Rabbi Lauren Tuchman\"\n          heName=\"\"\n          image=\"/static/img/rabbis-landing-page/lauren-tuchman.png\"\n      />\n      <UserQuote\n        heText=\"\"\n        enText=\"“As a Rabbi, I have come to rely on Sefaria for my own lishmah study, as well as for creating source sheets for programs and study sessions in my community. I look forward to all that Sefaria still has in store for the Jewish world, and am proud to continue supporting your work.”\"\n        enName=\"Rabbi Max Chaiken | Temple Emanuel | Andover, MA\"\n        heName=\"\"\n        image=\"/static/img/rabbis-landing-page/Rabbi-Chaiken-Headshot.png\"\n      />\n      <UserQuote\n        enText=\"“Due to Hurricane Harvey in 2017 I lost about half of my library.  While some of the lost seforim have been replaced, I do not have the physical space to have access to them.  I have relied on the amazing Sefaria library to make up for the books that I am missing or cannot get to. I use Sefaria on a daily basis and there are some days that it is open on my computer all day long.  Sefaria and I spend extra time together on Friday when it is Drasha preparation time. I am grateful for the regular updates and additions Sefaria makes to the library.”\"\n        heText=\"\"\n        enName=\"Rabbi Barry Gelman | Director of the Bobbi and Vic Samuels Center For Jewish Living and Learning | ERJCC in Houston\"\n        heName=\"\"\n        image=\"/static/img/rabbis-landing-page/Rabbi Gelman 1.png\"\n      />\n      <UserQuote\n        enText=\"“My community and I worked this summer to put together a haggadah for the high holidays and wanted to thank you for all the help Sefaria provided as a source for Hebrew texts and inspiration. We couldn't dive as deep into our faith as we do without you! You offer us an ocean of Torah and boats to set sail upon it.”\"\n        heText=\"\"\n        enName=\"Rabbi David Winship | Temple Beth David of the South Shore\"\n        heName=\"\"\n        image=\"/static/img/rabbis-landing-page/rabbi-david-winship.png\"\n      />\n    </Section>\n    </EnBlock>\n\n\n\n    <div className=\"staticPageCallToActionFooter\">\n      <div className=\"staticPageBlockInner flexContainer\">\n        <SimpleInterfaceBlock classes=\"callToActionText\" en=\"Sign up for our mailing list to get updates in your inbox\" he=\"קבלו עדכונים והפניות למקורות מעניינים\" />\n        <SubscribeButton\n             enAction={\"Sign up for Rabbi Newsletter\"}\n             heAction={\"הירשמו לקבלת הניוזלטר\"}\n             heLists={\"Announcements_General_Hebrew|Announcements_Edu_Hebrew\"}\n             enLists={\"Announcements_General|Announcements_Edu\"}\n             redirectURL={\"/register?next=/rabbis\"}\n            />\n      </div>\n    </div>\n\n  </StaticPage>\n);\n\nconst PBSC2020LandingPage = () => (\n    <StaticPage>\n        <Header\n            enTitle=\"Powered by Sefaria Contest 2020\"\n            enText=\"Explore the Projects\"\n            enImg=\"/static/img/pbsc-2020-landing-page/codemockup3.png\"\n            enImgAlt=\"\"\n            heTitle=\"תחרות פיתוח תוכנה 2020\"\n            heText=\"הכירו את המיזמים\"\n            heImg=\"/static/img/pbsc-2020-landing-page/codemockup3.png\"\n            heImgAlt=\"\"\n        />\n\n        <GreyBox>\n            <H2Block en=\"Inviting Innovation\" he=\"\"/>\n            <EnBlock padded={true}>\n                <p>In an effort to seed the digital future of Jewish texts, the Powered by Sefaria Contest was launched in July 2020 — inviting the global Sefaria community to make use of our free and open digital dataset of Jewish texts, translations, and interconnections. Over the years, dozens of third parties have created apps, visualizations, and conducted research using our data or API, and we wanted to see what else our community could dream up. We saw tremendous enthusiasm and welcomed 50 high quality submissions from Sefaria users around the world. <b>Keep reading to learn more about the two winners and some incredibly innovative honorable mentions.</b></p>\n            </EnBlock>\n            <HeBlock padded={true}>\n                <p>מתוך רצון לטפח את העתיד הדיגיטלי של מקורות יהודיים, הוצאנו לפועל ביולי 2020 את תחרות פיתוח התוכנה של ספריא. הזמנו את קהילת ספריא ברחבי העולם להשתמש במסד הנתונים הפתוח שלנו, הכולל מקורות יהודיים, תרגומים וקישורים אינטרטקסטואליים. במשך השנים השתמשו עשרות גופי צד שלישי ב־API שלנו, ערכו בעזרתו מחקרים ויצרו באמצעותו יישומים ותרשימים גרפיים. כעת רצינו לראות מה עוד הקהילה שלנו מסוגלת להמציא. נענינו בהתלהבות יוצאת דופן וקיבלנו בברכה 50 מיזמים איכותיים מאוד ממשתמשי ספריא ברחבי העולם. המשיכו לקרוא כדי לדעת עוד על שני הזוכים ועל כמה רעיונות יצירתיים מאוד הראויים בעינינו למקום של כבוד.</p>\n            </HeBlock>\n            <Spacer/>\n        </GreyBox>\n\n        <GreyBox light={true}>\n            <H2Block en=\"Grand Prize Winner\" he=\"זוכה הפרס הראשון\"/>\n        </GreyBox>\n\n        <Feature\n            enTitle=\"Talmud Sidebar Extension\"\n            enText=\"By Dov Katz<br/><br/>The Talmud Sidebar Extension brings Sefaria’s learning resources to Daf Yomi sites across the web. Created in response to the move to Zoom for Daf Yomi classes the world over in the wake of COVID-19, the extension recognizes what daf you’re learning or listening to on nearly a dozen Daf Yomi sites. It then enables a sidebar to see connections from Sefaria’s library or link straight back to Sefaria.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/talmudsidebar.png\"\n            enImgAlt=\"Talmud Sidebar Extension\"\n            heTitle=\"תוסף סרגל הכלים של התלמוד\"\n            heText=\"דב כץ<br/><br/>תוסף סרגל הכלים של התלמוד מביא את משאבי הלימוד של ספריא לאתרי דף יומי ברחבי הרשת. הפיתוח הזה נוצר מתוך רצון להתמודד עם המעבר של שיעורי הדף היומי ברחבי העולם אל המרחב הווירטואלי בעקבות נגיף קורונה.  התוסף יכול לזהות בדיוק מהו הדף שאנחנו לומדים או מאזינים לו מתוך קרוב לתריסר אתרי דף יומי – Hadran.org.il, YUTorah.org, Steinsaltz-center.org, OUTorah.org ועוד – ולפתוח סרגל כלים הכולל קישורים לטקסטים רלוונטיים במאגר של ספריא וכן קישור לדף היומי של ספריא.\"\n            heImg=\"/static/img/pbsc-2020-landing-page/talmudsidebar.png\"\n            heImgAlt=\"תוסף סרגל הכלים של התלמוד\"\n            borderColor={palette.colors.yellow}\n            link=\"https://chrome.google.com/webstore/detail/talmud-sidebar-extension/dmpiiciebnbekblfbcdeogjkbbmeeimi\"\n        />\n\n        <GreyBox>\n            <H2Block en=\"Meet the Grand Prize Winner\" he=\"הכירו את הזוכה\"/>\n            <EnBlock padded={true}>\n                <p>Originally from Memphis, TN and now living in Modiin, Israel, Dov Katz leads a developer productivity group for the technology arm of a large financial services firm and enjoys tinkering with tech in his free time. Long interested in the ways technology could increase access to Jewish life and Torah study – he created the popular Jewish site OnlySimchas.com back in 1999! – he invented the Sidebar Extension this summer to meet the new digital needs of his own formerly in-person Daf Yomi shiur. Dov’s passion for access leads him to be a strong advocate of Open Source and he currently sits as the Chairman of the board on the Fintech Open Source Foundation.</p>\n            </EnBlock>\n            <HeBlock padded={true}>\n                <p>דב כץ גדל בממפיס שבמדינת טנסי בארצות הברית וכיום מתגורר במודיעין. הוא עומד בראש צוות פיתוח ייצור באגף הטכנולוגי של חברת שירותים פיננסיים גדולה, ובשעות הפנאי הוא מפתח חובב של חידושים טכנולוגיים. מציאת דרכים להרחבת הגישה לחיים יהודיים וללימוד תורה באמצעות טכנולוגיה מעסיקה את דב זה זמן רב, ועוד בשנת 1999 הוא הקים את האתר המוכר onlysimchas.com, מעין לוח שמחות אינטרנטי. בקיץ האחרון יצר את תוסף סרגל הכלים של התלמוד כדי לענות על צרכים דיגיטליים חדשים בשיעור הדף היומי שלו שהפך מקוון. בזכות התשוקה של דב לשכלול דרכי גישה דיגיטליות הוא נהיה תומך נלהב בקוד פתוח וכיום משמש יו\"ר הדירקטוריון של קרן הקוד הפתוח של Fintech.</p>\n            </HeBlock>\n            <Spacer/>\n        </GreyBox>\n\n        <GreyBox light={true}>\n            <H2Block en=\"Youth Prize Winner\" he=\"זוכי פרס המתמודד הצעיר\"/>\n        </GreyBox>\n\n        <Feature\n            enTitle=\"Mizmor Shir\"\n            enText=\"By Immanuel Bissel, Simon Landau, and Ben Kotton<br/><br/>Mizmor Shir explores the intersections of Torah and music as two forms of holy language. Using the Kabbalistic tradition of gematria, Mizmor Shir transforms the text of the Torah into music, in keys and scales that you choose, to reveal unseen (and unheard) patterns within it. \"\n            enImg=\"/static/img/pbsc-2020-landing-page/mizmorshir.png\"\n            enImgAlt=\"Talmud Sidebar Extension\"\n            heTitle=\"מזמור שיר\"\n            heText='עמנואל ביסל, סיימון לנדאו ובן קוטון<br/><br/>\"מזמור שיר\" מתבונן בממשקים של תורה ומוזיקה כמפגש בין שתי צורות שונות של שפת קודש. באמצעות שימוש בגימטרייה קבלית הופך מזמור שיר את התורה הכתובה למוזיקה בתווים ובסולמות הניתנים לבחירה, וחושף בה דפוסים שלא נראו (ולא נשמעו) מעולם.'\n            heImg=\"/static/img/pbsc-2020-landing-page/mizmorshir.png\"\n            heImgAlt=\"מזמור שיר\"\n            borderColor={palette.colors.raspberry}\n            link=\"http://mizmor-shir.herokuapp.com/\"\n        />\n\n        <GreyBox>\n            <H2Block en=\"Meet the Youth Prize Winners\" he=\"הכירו את זוכי הפרס\"/>\n            <EnBlock padded={true}>\n                <p>Mizmor Shir was created by three college students – Simon Landau, a junior at USC majoring in Computer Science; Immanuel Bissel, a rising sophomore at Yale majoring in Earth and Planetary Science; and Ben Kotton, also a rising Sophomore at Yale, majoring in applied mathematics. Friends from a childhood shared in Los Angeles, all three are avid music lovers – Simon plays both orchestral bass as well as guitar in a three-piece band, Emmanuel the guitar, and Ben the mandolin. It was this love that got them excited to respond to Sefaria’s PBS challenge with an idea that combined music with Torah and harnessed the power of technology to reveal the beauty of each in new ways.</p>\n            </EnBlock>\n            <HeBlock padded={true}>\n                <p>מזמור שיר נוצר בידי שלושה סטודנטים – סיימון לנדאו, סטודנט בשנה השלישית למדעי המחשב באוניברסיטת דרום קליפורניה; עמנואל ביסל, סטודנט בשנה השנייה למדעי כדור הארץ וכוכבי הלכת באוניברסיטת ייל; ובן קוטון, סטודנט בשנה השנייה למתמטיקה שימושית באוניברסיטת ייל. שלושתם חברי ילדות מלוס אנג'לס ואוהבי מוזיקה נלהבים: סיימון הוא נגן קונטרבס וגיטריסט בשלישייה מוזיקלית, עמנואל מנגן גם הוא בגיטרה, ובן מנגן במנדולינה. האהבה הזו היא שדרבנה אותם לנסות להתמודד עם האתגר של ספריא בעזרת רעיון ששילב מוזיקה ותורה ורתם את כוחה של הטכנולוגיה לחשוף את היופי שבכל אחת מהן בדרכים חדשות.</p>\n            </HeBlock>\n            <Spacer/>\n        </GreyBox>\n\n        <H2Block en=\"What the Judges Had to Say\" he=\"דברי השופטים\"/>\n\n        <Section>\n            <UserQuote\n                enText=\"It was very exciting to see all of the creative applications to the Powered by Sefaria Contest. There was such a wide range of ideas, truly displaying the power of Sefaria to engage a range of audiences. At the core of all of the ideas was creating innovative ways to allow more people to engage with text in a deeper way, from bringing the text to life through interactive museums to creating additional features and ease for the toolbar and the Sefaria browsing experience.<br/><br/>Many of the ideas are very promising and I hope the contestants continue to explore their ideas and bring their passion to life. Thanks to Sefaria for creating such an accessible and open platform to allow for such a meaningful and collaborative competition.\"\n                heText=\"התרגשנו מאוד לראות את המיזמים היצירתיים שנשלחו לתחרות פיתוח התוכנה של ספריא. מנעד הרעיונות היה רחב במיוחד וחשף את כוחה של ספריא לרתום מגוון קהלים. הלב של כל הרעיונות הללו היה אחד – יצירת דרכים חדשניות לאפשר לעוד ועוד אנשים לעסוק בטקסט באופן עמוק יותר, החל במוזיאונים אינטראקטיביים המפיחים חיים בטקסטים עצמם וכלה בשלל כלים שמטרתם להוסיף נוחות ויעילות לחוויית הגלישה בספריא או לשימוש בסרגל הכלים שלה. רבים מן הרעיונות האלה מבטיחים מאוד, ואנו מקווים שהמשתתפים והמשתתפות ימשיכו לחקור את הרעיונות שלהם ולהגשים את שאיפותיהם. תודה לספריא על יצירת פלטפורמה נגישה ופתוחה כל כך המאפשרת תחרות בעלת ערך ושיתופי פעולה.\"\n                enName=\"Libby Novack, <i>Chief Operations Officer, Maapilim; Sefaria advisory board member</i>\"\n                heName='ליבי נובאק, סמנכ\"ל תפעול בחברת \"מעפילים\"; חברה בצוות הייעוץ לספריא.'\n                image=\"/static/img/pbsc-2020-landing-page/libby.png\"\n            />\n            <UserQuote\n                enText=\"Each of the top projects that I looked into were intriguing and useful.The Sidebar extension won deservedly because it is so obviously helpful for increasing Sefaria's efficiency. But I greatly admired the cleverness of the Shulkhan tool, the mathematical sophistication of the Sefer Similarity Map, and the ingenuity and resourcefulness of all the submissions.\"\n                heText='כל אחד מן המיזמים המעולים שבחנתי היו מסקרנים ושימושיים. במקום הראשון זכה ביושר תוסף סרגל הכלים של התלמוד, מכיוון שברור שבכוחו להגביר את היעילות של ספריא בקרב משתמשיה. עם זאת יש בי גם הערכה רבה לפיקחות של מיזם \"השולחן\", לתחכום המתמטי של \"ספר\" – מפת הדמיון הטקסטואלית – ולתושייה וכוח ההמצאה של כל אחד מן המיזמים האחרים.'\n                enName=\"Moshe Koppel, <i>Professor of Computer Science at Bar-Ilan University; Founder of DICTA, a laboratory creating computational linguistics tools for the analysis of Jewish and Hebrew texts</i>\"\n                heName='משה קופל, פרופסור במחלקה למדעי המחשב באוניברסיטת בר־אילן; המקים של \"דיקטה\", מעבדה לפיתוח כלי לשון דיגיטליים לניתוח של טקסטים עבריים ויהודיים.'\n                image=\"/static/img/pbsc-2020-landing-page/moshe.png\"\n            />\n            <UserQuote\n                enText=\"I was incredibly impressed by the submissions to the Powered by Sefaria contest. When Sefaria started, we could not have imagined the level of technical talent that would be applied to enhancing Sefaria's texts and platform. The submissions to the contest were both interesting and often quite practical, many adding useful features on top of Sefaria's existing platform. I was especially excited to see such wonderful energy from our younger supporters who brought creativity and vision to the contest. Congratulations to all the submitters!\"\n                heText=\"התרשמתי עמוקות מן המיזמים שנשלחו לתחרות פיתוח התוכנה של ספריא. כשספריא החלה את פעילותה, לא יכולנו לדמיין שבעתיד ייעשה שימוש ברמה גבוהה כל כך של מיומנות טכנולוגית כדי לשכלל את הפלטפורמה ואת הטקסטים של ספריא. המיזמים שנשלחו לתחרות היו מעניינים ולרוב גם מעשיים למדי, ובהם תוספים שימושיים רבים לפלטפורמה הנוכחית של ספריא. התרגשתי מאוד לראות אנרגיה מופלאה כל כך מתומכינו הצעירים, שהביאו אל התחרות חזון ויצירתיות. ברכות לכל המשתתפים והמשתתפות!\"\n                enName=\"Mo Koyfman, <i>Founder of early-stage venture capital firm, Shine Capital; founding Sefaria board member</i>\"\n                heName=\"מוֹ קאופמן, מייסד Shine Capital, קרן הון־סיכון לחברות הזנק; חבר הנהלה בצוות המייסדים של ספריא.\"\n                image=\"/static/img/pbsc-2020-landing-page/mo.png\"\n            />\n        </Section>\n\n        <GreyBox light={true}>\n            <H2Block en=\"Honorable Mentions\" he=\"מיזמים שזכו להערכה מיוחדת\"/>\n        </GreyBox>\n\n        <Feature\n            enTitle=\"Shulkhan\"\n            enText=\"By Joseph Tepperman<br/><br/>Shulkhan is a touch interface for the printed Talmud. Using a camera and projector, Shulkan can watch as you learn with a book and project translations to the passages of text that you touch.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/shulkhan.png\"\n            enImgAlt=\"Shulkhan\"\n            heTitle=\"שולחן\"\n            heText='ג׳וזף טפרמן<br/><br/>שולחן הוא ממשק מגע המיועד לתלמוד מודפס. באמצעות מצלמה ומקרן, \"שולחן\" יכול לצפות במשתמש בזמן לימוד גמרא ולהקרין תרגומים של הפיסקה שהם נוגעים בה. לקריאה נוספת על המיזם.'\n            heImg=\"/static/img/pbsc-2020-landing-page/shulkhan.png\"\n            heImgAlt=\"שולחן\"\n            borderColor={palette.colors.green}\n            link=\"http://josephtepperman.com/shulkhan.htm\"\n        />\n\n\n        <Feature\n            enTitle=\"Goof - Body parts in Tefillah\"\n            enText=\"By Judah Kaunfer and Matan Kotler-Berkowitz<br/><br/>Goof lets you explore texts of Tefillah through the lens of the body. Pick a body part and see texts that relate to it. <b>Goof has the honor of being the project submitted to the contest by the youngest entrant, Mr. Kaunfer, at 11 years old.</b>\"\n            enImg=\"/static/img/pbsc-2020-landing-page/goof.png\"\n            enImgAlt=\"Goof - Body parts in Tefillah\"\n            heTitle=\"גוף: איברי הגוף בתפילה\"\n            heText='יהודה קאונפר ומתן קוטלר־ברקוביץ<br/><br/>גוף עוזר לחקור את הטקסטים של התפילה דרך הגוף. בעזרת \"גוף\" אפשר לבחור באיבר בגוף ולראות את הטקסטים הקשורים אליו. למיזם זה מקום של כבוד בהיותו המיזם שנשלח לתחרות על ידי המתמודד הצעיר ביותר, מר קאונפר, בן 11 בלבד'\n            heImg=\"/static/img/pbsc-2020-landing-page/goof.png\"\n            heImgAlt=\"גוף: איברי הגוף בתפילה\"\n            borderColor={palette.colors.paleblue}\n            link=\"https://goof.surge.sh/\"\n        />\n\n\n        <Feature\n            enTitle=\"Capish - Interactive Learning\"\n            enText=\"By Chanah Emunah Deitch and Shalva Eisenberg<br/><br/>Capish is an interactive learning environment for Jewish texts. For this contest, Capish added a feature that allows users to record themselves reading lines of text. As they play back their recordings the users see words highlighted as they are spoken, or jump to parts of the recording by clicking words.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/capish.png\"\n            enImgAlt=\"Capish - Interactive Learning\"\n            heTitle=\"קאפיש: לימוד אינטראקטיבי\"\n            heText=\"חנה אמונה דייטש ושלווה אייזנברג<br/><br/>קאפיש הוא מרחב לימוד אינטראקטיבי לטקסטים יהודיים. לצורך התחרות נוסף לקאפיש כלי חדש המאפשר למשתמשים להקליט את עצמם בזמן קריאת שורות בטקסט. כאשר מפעילים את ההקלטה, אפשר לראות את המילים המושמעות בולטות בתוך הטקסט או לחלופין לדלג לחלקים אחרים בהקלטה באמצעות לחיצה על מילים בטקסט.\"\n            heImg=\"/static/img/pbsc-2020-landing-page/capish.png\"\n            heImgAlt=\"קאפיש: לימוד אינטראקטיבי\"\n            borderColor={palette.colors.blue}\n            link=\"https://capish.me/\"\n        />\n\n\n        <Feature\n            enTitle=\"Daf Yomi Crossword\"\n            enText=\"By Chanoch Goldfarb<br/><br/>Daf Yomi Crossword automatically generates a crossword puzzle based on any page of Talmud. The clues ask you to find words used on the page based on their context, or to find the words that commentaries choose to comment on.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/dafyomicrossword.png\"\n            enImgAlt=\"Daf Yomi Crossword\"\n            heTitle=\"תשבץ דף יומי\"\n            heText=\"חנוך גולדפרב<br/><br/>תשבץ דף יומי הוא תשבץ שנוצר אוטומטית על בסיס כל עמוד בתלמוד. הרמזים מובילים את המשתמשים למצוא מילים שנעשה בהן שימוש בעמוד בהתאם להקשר שלהן או למצוא מילים שהמפרשים עוסקים בהן.\"\n            heImg=\"/static/img/pbsc-2020-landing-page/dafyomicrossword.png\"\n            heImgAlt=\"תשבץ דף יומי\"\n            borderColor={palette.colors.orange}\n            link=\"http://ee.cooper.edu/~goldfarb/daf/\"\n        />\n\n\n        <Feature\n            enTitle=\"Sefer Similarity Map\"\n            enText=\"By Joseph Hostyk and Alex Zaloum<br/><br/>Sefer Similarity Map visualizes relationships among Jewish texts by analyzing their usage of words or phrases to show which texts and sections have the most in common. Exploring the results in graphical form can illuminate historical, authorial, linguistic, and stylistic connections between texts.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/sefersimilarity.png\"\n            enImgAlt=\"Sefer Similarity Map\"\n            heTitle=\"ספר– מפת דמיון בין טקסטים\"\n            heText='ג׳וזף הוסטיק ואלכס זאלום<br/><br/>בעזרת ניתוח של אחוזי השימוש במילים או בביטויים מסוימים, \"ספר\" – מפת דמיון בין טקסטים – ממחישה את הקשרים בין טקסטים יהודיים, ובאופן זה מראה לאילו מהטקסטים או הקטעים הנבחרים יש הכי הרבה במשותף. הצגת התוצאות בצורה גרפית כזו יכולה לשפוך אור על קשרים היסטוריים, לשוניים וסגנוניים ואחרים בין טקסטים.'\n            heImg=\"/static/img/pbsc-2020-landing-page/sefersimilarity.png\"\n            heImgAlt=\"ספר– מפת דמיון בין טקסטים\"\n            borderColor={palette.colors.lightpink}\n            link=\"https://jhostyk.github.io/SeferSimilarityMap/\"\n        />\n\n\n        <Feature\n            enTitle=\"Custom Mikraot Gedolot\"\n            enText=\"By Eshel Sinclair and Ben Gold<br/><br/>Custom Mikraot Gedolot lets you create your own Mikraot Gedolot. You choose the texts, translations and up to 9 commentaries, and the app will automatically generate a PDF that you can download and print.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/mikraotgedolot.png\"\n            enImgAlt=\"Custom Mikraot Gedolot\"\n            heTitle=\"מקראות גדולות בהתאמה אישית\"\n            heText=\"אשל סינקלייר ובן גולד<br/><br/>יישומון מקראות גדולות בהתאמה אישית מאפשר לך ליצור מקראות גדולות אישיות. ביכולתך לבחור את הטקסטים, את התרגומים וכן עד 9 פרשנים שונים, ובהתאם לבחירות אלה ייצור היישומון קובץ PDF באופן אוטומטי.\"\n            heImg=\"/static/img/pbsc-2020-landing-page/mikraotgedolot.png\"\n            heImgAlt=\"מקראות גדולות בהתאמה אישית\"\n            borderColor={palette.colors.darkblue}\n            link=\"http://ec2-3-129-165-55.us-east-2.compute.amazonaws.com:3002/\"\n        />\n\n\n        <Feature\n            enTitle=\"Sefaria Space: (Topic Museum + Text Mania)\"\n            enText=\"By David Komer<br/><br/>The Sefaria Space has two parts: the Topic Museum creates an immersive 3D environment where you can explore texts related to a topic as though they were paintings hanging on a wall. Text Mania is a 3D game based on the letters of a text of your choosing.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/sefariaspace.png\"\n            enImgAlt=\"Sefaria Space: (Topic Museum + Text Mania)\"\n            heTitle=\"מרחב ספריא (מוזיאון נושאי + טָרֶפֶת טקסט)\"\n            heText='דוד קומר<br/><br/>מרחב ספריא מורכב משני חלקים: המוזיאון הנושאי – סביבה תלת־ממדית סוחפת שבה אפשר לחקור טקסטים על פי נושא כאילו היו ציורים על הקיר – ו\"טרפת טקסט\", משחק תלת־ממד המבוסס על האותיות של הטקסט שבחרתם.'\n            heImg=\"/static/img/pbsc-2020-landing-page/sefariaspace.png\"\n            heImgAlt=\"מרחב ספריא (מוזיאון נושאי + טָרֶפֶת טקסט)\"\n            borderColor={palette.colors.darkpink}\n            link=\" https://sefaria-space.web.app/\"\n        />\n\n\n        <Feature\n            enTitle=\"The Rabbinic Citation Network\"\n            enText=\"By Michael Satlow and Mike Sperling<br/><br/>Using Sefaria's digital text of the Bavli, the Rabbinic Citation Networks extracts the names and links of rabbis who cite (or who are cited by) other rabbis and visualizes the resulting network.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/rabbiniccitation.png\"\n            enImgAlt=\"The Rabbinic Citation Network\"\n            heTitle=\"רשת ציטוטים של חכמי התלמוד\"\n            heText=\"מייקל סאטלו ומייק ספרלינג<br/><br/>באמצעות טקסט התלמוד הבבלי המקוון בספריא, רשת הציטוטים של חכמי התלמוד מחלצת את השמות ואת הקישורים של החכמים המצטטים (או המצוטטים בידי) חכמים אחרים וממחישה את רשת התוצאות.\"\n            heImg=\"/static/img/pbsc-2020-landing-page/rabbiniccitation.png\"\n            heImgAlt=\"רשת ציטוטים של חכמי התלמוד\"\n            borderColor={palette.colors.lavender}\n            link=\"http://www.rabbiniccitations.jewishstudies.digitalscholarship.brown.edu/blog/\"\n        />\n\n\n        <Feature\n            enTitle=\"T'Feeling\"\n            enText=\"By Matan Kotler-Berkowitz<br/><br/>T’Feeling encourages people to think deeply and intentionally about the connections between t'fillot and emotions. The site allows users to browse t’fillot by emotion (either what they’re currently feeling or what they hope to be feeling), as well as contribute their own ratings for which t’fillot connect most to which emotions.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/tfeeling.png\"\n            enImgAlt=\"T'Feeling\"\n            heTitle=\"ת'פילינג\"\n            heText=\"מתן קוטלר־ברקוביץ<br/><br/>ת'פילינג (T’Feeling) מעודד לחשוב בצורה עמוקה ומכוונת יותר על הקשרים שבין תפילות ורגשות. האתר מציג למשתמשים שלל תפילות על פי רגש (שאותו הם מרגישים עכשיו או מייחלים לחוש), וכן מאפשר להם לדרג אילו תפילות הן המתאימות ביותר לכל רגש.\"\n            heImg=\"/static/img/pbsc-2020-landing-page/tfeeling.png\"\n            heImgAlt=\"ת'פילינג\"\n            borderColor={palette.colors.yellow}\n            link=\"https://tfeeling.netlify.app\"\n        />\n\n\n        <Feature\n            enTitle=\"CiteMakor\"\n            enText=\"By Ariel Caplan<br/><br/>CiteMakor is a Twitter bot which accepts requests for citations and responds by tweeting back one or more images that include the cited text. The goal of CiteMakor is to make it easy to bring source texts into discussions of Jewish topics on Twitter.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/citemakor.png\"\n            enImgAlt=\"CiteMakor\"\n            heTitle=\"המצ'טט\"\n            heText=\"אריאל קפלן<br/><br/>המצ'טט הוא בוט טוויטר המקבל בקשות למקורות מסוימים ומשיב על ידי ציוץ של תמונה אחת או יותר הכוללת את הטקסט המצוטט. מטרת־העל של המצ'טט היא להקל על הבאת מקורות טקסטואליים לתוך דיונים יהודיים עכשוויים בטוויטר.\"\n            heImg=\"/static/img/pbsc-2020-landing-page/citemakor.png\"\n            heImgAlt=\"\"\n            borderColor={palette.colors.purple}\n            link=\"https://twitter.com/CiteMakor\"\n        />\n\n\n        <Feature\n            enTitle=\"Gifaria\"\n            enText=\"By John Cassil and Tiger Tang<br/><br/>For a little bit of fun, gifaria finds GIFs relevant to any verse in Tanakh. This project provides an engaging way for people to interact with biblical texts in a lighthearted way.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/gifaria.png\"\n            enImgAlt=\"Gifaria\"\n            heTitle=\"גיפַריא\"\n            heText='ג׳ון קסיל וטייגר טאנג<br/><br/>אי אפשר בלי קצת כיף. בעזרת גיפריא תוכלו למצוא גיפים רלוונטיים לכל פסוק בתנ\"ך. המיזם הזה מספק דרך אטרקטיבית וקלילה לעסוק בטקסטים תנ\"כיים.'\n            heImg=\"/static/img/pbsc-2020-landing-page/gifaria.png\"\n            heImgAlt=\"גיפַריא\"\n            borderColor={palette.colors.lightblue}\n            link=\"https://tiger-tang.shinyapps.io/gifaria/\"\n        />\n\n\n        <Feature\n            enTitle=\"The Taryag Mitzvos\"\n            enText=\"By Rafi Wolfe<br/><br/>The Taryag Mitzvos is an interactive visualization of the 613 commandments, and the different ways that different scholars have enumerated that list. The interface lets users view and sort according to which opinions support each mitzvah’s inclusion, as well as compare the differences between different lists.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/thetaryag.png\"\n            enImgAlt=\"The Taryag Mitzvos\"\n            heTitle='תרי\"ג מצוות'\n            heText='רפי וולף<br/><br/>תרי\"ג מצוות הוא המחשה אינטראקטיבית של 613 המצוות ושל שלל דרכי המנייה שלהן שנקטו חכמים שונים ביצירת הרשימה הזו. הממשק מאפשר למשתמשים ולמשתמשות לגלות אילו מצוות נמנו בידי אילו רבנים ולמיין אותן בהתאם, וכן להשוות בין הרשימות'\n            heImg=\"/static/img/pbsc-2020-landing-page/thetaryag.png\"\n            heImgAlt='תרי\"ג מצוות'\n            borderColor={palette.colors.lightgreen}\n            link=\"https://thetaryag.com/\"\n        />\n\n\n        <Feature\n            enTitle=\"3D Tanach Family Tree\"\n            enText='By Moshe Escott, Shlomo Gordon, Simcha Schaum, Aaron Farntrog and Ari Abramowitz<br/><br/>The 3D Tanach Family Tree is an interactive 3D visualization of characters mentioned in Tanach. As you float through the tree you can find information about each character, search relationships between them, and find verses on Tanach where they appear.  Select \"Tanach Family Tree\" from the menu at top right to view.'\n            enImg=\"/static/img/pbsc-2020-landing-page/familytree.jpg\"\n            enImgAlt=\"3D Tanach Family Tree\"\n            heTitle='אילן יוחסין תנ\"כי תלת ממדי'\n            heText='משה אסקוט, שלמה גורדון, שמחה שאום, אהרון פרנטרוג וארי אברמוביץ<br/><br/>אילן היוחסין התנ\"כי והתלת־ממדי הוא המחשה תלת־ממדית של דמויות תנ\"כיות. ביכולתך לשוטט בתוך האילן ולמצוא מידע על כל דמות ודמות, לחפש קשרים ביניהן ולגלות פסוקים שבהם הן נזכרות. כדי לצפות באילן, יש ללחוץ על \"אילן יוחסין תנ\"כי\" שבתפריט הנמצא בפינה הימנית העליונה של הדף.'\n            heImg=\"/static/img/pbsc-2020-landing-page/familytree.jpg\"\n            heImgAlt='אילן יוחסין תנ\"כי תלת־ממדי'\n            borderColor={palette.colors.red}\n            link=\"http://www.basehasefer.com/\"\n        />\n\n\n        <Feature\n            enTitle=\"Gematriaphone\"\n            enText=\"By Alexander Boxer<br/><br/>Gematriaphone lets you hear the Torah's hidden mathematical music. Starting from any word of Torah, users can hear tones corresponding to the gematria of each word as it is highlighted on the screen.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/gematriaphone.png\"\n            enImgAlt=\"Gematriaphone\"\n            heTitle='גימטריה קולית'\n            heText=\"אלכסנדר בוקסר<br/><br/>הגימטריה הקולית מאפשרת לך לשמוע את המוזיקה המתמטית החבויה בתורה. המשתמשים והמשתמשות יכולים לבחור כל מילה בתורה, לשמוע את הצלילים על פי הגימטריה שלה ולראות אותה מודגשת על הצג.\"\n            heImg=\"/static/img/pbsc-2020-landing-page/gematriaphone.png\"\n            heImgAlt=\"גימטריה קולית\"\n            borderColor={palette.colors.teal}\n            link=\"http://alexboxer.com/gematriaphone/\"\n        />\n\n\n        <Feature\n            enTitle=\"sefaria-connections\"\n            enText=\"By Charles Loder<br/><br/>Sefaria-connections is an interactive visualization of the connections between texts in Sefaria’s library. Starting from any line of Tanakh you can choose a type of connection, see the sources that match that type, and see the sources connected to those sources.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/sefariaconnections.png\"\n            enImgAlt=\"SefariAcrostic\"\n            heTitle=\"קשרי ספריא\"\n            heText='צ׳רלס לודר<br/><br/>קשרי ספריא הם המחשה אינטראקטיבית של הַקשרים שבין הטקסטים המצויים בספריית ספריא. אפשר לבחור כל פסוק בתנ\"ך ואת סוג הקשר האינטרטקסטואלי, לראות את המקורות המתאימים לסוג הקשר הזה ולגלות את המקורות הקשורים לאותם המקורות.'\n            heImg=\"/static/img/pbsc-2020-landing-page/sefariaconnections.png\"\n            heImgAlt=\"קשרי ספריא\"\n            borderColor={palette.colors.tan}\n            link=\"https://charlesloder.github.io/sefaria-connections/\"\n        />\n\n\n        <Feature\n            enTitle=\"SefariAcrostic\"\n            enText=\"By Ezra Gordon<br/><br/>SefariaAcrostic searches books of Tanakh for acrostics that match a person’s Hebrew name. Acrostics can be used to create digital art or to inspire personalized artwork for a simcha, such as finding an acrostic with the couple's names for a wedding.\"\n            enImg=\"/static/img/pbsc-2020-landing-page/acrostic.png\"\n            enImgAlt=\"SefariAcrostic\"\n            heTitle=\"ספריאקרוסטיכון\"\n            heText='עזרא גורדון<br/><br/>ספריאקרוסטיכון מסוגל למצוא אקרוסטיכונים בספרי התנ\"ך לפי שמות פרטיים עבריים. בעזרת המיזם אפשר ליצור אומנות דיגיטלית או קטע אומנות אישי לצורך אירוע משמח, למשל אקרוסטיכון לחתונה עם שמות בני הזוג.'\n            heImg=\"/static/img/pbsc-2020-landing-page/acrostic.png\"\n            heImgAlt=\"ספריאקרוסטיכון\"\n            borderColor={palette.colors.lightbg}\n            link=\"https://20gordone.github.io/SefariaContest/\"\n        />\n\n\n        <CallToActionFooterWithButton\n            href=\"https://github.com/Sefaria/Sefaria-Project\"\n            he_href=\"https://github.com/Sefaria/Sefaria-Project\"\n            enText=\"Want to create something of your own?\"\n            heText=\"רוצה ליצור משהו משלך?\"\n            enButtonText=\"GitHub\"\n            heButtonText=\"GitHub\"\n        />\n\n        <ButtonRow white={true} enTitle=\"Explore more projects\" heTitle=\"למידע על עוד כמה מיזמים\">\n            { [\n                [\"Abba Saul\", \"\", \"https://github.com/scopreon/abba-saul/\"],\n                [\"Amud-anan\", \"\", \"https://github.com/Binyomin-Cohen/sefaria\"],\n                [\"Bashamayim Hi\", \"\", \"https://yosefsklar.github.io/bashamayim-hi/\"],\n                [\"Daily Daf Tracker\", \"\", \"https://mattpolanieckidev.github.io/dailydaf/\"],\n                [\"I’m Learning Lucky\", \"\", \"https://github.com/jmcaplan/sefariaExtension\"],\n                [\"Jew And A\", \"\", \"https://seph-efd35.web.app/\"],\n                [\"Leiner\", \"\", \"https://appetize.io/app/w380pbm112n7ar9m4n6er9kpm8?device=iphone11promax&scale=100&orientation=portrait&osVersion=13.3\"],\n                [\"Memorize Plus\", \"\", \"https://www.dropbox.com/sh/cd5xhc1gg8oqqk7/AAAeFSscagGfesVgyBkBwEiIa?dl=0\"],\n                [\"NLP-Talmud\", \"\", \"https://github.com/adinabruce/NLP-Talmud\"],\n                [\"Pninim\", \"\", \"https://pninim.yiddishe-kop.com/\"],\n                [\"QUIZARIA\", \"\", \"https://www.figma.com/proto/wk07O8t1I9Wxw989SGopwr/QUIZARIA!?node-id=11%3A14&scaling=scale-down\"],\n                [\"Quran Tanakh Kabbalah Project\", \"\", \"https://bref-saucisson-56522.herokuapp.com/\"],\n                [\"RecurrentRav\", \"\", \"https://github.com/leerosenthalj/RecurrentRav\"],\n                [\"Scribe\", \"\", \"https://www.youtube.com/watch?v=BkCKrLf6pvk&feature=youtu.be\"],\n                [\"Sheilta\", \"\", \"https://www.sheilta.ml/\"],\n                [\"Talmud Note\", \"\", \"https://play.google.com/store/apps/details?id=com.graytapps.talmudnote\"],\n                [\"Talmudoi Beyodoi\", \"\", \" https://torah.yiddishe-kop.com/\"],\n                [\"The Jewish Story Through Books\", \"\", \"https://joshcooper417.github.io/\"],\n                [\"Torah for the Blind\", \"\", \"https://torahfortheblind.com/\"],\n                [\"Tweet Yomi\", \"\", \"https://tweetyomi.org/\"],\n                [\"Visualizations of Sefaria\", \"\", \"https://guedalia.github.io/testab/test\"],\n                [\"Visualizing Talmud Topics\", \"\", \"https://share.streamlit.io/guedalia/streamlit/main/first_app.py\"],\n                [\"Visualizing Works Influence\", \"\", \"https://adinabechhofer.github.io/\"],\n                [\"Yamim Noraim Machzor\", \"\", \"https://play.google.com/store/apps/details?id=com.machzoryamimnoraim\"],\n                [\"Yomyomishna\", \"\", \"https://yomyomishna.web.app/\"]\n            ].map(i =>\n                <SimpleButton\n                    white={true}\n                    rounded={false}\n                    tall={true}\n                    newTab={true}\n                    href={i[2]}\n                    he_href={i[2]}\n                    he={i[0]}\n                    en={i[0]}\n                />)\n            }\n        </ButtonRow>\n\n    </StaticPage>\n);\n\nconst DonatePage = () => (\n  <StaticPage optionalClass=\"donate\">\n    <HeaderForDonatePage/>\n    <div className=\"center\">\n        <H1Block en=\"How to make a difference:\" he=\"מסע של גילוי\"/>\n    </div>\n    <div className=\"staticPageBlockInner flexContainer\">\n\n        <ResponsiveNBox gap=\"30px\" content={[\n            <FeatureBox\n                enTitle=\"Make a One-Time Gift\"\n                heTitle=\"\"\n                enText=\"Whether you give $1.80, $18, or $1,800, every gift made to Sefaria supports the future of Torah.\"\n                heText=\"\"\n                enButtonText=\"Donate Now\"\n                heButtonText=\"\"\n                enButtonUrl=\"https://sefaria.nationbuilder.com/supportsefaria\"\n                heButtonUrl=\"https://sefaria.nationbuilder.com/supportsefaria\"\n                borderColor=\"#004E5F\"\n            />,\n            <FeatureBox\n                enTitle=\"Become a Sustainer\"\n                heTitle=\"\"\n                enText=\"Multiply the power of your impact by signing up for a monthly donation with hundreds of other users, supporting a vision of <em>Torah for all.</em>\"\n                heText=\"\"\n                enButtonText=\"Join the Sustainers\"\n                heButtonText=\"\"\n                enButtonUrl=\"https://sefaria.nationbuilder.com/sustainers_b\"\n                heButtonUrl=\"https://sefaria.nationbuilder.com/sustainers_b\"\n                borderColor=\"#97B386\"\n            />,\n            <FeatureBox\n                enTitle=\"Sponsor a Day of Learning\"\n                heTitle=\"\"\n                enText=\"Fuel a day of study on Sefaria by celebrating a special occasion, commemorating a yahrzeit, or honoring a legacy — with a gift of $360 or more.\"\n                heText=\"\"\n                enButtonText=\"Sponsor a Day of Learning\"\n                heButtonText=\"\"\n                enButtonUrl=\"https://sefaria.nationbuilder.com/sponsor\"\n                heButtonUrl=\"https://sefaria.nationbuilder.com/sponsor\"\n                borderColor=\"#4B71B7\"\n            />,\n            <FeatureBox\n                enTitle=\"Sponsor a Text\"\n                heTitle=\"\"\n                enText=\"There are many opportunities to sponsor a text or translation in Sefaria's ever growing library and receive a personal dedication. \"\n                heText=\"\"\n                enButtonText=\"Learn More\"\n                heButtonText=\"\"\n                enButtonUrl=\"https://drive.google.com/file/d/1FU8bHy7jZz86aywF7_kYMV0N3_h-k0nM/view\"\n                heButtonUrl=\"\"\n                borderColor=\"#7C416F\"\n            />\n\n        ]}\n        />\n    </div>\n    <Spacer/>\n\n    <GreyBox>\n      <H1Block en=\"Ways to Give\" he=\"\" serif={true}/>\n      <div className=\"staticPageBlockInner flexContainer\">\n\n          <ResponsiveNBox\n            threshold3={768}\n            threshold2={500}\n            gap=\"10px\"\n            stretch={true}\n            content={[\n                <HeaderWithColorAccentBlockAndText\n                    enTitle=\"Donate Online\"\n                    heTitle=\"\"\n                    enText=\"<p>Make a donation by <strong>credit card</strong> on our <a href='https://sefaria.nationbuilder.com/supportsefaria'>main donation page</a>. All credit card transactions are secured by Stripe.</p>\n                    <p>If you prefer to use <strong>PayPal</strong> or are donating from outside the United States, please make your gift <a href='https://sefaria.nationbuilder.com/'>using this page</a>.</p>\"\n                    heText=\"\"\n                    colorBar=\"#AB4E66\"\n                />,\n                <HeaderWithColorAccentBlockAndText\n                    enTitle=\"Donate by Mail\"\n                    heTitle=\"\"\n                    enText=\"<p><strong>Personal checks</strong> should be made payable to “Sefaria” and mailed to:</p>\n                            <p>Sefaria<br/>\n                            228 Park Avenue South<br/>\n                            Suite 79262<br/>\n                            New York, NY 10003-1502</p>\"\n                    heText=\"\"\n                    colorBar=\"#D4896C\"\n                />,\n                <HeaderWithColorAccentBlockAndText\n                    enTitle=\"Donor-Advised Fund\"\n                    heTitle=\"\"\n                    enText=\"<p>Sefaria accepts donations from donor-advised funds; our <strong>EIN is 46-4406454</strong>. If you need additional information to make a DAF donation, please contact Sefaria’s development team at <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a>.</p>\"\n                    heText=\"\"\n                    colorBar=\"#CCB479\"\n                />,\n                <HeaderWithColorAccentBlockAndText\n                    enTitle=\"Additional Ways to Give\"\n                    heTitle=\"\"\n                    enText=\"<p>Sefaria also accepts donations via <strong>wire transfer</strong>, <strong>stock</strong>, and <strong>Cryptocurrency</strong>. For more information, please email  Sefaria’s development team at <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a>. (For wire transfers, you can also <a href='https://sefaria.typeform.com/to/nxxyX62T'>click here</a> to get our account information).\"\n                    heText=\"\"\n                    colorBar=\"#97B386\"\n                />\n\n\n            ]}\n          />\n      </div>\n      <Spacer/>\n    </GreyBox>\n\n    <div className=\"staticPageCallToActionFooter\">\n      <div className=\"staticPageBlockInner flexContainer light\">\n          <div className=\"msgToSupporters\">\n            <h1 className=\"serif center\">\n                A Message to Our Supporters\n            </h1>\n\n              <p>Due to the ongoing pandemic, we encourage donors to use our <a href=\"https://sefaria.nationbuilder.com/supportsefaria\">online donation page</a> or make a <a href=\"https://sefaria.typeform.com/to/nxxyX62T\">wire transfer</a>, rather than sending a gift by mail. Supporters can also make an electronic gift of stock by emailing us at <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a>. </p>\n              <p>We apologize for any delay in check processing or in the receipt of gift acknowledgment letters in the mail due to the current situation and our remote office status. Donors who make their gift online will continue to receive acknowledgments immediately via email.</p>\n              <p>To all of you: thank you for your continued generosity and support.</p>\n\n\n          </div>\n      </div>\n    </div>\n\n    <H1Block en=\"Get Your questions answered.\" he=\"\" serif={true}/>\n    <div className=\"staticPageBlockInner\">\n\n        <h2 className=\"serif\">\n            <span className=\"int-en\">Your Gift to Sefaria</span>\n        </h2>\n        <Accordian\n            enTitle=\"Can I make my gift in honor or memory of someone?\"\n            heTitle=\"\"\n            enText=\"<p>Yes! If you’re donating online, check the box for “This gift is a tribute” right after entering your address and phone number. You can make a gift in honor or in memory of someone, and someone from the Sefaria team will send a personal message to your honoree letting them know of your generosity.</p>\"\n            heText=\"\"\n            colorBar=\"#B8D4D3\"\n        />\n\n        <Accordian\n            enTitle=\"Where does my gift go? How does Sefaria use the donations it receives?\"\n            heTitle=\"\"\n            enText=\"<p>Generally, gifts made to Sefaria are considered “unrestricted,” meaning that our staff allocates funds where they’re needed most. This includes everything from the text and learning you see on your screen to the technology support that keeps us online to the time and energy of the Sefaria team.</p>\n                    <p><a href='https://www.guidestar.org/profile/46-4406454'>Sefaria has a Platinum rating on GuideStar</a> and we’re devoted to making sure we’re transparent and open with our donors. For a closer look at our financials, <a target='_blank' href='/static/files/Sefaria_2022_990_Public.pdf'>download the most recent Sefaria 990</a>.</p>\"\n            heText=\"\"\n            colorBar=\"#B8D4D3\"\n        />\n\n        <Accordian\n            enTitle=\"Can I make a gift to support a specific program or initiative?\"\n            heTitle=\"\"\n            enText=\"<p>Our online giving page does not support restricted gifts. You can sponsor a day of learning <a href='https://sefaria.nationbuilder.com/sponsor'>here</a>. If you would like to sponsor a text or support a specific Sefaria program, please email Hannah Goldberger, Development Manager, at <a href='mailto:hannah@sefaria.org'>hannah@sefaria.org</a> for more information.</p>\"\n            heText=\"\"\n            colorBar=\"#B8D4D3\"\n        />\n\n        <Accordian\n            enTitle=\"I want to sponsor a day of learning or a new text. How do I know what’s available and where my message will appear?\"\n            heTitle=\"\"\n            enText=\"<p>To learn more about available sponsorship dates and texts on Sefaria, send an email to Samantha Shokin, Grant Writer and Development Associate, at <a href='mailto:samantha@sefaria.org'>samantha@sefaria.org</a>, with “Sponsorship” in your subject line. We’ll aim to get back to you within two business days.</p>\n            <p>Sponsorships can be made in honor, memory, or celebration of a person, group, occasion, or anything else that matters to you. </p>\n            <p>Dedications for a day, week, or month of learning will appear on Sefaria’s homepage throughout the duration of the sponsorship period beginning the evening of the date you choose. <a href='https://docs.google.com/spreadsheets/d/1CUVb18QKbRcgBvBzH-x9R_Stx-_o5YkE9bi7oYBTlRw/edit#gid=0'>Available dates can be viewed in this calendar</a>. To convert a Hebrew date to the English calendar, we recommend <a href='https://www.hebcal.com/converter/'>HebCal’s date converter</a>.</p>\"\n            heText=\"\"\n            colorBar=\"#B8D4D3\"\n        />\n\n\n        <h2 className=\"serif\">\n            <span className=\"int-en\">Giving Logistics</span>\n        </h2>\n\n        <Accordian\n            enTitle=\"Is my donation tax-deductible?\"\n            heTitle=\"\"\n            enText=\"<p>Sefaria is a registered 501(c)(3) in the United States, and all donations are fully tax-deductible under the extent of the law. We are not able to issue tax receipts to donors outside the United States.</p>\"\n            heText=\"\"\n            colorBar=\"#7F85A9\"\n        />\n\n        <Accordian\n            enTitle=\"Why aren’t you tax-exempt outside of the United States?\"\n            heTitle=\"\"\n            enText=\"<p>At this time, Sefaria only meets eligibility requirements for tax-exempt status in the United States.</p>\"\n            heText=\"\"\n            colorBar=\"#7F85A9\"\n        />\n\n        <Accordian\n            enTitle=\"Can I still donate from outside the USA?\"\n            heTitle=\"\"\n            enText=\"<p>Yes! Donors outside of the USA may make a gift online by <a href='https://sefaria.nationbuilder.com/supportsefaria'>credit card</a> or through <a href='https://sefaria.nationbuilder.com/'>PayPal</a>, or by making a <a href='https://sefaria.typeform.com/to/nxxyX62T'>wire transfer</a>.</p>\"\n            heText=\"\"\n            colorBar=\"#7F85A9\"\n        />\n\n        <Accordian\n            enTitle=\"Will I get a gift receipt?\"\n            heTitle=\"\"\n            enText=\"<p>Yes! If you make your gift online, you will receive an email acknowledgment that includes all the information necessary for use as a tax receipt. If you make your gift by mail, you will receive a printed acknowledgment within two months of the receipt of your donation. If you don’t receive your gift receipt within that time, please let us know at <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a> and we will issue a replacement.</p>\"\n            heText=\"\"\n            colorBar=\"#7F85A9\"\n        />\n\n        <Accordian\n            enTitle=\"I want to donate through a donor-advised fund, federation, or foundation. What do I need to send you?\"\n            heTitle=\"\"\n            enText=\"<p>Donations from these types of institutions can be made through any of the payment methods listed in the Ways to Give section above. If you are donating from a foundation, federation, or donor-advised fund, please include any relevant gift acknowledgment information or preferences along with your gift. <strong>Sefaria's EIN is 46-4406454</strong>.</p>\n                    <p>If you are sending your donation by mail, please include this information in a cover letter accompanying your check; if you are donating through a wire transfer or other electronic method, please send an email with this information to <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a>. This ensures we have all the necessary information to send your gift acknowledgment and tax receipt.</p>\"\n            heText=\"\"\n            colorBar=\"#7F85A9\"\n        />\n\n        <Accordian\n            enTitle=\"I think my employer will match my gift. How can I find out?\"\n            heTitle=\"\"\n            enText=\"<p>The best way to find out if your employer matches donations made to eligible nonprofits is to ask directly at your place of work. <a href='https://www.charitynavigator.org/index.cfm?bay=content.view&cpid=1799'>You can also search for your employer on Charity Navigator</a>.</p>\"\n            heText=\"\"\n            colorBar=\"#7F85A9\"\n        />\n\n        <Accordian\n            enTitle=\"My gift is going to be matched by someone else. Will you send them an acknowledgment as well?\"\n            heTitle=\"\"\n            enText=\"<p>Typically, matching gifts are directly acknowledged through the third-party processor. If you would like to request a thank you letter from the Sefaria team for the individual or organization matching your gift, please send us an email at <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a>. </p>\"\n            heText=\"\"\n            colorBar=\"#7F85A9\"\n        />\n\n\n        <h2 className=\"serif\">\n            <span className=\"int-en\">Help and Support</span>\n        </h2>\n\n        <Accordian\n            enTitle=\"I’m having trouble making my donation.\"\n            heTitle=\"\"\n            enText=\"<p>If you’re having difficulty donating online, we want to help! Please email us at <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a> with a detailed description of the issue you’re experiencing, and we will get back to you within two business days. The more information you provide in your email, the more we will be able to help resolve the situation. We appreciate your patience and generosity.</p>\"\n            heText=\"\"\n            colorBar=\"#5A99B7\"\n        />\n\n        <Accordian\n            enTitle=\"I made a one-time or monthly donation in error.\"\n            heTitle=\"\"\n            enText=\"<p>To cancel and/or request a refund for a donation, please email Rebecca Remis, Finance and Operations Manager, at <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a>, with relevant donation information. </p>\"\n            heText=\"\"\n            colorBar=\"#5A99B7\"\n        />\n\n        <Accordian\n            enTitle=\"I never received a gift receipt / I need a new gift receipt.\"\n            heTitle=\"\"\n            enText=\"<p>If you’re looking for a missing e-receipt, we first recommend checking your spam folder for any emails received from hello@sefaria.org. If you’re unable to find your gift receipt or you need a new copy of a mailed gift receipt, please email us at <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a>. </p>\"\n            heText=\"\"\n            colorBar=\"#5A99B7\"\n        />\n\n        <Accordian\n            enTitle=\"I want to cancel my monthly donation.\"\n            heTitle=\"\"\n            enText=\"<p>We’re sorry to see you go! To cancel your sustaining donation, please contact Rebecca Remis, Finance and Operations Manager, at <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a>, or by phone at <a href='tel:+13477730077'>(347) 773-0077</a></p>\"\n            heText=\"\"\n            colorBar=\"#5A99B7\"\n        />\n\n        <Accordian\n            enTitle=\"I want to change my monthly donation by updating the amount or changing my credit card.\"\n            heTitle=\"\"\n            enText=\"<p>For security purposes, Sefaria is unable to update your donation information directly. Please email <a href='mailto:donate@sefaria.org'>donate@sefaria.org</a> to cancel your current recurring donation, and then create a new recurring gift.</p>\"\n            heText=\"\"\n            colorBar=\"#5A99B7\"\n        />\n\n    </div>\n    <Spacer/>\n\n    <div className=\"staticPageCallToActionFooter\">\n      <div className=\"staticPageBlockInner flexContainer light\">\n          <div className=\"msgToSupporters\">\n            <h2 className=\"serif\">\n            Sefaria takes pride in its financial stewardship as a fully transparent, 501(c)(3) charitable organization. Sefaria’s EIN is 46-4406454.\n            </h2>\n\n          <ResponsiveNBox\n            threshold3={768}\n            threshold2={500}\n            gap=\"10px\"\n            stretch={true}\n            content={[\n                <div className=\"finStewardBox\">\n                    <h2 className=\"serif\">GuideStar Platinum</h2>\n                    <p>Sefaria is proud to have received a Platinum Seal of Transparency from Guidestar, which indicates that we have proven a commitment to sharing our goals, strategies, and key metrics towards achieving our mission and vision.</p>\n                    <SimpleButton\n                        white={true}\n                        rounded={true}\n                        tall={false}\n                        newTab={true}\n                        href=\"https://www.guidestar.org/profile/46-4406454\"\n                        he_href=\"\"\n                        he=\"\"\n                        en=\"Learn More\"\n                    />\n\n                </div>,\n\n                <div className=\"finStewardBox\">\n                    <h2 className=\"serif\">Sefaria’s 990 </h2>\n                    <p>Nonprofit organizations are required to file a Form 990 each year that provides the public with information about our revenue, expenditures, and other key financial data. We are committed to making sure our 990 is always easily accessible. </p>\n                    <SimpleButton\n                        white={true}\n                        rounded={true}\n                        tall={false}\n                        newTab={true}\n                        href=\"/static/files/Sefaria_2022_990_Public.pdf\"\n                        he_href=\"\"\n                        he=\"\"\n                        en=\"See Here\"\n                    />\n\n                </div>,\n\n                <div className=\"finStewardBox\">\n                    <h2 className=\"serif\">Annual Report </h2>\n                    <p>Each year, our annual report gives an up-to-date account of our achievements, challenges, innovations, and benchmarks. The annual report also includes messages and stories from our leadership, team members, and supporters like you.</p>\n                    <SimpleButton\n                        white={true}\n                        rounded={true}\n                        tall={false}\n                        newTab={true}\n                        href=\"/annualreport/2021\"\n                        he_href=\"\"\n                        he=\"\"\n                        en=\"Read Here\"\n                    />\n\n                </div>\n            ]}\n            />\n\n\n          </div>\n      </div>\n    </div>\n\n\n  </StaticPage>\n);\n\nconst WordByWordPage = () => (\n  <StaticPage optionalClass=\"donate wordbyword\">\n\n    <div className=\"staticPageHeader wordbyword\">\n      <div className=\"staticPageBlockInner flexContainer\">\n        <div className=\"staticPageHeaderTextBox donate\">\n          <h1>\n            <span className=\"int-en\">{\"Word-by-Word: A Jewish Women's Writing Circle\"}</span>\n          </h1>\n          <div className=\"staticPageHeaderText\"><em>\"...I am grateful to God for this gift, this possibility of developing myself and of writing, of expressing all that is in me.\"</em><br/>- Anne Frank</div>\n        </div>\n      </div>\n    </div>\n\n\n    <div className=\"staticPageCallToActionFooter\">\n      <div className=\"staticPageBlockInner flexContainer light\">\n          <div className=\"msgToSupportersEven\">\n\n              <p>Word-by-Word: A Jewish Women’s Writing Circle will provide up to 20 Jewish women writers engaged in serious Torah scholarship the support and guidance to complete publishable books of Jewish textual analysis that will be significant contributions to any Jewish library. Word-by-Word will offer writers a three-year stipend and community to develop talent by providing skill-based workshops, professional coaching, peer mentoring, an annual retreat, and opportunities to network with publishers and experienced authors. Sefaria is proud to partner with Dr. Erica Brown on this new initiative, co-led by Sefaria’s Chief Learning Officer, Sara Wolkenfeld.</p>\n              <p><em>This program is generously funded by Micah Philanthropies, Walder Foundation, and the Arev Fund.</em></p>\n\n          </div>\n      </div>\n    </div>\n\n    <GreyBox>\n      <H2Block en=\"About the Program\" he=\"\" />\n      <div className=\"staticPageBlockInner flexContainer\">\n          <ResponsiveNBox\n            threshold3={768}\n            threshold2={500}\n            gap=\"10px\"\n            stretch={true}\n            content={[\n                <HeaderWithColorAccentBlockAndText\n                    enTitle=\"Requirements\"\n                    heTitle=\"\"\n                    enText=\"<p>Application must include a detailed synopsis of the proposed book (1,000 words), a detailed table of contents, and two published writing samples. </p>\n                            <p>The finished book must be written in English, must be at least 150 pages / 75,000 words.</p>\n                            <p>Participants should be located in a time zone that makes it reasonable for them to participate in programming on U.S. time zones.</p>\"\n                    heText=\"\"\n                    colorBar=\"#AB4E66\"\n                />,\n                <HeaderWithColorAccentBlockAndText\n                    enTitle=\"Schedule\"\n                    heTitle=\"\"\n                    enText=\"<p>Applicants must be willing to commit to the following schedule:</p>\n                            <p>Annual writing retreat each June. The first retreat is provisionally scheduled for June 18-22, 2023</p>\n                            <p>Monthly online meetings of a 1.5 hour duration. Participants are required to attend 8 out of 10 of these meetings each year.</p>\"\n                    heText=\"\"\n                    colorBar=\"#D4896C\"\n                />,\n                <HeaderWithColorAccentBlockAndText\n                    enTitle=\"Benefits\"\n                    heTitle=\"\"\n                    enText=\"<p>Each participant will receive a total stipend of $18,000 ($6,000/year over three years).</p>\n                            <p>Workshops with experts from the writing and publishing world.</p>\n                            <p>Each participant is entitled to 10-15 hours of coaching per year. Program leaders will work with each author to match her with an appropriate coach. Coaching sessions will be scheduled at the discretion of the participant.</p>\"\n                    heText=\"\"\n                    colorBar=\"#CCB479\"\n                />\n            ]}\n          />\n      </div>\n      <Spacer/>\n    </GreyBox>\n\n    <CallToActionFooterWithButton\n        href=\"https://drive.google.com/file/d/1DXh0J-y0hHJTZuIdaoa2k3CrJBHeBdxK/view\"\n        he_href=\"\"\n        enText=\"Read the full schedule, requirements, and application information.\"\n        heText=\"\"\n        enButtonText=\"Download\"\n        heButtonText=\"\"\n        newTab={true}\n    />\n    <GreyBox light={true}>\n    <H2Block en=\"Word-by-Word Leadership\" he=\"\"/>\n</GreyBox>\n    <Feature\n        enTitle=\"Sara Wolkenfeld\"\n        enText=\"Sara Wolkenfeld is the Chief Learning Officer at Sefaria, an online database and interface for Jewish texts. Sara is also a fellow at the David Hartman Center at the Hartman Institute of North America, and is a member of Class Six of the Wexner Field Fellowship. She writes about Jewish texts and Jewish law, and her current projects focus on applying Talmudic ideas to questions of advancements in digital technology.\"\n        enImg=\"/static/img/sara_circle.png\"\n        enImgAlt=\"Sara Wolkenfeld headshot\"\n        heTitle=\"\"\n        heText=\"\"\n        heImg=\"\"\n        heImgAlt=\"\"\n        borderColor=\"#004E5F\"\n    />\n\n    <Feature\n        enTitle=\"Erica Brown\"\n        enText=\"Dr. Erica Brown is the Vice Provost for Values and Leadership at Yeshiva University and the founding director of its Rabbi Lord Jonathan Sacks-Herenstein Center for Values and Leadership. She previously served as the director of the Mayberg Center for Jewish Education and Leadership and an associate professor of curriculum and pedagogy at The George Washington University. Erica is the author or co-author of 15 books on leadership, the Hebrew Bible and spirituality. Erica has a daily podcast, “Take Your Soul to Work.” Her forthcoming book Kohelet and the Search for Meaning (Maggid) will be available in 2023. Her last book Esther: Power, Fate and Fragility in Exile (Maggid) was a finalist for the National Jewish Book Award.\"\n        enImg=\"/static/img/ericabrown_circle 1.png\"\n        enImgAlt=\"Erica Brown headshot\"\n        heTitle=\"\"\n        heText=\"\"\n        heImg=\"\"\n        heImgAlt=\"\"\n        borderColor=\"#004E5F\"\n    />\n    <H1Block en=\"Get Your questions answered.\" he=\"\" serif={true}/>\n    <div className=\"staticPageBlockInner\">\n        <Accordian\n            enTitle=\"What’s the application deadline?\"\n            heTitle=\"\"\n            enText=\"<p>The deadline for applications is March 13, 2023. We will not consider applications submitted after this date.</p>\"\n            heText=\"\"\n            colorBar=\"#B8D4D3\"\n        />\n\n        <Accordian\n            enTitle=\"How many women will be in the cohort?\"\n            heTitle=\"\"\n            enText=\"<p>We plan to welcome 20 women to this cohort.</p>\"\n            heText=\"\"\n            colorBar=\"#B8D4D3\"\n        />\n\n        <Accordian\n            enTitle=\"How does the stipend work?\"\n            heTitle=\"\"\n            enText=\"<p>Each woman will be awarded $6,000 per year, contingent on meeting the yearly writing requirements (15,000 words in the first year, 25,000 words in years two and three).</p>\"\n            heText=\"\"\n            colorBar=\"#B8D4D3\"\n        />\n\n        <Accordian\n            enTitle=\"How will the cohort support each other?\"\n            heTitle=\"\"\n            enText=\"<p>Through monthly meetings, a WhatsApp group, and regular check-ins, this cohort will build a supportive community in which women motivate each other, check in on progress, and share ideas. The monthly meetings will provide space to get to know one another, share drafts and get feedback, collaborate around best practices, and champion one another’s projects. The annual retreat will help cement these relationships and expose the cohort to developments in the field and veteran writers.</p>\"\n            heText=\"\"\n            colorBar=\"#B8D4D3\"\n        />\n\n        <Accordian\n            enTitle=\"I have more questions. How can I contact you?\"\n            heTitle=\"\"\n            enText=\"<p>Please email Rachel Buckman at <a href='mailto:rachel@sefaria.org'>rachel@sefaria.org</a></p>\"\n            heText=\"\"\n            colorBar=\"#B8D4D3\"\n        />\n\n\n    </div>\n    <Spacer/>\n\n    <CallToActionFooterWithButton\n        href=\"https://sefaria.typeform.com/to/wJXgn9jL\"\n        he_href=\"\"\n        enText=\"Ready to Apply? Fill out your application by March 13, 2023.\"\n        heText=\"\"\n        enButtonText=\"Apply Now\"\n        heButtonText=\"\"\n        newTab={true}\n    />\n\n\n\n  </StaticPage>\n);\n\n\nconst PoweredByPage = () => (\n    <StaticPage>\n        <Header\n            enTitle=\"Powered by Sefaria\"\n            enText=\"Did you know that Sefaria’s open data and API can be used by anyone to create new technological solutions for learning Torah? You can find it all for free in our GitHub repository!\"\n            heText=\"Did you know that Sefaria’s open data and API can be used by anyone to create new technological solutions for learning Torah? You can find it all for free in our GitHub repository!\"\n            enActionURL=\"https://github.com/Sefaria\"\n            enActionText=\"Create Something New\"\n            newTab={true}\n        />\n        <GreyBox>\n            <H2Block en=\"Open Source Torah\" he=\"Open Source Torah\"/>\n            <EnBlock padded={true}>\n                <p>We do our best to ensure that the texts we put in our library come with a Creative Commons license, so the texts can be used and reused, for free. We also make all of our code available for open source use by other developers in any way they’d like. To date, there are more than 70 projects Powered by Sefaria, and nearly 100 sites linked to the Sefaria library through our Linker API.</p>\n            </EnBlock>\n            <Spacer/>\n        </GreyBox>\n        <GreyBox light={true}>\n            <H2Block en=\"Projects Powered by Sefaria\" he=\"Projects Powered by Sefaria\"/>\n        </GreyBox>\n        <Feature\n            enTitle=\"AlHaTorah\"\n            enText=\"AlHaTorah is a website with a broad range of tools for studying Tanakh, including study guides broken down by parashah, biblical art, and interactive modules. Among the available sources, AlHaTorah makes use of biblical commentaries from Sefaria’s library.\"\n            enImg=\"/static/img/powered-by-landing-page/alhatorah.org_.png\"\n            enImgAlt=\"Screenshot of AlHaTorah\"\n            borderColor={palette.colors.darkteal}\n            link=\"https://alhatorah.org/\"\n        />\n        <Feature\n            enTitle=\"AllDaf\"\n            enText=\"This app for learning Daf Yomi from the Orthodox Union provides users with personalized feeds that adapt to learners’ interests, supporting study of the Daf in a user-friendly and approachable format. The English text on AllDaf is sourced from Sefaria.\"\n            enImg=\"/static/img/powered-by-landing-page/alldaf.org_.png\"\n            enImgAlt=\"Screenshot of AllDaf\"\n            borderColor={palette.colors.yellow}\n            link=\"https://alldaf.org/\"\n        />\n        <Feature\n            enTitle=\"Hadran\"\n            enText=\"Founded in 2018 by a group of women studying Talmud together, Hadran aims to make the study of Talmud more accessible to Jewish women at all levels of learning. Among the resources they provide are guides to learning Daf Yomi, and these lessons use texts from Sefaria.\"\n            enImg=\"/static/img/powered-by-landing-page/hadran.org.il_daf_yevamot-63_.png\"\n            enImgAlt=\"Screenshot of Hadran\"\n            borderColor={palette.colors.green}\n            link=\"https://hadran.org.il/\"\n        />\n        <Feature\n            enTitle=\"Dicta\"\n            enText=\"Dicta is a nonprofit research organization based in Israel that applies cutting-edge machine learning and natural language processing (the ability of a computer program to understand human language as it is spoken and written) to the analysis of Hebrew texts. Sefaria and Dicta often collaborate, sharing texts and splitting the costs of shared projects. Dicta offers a broad range of tools for free use by anyone, including the ability to add nikud (vocalization) to text as you type, intuitive Talmud and Bible search, and more.\"\n            enImg=\"/static/img/powered-by-landing-page/talmudsearch.dicta.org.il_.png\"\n            enImgAlt=\"Screenshot of Dicta\"\n            borderColor={palette.colors.lightblue}\n            link=\"https://dicta.org.il/\"\n        />\n        <Feature\n            enTitle=\"Artscroll Smart Siddur\"\n            enText=\"This app converts the popular ArtSchool Siddur into a fully digital format, including hyperlinks to secondary sources, translations, and commentary, as well as the ability to customize your siddur experience.  When you click on citations to non-ArtScroll books in the siddur's footnotes, they include texts from the Sefaria library.\"\n            enImg=\"/static/img/powered-by-landing-page/artscroll siddur.png\"\n            enImgAlt=\"Screenshot of Artscroll Smart Siddur\"\n            borderColor={palette.colors.red}\n            link=\"https://www.artscroll.com/Categories/DSD.html\"\n        />\n        <GreyBox>\n            <H2Block en=\"Tell us about your projects!\" he=\"Tell us about your projects!\"/>\n            <EnBlock padded={true}>\n                <p>Have you used Sefaria’s data to build an app, visualization, website, or other digital tool? Tell us about it! We’d love to see your project. You can also reach out to us with your questions about our open source data and API by writing to us at <a href=\"mailto:hello@sefaria.org\">hello@sefaria.org</a>.</p>\n            </EnBlock>\n            <Spacer/>\n        </GreyBox>\n\n        <ButtonRow white={true} enTitle=\"Explore a few more projects\" heTitle=\"Explore a few more projects\">\n            {[[\"HaTanakh.com\", \"http://www.hatanakh.com/\"],\n                [\"Koveah\", \"https://koveah.org/\"],\n                [\"Parasha Bytes\", \"https://parashabytes.zemon.name/bytes/\"],\n                [\"Shnayim Mikra\", \"http://www.shnayim.com/\"],\n                [\"Russel Neiss' Micrography\", \"https://github.com/rneiss/micrography\"],\n                [\"Sefaria Wordpress Plugin\", \"https://github.com/JoshMB/sefaria-wp-plugin\"],\n                [\"Mizmor Shir\", \"http://mizmor-shir.herokuapp.com/\"],\n                [\"Capish - Interactive Learning\", \"https://capish.me/\"],\n                [\"Sefer Similarity Map\", \"https://jhostyk.github.io/SeferSimilarityMap/\"],\n                [\"Sefaria Space: (Topic Museum + Text Mania)\", \"https://sefaria-space.web.app/\"],\n                [\"T'Feeling\", \"https://tfeeling.netlify.app/\"],\n                [\"The Taryag Mitzvos\", \"https://thetaryag.com/\"],\n                [\"Visualizations of Sefaria\", \"https://guedalia.github.io/testab/test\"],\n                [\"Gematriaphone\", \"http://alexboxer.com/gematriaphone/\"],\n                [\"Yamim Noraim Machzor\", \"https://play.google.com/store/apps/details?id=com.machzoryamimnoraim\"],\n                [\"Sefaria Sidebar Extension\", \"https://github.com/DovOps/SefariaSidebarExtension/\"],\n                [\"Kindle Seforim\", \"https://kindleseforim.paritcher.com/\"],\n                [\"The Jewish Story Through Books\", \"https://joshcooper417.github.io/\"]\n            ].map(i =>\n                <SimpleButton\n                    white={true}\n                    rounded={false}\n                    tall={true}\n                    newTab={true}\n                    href={i[1]}\n                    en={i[0]}\n                />)\n            }\n        </ButtonRow>\n\n\n    </StaticPage>\n);\n\nconst PBSC2021LandingPage = () => (\n    <StaticPage>\n        <Header\n            enTitle=\"Powered by Sefaria Contest 2021\"\n            enText=\"Explore the Projects\"\n            enImg=\"/static/img/pbsc-2020-landing-page/codemockup3.png\"\n            enImgAlt=\"\"\n            heTitle=\"תחרות פיתוח התוכנה של ספריא 2021\"\n            heText=\"גלו את המיזמים\"\n            heImg=\"/static/img/pbsc-2020-landing-page/codemockup3.png\"\n            heImgAlt=\"\"\n        />\n\n        <GreyBox>\n            <H2Block en=\"Inviting Innovation\" he=\"הזמנה לחידוש\"/>\n            <EnBlock padded={true}>\n                <p>In an effort to seed the digital future of Jewish texts, the Powered by Sefaria Contest was launched in July 2020 — inviting the global Sefaria community to make use of our free and open digital dataset of Jewish texts, translations, and interconnections. Over the years, dozens of third parties have created apps, visualizations, and conducted research using our data or API, and we wanted to see what else our community could dream up. The second annual Powered by Sefaria Contest saw tremendous enthusiasm and welcomed many high quality submissions from Sefaria users around the world. <strong>Keep reading to learn more about the two winners and some innovative honorable mentions.</strong></p>\n            </EnBlock>\n            <HeBlock padded={true}>\n                <p>מתוך רצון לזרוע את זרעי העתיד הדיגיטלי של ארון הספרים היהודי, השקנו בשנת 2020 את תחרות פיתוח התוכנה של ספריא, ובה הזמנו את הקהילה הגלובלית של ספריא להשתמש במערך הנתונים הדיגיטלי הפתוח והחופשי של מקורות יהודיים, תרגומים וקישורים בין־טקסטואליים. לאורך השנים היינו עדים לעשרות מפתחי גוף שלישי שהשתמשו בנתונים או ב־API שלנו ליצירת יישומונים והדמיות ולצורכי מחקר, ורצינו לבדוק אילו רעיונות נוספים יש בקהילה שלנו. התחרות הפגישה אותנו עם התלהבות יוצאת מן הכלל ועם תוצרים באיכות גבוהה שקיבלנו ממשתמשי ספריא ברחבי העולם. המשיכו לקרוא כדי ללמוד על שני המנצחים ועל מיזמים נוספים שזכו בציון לשבח.</p>\n            </HeBlock>\n            <Spacer/>\n        </GreyBox>\n\n        <GreyBox light={true}>\n            <H2Block en=\"Grand Prize Winner\" he=\"זוכה הפרס הכללי\"/>\n        </GreyBox>\n\n        <Feature\n            enTitle=\"Sefaria Chavrusa\"\n            enText=\"Gershon Binder<br/><br/>Sefaria Chavrusa is designed to increase accessibility by introducing a text-to-speech feature on Sefaria. Most text-to-speech options struggle with Hebrew; Sefaria Chavrusa is a solution for people who use screen readers, are unfamiliar with reading Hebrew, or just prefer hearing texts read aloud.  It also allows for customized voices with different accents including Chassidish, Litvish, and Israeli.\"\n            enImg=\"/static/img/pbsc-2021-landing-page/sefariachavrusa.png\"\n            enImgAlt=\"Screenshot of Sefaria Chavrusa\"\n            heTitle=\"או 'חברותא עם ספריא'\"\n            heText=\"מאת גרשון בינדר<br><br>'חברותא עם ספריא' היא כלי שנועד להגביר את נגישותם של טקסטים בספריא על ידי השמעה קולית של טקסטים. כיום מרבית הכלים שהופכים טקסט לשמע מתקשים לעשות זאת בעברית, ועל כן 'חברותא עם ספריא' תסייע למשתמשים שנעזרים בקוראי מסך, למשתמשים שאינם מנוסים דיים בקריאת עברית או למשתמשים שפשוט מעדיפים לשמוע את המקורות בקול. המיזם מאפשר שימוש בקולות מותאמים אישית עם מבטאים לבחירה, כגון חסידי, אשכנזי או ישראלי.\"\n            heImg=\"/static/img/pbsc-2021-landing-page/sefariachavrusa.png\"\n            heImgAlt=\"Screenshot of Sefaria Chavrusa\"\n            borderColor={palette.colors.yellow}\n            link=\"https://www.youtube.com/watch?v=wnvw6H9BWDw&feature=youtu.be\"\n        />\n\n        <GreyBox>\n            <H2Block en=\"Meet the Grand Prize Winner\" he=\"פגשו את זוכה הפרס הכללי\"/>\n            <EnBlock padded={true}>\n                <p>Originally from Huntington, Long Island, Gershon Binder is a senior at Lander College for Men working toward a degree in Computer Science. He is a graphic and web designer working with 3D rendering and Unreal Engine. He currently lives in Queens, New York.</p>\n            </EnBlock>\n            <HeBlock padded={true}>\n                <p>גרשון בינדר מהנטינגטון שבלונג איילנד במדינת ניו יורק הוא סטודנט למדעי המחשב בשנתו האחרונה בקולג' לנדר לגברים. בינדר הוא מעצב אתרים ומעצב גרפי ועובד עם מודלים תלת-ממדיים ועם מנוע Unreal. כיום מתגורר בקווינס שבניו יורק.</p>\n            </HeBlock>\n            <H2Block en=\"What Our Team Had to Say\" he=\"מה יש לצוות שלנו להגיד על זה\"/>\n            <Section noPadding={true}>\n                <UserQuote\n                    enText=\"“I was really impressed with the quality of the speech, even for unvowelized texts.  One of the things that we learned early at Sefaria is that making a text digital opens it up to people with low vision.  But the quality of Rabbinic Hebrew text-to-speech has always been poor, especially in comparison with English. This project gave me hope that we could provide low-sighted users a truly excellent spoken version of all of our texts.”\"\n                    heText=\"התרשמתי מאוד מאיכות הדיבור, אפילו עבור טקסטים ללא ניקוד. אחד הדברים שגילינו בשלב מוקדם בספריא הוא שהפיכת טקסט לדיגיטלי מאפשרת ללקויי ראיה להינות מהטקסטים שלנו. הבעיה היא שהעברה של מקורות רבניים מטקסט כתוב לדיבור פוגעת באיכות של הטקסט. הפרויקט הזה נתן לי תקווה שנוכל לספק למשתמשים לקויי ראייה גרסה מדוברת מעולה באמת של כל הטקסטים שלנו.\"\n                    enName=\"Lev Israel, Chief Data Officer at Sefaria\"\n                    heName='לב ישראל, מנהל נתונים ראשי, בספריא'\n                    image=\"/static/img/pbsc-2021-landing-page/lev.png\"\n                />\n            </Section>\n\n        </GreyBox>\n\n        <GreyBox light={true}>\n            <H2Block en=\"Women in Tech Winner\" he=\"זוכת פרס נשים מפתחות טכנולוגיה\"/>\n        </GreyBox>\n\n        <Feature\n            enTitle=\"Torah Chanting Source Sheet Generator\"\n            enText=\"By Valerie Monaco<br><br>The Torah Chanting Source Sheet Generator takes a range of Torah verses and provides a generated Sefaria sheet loaded with features for people learning how to chant, including trope identification and highlighting, trope cantillation tunes, and full verse chanting audio files.\"\n            enImg=\"/static/img/pbsc-2021-landing-page/torahchanting.png\"\n            enImgAlt=\"Screenshot of Torah Chanting Source Sheet Generator\"\n            heTitle=\"מחולל דפי מקורות לקריאה בתורה\"\n            heText='מאת ולרי מונקו<br><br>\"מחולל דפי המקורות לקריאה בתורה\"  אוסף מגוון  פסוקים מן התורה כדי לחולל בעזרתם דף מקורות הכולל כלי עזר לקריאה בתורה – זיהוי והדגשה של טעמי המקרא, הדגמות שמע של טעמי המקרא וכן קובצי שמע של פסוקים מלאים.'\n            heImg=\"/static/img/pbsc-2021-landing-page/torahchanting.png\"\n            heImgAlt=\"Screenshot of Torah Chanting Source Sheet Generator\"\n            borderColor={palette.colors.raspberry}\n            link=\"https://www.torahchantinghelper.net/\"\n        />\n\n        <GreyBox>\n            <H2Block en=\"Meet the Women in Tech Winner\" he=\"פגשו את זוכת פרס נשים מפתחות טכנולוגיה\"/>\n            <EnBlock padded={true}>\n                <p>The Torah Chanting Source Sheet Generator was created by Valerie Monaco, who officially converted to Judaism in 2013. In addition to being members at Rodef Shalom in Pittsburgh, PA, she and her wife are very involved with Congregation Bet Tikvah. Valerie works as a Senior Data Analyst for the City of Pittsburgh and has graduate degrees in psychology and human-computer interaction. As she was studying chanting, Valerie found it was difficult without a shared visual resource, and setting up a useful sheet “by hand” was time-consuming and had limitations. The Torah Chanting Source Sheet Generator eases the process of creating sheets to make it easier for people to spend their time learning.</p>\n            </EnBlock>\n            <HeBlock padded={true}>\n                <p>\"מחולל דפי המקורות לקריאה בתורה\" נוצר על ידי ולרי מונקו, שהתגיירה בשנת 2013. נוסף על חברותן בקהילת \"רודף שלום\" בפיטסבורג שבפנסילבניה, היא ובת זוגה הן גם שותפות נלהבות בקהילת \"בית תקווה\". ולרי היא אנליסטית דאטה בכירה בעיריית פיטסבורג ובעלת תואר ראשון בפסיכולוגיה ובקשרי אדם־מחשב. כאשר למדה לקרוא בתורה גילתה ולרי שקשה לעשות זאת ללא דף מקורות ויזואלי משותף, ושהכנת דף שימושי כזה באופן ידני תיארך זמן רב ויהיו לה מגבלות. \"מחולל דפי המקורות לקריאה בתורה\" מקל על תהליך יצירת דפי המקורות ומאפשר להקדיש יותר זמן ללימוד.</p>\n            </HeBlock>\n            <H2Block en=\"What Our Team Had to Say\" he=\"מה יש לצוות שלנו להגיד על זה\"/>\n            <Section noPadding={true}>\n                <UserQuote\n                    enText=\"“One of the most powerful things about Sefaria is how our tools and resources can be harnessed to provide access and ease of use for folks to grow into their Judaism and Torah learning whenever they're ready. As an adult b'nai mitzvah student Valerie knows this first hand, and her extension of our API and resources to create a tool that simplifies the process of learning Torah reading by automatically creating interactive trope exercises and highlighting trop phrases in a given selection of text is exactly the kind of project that would have been much more difficult to create without our open APIs and data.”\"\n                    heText=\"\"\n                    enName=\"Russel Neiss, Sr. Product Engineer at Sefaria\"\n                    heName='רזיאל ניס, מהנדס מוצר בכיר, בספריא'\n                    image=\"/static/img/pbsc-2021-landing-page/russel.png\"\n                />\n            </Section>\n        </GreyBox>\n\n        <GreyBox light={true}>\n            <H2Block en=\"Honorable Mentions\" he=\"מיזמים שזכו בציון לשבח\"/>\n        </GreyBox>\n\n        <Feature\n            enTitle=\"he_Toranit\"\n            enText=\"By Zeev Pekar<br><br>Ivrit Toranit is a free spelling dictionary. It includes Hebrew from different eras,  as well as Western and Eastern Aramaic. The dictionary is designed to reduce the ‘mispellings’ wrongly detected by the modern Hebrew spell checkers when working with Torah literature.\"\n            enImg=\"/static/img/pbsc-2021-landing-page/he_toranit.png\"\n            enImgAlt=\"he_Toranit screenshot\"\n            heTitle=\"עברית תורנית\"\n            heText='מאת זאב פקר<br><br>\"עברית תורנית\" היא מילון איות ללא תשלום הכולל עברית מתקופות שונות וכן ארמית מזרחית ומערבית. המילון נועד להפחית את \"שגיאות הכתיב\" שבודקי האיות, הפועלים על פי העברית המודרנית, מרבים למצוא ולהתריע עליהן בעת עבודה עם ספרות תורנית.'\n            heImg=\"/static/img/pbsc-2021-landing-page/he_toranit.png\"\n            heImgAlt=\"he_Toranit screenshot\"\n            borderColor={palette.colors.green}\n            link=\"https://gitlab.com/pninim.org/he_TORANIT\"\n        />\n\n\n        <Feature\n            enTitle=\"ShenaimMikra - Text to Speech\"\n            enText=\"By Abraham Saiovici<br><br>ShnaimMikra Text-to-Speech is an application that pulls in the weekly Parsha along with the Rashis and synthesizes the text into speech, providing a way of hearing the Parsha on the go. Handy for long commutes!\"\n            enImg=\"/static/img/pbsc-2021-landing-page/shenaim mikra.png\"\n            enImgAlt=\"ShenaimMikra - Text to Speech\"\n            heTitle=\"שניימקרא – טקסט לשמע\"\n            heText='מאת אברהם סיוביצ’י<br><br>\"שניימקרא – טקסט לשמע\" הוא יישומון השולף את פרשת השבוע עם פרשנות רש\"י מסנתז את הטקסט לשמע ומאפשר לשמוע את הפרשה \"בלכתך בדרך\". שימושי מאוד לנסיעות ארוכות לעבודה!'\n            heImg=\"/static/img/pbsc-2021-landing-page/shenaim mikra.png\"\n            heImgAlt=\"שניימקרא – טקסט לשמע\"\n            borderColor={palette.colors.paleblue}\n            link=\"http://shnaim-mikra-abe.s3-website-us-east-1.amazonaws.com/\"\n        />\n\n\n        <Feature\n            enTitle=\"Verse-Based Search\"\n            enText=\"By Oren Mishali<br><br>An innovative tool that helps users search for sources by quotations. On selecting a set of verses, the site generates a list of texts that quote verses from the set. This tool provides an different way to quickly find relevant sources - sorting results by their relationship to a specific verse rather than topic or text\"\n            enImg=\"/static/img/pbsc-2021-landing-page/verse search.png\"\n            enImgAlt=\"Verse-Based Search\"\n            heTitle=\"חיפוש מבוסס פסוקים\"\n            heText='מאת אורן משעלי<br><br>\"חיפוש מבוסס פסוקים\" הוא כלי חדשני שעוזר למשתמשים לחפש מקורות על פי ציטוטים. באמצעות בחירה של סדרת פסוקים, האתר מחולל רשימה של טקסטים המצטטים פסוקים בסדרה. הכלי הזה מספק דרך חלופית למציאת מקורות רלוונטיים במהירות – הוא ממיין תוצאות על פי הקשר שלהם לפסוק מסוים במקום לפי הקשר שלהם לנושא או לטקסט.'\n            heImg=\"/static/img/pbsc-2021-landing-page/verse search.png\"\n            heImgAlt=\"חיפוש מבוסס פסוקים\"\n            borderColor={palette.colors.blue}\n            link=\"http://jbse.cs.technion.ac.il/#/show?uri=section-tanach-1-1\"\n        />\n\n\n        <Feature\n            enTitle=\"Stories of the Zohar\"\n            enText=\"By Yair Gardin<br><br>A digital resource of the stories of the sages that appear in the Zohar, allowing easy perusal of the stories. The site includes mapping of all the stories of the Zohar according to parshas and topics, as well as accompanying visuals and links to similar stories.\"\n            enImg=\"/static/img/pbsc-2021-landing-page/zohar stories.png\"\n            enImgAlt=\"Daf Yomi Crossword\"\n            heTitle=\"סיפורי הזוהר\"\n            heText='מאת יאיר גרדין<br><br>זהו משאב דיגיטלי לסיפורי החכמים שבזוהר, המאפשר קריאה מעמיקה בקלות. האתר כולל מיפוי של כל סיפורי הזוהר על פי פרשות ונושאים, וכן הדמיות המלוות את הסיפורים וקישורים לסיפורים דומים. '\n            heImg=\"/static/img/pbsc-2021-landing-page/zohar stories.png\"\n            heImgAlt=\"תשבץ דף יומי\"\n            borderColor={palette.colors.orange}\n            link=\"https://www.zohar-stories.com/\"\n        />\n\n\n        <CallToActionFooterWithButton\n            href=\"https://github.com/Sefaria/Sefaria-Project\"\n            he_href=\"https://github.com/Sefaria/Sefaria-Project\"\n            enText=\"Want to create something of your own?\"\n            heText=\"רוצה ליצור משהו משלך?\"\n            enButtonText=\"GitHub\"\n            heButtonText=\"גיטהאב\"\n        />\n\n        <ButtonRow white={true} enTitle=\"Explore the 2021 projects\" heTitle=\"גלו את מיזמי 2021\">\n            { [\n                [\"Talmud Sidebar Extension\", \"תוסף סרגל הכלים של התלמוד\", \"https://chrome.google.com/webstore/detail/talmud-sidebar-extension/dmpiiciebnbekblfbcdeogjkbbmeeimi\"],\n                [\"Mizmor Shir\", \"מזמור שיר\", \"http://mizmor-shir.herokuapp.com/\"],\n                [\"Shulkhan\", \"שולחן\", \"http://josephtepperman.com/shulkhan.htm\"],\n                [\"Goof - Body parts in Tefillah\", \"גוף: איברי הגוף בתפילה\", \"https://goof.surge.sh/\"],\n                [\"Capish - Interactive Learning\", \"קאפיש: לימוד אינטראקטיבי\", \"https://capish.me/\"],\n                [\"Daf Yomi Crossword\", \"תשבץ דף יומי\", \"http://ee.cooper.edu/~goldfarb/daf\"],\n                [\"Sefer Similarity Map\", \"ספר– מפת דמיון בין טקסטים\", \"https://jhostyk.github.io/SeferSimilarityMap\"],\n                [\"Custom Mikraot Gedolot\", \"מקראות גדולות בהתאמה אישית\", \"http://ec2-3-129-165-55.us-east-2.compute.amazonaws.com:3002/\"],\n                [\"Sefaria Space: (Topic Museum + Text Mania)\", \"מרחב ספריא (מוזיאון נושאי + טָרֶפֶת טקסט)\", \"https://sefaria-space.web.app/\"],\n                [\"The Rabbinic Citation Network\", \"רשת ציטוטים של חכמי התלמוד\", \"http://www.rabbiniccitations.jewishstudies.digitalscholarship.brown.edu/blog/\"],\n                [\"T'Feeling\", \"פילינג\", \"https://tfeeling.netlify.app\"],\n                [\"CiteMakor\", \"המצ'טט\", \"https://twitter.com/CiteMakor\"],\n                [\"Gifaria\", \"גיפַריא\", \"https://tiger-tang.shinyapps.io/gifaria\"],\n                [\"The Taryag Mitzvos\", \"תרי\\\"ג מצוות\", \"https://thetaryag.com/\"],\n                [\"3D Tanach Family Tree\", \"אילן יוחסין תנ\\\"כי תלת ממדי\", \"http://www.basehasefer.com\"],\n                [\"Gematriaphone\", \"גימטריה קולית\", \"http://alexboxer.com/gematriaphone\"],\n                [\"sefaria-connections\", \"קשרי ספריא\", \"https://charlesloder.github.io/sefaria-connections\"],\n                [\"SefariAcrostic\", \"ספריאקרוסטיכון\", \"https://20gordone.github.io/SefariaContest\"],\n\n            ].map(i =>\n                <SimpleButton\n                    white={true}\n                    rounded={false}\n                    tall={true}\n                    newTab={true}\n                    href={i[2]}\n                    he_href={i[2]}\n                    he={i[1]}\n                    en={i[0]}\n                />)\n            }\n        </ButtonRow>\n\n    </StaticPage>\n);\n\nconst Accordian = ({enTitle, heTitle, enText, heText, colorBar}) => (\n     <details style={{borderColor: colorBar}}>\n      <summary>\n          <span className=\"int-en\">{enTitle}</span>\n          <span className=\"int-he\">{heTitle}</span>\n      </summary>\n      <div className=\"int-en\" dangerouslySetInnerHTML={{__html:enText}} />\n      <div className=\"int-he\" dangerouslySetInnerHTML={{__html:heText}} />\n     </details>\n)\n\n\nconst StaticPage = ({children, optionalClass=\"\"}) => {\n    var staticPageClass = \"staticPage\";\n    if (optionalClass !== \"\") {\n        staticPageClass += \" \" + optionalClass;\n    }\n    return <div className={staticPageClass}>\n        {children}\n    </div>\n};\n\nconst Spacer = ({height}) => <div className={\"staticPageSpacer\"} style={{height: height || 60}}></div>;\n\nconst HeBlock = ({children, padded}) => <div className={\"int-he\" + (padded ? \" staticPageBlockInner\" : \"\")}>{children}</div>;\n\nconst EnBlock = ({children, padded}) => <div className={\"int-en\" + (padded ? \" staticPageBlockInner\" : \"\")}>{children}</div>;\n\nconst GreyBox = ({children, light}) => <div className={light ? \"lightgreyBackground\" : \"greyBackground\"}>{children}</div>\n\nconst H1Block = ({en, he}) =>\n  <div className=\"staticPageBlockInner\">\n    <h1 className=\"staticPageH1 serif\">\n        <SimpleInterfaceBlock en={en} he={he} />\n    </h1>\n  </div>;\n\n\nconst H2Block = ({en, he, classes, serif}) =>\n  <div className=\"staticPageBlockInner\">\n    <h2 className={serif ? \"staticPageH2 serif\" : \"staticPageH2\"}>\n        <SimpleInterfaceBlock en={en} he={he} />\n    </h2>\n  </div>;\n\nconst HeaderWithColorAccentBlockAndText = ({enTitle, heTitle, enText, heText, colorBar}) => (\n    <div className=\"HeaderWithColorAccentBlockAndText\">\n        <h2 className=\"serif\">\n            <span className=\"int-en\">{enTitle}</span>\n            <span className=\"int-he\">{heTitle}</span>\n        </h2>\n\n        <hr style={{borderColor: colorBar}} />\n\n        <div className=\"int-en\" dangerouslySetInnerHTML={{__html:enText}} />\n        <div className=\"int-he\" dangerouslySetInnerHTML={{__html:heText}} />\n\n    </div>\n)\n\nconst SubscribeButton = ({enAction, heAction, heLists, enLists, redirectURL}) => {\n  const email = Sefaria._email;\n  const [message, setMessage] = useState(\"\");\n  const [messageStyle, setMessageStyle] = useState(\"\");\n  const heActionText = useRef(heAction);\n  const enActionText = useRef(enAction);\n\n  if (email.length === 0) {\n    enActionText.current = enAction;\n    heActionText.current = heAction;\n  }\n\n  const handleClick = () => {\n      if (Sefaria.util.isValidEmailAddress(email)) {\n          setMessage(\"Subscribing...\");\n          setMessageStyle(\"italics\");\n          const lists = Sefaria.interfaceLang == \"hebrew\" ? heLists : enLists\n\n          const request = new Request(\n              \"/api/subscribe/\" + email,\n              {headers: {'X-CSRFToken': Cookies.get('csrftoken')}}\n          );\n          fetch(request, {\n              method: 'POST',\n              mode: 'same-origin',\n              credentials: 'same-origin',\n              body: {\"lists\": lists},\n          }).then(response => {\n              if (!response.ok) {\n                  response.text().then(resp_text => {\n                      setMessage(resp_text)\n                      setMessageStyle(\"\");\n                  });\n              } else {\n                  response.json().then(resp_json => {\n                      if (resp_json.hasOwnProperty(\"status\") && resp_json[\"status\"] == \"ok\") {\n                          setMessage(\"Subscribed! Welcome to our list.\");\n                          setMessageStyle(\"\");\n                      } else if (resp_json.hasOwnProperty(\"error\")) {\n                          setMessage(resp_json[\"error\"]);\n                          setMessageStyle(\"\");\n                      }\n                  });\n              }\n          }).catch(error => {\n              setMessage(error.message);\n          });\n      }\n  }\n\n  return <span>\n      <div className=\"simpleButtonWrapper signUpEducators\">\n        <div onClick={handleClick} className={classNames({button:1, flexContainer:1, \"int-en\":1, white: true, tall: false, rounded:true})}>\n          <span className=\"int-en\">{email.length === 0 ? <a href={redirectURL}>{enActionText.current}</a> : enActionText.current}<img src=\"/static/img/circled-arrow-right.svg\"/></span>\n        </div>\n        <div onClick={handleClick} className={classNames({button:1, flexContainer:1, \"int-he\":1, white: true, tall: false, rounded:true})}>\n          <span className=\"int-he\">{email.length === 0 ? <a href={redirectURL}>{heActionText.current}</a> : heActionText.current}<img src=\"/static/img/circled-arrow-left.svg\"/></span>\n        </div>\n      </div>\n      <div className={`signUpEducatorsMessage ${messageStyle}`}>{message}<br/></div>\n  </span>\n}\n\nconst HeaderForEducatorsPage = () => {\n  var enTitle=\"Teach with Sefaria\"\n  var enText=\"Discover the power of digital texts and tools in your classroom. Explore Sefaria’s many resources to enrich teaching and learning in your community.\"\n  var heText=\"גלו כיצד להעשיר את הלמידה וההוראה באמצעות מאגר מקורות דיגיטלי. באתר אפשרויות רבות ללומדים:  תוכלו למצוא מקורות, להיפגש עם מגוון של חומרי הוראה ולחזק את התלמידים שלכם כלומדים עצמאיים.\"\n  var heTitle=\"מלמדים עם ספריא\"\n\n  return <div className=\"staticPageHeader educators\">\n    <div className=\"staticPageBlockInner flexContainer\">\n      <div className=\"staticPageHeaderTextBox educators\">\n        <h1>\n          <span className=\"int-en\">{enTitle}</span>\n          <span className=\"int-he\">{heTitle}</span>\n        </h1>\n        <SimpleInterfaceBlock classes=\"staticPageHeaderText\" he={heText} en={enText}/>\n        <SubscribeButton\n             enAction={\"Sign up to get updates\"}\n             heAction={\"הירשמו לקבלת הניוזלטר\"}\n             heLists={\"Announcements_General_Hebrew|Announcements_Edu_Hebrew\"}\n             enLists={\"Announcements_General|Announcements_Edu\"}\n             redirectURL={\"/register?educator=true&next=/educators\"}\n            />\n      </div>\n    </div>\n  </div>\n};\n\nconst HeaderForRabbisPage = () => {\n  var enTitle=\"Sefaria for Rabbis\"\n  var enText=\"Discover the power of digital texts and tools to fuel your rabbinate. Explore Sefaria’s many resources to enrich learning and teaching in your community.\"\n\n  return <div className=\"staticPageHeader rabbis\">\n    <div className=\"staticPageBlockInner flexContainer\">\n      <div className=\"staticPageHeaderTextBox educators\">\n        <h1>\n          <span className=\"int-en\">{enTitle}</span>\n        </h1>\n        <SimpleInterfaceBlock classes=\"staticPageHeaderText\" en={enText}/>\n        <SubscribeButton\n             enAction={\"Sign up for Rabbi Newsletter\"}\n             heAction={\"הירשמו לקבלת הניוזלטר\"}\n             heLists={\"ANNOUNCEMENTS_General_Hebrew|ANNOUNCEMENTS_Rabbi_Hebrew\"}\n             enLists={\"ANNOUNCEMENTS_General|ANNOUNCEMENTS_Rabbi\"}\n             redirectURL={\"/register?next=/rabbis\"}\n            />\n      </div>\n    </div>\n  </div>\n};\n\n\nconst HeaderForDonatePage = () => {\n  var enTitle=\"Your gift. Your impact.\"\n  var enText=\"When you give to Sefaria, you’re powering a living library of more than 3,000 years of Jewish texts. Donate today and support the future of Jewish learning, innovation, and conversation.\"\n  var heText=\"גלו כיצד להעשיר את הלמידה וההוראה באמצעות מאגר מקורות דיגיטלי. באתר אפשרויות רבות ללומדים:  תוכלו למצוא מקורות, להיפגש עם מגוון של חומרי הוראה ולחזק את התלמידים שלכם כלומדים עצמאיים.\"\n  var heTitle=\"מלמדים עם ספריא\"\n\n  return <div className=\"staticPageHeader donate\">\n    <div className=\"staticPageBlockInner flexContainer\">\n      <div className=\"staticPageHeaderTextBox donate\">\n        <h1>\n          <span className=\"int-en\">{enTitle}</span>\n          <span className=\"int-he\">{heTitle}</span>\n        </h1>\n        <SimpleInterfaceBlock classes=\"staticPageHeaderText\" he={heText} en={enText}/>\n      </div>\n    </div>\n  </div>\n};\n\n\nconst Header = ({enTitle, heTitle, enText, heText, enImg, heImg, enImgAlt, heImgAlt, enActionURL, enActionText, heActionURL, heActionText, newTab}) => {\n    var staticPageHeaderClass = \"staticPageHeader\";\n    var imgComponent = \"\";\n    if (enImg === \"\" && heImg === \"\") {\n      staticPageHeaderClass += \" textOnly\";\n    }\n    else\n    {\n      imgComponent = <span><img className=\"int-en\" src={enImg} alt={enImgAlt}/><img className=\"int-he\" src={heImg} alt={heImgAlt}/></span>;\n    }\n    return <div className={staticPageHeaderClass}>\n        <div className=\"staticPageBlockInner flexContainer\">\n            <div className=\"staticPageHeaderTextBox\">\n                <h1>\n                    <span className=\"int-en\">{enTitle}</span>\n                    <span className=\"int-he\">{heTitle}</span>\n                </h1>\n                <SimpleInterfaceBlock classes=\"staticPageHeaderText\" he={heText} en={enText}/>\n                {enActionURL ?\n                    <SimpleButton en={enActionText} he={heActionText} href={enActionURL} he_href={heActionURL}\n                                  white={true} newTab={newTab}/> : null}\n            </div>\n            <div className=\"staticPageHeaderImg\">\n                {imgComponent}\n            </div>\n        </div>\n    </div>\n};\n\nconst Section = ({children, noPadding}) =>\n    <div className={classNames({\n        \"staticPageBlockInner\": 1,\n        \"staticPageSection\": !noPadding,\n    })}>\n        {children}\n    </div>;\n\nconst UserQuote = ({enText, heText, image, enName, heName}) =>\n    <div className=\"staticPageUserQuote\">\n        <div className=\"staticPageUserQuoteContent\">\n            <div className=\"int-en\" dangerouslySetInnerHTML={{__html:enText}} />\n            <div className=\"int-he\" dangerouslySetInnerHTML={{__html:heText}} />\n        </div>\n        <div className=\"staticPageUserQuoteNameBox\">\n            <img src={image} />\n            <div className=\"staticPageUserQuoteName\">\n                <span className=\"int-en\" dangerouslySetInnerHTML={{__html:enName}} />\n                <span className=\"int-he\" dangerouslySetInnerHTML={{__html:heName}} />\n            </div>\n        </div>\n    </div>;\n\nconst Sheet = ({title, link, author, image}) =>\n    <div className=\"staticPageSheetItem\">\n        <a href={link}>{title}</a>\n        <img src={image}/>\n        <span className=\"staticPageSheetAuthor\">{author}</span>\n    </div>;\n\nconst CallToActionFooterWithButton = ({href, he_href, enText, heText, enButtonText, heButtonText, newTab=false}) => (\n  <div className=\"staticPageCallToActionFooter\">\n    <div className=\"staticPageBlockInner flexContainer\">\n      <SimpleInterfaceBlock classes=\"callToActionText\" en={enText} he={heText} />\n      <SimpleButton href={href} he_href={he_href} en={enButtonText} he={heButtonText} white={true} newTab={newTab}/>\n    </div>\n  </div>\n);\n\nconst CallToActionFooter = ({enText, heText}) => (\n    <div className=\"staticPageCallToActionFooter\">\n        <div className=\"staticPageBlockInner flexContainer\">\n            <SimpleInterfaceBlock classes=\"callToActionText noButton\" en={enText} he={heText} />\n        </div>\n    </div>\n);\n\nconst CallToActionFooterWithNewsletter = ({enText, heText, includeEducatorOption}) => (\n    <div className=\"staticPageCallToActionFooter\">\n        <div className=\"staticPageBlockInner flexContainer\">\n            <SimpleInterfaceBlock classes=\"callToActionText\" en={enText} he={heText} />\n            <NewsletterSignUpForm contextName=\"Distance Learning Static Page\" includeEducatorOption={includeEducatorOption} />\n        </div>\n    </div>\n);\n\nconst About = ({enTitle, heTitle, enText, heText, backgroundColor}) => (\n    <div className={\"staticPageAbout\" + (backgroundColor == \"grey\" ? \" greyBackground\" : \"\")}>\n        <div className=\"staticPageBlockInner\">\n            <h2>\n                <span className=\"int-en\">{enTitle}</span>\n                <span className=\"int-he\">{heTitle}</span>\n            </h2>\n            <SimpleInterfaceBlock classes=\"staticPageAboutText\" he={heText} en={enText} />\n        </div>\n    </div>\n);\n\nconst ImageWithText = ({enText, heText, enImg, heImg, enImgAlt, heImgAlt}) => (\n    <div className=\"feature blockVerticalPadding\" style={{backgroundColor: \"inherit\"}}>\n        <div className=\"staticPageBlockInner flexContainer\">\n            <div className=\"featureText\" style={{borderTop: 0}}>\n                <div className=\"int-en\" dangerouslySetInnerHTML={{__html:enText}} />\n                <div className=\"int-he\" dangerouslySetInnerHTML={{__html:heText}} />\n            </div>\n            <div className=\"featureImage\">\n                <img className=\"int-en\" src={enImg} alt={enImgAlt}/>\n                <img className=\"int-he\" src={heImg} alt={heImgAlt}/>\n            </div>\n        </div>\n    </div>\n);\n\nconst FeatureBox = ({enTitle, heTitle, enText, heText, enButtonText, heButtonText, enButtonUrl, heButtonUrl, borderColor}) => (\n    <div className=\"featureBox\" style={{borderColor: borderColor}}>\n        <div className=\"featureHeader\">\n            <h3>\n                <span className=\"int-en\">{enTitle}</span>\n                <span className=\"int-he\">{heTitle}</span>\n            </h3>\n        </div>\n        <div className=\"int-en\" dangerouslySetInnerHTML={{__html:enText}} />\n        <div className=\"int-he\" dangerouslySetInnerHTML={{__html:heText}} />\n\n        <SimpleButton\n            white={false}\n            rounded={true}\n            tall={false}\n            href={enButtonUrl}\n            he_href={heButtonUrl}\n            he={heButtonText}\n            en={enButtonText}\n        />\n\n    </div>\n)\n\nconst Feature = ({enTitle, heTitle, enText, heText, enImg, heImg, enImgAlt, heImgAlt, borderColor, link}) => (\n    <div className=\"feature\">\n        <div className=\"staticPageBlockInner flexContainer\">\n            <div className=\"featureText\" style={{borderColor: borderColor}}>\n                <div className=\"featureHeader\">\n                    <ConditionalLink link={link}>\n                        <h3>\n                            <span className=\"int-en\">{enTitle}</span>\n                            <span className=\"int-he\">{heTitle}</span>\n                        </h3>\n                    </ConditionalLink>\n                </div>\n                <div className=\"int-en\" dangerouslySetInnerHTML={{__html:enText}} />\n                <div className=\"int-he\" dangerouslySetInnerHTML={{__html:heText}} />\n            </div>\n            <ConditionalLink link={link}>\n                <div className=\"featureImage\">\n                    <img className=\"int-en\" src={enImg} alt={enImgAlt}/>\n                    <img className=\"int-he\" src={heImg} alt={heImgAlt}/>\n                </div>\n            </ConditionalLink>\n        </div>\n    </div>\n);\n\nconst ButtonRow = ({children, light, white, enTitle, heTitle}) => (\n    <div className={classNames({\n        \"buttonRow\": 1,\n        \"blockVerticalPadding\": 1,\n        \"lightgreyBackground\": light,\n        \"greyBackground\": !white && !light\n    })}>\n        {enTitle && heTitle ?  <H2Block en={enTitle} he={heTitle}/> : null }\n        <div className=\"staticPageBlockInner flexContainer\">{children}</div>\n    </div>\n);\n\nconst SimpleButton = ({href, he_href, he, en, white, rounded=true, tall=false, newTab=false}) => (\n    <div className=\"simpleButtonWrapper\">\n        <a href={href} className={classNames({button:1, flexContainer:1, \"int-en\":1, white: white, tall: tall, rounded:rounded})} target={newTab ? \"_blank\" : \"_self\"}>\n            <span className=\"int-en\">{en}</span>\n        </a>\n        <a href={he_href || href} className={classNames({button:1, flexContainer:1, \"int-he\":1, white: white, tall: tall, rounded:rounded})}>\n            <span className=\"int-he\">{he}</span>\n        </a>\n    </div>\n);\n\nconst ParashaSponsorship = ({title, sponsorNames, message, link}) => {\n    if (!sponsorNames) {\n        return <div className=\"parashaSponsorship\">\n            <div className=\"parashaTitle\">{title}</div>\n            <div className=\"parashaSponsorNames\"><a target=\"_blank\" href='mailto:hannah@sefaria.org?subject=Ramban Sponsorship'><b><i>Available for Sponsorship</i></b></a></div>\n        </div>\n    }\n    else {\n        return <div className=\"parashaSponsorship\">\n            <a href={link} className=\"parashaTitle\">{title}</a>\n            <div className=\"parashaSponsorNames\">{sponsorNames}</div>\n            {message ?\n            <div className=\"parashaMessage\">{message}</div> : null }\n        </div>\n    }\n};\n\nconst StaticHR = () =>\n    <div className=\"staticPageBlockInner\"><hr /></div>;\n\nconst ConditionalLink = ({ link, children }) =>\n  link ? <a href={link} target=\"_blank\">{children}</a> : children;\n\n/*\n* Team Page\n*/\n\n// Takes an array and boolean proposition function to be evaluated against each element\n// Returns two arrays within an array\n// The first contains the elements for which the proposition function evaluates to true. The second contains the rest\nconst partition = (arr, prop) =>\n    arr.reduce(\n        (accumulator, currentValue) => {\n            accumulator[prop(currentValue) ? 0 : 1].push(currentValue);\n            return accumulator;\n        },\n        [[], []]\n    );\n\n// Defines a comparator to be used for sorting team members\nconst byLastName = () => {\n    const locale = Sefaria.interfaceLang === \"hebrew\" ? \"he\" : \"en\";\n    return (a, b) => {\n        const lastNameA = a.teamMemberDetails.teamName[locale].split(\" \").pop();\n        const lastNameB = b.teamMemberDetails.teamName[locale].split(\" \").pop();\n        return lastNameA.localeCompare(lastNameB, locale);\n    };\n};\n\nconst TeamTitle = ({ teamTitle }) => (\n    <div className=\"teamTitle\">\n        <InterfaceText text={teamTitle} />\n    </div>\n);\n\nconst TeamName = ({ teamName }) => (\n    <div className=\"teamName\">\n        <InterfaceText text={teamName} />\n    </div>\n);\n\nconst TeamMemberDetails = ({ teamMemberDetails }) => (\n    <div className=\"teamMemberDetails\">\n        <TeamName teamName={teamMemberDetails.teamName} />\n        <TeamTitle teamTitle={teamMemberDetails.teamTitle} />\n    </div>\n);\n\nconst TeamMemberImage = ({ teamMember }) => (\n    <div className=\"teamMemberImage\">\n        <img\n            src={teamMember.teamMemberImage}\n            alt={`Headshot of ${teamMember.teamMemberDetails.teamName.en}`}\n        />\n    </div>\n);\n\nconst TeamMember = ({ teamMember }) => (\n    <div className=\"teamMember\">\n        <TeamMemberImage teamMember={teamMember} />\n        <TeamMemberDetails teamMemberDetails={teamMember.teamMemberDetails} />\n    </div>\n);\n\nconst TeamMembers = ({ teamMembers }) => (\n    <>\n        {teamMembers.map((teamMember) => (\n            <TeamMember key={teamMember.id} teamMember={teamMember} />\n        ))}\n    </>\n);\n\nconst BoardMember = ({ boardMember }) => (\n    <div className=\"teamBoardMember\">\n        <TeamMemberDetails teamMemberDetails={boardMember.teamMemberDetails} />\n    </div>\n);\n\nconst BoardMembers = ({ boardMembers }) => {\n    let chairmanBoardMember;\n    const chairmanIndex = boardMembers.findIndex(\n        (boardMember) =>\n            boardMember.teamMemberDetails.teamTitle.en.toLowerCase() ===\n            \"chairman\"\n    );\n    if (chairmanIndex !== -1) {\n        chairmanBoardMember = boardMembers.splice(chairmanIndex, 1);\n    }\n    const [cofounderBoardMembers, regularBoardMembers] = partition(\n        boardMembers,\n        (boardMember) =>\n            boardMember.teamMemberDetails.teamTitle.en.toLowerCase() ===\n            \"co-founder\"\n    );\n\n    return (\n        <>\n            {chairmanBoardMember && (\n                <BoardMember boardMember={chairmanBoardMember[0]} />\n            )}\n            {cofounderBoardMembers.map((boardMember) => (\n                <BoardMember key={boardMember.id} boardMember={boardMember} />\n            ))}\n            {regularBoardMembers.sort(byLastName()).map((boardMember) => (\n                <BoardMember key={boardMember.id} boardMember={boardMember} />\n            ))}\n        </>\n    );\n};\n\nconst TeamMembersPage = memo(() => {\n    const [ordinaryTeamMembers, setOrdinaryTeamMembers] = useState([]);\n    const [teamBoardMembers, setTeamBoardMembers] = useState([]);\n    const [error, setError] = useState(null);\n\n    const fetchTeamMembersJSON = async () => {\n        const query = `\n            query {\n                teamMembers(pagination: { limit: -1 }) {\n                    data {\n                        id\n                        attributes {\n                            teamName\n                            teamTitle\n                            isTeamBoardMember\n                            teamMemberImage {\n                                data {\n                                    attributes {\n                                        url\n                                    }\n                                }\n                            }\n                            localizations {\n                                data {\n                                    attributes {\n                                        locale\n                                        teamName\n                                        teamTitle\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n            `;\n        try {\n            const response = await fetch(STRAPI_INSTANCE + \"/graphql\", {\n                method: \"POST\",\n                mode: \"cors\",\n                cache: \"no-cache\",\n                credentials: \"omit\",\n                headers: {\n                    \"Content-Type\": \"application/json\",\n                },\n                redirect: \"follow\",\n                referrerPolicy: \"no-referrer\",\n                body: JSON.stringify({ query }),\n            });\n            if (!response.ok) {\n                throw new Error(`HTTP Error: ${response.statusText}`);\n            }\n            const data = await response.json();\n            return data;\n        } catch (error) {\n            throw error;\n        }\n    };\n\n    const loadTeamMembers = async () => {\n        if (typeof STRAPI_INSTANCE !== \"undefined\" && STRAPI_INSTANCE) {\n            try {\n                const teamMembersData = await fetchTeamMembersJSON();\n\n                const teamMembersFromStrapi =\n                    teamMembersData.data.teamMembers.data.map(\n                        (teamMember) => {\n                            const heLocalization =\n                                teamMember.attributes.localizations.data[0];\n\n                            return {\n                                id: teamMember.id,\n                                isTeamBoardMember:\n                                    teamMember.attributes.isTeamBoardMember,\n                                teamMemberImage:\n                                    teamMember.attributes.teamMemberImage\n                                        ?.data?.attributes?.url,\n                                teamMemberDetails: {\n                                    teamName: {\n                                        en: teamMember.attributes.teamName,\n                                        he: heLocalization.attributes\n                                            .teamName,\n                                    },\n                                    teamTitle: {\n                                        en: teamMember.attributes.teamTitle,\n                                        he: heLocalization.attributes\n                                            .teamTitle,\n                                    },\n                                },\n                            };\n                        }\n                    );\n\n                const [ordinaryMembers, boardMembers] = partition(\n                    teamMembersFromStrapi,\n                    (teamMember) => !teamMember.isTeamBoardMember\n                );\n\n                setOrdinaryTeamMembers(ordinaryMembers);\n                setTeamBoardMembers(boardMembers);\n            } catch (error) {\n                console.error(\"Fetch error:\", error);\n                setError(\"Error: Sefaria's CMS cannot be reached\");\n            }\n        } else {\n            setError(\"Error: Sefaria's CMS cannot be reached\");\n        }\n    };\n\n    useEffect(() => {\n        loadTeamMembers();\n    }, []);\n\n    return (\n        <div>\n            {error ? (\n                <h1>{error}</h1>\n            ) : (\n                <>\n                    <section className=\"main-text team-members\">\n                        <TeamMembers\n                            teamMembers={ordinaryTeamMembers.sort(byLastName())}\n                        />\n                    </section>\n                    <header>\n                        <h2>\n                            <span className=\"int-en\">BOARD OF DIRECTORS</span>\n                            <span className=\"int-he\">מועצת המנהלים</span>\n                        </h2>\n                    </header>\n                    <section className=\"main-text board-members\">\n                        <BoardMembers boardMembers={teamBoardMembers} />\n                    </section>\n                </>\n            )}\n        </div>\n    );\n});\n\n/*\n* Jobs Page\n*/\n\n// Show a different header with a description of Sefaria for the page in the case that there are jobs available\nconst JobsPageHeader = ({ jobsAreAvailable }) => {\n    return (\n        <>\n            <header>\n                <h1 className=\"serif\">\n                    <span className=\"int-en\">Jobs at Sefaria</span>\n                    <span className=\"int-he\">משרות פנויות בספריא</span>\n                </h1>\n\n                {jobsAreAvailable ? (\n                    <>\n                        <h2>\n                            <span className=\"int-en\">About Sefaria</span>\n                            <span className=\"int-he\">אודות ספריא</span>\n                        </h2>\n                        <p>\n                            <span className=\"int-en\">\n                                Sefaria is a nonprofit organization dedicated to creating the\n                                future of Torah in an open and participatory way. We are assembling\n                                a free, living library of Jewish texts and their interconnections,\n                                in Hebrew and in translation.\n                            </span>\n                            <span className=\"int-he\">\n                                ספריא היא ארגון ללא מטרות רווח שמטרתו יצירת הדור הבא של לימוד התורה\n                                באופן פתוח ומשותף. אנחנו בספריא מרכיבים ספרייה חיה וחופשית של טקסטים\n                                יהודיים וכלל הקישורים ביניהם, בשפת המקור ובתרגומים.\n                            </span>\n                        </p>\n                    </>\n                ) : null}\n            </header>\n        </>\n    );\n};\n\nconst Job = ({ job }) => {\n    return (\n        <div className=\"job\">\n            <a className=\"joblink\" target=\"_blank\" href={job.jobLink}>\n                {job.jobDescription}\n            </a>\n        </div>\n    );\n};\n\n// Show the list of job postings within a department category\nconst JobsListForDepartment = ({ jobsList }) => {\n    return (\n        <section className=\"jobsListForDepartment\">\n            {jobsList.map((job) => (\n                <Job key={job.id} job={job} />\n            ))}\n        </section>\n    );\n};\n\n// Job postings are grouped by department. This component will show the jobs for a specific department\n// Each department has a header for its category before showing a list of the job postings there\nconst JobPostingsByDepartment = ({ department, departmentJobPostings }) => {\n    return (\n        <section className=\"section department englishOnly\">\n            <header>\n                <h2 className=\"anchorable\">{department}</h2>\n            </header>\n            <JobsListForDepartment key={department} jobsList={departmentJobPostings} />\n        </section>\n    );\n};\n\n// Show all the job postings grouped by department and render each department separately\nconst GroupedJobPostings = ({ groupedJobPostings }) => {\n\n    return (\n        Object.entries(groupedJobPostings).map(([department, departmentJobPostings]) => {\n            return (\n                <JobPostingsByDepartment\n                    key={department}\n                    department={department}\n                    departmentJobPostings={departmentJobPostings}\n                />\n            );\n        })\n    );\n};\n\n\nconst NoJobsNotice = () => {\n    return (\n        <div className=\"section nothing\">\n            <p>\n                <span className=\"int-en\">\n                    Sefaria does not currently have any open positions.\n                    Please follow us on <a target=\"_blank\" href=\"http://www.facebook.com/sefaria.org\" >Facebook</a>\n                    to hear about our next openings.\n                </span>\n                <span className=\"int-he\">\n                    ספריא איננה מחפשת כעת עובדים חדשים.\n                    עקבו אחרינו ב<a target=\"_blank\" href=\"http://www.facebook.com/sefaria.org\" >פייסבוק</a>&nbsp;\n                    כדי להשאר מעודכנים במשרות עתידיות.\n                </span>\n            </p>\n        </div>\n    );\n};\n\n\n\nconst JobsPage = memo(() => {\n    const [groupedJobPostings, setGroupedJobPostings] = useState({});\n    const [error, setError] = useState(null);\n\n    const fetchJobsJSON = async () => {\n        const currentDateTime = new Date().toISOString();\n        const query = `\n            query { \n                jobPostings(\n                    pagination: { limit: -1 }\n                    filters: {\n                        jobPostingStartDate: { lte: \\\"${currentDateTime}\\\" }\n                        jobPostingEndDate: { gte: \\\"${currentDateTime}\\\" }\n                    }\n                ) {\n                    data {\n                        id\n                        attributes {\n                            jobLink\n                            jobDescription\n                            jobDepartmentCategory\n                        }\n                    }\n                }\n            }\n        `;\n    \n        try {\n            const response = await fetch(STRAPI_INSTANCE + \"/graphql\", {\n                method: \"POST\",\n                mode: \"cors\",\n                cache: \"no-cache\",\n                credentials: \"omit\",\n                headers: {\n                    \"Content-Type\": \"application/json\",\n                },\n                redirect: \"follow\",\n                referrerPolicy: \"no-referrer\",\n                body: JSON.stringify({ query }),\n            });\n            if (!response.ok) {\n                throw new Error(`HTTP Error: ${response.statusText}`);\n            }\n            const data = await response.json();\n            return data;\n        } catch (error) {\n            throw error;\n        }\n    };\n    \n    const loadJobPostings = async () => {\n        if (typeof STRAPI_INSTANCE !== \"undefined\" && STRAPI_INSTANCE) {\n            try {\n                const jobsData = await fetchJobsJSON();\n\n                const jobsFromStrapi = jobsData.data?.jobPostings?.data?.map((jobPosting) => {\n                    return {\n                        id: jobPosting.id,\n                        jobLink: jobPosting.attributes.jobLink,\n                        jobDescription: jobPosting.attributes.jobDescription,\n                        jobDepartmentCategory: jobPosting.attributes.jobDepartmentCategory\n                            .split(\"_\")\n                            .join(\" \"),\n                    };\n                });\n\n                // Group the job postings by department\n                const groupedJobs = jobsFromStrapi.reduce((jobPostingsGroupedByDepartment, jobPosting) => {\n                    const category = jobPosting.jobDepartmentCategory;\n                    if (!jobPostingsGroupedByDepartment[category]) {\n                        jobPostingsGroupedByDepartment[category] = [];\n                    }\n                    jobPostingsGroupedByDepartment[category].push(jobPosting);\n                    return jobPostingsGroupedByDepartment;\n                }, {});\n\n                setGroupedJobPostings(groupedJobs);\n            } catch (error) {\n                console.error(\"Fetch error:\", error);\n                setError(\"Error: Sefaria's CMS cannot be reached\");\n            }\n        } else {\n            setError(\"Error: Sefaria's CMS cannot be reached\");\n        }\n    };\n\n    useEffect(() => {\n        loadJobPostings();\n    }, []);\n\n    return (\n        <div>\n            {error ? (\n                <h1>{error}</h1>\n            ) : (\n                <>\n                    <JobsPageHeader jobsAreAvailable={Object.keys(groupedJobPostings)?.length} />\n                    {Object.keys(groupedJobPostings)?.length ? (\n                        <GroupedJobPostings groupedJobPostings={groupedJobPostings} />\n                    ) : (\n                        <NoJobsNotice />\n                    )}\n                </>\n            )}\n        </div>\n    );\n});\n\nexport {\n    RemoteLearningPage,\n    SheetsLandingPage,\n    PBSC2020LandingPage,\n    PBSC2021LandingPage,\n    PoweredByPage,\n    ContestLandingPage,\n    RambanLandingPage,\n    EducatorsPage,\n    RabbisPage,\n    DonatePage,\n    WordByWordPage,\n    JobsPage,\n    TeamMembersPage,\n    ContextUSsheetsLandingPage,\n};\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n    PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n    (typeof Blob !== \"undefined\" &&\n        Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n    return typeof ArrayBuffer.isView === \"function\"\n        ? ArrayBuffer.isView(obj)\n        : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n    if (withNativeBlob && data instanceof Blob) {\n        if (supportsBinary) {\n            return callback(data);\n        }\n        else {\n            return encodeBlobAsBase64(data, callback);\n        }\n    }\n    else if (withNativeArrayBuffer &&\n        (data instanceof ArrayBuffer || isView(data))) {\n        if (supportsBinary) {\n            return callback(data);\n        }\n        else {\n            return encodeBlobAsBase64(new Blob([data]), callback);\n        }\n    }\n    // plain string\n    return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n    const fileReader = new FileReader();\n    fileReader.onload = function () {\n        const content = fileReader.result.split(\",\")[1];\n        callback(\"b\" + (content || \"\"));\n    };\n    return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n    let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n    for (i = 0; i < len; i += 3) {\n        base64 += chars[bytes[i] >> 2];\n        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n        base64 += chars[bytes[i + 2] & 63];\n    }\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + '=';\n    }\n    else if (len % 3 === 1) {\n        base64 = base64.substring(0, base64.length - 2) + '==';\n    }\n    return base64;\n};\nexport const decode = (base64) => {\n    let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n    const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n    return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n    if (typeof encodedPacket !== \"string\") {\n        return {\n            type: \"message\",\n            data: mapBinary(encodedPacket, binaryType)\n        };\n    }\n    const type = encodedPacket.charAt(0);\n    if (type === \"b\") {\n        return {\n            type: \"message\",\n            data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n        };\n    }\n    const packetType = PACKET_TYPES_REVERSE[type];\n    if (!packetType) {\n        return ERROR_PACKET;\n    }\n    return encodedPacket.length > 1\n        ? {\n            type: PACKET_TYPES_REVERSE[type],\n            data: encodedPacket.substring(1)\n        }\n        : {\n            type: PACKET_TYPES_REVERSE[type]\n        };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n    if (withNativeArrayBuffer) {\n        const decoded = decode(data);\n        return mapBinary(decoded, binaryType);\n    }\n    else {\n        return { base64: true, data }; // fallback for old browsers\n    }\n};\nconst mapBinary = (data, binaryType) => {\n    switch (binaryType) {\n        case \"blob\":\n            return data instanceof ArrayBuffer ? new Blob([data]) : data;\n        case \"arraybuffer\":\n        default:\n            return data; // assuming the data is already an ArrayBuffer\n    }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n    // some packets may be added to the array while encoding, so the initial length must be saved\n    const length = packets.length;\n    const encodedPackets = new Array(length);\n    let count = 0;\n    packets.forEach((packet, i) => {\n        // force base64 encoding for binary packets\n        encodePacket(packet, false, encodedPacket => {\n            encodedPackets[i] = encodedPacket;\n            if (++count === length) {\n                callback(encodedPackets.join(SEPARATOR));\n            }\n        });\n    });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n    const encodedPackets = encodedPayload.split(SEPARATOR);\n    const packets = [];\n    for (let i = 0; i < encodedPackets.length; i++) {\n        const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n        packets.push(decodedPacket);\n        if (decodedPacket.type === \"error\") {\n            break;\n        }\n    }\n    return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n  if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n    .push(fn);\n  return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n  function on() {\n    this.off(event, on);\n    fn.apply(this, arguments);\n  }\n\n  on.fn = fn;\n  this.on(event, on);\n  return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n  this._callbacks = this._callbacks || {};\n\n  // all\n  if (0 == arguments.length) {\n    this._callbacks = {};\n    return this;\n  }\n\n  // specific event\n  var callbacks = this._callbacks['$' + event];\n  if (!callbacks) return this;\n\n  // remove all handlers\n  if (1 == arguments.length) {\n    delete this._callbacks['$' + event];\n    return this;\n  }\n\n  // remove specific handler\n  var cb;\n  for (var i = 0; i < callbacks.length; i++) {\n    cb = callbacks[i];\n    if (cb === fn || cb.fn === fn) {\n      callbacks.splice(i, 1);\n      break;\n    }\n  }\n\n  // Remove event specific arrays for event types that no\n  // one is subscribed for to avoid memory leak.\n  if (callbacks.length === 0) {\n    delete this._callbacks['$' + event];\n  }\n\n  return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n  this._callbacks = this._callbacks || {};\n\n  var args = new Array(arguments.length - 1)\n    , callbacks = this._callbacks['$' + event];\n\n  for (var i = 1; i < arguments.length; i++) {\n    args[i - 1] = arguments[i];\n  }\n\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n\n  return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n  this._callbacks = this._callbacks || {};\n  return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n  return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n    if (typeof self !== \"undefined\") {\n        return self;\n    }\n    else if (typeof window !== \"undefined\") {\n        return window;\n    }\n    else {\n        return Function(\"return this\")();\n    }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n    return attr.reduce((acc, k) => {\n        if (obj.hasOwnProperty(k)) {\n            acc[k] = obj[k];\n        }\n        return acc;\n    }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n    if (opts.useNativeTimers) {\n        obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n        obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n    }\n    else {\n        obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n        obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n    }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n    if (typeof obj === \"string\") {\n        return utf8Length(obj);\n    }\n    // arraybuffer or blob\n    return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n    let c = 0, length = 0;\n    for (let i = 0, l = str.length; i < l; i++) {\n        c = str.charCodeAt(i);\n        if (c < 0x80) {\n            length += 1;\n        }\n        else if (c < 0x800) {\n            length += 2;\n        }\n        else if (c < 0xd800 || c >= 0xe000) {\n            length += 3;\n        }\n        else {\n            i++;\n            length += 4;\n        }\n    }\n    return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n    constructor(reason, description, context) {\n        super(reason);\n        this.description = description;\n        this.context = context;\n        this.type = \"TransportError\";\n    }\n}\nexport class Transport extends Emitter {\n    /**\n     * Transport abstract constructor.\n     *\n     * @param {Object} opts - options\n     * @protected\n     */\n    constructor(opts) {\n        super();\n        this.writable = false;\n        installTimerFunctions(this, opts);\n        this.opts = opts;\n        this.query = opts.query;\n        this.socket = opts.socket;\n    }\n    /**\n     * Emits an error.\n     *\n     * @param {String} reason\n     * @param description\n     * @param context - the error context\n     * @return {Transport} for chaining\n     * @protected\n     */\n    onError(reason, description, context) {\n        super.emitReserved(\"error\", new TransportError(reason, description, context));\n        return this;\n    }\n    /**\n     * Opens the transport.\n     */\n    open() {\n        this.readyState = \"opening\";\n        this.doOpen();\n        return this;\n    }\n    /**\n     * Closes the transport.\n     */\n    close() {\n        if (this.readyState === \"opening\" || this.readyState === \"open\") {\n            this.doClose();\n            this.onClose();\n        }\n        return this;\n    }\n    /**\n     * Sends multiple packets.\n     *\n     * @param {Array} packets\n     */\n    send(packets) {\n        if (this.readyState === \"open\") {\n            this.write(packets);\n        }\n        else {\n            // this might happen if the transport was silently closed in the beforeunload event handler\n        }\n    }\n    /**\n     * Called upon open\n     *\n     * @protected\n     */\n    onOpen() {\n        this.readyState = \"open\";\n        this.writable = true;\n        super.emitReserved(\"open\");\n    }\n    /**\n     * Called with data.\n     *\n     * @param {String} data\n     * @protected\n     */\n    onData(data) {\n        const packet = decodePacket(data, this.socket.binaryType);\n        this.onPacket(packet);\n    }\n    /**\n     * Called with a decoded packet.\n     *\n     * @protected\n     */\n    onPacket(packet) {\n        super.emitReserved(\"packet\", packet);\n    }\n    /**\n     * Called upon close.\n     *\n     * @protected\n     */\n    onClose(details) {\n        this.readyState = \"closed\";\n        super.emitReserved(\"close\", details);\n    }\n    /**\n     * Pauses the transport, in order not to lose packets during an upgrade.\n     *\n     * @param onPause\n     */\n    pause(onPause) { }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n    let encoded = '';\n    do {\n        encoded = alphabet[num % length] + encoded;\n        num = Math.floor(num / length);\n    } while (num > 0);\n    return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n    let decoded = 0;\n    for (i = 0; i < str.length; i++) {\n        decoded = decoded * length + map[str.charAt(i)];\n    }\n    return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n    const now = encode(+new Date());\n    if (now !== prev)\n        return seed = 0, prev = now;\n    return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n    map[alphabet[i]] = i;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n    let str = '';\n    for (let i in obj) {\n        if (obj.hasOwnProperty(i)) {\n            if (str.length)\n                str += '&';\n            str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n        }\n    }\n    return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n    let qry = {};\n    let pairs = qs.split('&');\n    for (let i = 0, l = pairs.length; i < l; i++) {\n        let pair = pairs[i].split('=');\n        qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n    }\n    return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n    value = typeof XMLHttpRequest !== 'undefined' &&\n        'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n    // if XMLHttp support is disabled in IE then it will throw\n    // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n    const xdomain = opts.xdomain;\n    // XMLHttpRequest can be disabled on IE\n    try {\n        if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n            return new XMLHttpRequest();\n        }\n    }\n    catch (e) { }\n    if (!xdomain) {\n        try {\n            return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n        }\n        catch (e) { }\n    }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n    const xhr = new XMLHttpRequest({\n        xdomain: false,\n    });\n    return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n    /**\n     * XHR Polling constructor.\n     *\n     * @param {Object} opts\n     * @package\n     */\n    constructor(opts) {\n        super(opts);\n        this.polling = false;\n        if (typeof location !== \"undefined\") {\n            const isSSL = \"https:\" === location.protocol;\n            let port = location.port;\n            // some user agents have empty `location.port`\n            if (!port) {\n                port = isSSL ? \"443\" : \"80\";\n            }\n            this.xd =\n                (typeof location !== \"undefined\" &&\n                    opts.hostname !== location.hostname) ||\n                    port !== opts.port;\n            this.xs = opts.secure !== isSSL;\n        }\n        /**\n         * XHR supports binary\n         */\n        const forceBase64 = opts && opts.forceBase64;\n        this.supportsBinary = hasXHR2 && !forceBase64;\n    }\n    get name() {\n        return \"polling\";\n    }\n    /**\n     * Opens the socket (triggers polling). We write a PING message to determine\n     * when the transport is open.\n     *\n     * @protected\n     */\n    doOpen() {\n        this.poll();\n    }\n    /**\n     * Pauses polling.\n     *\n     * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n     * @package\n     */\n    pause(onPause) {\n        this.readyState = \"pausing\";\n        const pause = () => {\n            this.readyState = \"paused\";\n            onPause();\n        };\n        if (this.polling || !this.writable) {\n            let total = 0;\n            if (this.polling) {\n                total++;\n                this.once(\"pollComplete\", function () {\n                    --total || pause();\n                });\n            }\n            if (!this.writable) {\n                total++;\n                this.once(\"drain\", function () {\n                    --total || pause();\n                });\n            }\n        }\n        else {\n            pause();\n        }\n    }\n    /**\n     * Starts polling cycle.\n     *\n     * @private\n     */\n    poll() {\n        this.polling = true;\n        this.doPoll();\n        this.emitReserved(\"poll\");\n    }\n    /**\n     * Overloads onData to detect payloads.\n     *\n     * @protected\n     */\n    onData(data) {\n        const callback = (packet) => {\n            // if its the first message we consider the transport open\n            if (\"opening\" === this.readyState && packet.type === \"open\") {\n                this.onOpen();\n            }\n            // if its a close packet, we close the ongoing requests\n            if (\"close\" === packet.type) {\n                this.onClose({ description: \"transport closed by the server\" });\n                return false;\n            }\n            // otherwise bypass onData and handle the message\n            this.onPacket(packet);\n        };\n        // decode payload\n        decodePayload(data, this.socket.binaryType).forEach(callback);\n        // if an event did not trigger closing\n        if (\"closed\" !== this.readyState) {\n            // if we got data we're not polling\n            this.polling = false;\n            this.emitReserved(\"pollComplete\");\n            if (\"open\" === this.readyState) {\n                this.poll();\n            }\n            else {\n            }\n        }\n    }\n    /**\n     * For polling, send a close packet.\n     *\n     * @protected\n     */\n    doClose() {\n        const close = () => {\n            this.write([{ type: \"close\" }]);\n        };\n        if (\"open\" === this.readyState) {\n            close();\n        }\n        else {\n            // in case we're trying to close while\n            // handshaking is in progress (GH-164)\n            this.once(\"open\", close);\n        }\n    }\n    /**\n     * Writes a packets payload.\n     *\n     * @param {Array} packets - data packets\n     * @protected\n     */\n    write(packets) {\n        this.writable = false;\n        encodePayload(packets, (data) => {\n            this.doWrite(data, () => {\n                this.writable = true;\n                this.emitReserved(\"drain\");\n            });\n        });\n    }\n    /**\n     * Generates uri for connection.\n     *\n     * @private\n     */\n    uri() {\n        let query = this.query || {};\n        const schema = this.opts.secure ? \"https\" : \"http\";\n        let port = \"\";\n        // cache busting is forced\n        if (false !== this.opts.timestampRequests) {\n            query[this.opts.timestampParam] = yeast();\n        }\n        if (!this.supportsBinary && !query.sid) {\n            query.b64 = 1;\n        }\n        // avoid port if default for schema\n        if (this.opts.port &&\n            ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n                (\"http\" === schema && Number(this.opts.port) !== 80))) {\n            port = \":\" + this.opts.port;\n        }\n        const encodedQuery = encode(query);\n        const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n        return (schema +\n            \"://\" +\n            (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n            port +\n            this.opts.path +\n            (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n    }\n    /**\n     * Creates a request.\n     *\n     * @param {String} method\n     * @private\n     */\n    request(opts = {}) {\n        Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n        return new Request(this.uri(), opts);\n    }\n    /**\n     * Sends data.\n     *\n     * @param {String} data to send.\n     * @param {Function} called upon flush.\n     * @private\n     */\n    doWrite(data, fn) {\n        const req = this.request({\n            method: \"POST\",\n            data: data,\n        });\n        req.on(\"success\", fn);\n        req.on(\"error\", (xhrStatus, context) => {\n            this.onError(\"xhr post error\", xhrStatus, context);\n        });\n    }\n    /**\n     * Starts a poll cycle.\n     *\n     * @private\n     */\n    doPoll() {\n        const req = this.request();\n        req.on(\"data\", this.onData.bind(this));\n        req.on(\"error\", (xhrStatus, context) => {\n            this.onError(\"xhr poll error\", xhrStatus, context);\n        });\n        this.pollXhr = req;\n    }\n}\nexport class Request extends Emitter {\n    /**\n     * Request constructor\n     *\n     * @param {Object} options\n     * @package\n     */\n    constructor(uri, opts) {\n        super();\n        installTimerFunctions(this, opts);\n        this.opts = opts;\n        this.method = opts.method || \"GET\";\n        this.uri = uri;\n        this.async = false !== opts.async;\n        this.data = undefined !== opts.data ? opts.data : null;\n        this.create();\n    }\n    /**\n     * Creates the XHR object and sends the request.\n     *\n     * @private\n     */\n    create() {\n        const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n        opts.xdomain = !!this.opts.xd;\n        opts.xscheme = !!this.opts.xs;\n        const xhr = (this.xhr = new XMLHttpRequest(opts));\n        try {\n            xhr.open(this.method, this.uri, this.async);\n            try {\n                if (this.opts.extraHeaders) {\n                    xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n                    for (let i in this.opts.extraHeaders) {\n                        if (this.opts.extraHeaders.hasOwnProperty(i)) {\n                            xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n                        }\n                    }\n                }\n            }\n            catch (e) { }\n            if (\"POST\" === this.method) {\n                try {\n                    xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n                }\n                catch (e) { }\n            }\n            try {\n                xhr.setRequestHeader(\"Accept\", \"*/*\");\n            }\n            catch (e) { }\n            // ie6 check\n            if (\"withCredentials\" in xhr) {\n                xhr.withCredentials = this.opts.withCredentials;\n            }\n            if (this.opts.requestTimeout) {\n                xhr.timeout = this.opts.requestTimeout;\n            }\n            xhr.onreadystatechange = () => {\n                if (4 !== xhr.readyState)\n                    return;\n                if (200 === xhr.status || 1223 === xhr.status) {\n                    this.onLoad();\n                }\n                else {\n                    // make sure the `error` event handler that's user-set\n                    // does not throw in the same tick and gets caught here\n                    this.setTimeoutFn(() => {\n                        this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n                    }, 0);\n                }\n            };\n            xhr.send(this.data);\n        }\n        catch (e) {\n            // Need to defer since .create() is called directly from the constructor\n            // and thus the 'error' event can only be only bound *after* this exception\n            // occurs.  Therefore, also, we cannot throw here at all.\n            this.setTimeoutFn(() => {\n                this.onError(e);\n            }, 0);\n            return;\n        }\n        if (typeof document !== \"undefined\") {\n            this.index = Request.requestsCount++;\n            Request.requests[this.index] = this;\n        }\n    }\n    /**\n     * Called upon error.\n     *\n     * @private\n     */\n    onError(err) {\n        this.emitReserved(\"error\", err, this.xhr);\n        this.cleanup(true);\n    }\n    /**\n     * Cleans up house.\n     *\n     * @private\n     */\n    cleanup(fromError) {\n        if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n            return;\n        }\n        this.xhr.onreadystatechange = empty;\n        if (fromError) {\n            try {\n                this.xhr.abort();\n            }\n            catch (e) { }\n        }\n        if (typeof document !== \"undefined\") {\n            delete Request.requests[this.index];\n        }\n        this.xhr = null;\n    }\n    /**\n     * Called upon load.\n     *\n     * @private\n     */\n    onLoad() {\n        const data = this.xhr.responseText;\n        if (data !== null) {\n            this.emitReserved(\"data\", data);\n            this.emitReserved(\"success\");\n            this.cleanup();\n        }\n    }\n    /**\n     * Aborts the request.\n     *\n     * @package\n     */\n    abort() {\n        this.cleanup();\n    }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n    // @ts-ignore\n    if (typeof attachEvent === \"function\") {\n        // @ts-ignore\n        attachEvent(\"onunload\", unloadHandler);\n    }\n    else if (typeof addEventListener === \"function\") {\n        const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n        addEventListener(terminationEvent, unloadHandler, false);\n    }\n}\nfunction unloadHandler() {\n    for (let i in Request.requests) {\n        if (Request.requests.hasOwnProperty(i)) {\n            Request.requests[i].abort();\n        }\n    }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n    const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n    if (isPromiseAvailable) {\n        return (cb) => Promise.resolve().then(cb);\n    }\n    else {\n        return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n    }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n    typeof navigator.product === \"string\" &&\n    navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n    /**\n     * WebSocket transport constructor.\n     *\n     * @param {Object} opts - connection options\n     * @protected\n     */\n    constructor(opts) {\n        super(opts);\n        this.supportsBinary = !opts.forceBase64;\n    }\n    get name() {\n        return \"websocket\";\n    }\n    doOpen() {\n        if (!this.check()) {\n            // let probe timeout\n            return;\n        }\n        const uri = this.uri();\n        const protocols = this.opts.protocols;\n        // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n        const opts = isReactNative\n            ? {}\n            : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n        if (this.opts.extraHeaders) {\n            opts.headers = this.opts.extraHeaders;\n        }\n        try {\n            this.ws =\n                usingBrowserWebSocket && !isReactNative\n                    ? protocols\n                        ? new WebSocket(uri, protocols)\n                        : new WebSocket(uri)\n                    : new WebSocket(uri, protocols, opts);\n        }\n        catch (err) {\n            return this.emitReserved(\"error\", err);\n        }\n        this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n        this.addEventListeners();\n    }\n    /**\n     * Adds event listeners to the socket\n     *\n     * @private\n     */\n    addEventListeners() {\n        this.ws.onopen = () => {\n            if (this.opts.autoUnref) {\n                this.ws._socket.unref();\n            }\n            this.onOpen();\n        };\n        this.ws.onclose = (closeEvent) => this.onClose({\n            description: \"websocket connection closed\",\n            context: closeEvent,\n        });\n        this.ws.onmessage = (ev) => this.onData(ev.data);\n        this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n    }\n    write(packets) {\n        this.writable = false;\n        // encodePacket efficient as it uses WS framing\n        // no need for encodePayload\n        for (let i = 0; i < packets.length; i++) {\n            const packet = packets[i];\n            const lastPacket = i === packets.length - 1;\n            encodePacket(packet, this.supportsBinary, (data) => {\n                // always create a new object (GH-437)\n                const opts = {};\n                if (!usingBrowserWebSocket) {\n                    if (packet.options) {\n                        opts.compress = packet.options.compress;\n                    }\n                    if (this.opts.perMessageDeflate) {\n                        const len = \n                        // @ts-ignore\n                        \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n                        if (len < this.opts.perMessageDeflate.threshold) {\n                            opts.compress = false;\n                        }\n                    }\n                }\n                // Sometimes the websocket has already been closed but the browser didn't\n                // have a chance of informing us about it yet, in that case send will\n                // throw an error\n                try {\n                    if (usingBrowserWebSocket) {\n                        // TypeError is thrown when passing the second argument on Safari\n                        this.ws.send(data);\n                    }\n                    else {\n                        this.ws.send(data, opts);\n                    }\n                }\n                catch (e) {\n                }\n                if (lastPacket) {\n                    // fake drain\n                    // defer to next tick to allow Socket to clear writeBuffer\n                    nextTick(() => {\n                        this.writable = true;\n                        this.emitReserved(\"drain\");\n                    }, this.setTimeoutFn);\n                }\n            });\n        }\n    }\n    doClose() {\n        if (typeof this.ws !== \"undefined\") {\n            this.ws.close();\n            this.ws = null;\n        }\n    }\n    /**\n     * Generates uri for connection.\n     *\n     * @private\n     */\n    uri() {\n        let query = this.query || {};\n        const schema = this.opts.secure ? \"wss\" : \"ws\";\n        let port = \"\";\n        // avoid port if default for schema\n        if (this.opts.port &&\n            ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n                (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n            port = \":\" + this.opts.port;\n        }\n        // append timestamp to URI\n        if (this.opts.timestampRequests) {\n            query[this.opts.timestampParam] = yeast();\n        }\n        // communicate binary support capabilities\n        if (!this.supportsBinary) {\n            query.b64 = 1;\n        }\n        const encodedQuery = encode(query);\n        const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n        return (schema +\n            \"://\" +\n            (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n            port +\n            this.opts.path +\n            (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n    }\n    /**\n     * Feature detection for WebSocket.\n     *\n     * @return {Boolean} whether this transport is available.\n     * @private\n     */\n    check() {\n        return !!WebSocket;\n    }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n    websocket: WS,\n    polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n    'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n    const src = str, b = str.indexOf('['), e = str.indexOf(']');\n    if (b != -1 && e != -1) {\n        str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n    }\n    let m = re.exec(str || ''), uri = {}, i = 14;\n    while (i--) {\n        uri[parts[i]] = m[i] || '';\n    }\n    if (b != -1 && e != -1) {\n        uri.source = src;\n        uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n        uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n        uri.ipv6uri = true;\n    }\n    uri.pathNames = pathNames(uri, uri['path']);\n    uri.queryKey = queryKey(uri, uri['query']);\n    return uri;\n}\nfunction pathNames(obj, path) {\n    const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n    if (path.slice(0, 1) == '/' || path.length === 0) {\n        names.splice(0, 1);\n    }\n    if (path.slice(-1) == '/') {\n        names.splice(names.length - 1, 1);\n    }\n    return names;\n}\nfunction queryKey(uri, query) {\n    const data = {};\n    query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n        if ($1) {\n            data[$1] = $2;\n        }\n    });\n    return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n    /**\n     * Socket constructor.\n     *\n     * @param {String|Object} uri - uri or options\n     * @param {Object} opts - options\n     */\n    constructor(uri, opts = {}) {\n        super();\n        this.writeBuffer = [];\n        if (uri && \"object\" === typeof uri) {\n            opts = uri;\n            uri = null;\n        }\n        if (uri) {\n            uri = parse(uri);\n            opts.hostname = uri.host;\n            opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n            opts.port = uri.port;\n            if (uri.query)\n                opts.query = uri.query;\n        }\n        else if (opts.host) {\n            opts.hostname = parse(opts.host).host;\n        }\n        installTimerFunctions(this, opts);\n        this.secure =\n            null != opts.secure\n                ? opts.secure\n                : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n        if (opts.hostname && !opts.port) {\n            // if no port is specified manually, use the protocol default\n            opts.port = this.secure ? \"443\" : \"80\";\n        }\n        this.hostname =\n            opts.hostname ||\n                (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n        this.port =\n            opts.port ||\n                (typeof location !== \"undefined\" && location.port\n                    ? location.port\n                    : this.secure\n                        ? \"443\"\n                        : \"80\");\n        this.transports = opts.transports || [\"polling\", \"websocket\"];\n        this.writeBuffer = [];\n        this.prevBufferLen = 0;\n        this.opts = Object.assign({\n            path: \"/engine.io\",\n            agent: false,\n            withCredentials: false,\n            upgrade: true,\n            timestampParam: \"t\",\n            rememberUpgrade: false,\n            addTrailingSlash: true,\n            rejectUnauthorized: true,\n            perMessageDeflate: {\n                threshold: 1024,\n            },\n            transportOptions: {},\n            closeOnBeforeunload: true,\n        }, opts);\n        this.opts.path =\n            this.opts.path.replace(/\\/$/, \"\") +\n                (this.opts.addTrailingSlash ? \"/\" : \"\");\n        if (typeof this.opts.query === \"string\") {\n            this.opts.query = decode(this.opts.query);\n        }\n        // set on handshake\n        this.id = null;\n        this.upgrades = null;\n        this.pingInterval = null;\n        this.pingTimeout = null;\n        // set on heartbeat\n        this.pingTimeoutTimer = null;\n        if (typeof addEventListener === \"function\") {\n            if (this.opts.closeOnBeforeunload) {\n                // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n                // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n                // closed/reloaded)\n                this.beforeunloadEventListener = () => {\n                    if (this.transport) {\n                        // silently close the transport\n                        this.transport.removeAllListeners();\n                        this.transport.close();\n                    }\n                };\n                addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n            }\n            if (this.hostname !== \"localhost\") {\n                this.offlineEventListener = () => {\n                    this.onClose(\"transport close\", {\n                        description: \"network connection lost\",\n                    });\n                };\n                addEventListener(\"offline\", this.offlineEventListener, false);\n            }\n        }\n        this.open();\n    }\n    /**\n     * Creates transport of the given type.\n     *\n     * @param {String} name - transport name\n     * @return {Transport}\n     * @private\n     */\n    createTransport(name) {\n        const query = Object.assign({}, this.opts.query);\n        // append engine.io protocol identifier\n        query.EIO = protocol;\n        // transport name\n        query.transport = name;\n        // session id if we already have one\n        if (this.id)\n            query.sid = this.id;\n        const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n            query,\n            socket: this,\n            hostname: this.hostname,\n            secure: this.secure,\n            port: this.port,\n        });\n        return new transports[name](opts);\n    }\n    /**\n     * Initializes transport to use and starts probe.\n     *\n     * @private\n     */\n    open() {\n        let transport;\n        if (this.opts.rememberUpgrade &&\n            Socket.priorWebsocketSuccess &&\n            this.transports.indexOf(\"websocket\") !== -1) {\n            transport = \"websocket\";\n        }\n        else if (0 === this.transports.length) {\n            // Emit error on next tick so it can be listened to\n            this.setTimeoutFn(() => {\n                this.emitReserved(\"error\", \"No transports available\");\n            }, 0);\n            return;\n        }\n        else {\n            transport = this.transports[0];\n        }\n        this.readyState = \"opening\";\n        // Retry with the next transport if the transport is disabled (jsonp: false)\n        try {\n            transport = this.createTransport(transport);\n        }\n        catch (e) {\n            this.transports.shift();\n            this.open();\n            return;\n        }\n        transport.open();\n        this.setTransport(transport);\n    }\n    /**\n     * Sets the current transport. Disables the existing one (if any).\n     *\n     * @private\n     */\n    setTransport(transport) {\n        if (this.transport) {\n            this.transport.removeAllListeners();\n        }\n        // set up transport\n        this.transport = transport;\n        // set up transport listeners\n        transport\n            .on(\"drain\", this.onDrain.bind(this))\n            .on(\"packet\", this.onPacket.bind(this))\n            .on(\"error\", this.onError.bind(this))\n            .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n    }\n    /**\n     * Probes a transport.\n     *\n     * @param {String} name - transport name\n     * @private\n     */\n    probe(name) {\n        let transport = this.createTransport(name);\n        let failed = false;\n        Socket.priorWebsocketSuccess = false;\n        const onTransportOpen = () => {\n            if (failed)\n                return;\n            transport.send([{ type: \"ping\", data: \"probe\" }]);\n            transport.once(\"packet\", (msg) => {\n                if (failed)\n                    return;\n                if (\"pong\" === msg.type && \"probe\" === msg.data) {\n                    this.upgrading = true;\n                    this.emitReserved(\"upgrading\", transport);\n                    if (!transport)\n                        return;\n                    Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n                    this.transport.pause(() => {\n                        if (failed)\n                            return;\n                        if (\"closed\" === this.readyState)\n                            return;\n                        cleanup();\n                        this.setTransport(transport);\n                        transport.send([{ type: \"upgrade\" }]);\n                        this.emitReserved(\"upgrade\", transport);\n                        transport = null;\n                        this.upgrading = false;\n                        this.flush();\n                    });\n                }\n                else {\n                    const err = new Error(\"probe error\");\n                    // @ts-ignore\n                    err.transport = transport.name;\n                    this.emitReserved(\"upgradeError\", err);\n                }\n            });\n        };\n        function freezeTransport() {\n            if (failed)\n                return;\n            // Any callback called by transport should be ignored since now\n            failed = true;\n            cleanup();\n            transport.close();\n            transport = null;\n        }\n        // Handle any error that happens while probing\n        const onerror = (err) => {\n            const error = new Error(\"probe error: \" + err);\n            // @ts-ignore\n            error.transport = transport.name;\n            freezeTransport();\n            this.emitReserved(\"upgradeError\", error);\n        };\n        function onTransportClose() {\n            onerror(\"transport closed\");\n        }\n        // When the socket is closed while we're probing\n        function onclose() {\n            onerror(\"socket closed\");\n        }\n        // When the socket is upgraded while we're probing\n        function onupgrade(to) {\n            if (transport && to.name !== transport.name) {\n                freezeTransport();\n            }\n        }\n        // Remove all listeners on the transport and on self\n        const cleanup = () => {\n            transport.removeListener(\"open\", onTransportOpen);\n            transport.removeListener(\"error\", onerror);\n            transport.removeListener(\"close\", onTransportClose);\n            this.off(\"close\", onclose);\n            this.off(\"upgrading\", onupgrade);\n        };\n        transport.once(\"open\", onTransportOpen);\n        transport.once(\"error\", onerror);\n        transport.once(\"close\", onTransportClose);\n        this.once(\"close\", onclose);\n        this.once(\"upgrading\", onupgrade);\n        transport.open();\n    }\n    /**\n     * Called when connection is deemed open.\n     *\n     * @private\n     */\n    onOpen() {\n        this.readyState = \"open\";\n        Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n        this.emitReserved(\"open\");\n        this.flush();\n        // we check for `readyState` in case an `open`\n        // listener already closed the socket\n        if (\"open\" === this.readyState && this.opts.upgrade) {\n            let i = 0;\n            const l = this.upgrades.length;\n            for (; i < l; i++) {\n                this.probe(this.upgrades[i]);\n            }\n        }\n    }\n    /**\n     * Handles a packet.\n     *\n     * @private\n     */\n    onPacket(packet) {\n        if (\"opening\" === this.readyState ||\n            \"open\" === this.readyState ||\n            \"closing\" === this.readyState) {\n            this.emitReserved(\"packet\", packet);\n            // Socket is live - any packet counts\n            this.emitReserved(\"heartbeat\");\n            switch (packet.type) {\n                case \"open\":\n                    this.onHandshake(JSON.parse(packet.data));\n                    break;\n                case \"ping\":\n                    this.resetPingTimeout();\n                    this.sendPacket(\"pong\");\n                    this.emitReserved(\"ping\");\n                    this.emitReserved(\"pong\");\n                    break;\n                case \"error\":\n                    const err = new Error(\"server error\");\n                    // @ts-ignore\n                    err.code = packet.data;\n                    this.onError(err);\n                    break;\n                case \"message\":\n                    this.emitReserved(\"data\", packet.data);\n                    this.emitReserved(\"message\", packet.data);\n                    break;\n            }\n        }\n        else {\n        }\n    }\n    /**\n     * Called upon handshake completion.\n     *\n     * @param {Object} data - handshake obj\n     * @private\n     */\n    onHandshake(data) {\n        this.emitReserved(\"handshake\", data);\n        this.id = data.sid;\n        this.transport.query.sid = data.sid;\n        this.upgrades = this.filterUpgrades(data.upgrades);\n        this.pingInterval = data.pingInterval;\n        this.pingTimeout = data.pingTimeout;\n        this.maxPayload = data.maxPayload;\n        this.onOpen();\n        // In case open handler closes socket\n        if (\"closed\" === this.readyState)\n            return;\n        this.resetPingTimeout();\n    }\n    /**\n     * Sets and resets ping timeout timer based on server pings.\n     *\n     * @private\n     */\n    resetPingTimeout() {\n        this.clearTimeoutFn(this.pingTimeoutTimer);\n        this.pingTimeoutTimer = this.setTimeoutFn(() => {\n            this.onClose(\"ping timeout\");\n        }, this.pingInterval + this.pingTimeout);\n        if (this.opts.autoUnref) {\n            this.pingTimeoutTimer.unref();\n        }\n    }\n    /**\n     * Called on `drain` event\n     *\n     * @private\n     */\n    onDrain() {\n        this.writeBuffer.splice(0, this.prevBufferLen);\n        // setting prevBufferLen = 0 is very important\n        // for example, when upgrading, upgrade packet is sent over,\n        // and a nonzero prevBufferLen could cause problems on `drain`\n        this.prevBufferLen = 0;\n        if (0 === this.writeBuffer.length) {\n            this.emitReserved(\"drain\");\n        }\n        else {\n            this.flush();\n        }\n    }\n    /**\n     * Flush write buffers.\n     *\n     * @private\n     */\n    flush() {\n        if (\"closed\" !== this.readyState &&\n            this.transport.writable &&\n            !this.upgrading &&\n            this.writeBuffer.length) {\n            const packets = this.getWritablePackets();\n            this.transport.send(packets);\n            // keep track of current length of writeBuffer\n            // splice writeBuffer and callbackBuffer on `drain`\n            this.prevBufferLen = packets.length;\n            this.emitReserved(\"flush\");\n        }\n    }\n    /**\n     * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n     * long-polling)\n     *\n     * @private\n     */\n    getWritablePackets() {\n        const shouldCheckPayloadSize = this.maxPayload &&\n            this.transport.name === \"polling\" &&\n            this.writeBuffer.length > 1;\n        if (!shouldCheckPayloadSize) {\n            return this.writeBuffer;\n        }\n        let payloadSize = 1; // first packet type\n        for (let i = 0; i < this.writeBuffer.length; i++) {\n            const data = this.writeBuffer[i].data;\n            if (data) {\n                payloadSize += byteLength(data);\n            }\n            if (i > 0 && payloadSize > this.maxPayload) {\n                return this.writeBuffer.slice(0, i);\n            }\n            payloadSize += 2; // separator + packet type\n        }\n        return this.writeBuffer;\n    }\n    /**\n     * Sends a message.\n     *\n     * @param {String} msg - message.\n     * @param {Object} options.\n     * @param {Function} callback function.\n     * @return {Socket} for chaining.\n     */\n    write(msg, options, fn) {\n        this.sendPacket(\"message\", msg, options, fn);\n        return this;\n    }\n    send(msg, options, fn) {\n        this.sendPacket(\"message\", msg, options, fn);\n        return this;\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param {String} type: packet type.\n     * @param {String} data.\n     * @param {Object} options.\n     * @param {Function} fn - callback function.\n     * @private\n     */\n    sendPacket(type, data, options, fn) {\n        if (\"function\" === typeof data) {\n            fn = data;\n            data = undefined;\n        }\n        if (\"function\" === typeof options) {\n            fn = options;\n            options = null;\n        }\n        if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n            return;\n        }\n        options = options || {};\n        options.compress = false !== options.compress;\n        const packet = {\n            type: type,\n            data: data,\n            options: options,\n        };\n        this.emitReserved(\"packetCreate\", packet);\n        this.writeBuffer.push(packet);\n        if (fn)\n            this.once(\"flush\", fn);\n        this.flush();\n    }\n    /**\n     * Closes the connection.\n     */\n    close() {\n        const close = () => {\n            this.onClose(\"forced close\");\n            this.transport.close();\n        };\n        const cleanupAndClose = () => {\n            this.off(\"upgrade\", cleanupAndClose);\n            this.off(\"upgradeError\", cleanupAndClose);\n            close();\n        };\n        const waitForUpgrade = () => {\n            // wait for upgrade to finish since we can't send packets while pausing a transport\n            this.once(\"upgrade\", cleanupAndClose);\n            this.once(\"upgradeError\", cleanupAndClose);\n        };\n        if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n            this.readyState = \"closing\";\n            if (this.writeBuffer.length) {\n                this.once(\"drain\", () => {\n                    if (this.upgrading) {\n                        waitForUpgrade();\n                    }\n                    else {\n                        close();\n                    }\n                });\n            }\n            else if (this.upgrading) {\n                waitForUpgrade();\n            }\n            else {\n                close();\n            }\n        }\n        return this;\n    }\n    /**\n     * Called upon transport error\n     *\n     * @private\n     */\n    onError(err) {\n        Socket.priorWebsocketSuccess = false;\n        this.emitReserved(\"error\", err);\n        this.onClose(\"transport error\", err);\n    }\n    /**\n     * Called upon transport close.\n     *\n     * @private\n     */\n    onClose(reason, description) {\n        if (\"opening\" === this.readyState ||\n            \"open\" === this.readyState ||\n            \"closing\" === this.readyState) {\n            // clear timers\n            this.clearTimeoutFn(this.pingTimeoutTimer);\n            // stop event from firing again for transport\n            this.transport.removeAllListeners(\"close\");\n            // ensure transport won't stay open\n            this.transport.close();\n            // ignore further transport communication\n            this.transport.removeAllListeners();\n            if (typeof removeEventListener === \"function\") {\n                removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n                removeEventListener(\"offline\", this.offlineEventListener, false);\n            }\n            // set ready state\n            this.readyState = \"closed\";\n            // clear session id\n            this.id = null;\n            // emit close event\n            this.emitReserved(\"close\", reason, description);\n            // clean buffers after, so users can still\n            // grab the buffers on `close` event\n            this.writeBuffer = [];\n            this.prevBufferLen = 0;\n        }\n    }\n    /**\n     * Filters upgrades, returning only those matching client transports.\n     *\n     * @param {Array} upgrades - server upgrades\n     * @private\n     */\n    filterUpgrades(upgrades) {\n        const filteredUpgrades = [];\n        let i = 0;\n        const j = upgrades.length;\n        for (; i < j; i++) {\n            if (~this.transports.indexOf(upgrades[i]))\n                filteredUpgrades.push(upgrades[i]);\n        }\n        return filteredUpgrades;\n    }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n    return typeof ArrayBuffer.isView === \"function\"\n        ? ArrayBuffer.isView(obj)\n        : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n    (typeof Blob !== \"undefined\" &&\n        toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n    (typeof File !== \"undefined\" &&\n        toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n    return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n        (withNativeBlob && obj instanceof Blob) ||\n        (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n    if (!obj || typeof obj !== \"object\") {\n        return false;\n    }\n    if (Array.isArray(obj)) {\n        for (let i = 0, l = obj.length; i < l; i++) {\n            if (hasBinary(obj[i])) {\n                return true;\n            }\n        }\n        return false;\n    }\n    if (isBinary(obj)) {\n        return true;\n    }\n    if (obj.toJSON &&\n        typeof obj.toJSON === \"function\" &&\n        arguments.length === 1) {\n        return hasBinary(obj.toJSON(), true);\n    }\n    for (const key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n            return true;\n        }\n    }\n    return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n    const buffers = [];\n    const packetData = packet.data;\n    const pack = packet;\n    pack.data = _deconstructPacket(packetData, buffers);\n    pack.attachments = buffers.length; // number of binary 'attachments'\n    return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n    if (!data)\n        return data;\n    if (isBinary(data)) {\n        const placeholder = { _placeholder: true, num: buffers.length };\n        buffers.push(data);\n        return placeholder;\n    }\n    else if (Array.isArray(data)) {\n        const newData = new Array(data.length);\n        for (let i = 0; i < data.length; i++) {\n            newData[i] = _deconstructPacket(data[i], buffers);\n        }\n        return newData;\n    }\n    else if (typeof data === \"object\" && !(data instanceof Date)) {\n        const newData = {};\n        for (const key in data) {\n            if (Object.prototype.hasOwnProperty.call(data, key)) {\n                newData[key] = _deconstructPacket(data[key], buffers);\n            }\n        }\n        return newData;\n    }\n    return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n    packet.data = _reconstructPacket(packet.data, buffers);\n    delete packet.attachments; // no longer useful\n    return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n    if (!data)\n        return data;\n    if (data && data._placeholder === true) {\n        const isIndexValid = typeof data.num === \"number\" &&\n            data.num >= 0 &&\n            data.num < buffers.length;\n        if (isIndexValid) {\n            return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n        }\n        else {\n            throw new Error(\"illegal attachments\");\n        }\n    }\n    else if (Array.isArray(data)) {\n        for (let i = 0; i < data.length; i++) {\n            data[i] = _reconstructPacket(data[i], buffers);\n        }\n    }\n    else if (typeof data === \"object\") {\n        for (const key in data) {\n            if (Object.prototype.hasOwnProperty.call(data, key)) {\n                data[key] = _reconstructPacket(data[key], buffers);\n            }\n        }\n    }\n    return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n    PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n    PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n    PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n    PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n    PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n    PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n    PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n    /**\n     * Encoder constructor\n     *\n     * @param {function} replacer - custom replacer to pass down to JSON.parse\n     */\n    constructor(replacer) {\n        this.replacer = replacer;\n    }\n    /**\n     * Encode a packet as a single string if non-binary, or as a\n     * buffer sequence, depending on packet type.\n     *\n     * @param {Object} obj - packet object\n     */\n    encode(obj) {\n        if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n            if (hasBinary(obj)) {\n                return this.encodeAsBinary({\n                    type: obj.type === PacketType.EVENT\n                        ? PacketType.BINARY_EVENT\n                        : PacketType.BINARY_ACK,\n                    nsp: obj.nsp,\n                    data: obj.data,\n                    id: obj.id,\n                });\n            }\n        }\n        return [this.encodeAsString(obj)];\n    }\n    /**\n     * Encode packet as string.\n     */\n    encodeAsString(obj) {\n        // first is type\n        let str = \"\" + obj.type;\n        // attachments if we have them\n        if (obj.type === PacketType.BINARY_EVENT ||\n            obj.type === PacketType.BINARY_ACK) {\n            str += obj.attachments + \"-\";\n        }\n        // if we have a namespace other than `/`\n        // we append it followed by a comma `,`\n        if (obj.nsp && \"/\" !== obj.nsp) {\n            str += obj.nsp + \",\";\n        }\n        // immediately followed by the id\n        if (null != obj.id) {\n            str += obj.id;\n        }\n        // json data\n        if (null != obj.data) {\n            str += JSON.stringify(obj.data, this.replacer);\n        }\n        return str;\n    }\n    /**\n     * Encode packet as 'buffer sequence' by removing blobs, and\n     * deconstructing packet into object with placeholders and\n     * a list of buffers.\n     */\n    encodeAsBinary(obj) {\n        const deconstruction = deconstructPacket(obj);\n        const pack = this.encodeAsString(deconstruction.packet);\n        const buffers = deconstruction.buffers;\n        buffers.unshift(pack); // add packet info to beginning of data list\n        return buffers; // write all the buffers\n    }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n    /**\n     * Decoder constructor\n     *\n     * @param {function} reviver - custom reviver to pass down to JSON.stringify\n     */\n    constructor(reviver) {\n        super();\n        this.reviver = reviver;\n    }\n    /**\n     * Decodes an encoded packet string into packet JSON.\n     *\n     * @param {String} obj - encoded packet\n     */\n    add(obj) {\n        let packet;\n        if (typeof obj === \"string\") {\n            if (this.reconstructor) {\n                throw new Error(\"got plaintext data when reconstructing a packet\");\n            }\n            packet = this.decodeString(obj);\n            const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n            if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n                packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n                // binary packet's json\n                this.reconstructor = new BinaryReconstructor(packet);\n                // no attachments, labeled binary but no binary data to follow\n                if (packet.attachments === 0) {\n                    super.emitReserved(\"decoded\", packet);\n                }\n            }\n            else {\n                // non-binary full packet\n                super.emitReserved(\"decoded\", packet);\n            }\n        }\n        else if (isBinary(obj) || obj.base64) {\n            // raw binary data\n            if (!this.reconstructor) {\n                throw new Error(\"got binary data when not reconstructing a packet\");\n            }\n            else {\n                packet = this.reconstructor.takeBinaryData(obj);\n                if (packet) {\n                    // received final buffer\n                    this.reconstructor = null;\n                    super.emitReserved(\"decoded\", packet);\n                }\n            }\n        }\n        else {\n            throw new Error(\"Unknown type: \" + obj);\n        }\n    }\n    /**\n     * Decode a packet String (JSON data)\n     *\n     * @param {String} str\n     * @return {Object} packet\n     */\n    decodeString(str) {\n        let i = 0;\n        // look up type\n        const p = {\n            type: Number(str.charAt(0)),\n        };\n        if (PacketType[p.type] === undefined) {\n            throw new Error(\"unknown packet type \" + p.type);\n        }\n        // look up attachments if type binary\n        if (p.type === PacketType.BINARY_EVENT ||\n            p.type === PacketType.BINARY_ACK) {\n            const start = i + 1;\n            while (str.charAt(++i) !== \"-\" && i != str.length) { }\n            const buf = str.substring(start, i);\n            if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n                throw new Error(\"Illegal attachments\");\n            }\n            p.attachments = Number(buf);\n        }\n        // look up namespace (if any)\n        if (\"/\" === str.charAt(i + 1)) {\n            const start = i + 1;\n            while (++i) {\n                const c = str.charAt(i);\n                if (\",\" === c)\n                    break;\n                if (i === str.length)\n                    break;\n            }\n            p.nsp = str.substring(start, i);\n        }\n        else {\n            p.nsp = \"/\";\n        }\n        // look up id\n        const next = str.charAt(i + 1);\n        if (\"\" !== next && Number(next) == next) {\n            const start = i + 1;\n            while (++i) {\n                const c = str.charAt(i);\n                if (null == c || Number(c) != c) {\n                    --i;\n                    break;\n                }\n                if (i === str.length)\n                    break;\n            }\n            p.id = Number(str.substring(start, i + 1));\n        }\n        // look up json data\n        if (str.charAt(++i)) {\n            const payload = this.tryParse(str.substr(i));\n            if (Decoder.isPayloadValid(p.type, payload)) {\n                p.data = payload;\n            }\n            else {\n                throw new Error(\"invalid payload\");\n            }\n        }\n        return p;\n    }\n    tryParse(str) {\n        try {\n            return JSON.parse(str, this.reviver);\n        }\n        catch (e) {\n            return false;\n        }\n    }\n    static isPayloadValid(type, payload) {\n        switch (type) {\n            case PacketType.CONNECT:\n                return typeof payload === \"object\";\n            case PacketType.DISCONNECT:\n                return payload === undefined;\n            case PacketType.CONNECT_ERROR:\n                return typeof payload === \"string\" || typeof payload === \"object\";\n            case PacketType.EVENT:\n            case PacketType.BINARY_EVENT:\n                return Array.isArray(payload) && payload.length > 0;\n            case PacketType.ACK:\n            case PacketType.BINARY_ACK:\n                return Array.isArray(payload);\n        }\n    }\n    /**\n     * Deallocates a parser's resources\n     */\n    destroy() {\n        if (this.reconstructor) {\n            this.reconstructor.finishedReconstruction();\n            this.reconstructor = null;\n        }\n    }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n    constructor(packet) {\n        this.packet = packet;\n        this.buffers = [];\n        this.reconPack = packet;\n    }\n    /**\n     * Method to be called when binary data received from connection\n     * after a BINARY_EVENT packet.\n     *\n     * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n     * @return {null | Object} returns null if more binary data is expected or\n     *   a reconstructed packet object if all buffers have been received.\n     */\n    takeBinaryData(binData) {\n        this.buffers.push(binData);\n        if (this.buffers.length === this.reconPack.attachments) {\n            // done with buffer list\n            const packet = reconstructPacket(this.reconPack, this.buffers);\n            this.finishedReconstruction();\n            return packet;\n        }\n        return null;\n    }\n    /**\n     * Cleans up binary packet reconstruction variables.\n     */\n    finishedReconstruction() {\n        this.reconPack = null;\n        this.buffers = [];\n    }\n}\n","export function on(obj, ev, fn) {\n    obj.on(ev, fn);\n    return function subDestroy() {\n        obj.off(ev, fn);\n    };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n    connect: 1,\n    connect_error: 1,\n    disconnect: 1,\n    disconnecting: 1,\n    // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n    newListener: 1,\n    removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n *   console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n *   // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n *   console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n    /**\n     * `Socket` constructor.\n     */\n    constructor(io, nsp, opts) {\n        super();\n        /**\n         * Whether the socket is currently connected to the server.\n         *\n         * @example\n         * const socket = io();\n         *\n         * socket.on(\"connect\", () => {\n         *   console.log(socket.connected); // true\n         * });\n         *\n         * socket.on(\"disconnect\", () => {\n         *   console.log(socket.connected); // false\n         * });\n         */\n        this.connected = false;\n        /**\n         * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n         * be transmitted by the server.\n         */\n        this.recovered = false;\n        /**\n         * Buffer for packets received before the CONNECT packet\n         */\n        this.receiveBuffer = [];\n        /**\n         * Buffer for packets that will be sent once the socket is connected\n         */\n        this.sendBuffer = [];\n        /**\n         * The queue of packets to be sent with retry in case of failure.\n         *\n         * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n         * @private\n         */\n        this._queue = [];\n        /**\n         * A sequence to generate the ID of the {@link QueuedPacket}.\n         * @private\n         */\n        this._queueSeq = 0;\n        this.ids = 0;\n        this.acks = {};\n        this.flags = {};\n        this.io = io;\n        this.nsp = nsp;\n        if (opts && opts.auth) {\n            this.auth = opts.auth;\n        }\n        this._opts = Object.assign({}, opts);\n        if (this.io._autoConnect)\n            this.open();\n    }\n    /**\n     * Whether the socket is currently disconnected\n     *\n     * @example\n     * const socket = io();\n     *\n     * socket.on(\"connect\", () => {\n     *   console.log(socket.disconnected); // false\n     * });\n     *\n     * socket.on(\"disconnect\", () => {\n     *   console.log(socket.disconnected); // true\n     * });\n     */\n    get disconnected() {\n        return !this.connected;\n    }\n    /**\n     * Subscribe to open, close and packet events\n     *\n     * @private\n     */\n    subEvents() {\n        if (this.subs)\n            return;\n        const io = this.io;\n        this.subs = [\n            on(io, \"open\", this.onopen.bind(this)),\n            on(io, \"packet\", this.onpacket.bind(this)),\n            on(io, \"error\", this.onerror.bind(this)),\n            on(io, \"close\", this.onclose.bind(this)),\n        ];\n    }\n    /**\n     * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n     *\n     * @example\n     * const socket = io();\n     *\n     * console.log(socket.active); // true\n     *\n     * socket.on(\"disconnect\", (reason) => {\n     *   if (reason === \"io server disconnect\") {\n     *     // the disconnection was initiated by the server, you need to manually reconnect\n     *     console.log(socket.active); // false\n     *   }\n     *   // else the socket will automatically try to reconnect\n     *   console.log(socket.active); // true\n     * });\n     */\n    get active() {\n        return !!this.subs;\n    }\n    /**\n     * \"Opens\" the socket.\n     *\n     * @example\n     * const socket = io({\n     *   autoConnect: false\n     * });\n     *\n     * socket.connect();\n     */\n    connect() {\n        if (this.connected)\n            return this;\n        this.subEvents();\n        if (!this.io[\"_reconnecting\"])\n            this.io.open(); // ensure open\n        if (\"open\" === this.io._readyState)\n            this.onopen();\n        return this;\n    }\n    /**\n     * Alias for {@link connect()}.\n     */\n    open() {\n        return this.connect();\n    }\n    /**\n     * Sends a `message` event.\n     *\n     * This method mimics the WebSocket.send() method.\n     *\n     * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n     *\n     * @example\n     * socket.send(\"hello\");\n     *\n     * // this is equivalent to\n     * socket.emit(\"message\", \"hello\");\n     *\n     * @return self\n     */\n    send(...args) {\n        args.unshift(\"message\");\n        this.emit.apply(this, args);\n        return this;\n    }\n    /**\n     * Override `emit`.\n     * If the event is in `events`, it's emitted normally.\n     *\n     * @example\n     * socket.emit(\"hello\", \"world\");\n     *\n     * // all serializable datastructures are supported (no need to call JSON.stringify)\n     * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n     *\n     * // with an acknowledgement from the server\n     * socket.emit(\"hello\", \"world\", (val) => {\n     *   // ...\n     * });\n     *\n     * @return self\n     */\n    emit(ev, ...args) {\n        if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n            throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n        }\n        args.unshift(ev);\n        if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n            this._addToQueue(args);\n            return this;\n        }\n        const packet = {\n            type: PacketType.EVENT,\n            data: args,\n        };\n        packet.options = {};\n        packet.options.compress = this.flags.compress !== false;\n        // event ack callback\n        if (\"function\" === typeof args[args.length - 1]) {\n            const id = this.ids++;\n            const ack = args.pop();\n            this._registerAckCallback(id, ack);\n            packet.id = id;\n        }\n        const isTransportWritable = this.io.engine &&\n            this.io.engine.transport &&\n            this.io.engine.transport.writable;\n        const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n        if (discardPacket) {\n        }\n        else if (this.connected) {\n            this.notifyOutgoingListeners(packet);\n            this.packet(packet);\n        }\n        else {\n            this.sendBuffer.push(packet);\n        }\n        this.flags = {};\n        return this;\n    }\n    /**\n     * @private\n     */\n    _registerAckCallback(id, ack) {\n        var _a;\n        const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n        if (timeout === undefined) {\n            this.acks[id] = ack;\n            return;\n        }\n        // @ts-ignore\n        const timer = this.io.setTimeoutFn(() => {\n            delete this.acks[id];\n            for (let i = 0; i < this.sendBuffer.length; i++) {\n                if (this.sendBuffer[i].id === id) {\n                    this.sendBuffer.splice(i, 1);\n                }\n            }\n            ack.call(this, new Error(\"operation has timed out\"));\n        }, timeout);\n        this.acks[id] = (...args) => {\n            // @ts-ignore\n            this.io.clearTimeoutFn(timer);\n            ack.apply(this, [null, ...args]);\n        };\n    }\n    /**\n     * Emits an event and waits for an acknowledgement\n     *\n     * @example\n     * // without timeout\n     * const response = await socket.emitWithAck(\"hello\", \"world\");\n     *\n     * // with a specific timeout\n     * try {\n     *   const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n     * } catch (err) {\n     *   // the server did not acknowledge the event in the given delay\n     * }\n     *\n     * @return a Promise that will be fulfilled when the server acknowledges the event\n     */\n    emitWithAck(ev, ...args) {\n        // the timeout flag is optional\n        const withErr = this.flags.timeout !== undefined || this._opts.ackTimeout !== undefined;\n        return new Promise((resolve, reject) => {\n            args.push((arg1, arg2) => {\n                if (withErr) {\n                    return arg1 ? reject(arg1) : resolve(arg2);\n                }\n                else {\n                    return resolve(arg1);\n                }\n            });\n            this.emit(ev, ...args);\n        });\n    }\n    /**\n     * Add the packet to the queue.\n     * @param args\n     * @private\n     */\n    _addToQueue(args) {\n        let ack;\n        if (typeof args[args.length - 1] === \"function\") {\n            ack = args.pop();\n        }\n        const packet = {\n            id: this._queueSeq++,\n            tryCount: 0,\n            pending: false,\n            args,\n            flags: Object.assign({ fromQueue: true }, this.flags),\n        };\n        args.push((err, ...responseArgs) => {\n            if (packet !== this._queue[0]) {\n                // the packet has already been acknowledged\n                return;\n            }\n            const hasError = err !== null;\n            if (hasError) {\n                if (packet.tryCount > this._opts.retries) {\n                    this._queue.shift();\n                    if (ack) {\n                        ack(err);\n                    }\n                }\n            }\n            else {\n                this._queue.shift();\n                if (ack) {\n                    ack(null, ...responseArgs);\n                }\n            }\n            packet.pending = false;\n            return this._drainQueue();\n        });\n        this._queue.push(packet);\n        this._drainQueue();\n    }\n    /**\n     * Send the first packet of the queue, and wait for an acknowledgement from the server.\n     * @param force - whether to resend a packet that has not been acknowledged yet\n     *\n     * @private\n     */\n    _drainQueue(force = false) {\n        if (!this.connected || this._queue.length === 0) {\n            return;\n        }\n        const packet = this._queue[0];\n        if (packet.pending && !force) {\n            return;\n        }\n        packet.pending = true;\n        packet.tryCount++;\n        this.flags = packet.flags;\n        this.emit.apply(this, packet.args);\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param packet\n     * @private\n     */\n    packet(packet) {\n        packet.nsp = this.nsp;\n        this.io._packet(packet);\n    }\n    /**\n     * Called upon engine `open`.\n     *\n     * @private\n     */\n    onopen() {\n        if (typeof this.auth == \"function\") {\n            this.auth((data) => {\n                this._sendConnectPacket(data);\n            });\n        }\n        else {\n            this._sendConnectPacket(this.auth);\n        }\n    }\n    /**\n     * Sends a CONNECT packet to initiate the Socket.IO session.\n     *\n     * @param data\n     * @private\n     */\n    _sendConnectPacket(data) {\n        this.packet({\n            type: PacketType.CONNECT,\n            data: this._pid\n                ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n                : data,\n        });\n    }\n    /**\n     * Called upon engine or manager `error`.\n     *\n     * @param err\n     * @private\n     */\n    onerror(err) {\n        if (!this.connected) {\n            this.emitReserved(\"connect_error\", err);\n        }\n    }\n    /**\n     * Called upon engine `close`.\n     *\n     * @param reason\n     * @param description\n     * @private\n     */\n    onclose(reason, description) {\n        this.connected = false;\n        delete this.id;\n        this.emitReserved(\"disconnect\", reason, description);\n    }\n    /**\n     * Called with socket packet.\n     *\n     * @param packet\n     * @private\n     */\n    onpacket(packet) {\n        const sameNamespace = packet.nsp === this.nsp;\n        if (!sameNamespace)\n            return;\n        switch (packet.type) {\n            case PacketType.CONNECT:\n                if (packet.data && packet.data.sid) {\n                    this.onconnect(packet.data.sid, packet.data.pid);\n                }\n                else {\n                    this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n                }\n                break;\n            case PacketType.EVENT:\n            case PacketType.BINARY_EVENT:\n                this.onevent(packet);\n                break;\n            case PacketType.ACK:\n            case PacketType.BINARY_ACK:\n                this.onack(packet);\n                break;\n            case PacketType.DISCONNECT:\n                this.ondisconnect();\n                break;\n            case PacketType.CONNECT_ERROR:\n                this.destroy();\n                const err = new Error(packet.data.message);\n                // @ts-ignore\n                err.data = packet.data.data;\n                this.emitReserved(\"connect_error\", err);\n                break;\n        }\n    }\n    /**\n     * Called upon a server event.\n     *\n     * @param packet\n     * @private\n     */\n    onevent(packet) {\n        const args = packet.data || [];\n        if (null != packet.id) {\n            args.push(this.ack(packet.id));\n        }\n        if (this.connected) {\n            this.emitEvent(args);\n        }\n        else {\n            this.receiveBuffer.push(Object.freeze(args));\n        }\n    }\n    emitEvent(args) {\n        if (this._anyListeners && this._anyListeners.length) {\n            const listeners = this._anyListeners.slice();\n            for (const listener of listeners) {\n                listener.apply(this, args);\n            }\n        }\n        super.emit.apply(this, args);\n        if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n            this._lastOffset = args[args.length - 1];\n        }\n    }\n    /**\n     * Produces an ack callback to emit with an event.\n     *\n     * @private\n     */\n    ack(id) {\n        const self = this;\n        let sent = false;\n        return function (...args) {\n            // prevent double callbacks\n            if (sent)\n                return;\n            sent = true;\n            self.packet({\n                type: PacketType.ACK,\n                id: id,\n                data: args,\n            });\n        };\n    }\n    /**\n     * Called upon a server acknowlegement.\n     *\n     * @param packet\n     * @private\n     */\n    onack(packet) {\n        const ack = this.acks[packet.id];\n        if (\"function\" === typeof ack) {\n            ack.apply(this, packet.data);\n            delete this.acks[packet.id];\n        }\n        else {\n        }\n    }\n    /**\n     * Called upon server connect.\n     *\n     * @private\n     */\n    onconnect(id, pid) {\n        this.id = id;\n        this.recovered = pid && this._pid === pid;\n        this._pid = pid; // defined only if connection state recovery is enabled\n        this.connected = true;\n        this.emitBuffered();\n        this.emitReserved(\"connect\");\n        this._drainQueue(true);\n    }\n    /**\n     * Emit buffered events (received and emitted).\n     *\n     * @private\n     */\n    emitBuffered() {\n        this.receiveBuffer.forEach((args) => this.emitEvent(args));\n        this.receiveBuffer = [];\n        this.sendBuffer.forEach((packet) => {\n            this.notifyOutgoingListeners(packet);\n            this.packet(packet);\n        });\n        this.sendBuffer = [];\n    }\n    /**\n     * Called upon server disconnect.\n     *\n     * @private\n     */\n    ondisconnect() {\n        this.destroy();\n        this.onclose(\"io server disconnect\");\n    }\n    /**\n     * Called upon forced client/server side disconnections,\n     * this method ensures the manager stops tracking us and\n     * that reconnections don't get triggered for this.\n     *\n     * @private\n     */\n    destroy() {\n        if (this.subs) {\n            // clean subscriptions to avoid reconnections\n            this.subs.forEach((subDestroy) => subDestroy());\n            this.subs = undefined;\n        }\n        this.io[\"_destroy\"](this);\n    }\n    /**\n     * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n     *\n     * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n     *\n     * @example\n     * const socket = io();\n     *\n     * socket.on(\"disconnect\", (reason) => {\n     *   // console.log(reason); prints \"io client disconnect\"\n     * });\n     *\n     * socket.disconnect();\n     *\n     * @return self\n     */\n    disconnect() {\n        if (this.connected) {\n            this.packet({ type: PacketType.DISCONNECT });\n        }\n        // remove socket from pool\n        this.destroy();\n        if (this.connected) {\n            // fire events\n            this.onclose(\"io client disconnect\");\n        }\n        return this;\n    }\n    /**\n     * Alias for {@link disconnect()}.\n     *\n     * @return self\n     */\n    close() {\n        return this.disconnect();\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @example\n     * socket.compress(false).emit(\"hello\");\n     *\n     * @param compress - if `true`, compresses the sending data\n     * @return self\n     */\n    compress(compress) {\n        this.flags.compress = compress;\n        return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n     * ready to send messages.\n     *\n     * @example\n     * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n     *\n     * @returns self\n     */\n    get volatile() {\n        this.flags.volatile = true;\n        return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n     * given number of milliseconds have elapsed without an acknowledgement from the server:\n     *\n     * @example\n     * socket.timeout(5000).emit(\"my-event\", (err) => {\n     *   if (err) {\n     *     // the server did not acknowledge the event in the given delay\n     *   }\n     * });\n     *\n     * @returns self\n     */\n    timeout(timeout) {\n        this.flags.timeout = timeout;\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * @example\n     * socket.onAny((event, ...args) => {\n     *   console.log(`got ${event}`);\n     * });\n     *\n     * @param listener\n     */\n    onAny(listener) {\n        this._anyListeners = this._anyListeners || [];\n        this._anyListeners.push(listener);\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * @example\n     * socket.prependAny((event, ...args) => {\n     *   console.log(`got event ${event}`);\n     * });\n     *\n     * @param listener\n     */\n    prependAny(listener) {\n        this._anyListeners = this._anyListeners || [];\n        this._anyListeners.unshift(listener);\n        return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @example\n     * const catchAllListener = (event, ...args) => {\n     *   console.log(`got event ${event}`);\n     * }\n     *\n     * socket.onAny(catchAllListener);\n     *\n     * // remove a specific listener\n     * socket.offAny(catchAllListener);\n     *\n     * // or remove all listeners\n     * socket.offAny();\n     *\n     * @param listener\n     */\n    offAny(listener) {\n        if (!this._anyListeners) {\n            return this;\n        }\n        if (listener) {\n            const listeners = this._anyListeners;\n            for (let i = 0; i < listeners.length; i++) {\n                if (listener === listeners[i]) {\n                    listeners.splice(i, 1);\n                    return this;\n                }\n            }\n        }\n        else {\n            this._anyListeners = [];\n        }\n        return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     */\n    listenersAny() {\n        return this._anyListeners || [];\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * Note: acknowledgements sent to the server are not included.\n     *\n     * @example\n     * socket.onAnyOutgoing((event, ...args) => {\n     *   console.log(`sent event ${event}`);\n     * });\n     *\n     * @param listener\n     */\n    onAnyOutgoing(listener) {\n        this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n        this._anyOutgoingListeners.push(listener);\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * Note: acknowledgements sent to the server are not included.\n     *\n     * @example\n     * socket.prependAnyOutgoing((event, ...args) => {\n     *   console.log(`sent event ${event}`);\n     * });\n     *\n     * @param listener\n     */\n    prependAnyOutgoing(listener) {\n        this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n        this._anyOutgoingListeners.unshift(listener);\n        return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @example\n     * const catchAllListener = (event, ...args) => {\n     *   console.log(`sent event ${event}`);\n     * }\n     *\n     * socket.onAnyOutgoing(catchAllListener);\n     *\n     * // remove a specific listener\n     * socket.offAnyOutgoing(catchAllListener);\n     *\n     * // or remove all listeners\n     * socket.offAnyOutgoing();\n     *\n     * @param [listener] - the catch-all listener (optional)\n     */\n    offAnyOutgoing(listener) {\n        if (!this._anyOutgoingListeners) {\n            return this;\n        }\n        if (listener) {\n            const listeners = this._anyOutgoingListeners;\n            for (let i = 0; i < listeners.length; i++) {\n                if (listener === listeners[i]) {\n                    listeners.splice(i, 1);\n                    return this;\n                }\n            }\n        }\n        else {\n            this._anyOutgoingListeners = [];\n        }\n        return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     */\n    listenersAnyOutgoing() {\n        return this._anyOutgoingListeners || [];\n    }\n    /**\n     * Notify the listeners for each packet sent\n     *\n     * @param packet\n     *\n     * @private\n     */\n    notifyOutgoingListeners(packet) {\n        if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n            const listeners = this._anyOutgoingListeners.slice();\n            for (const listener of listeners) {\n                listener.apply(this, packet.data);\n            }\n        }\n    }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n    opts = opts || {};\n    this.ms = opts.min || 100;\n    this.max = opts.max || 10000;\n    this.factor = opts.factor || 2;\n    this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n    this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n    var ms = this.ms * Math.pow(this.factor, this.attempts++);\n    if (this.jitter) {\n        var rand = Math.random();\n        var deviation = Math.floor(rand * this.jitter * ms);\n        ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n    }\n    return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n    this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n    this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n    this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n    this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n    constructor(uri, opts) {\n        var _a;\n        super();\n        this.nsps = {};\n        this.subs = [];\n        if (uri && \"object\" === typeof uri) {\n            opts = uri;\n            uri = undefined;\n        }\n        opts = opts || {};\n        opts.path = opts.path || \"/socket.io\";\n        this.opts = opts;\n        installTimerFunctions(this, opts);\n        this.reconnection(opts.reconnection !== false);\n        this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n        this.reconnectionDelay(opts.reconnectionDelay || 1000);\n        this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n        this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n        this.backoff = new Backoff({\n            min: this.reconnectionDelay(),\n            max: this.reconnectionDelayMax(),\n            jitter: this.randomizationFactor(),\n        });\n        this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n        this._readyState = \"closed\";\n        this.uri = uri;\n        const _parser = opts.parser || parser;\n        this.encoder = new _parser.Encoder();\n        this.decoder = new _parser.Decoder();\n        this._autoConnect = opts.autoConnect !== false;\n        if (this._autoConnect)\n            this.open();\n    }\n    reconnection(v) {\n        if (!arguments.length)\n            return this._reconnection;\n        this._reconnection = !!v;\n        return this;\n    }\n    reconnectionAttempts(v) {\n        if (v === undefined)\n            return this._reconnectionAttempts;\n        this._reconnectionAttempts = v;\n        return this;\n    }\n    reconnectionDelay(v) {\n        var _a;\n        if (v === undefined)\n            return this._reconnectionDelay;\n        this._reconnectionDelay = v;\n        (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n        return this;\n    }\n    randomizationFactor(v) {\n        var _a;\n        if (v === undefined)\n            return this._randomizationFactor;\n        this._randomizationFactor = v;\n        (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n        return this;\n    }\n    reconnectionDelayMax(v) {\n        var _a;\n        if (v === undefined)\n            return this._reconnectionDelayMax;\n        this._reconnectionDelayMax = v;\n        (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n        return this;\n    }\n    timeout(v) {\n        if (!arguments.length)\n            return this._timeout;\n        this._timeout = v;\n        return this;\n    }\n    /**\n     * Starts trying to reconnect if reconnection is enabled and we have not\n     * started reconnecting yet\n     *\n     * @private\n     */\n    maybeReconnectOnOpen() {\n        // Only try to reconnect if it's the first time we're connecting\n        if (!this._reconnecting &&\n            this._reconnection &&\n            this.backoff.attempts === 0) {\n            // keeps reconnection from firing twice for the same reconnection loop\n            this.reconnect();\n        }\n    }\n    /**\n     * Sets the current transport `socket`.\n     *\n     * @param {Function} fn - optional, callback\n     * @return self\n     * @public\n     */\n    open(fn) {\n        if (~this._readyState.indexOf(\"open\"))\n            return this;\n        this.engine = new Engine(this.uri, this.opts);\n        const socket = this.engine;\n        const self = this;\n        this._readyState = \"opening\";\n        this.skipReconnect = false;\n        // emit `open`\n        const openSubDestroy = on(socket, \"open\", function () {\n            self.onopen();\n            fn && fn();\n        });\n        // emit `error`\n        const errorSub = on(socket, \"error\", (err) => {\n            self.cleanup();\n            self._readyState = \"closed\";\n            this.emitReserved(\"error\", err);\n            if (fn) {\n                fn(err);\n            }\n            else {\n                // Only do this if there is no fn to handle the error\n                self.maybeReconnectOnOpen();\n            }\n        });\n        if (false !== this._timeout) {\n            const timeout = this._timeout;\n            if (timeout === 0) {\n                openSubDestroy(); // prevents a race condition with the 'open' event\n            }\n            // set timer\n            const timer = this.setTimeoutFn(() => {\n                openSubDestroy();\n                socket.close();\n                // @ts-ignore\n                socket.emit(\"error\", new Error(\"timeout\"));\n            }, timeout);\n            if (this.opts.autoUnref) {\n                timer.unref();\n            }\n            this.subs.push(function subDestroy() {\n                clearTimeout(timer);\n            });\n        }\n        this.subs.push(openSubDestroy);\n        this.subs.push(errorSub);\n        return this;\n    }\n    /**\n     * Alias for open()\n     *\n     * @return self\n     * @public\n     */\n    connect(fn) {\n        return this.open(fn);\n    }\n    /**\n     * Called upon transport open.\n     *\n     * @private\n     */\n    onopen() {\n        // clear old subs\n        this.cleanup();\n        // mark as open\n        this._readyState = \"open\";\n        this.emitReserved(\"open\");\n        // add new subs\n        const socket = this.engine;\n        this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n    }\n    /**\n     * Called upon a ping.\n     *\n     * @private\n     */\n    onping() {\n        this.emitReserved(\"ping\");\n    }\n    /**\n     * Called with data.\n     *\n     * @private\n     */\n    ondata(data) {\n        try {\n            this.decoder.add(data);\n        }\n        catch (e) {\n            this.onclose(\"parse error\", e);\n        }\n    }\n    /**\n     * Called when parser fully decodes a packet.\n     *\n     * @private\n     */\n    ondecoded(packet) {\n        // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n        nextTick(() => {\n            this.emitReserved(\"packet\", packet);\n        }, this.setTimeoutFn);\n    }\n    /**\n     * Called upon socket error.\n     *\n     * @private\n     */\n    onerror(err) {\n        this.emitReserved(\"error\", err);\n    }\n    /**\n     * Creates a new socket for the given `nsp`.\n     *\n     * @return {Socket}\n     * @public\n     */\n    socket(nsp, opts) {\n        let socket = this.nsps[nsp];\n        if (!socket) {\n            socket = new Socket(this, nsp, opts);\n            this.nsps[nsp] = socket;\n        }\n        else if (this._autoConnect && !socket.active) {\n            socket.connect();\n        }\n        return socket;\n    }\n    /**\n     * Called upon a socket close.\n     *\n     * @param socket\n     * @private\n     */\n    _destroy(socket) {\n        const nsps = Object.keys(this.nsps);\n        for (const nsp of nsps) {\n            const socket = this.nsps[nsp];\n            if (socket.active) {\n                return;\n            }\n        }\n        this._close();\n    }\n    /**\n     * Writes a packet.\n     *\n     * @param packet\n     * @private\n     */\n    _packet(packet) {\n        const encodedPackets = this.encoder.encode(packet);\n        for (let i = 0; i < encodedPackets.length; i++) {\n            this.engine.write(encodedPackets[i], packet.options);\n        }\n    }\n    /**\n     * Clean up transport subscriptions and packet buffer.\n     *\n     * @private\n     */\n    cleanup() {\n        this.subs.forEach((subDestroy) => subDestroy());\n        this.subs.length = 0;\n        this.decoder.destroy();\n    }\n    /**\n     * Close the current socket.\n     *\n     * @private\n     */\n    _close() {\n        this.skipReconnect = true;\n        this._reconnecting = false;\n        this.onclose(\"forced close\");\n        if (this.engine)\n            this.engine.close();\n    }\n    /**\n     * Alias for close()\n     *\n     * @private\n     */\n    disconnect() {\n        return this._close();\n    }\n    /**\n     * Called upon engine close.\n     *\n     * @private\n     */\n    onclose(reason, description) {\n        this.cleanup();\n        this.backoff.reset();\n        this._readyState = \"closed\";\n        this.emitReserved(\"close\", reason, description);\n        if (this._reconnection && !this.skipReconnect) {\n            this.reconnect();\n        }\n    }\n    /**\n     * Attempt a reconnection.\n     *\n     * @private\n     */\n    reconnect() {\n        if (this._reconnecting || this.skipReconnect)\n            return this;\n        const self = this;\n        if (this.backoff.attempts >= this._reconnectionAttempts) {\n            this.backoff.reset();\n            this.emitReserved(\"reconnect_failed\");\n            this._reconnecting = false;\n        }\n        else {\n            const delay = this.backoff.duration();\n            this._reconnecting = true;\n            const timer = this.setTimeoutFn(() => {\n                if (self.skipReconnect)\n                    return;\n                this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n                // check again for the case socket closed in above events\n                if (self.skipReconnect)\n                    return;\n                self.open((err) => {\n                    if (err) {\n                        self._reconnecting = false;\n                        self.reconnect();\n                        this.emitReserved(\"reconnect_error\", err);\n                    }\n                    else {\n                        self.onreconnect();\n                    }\n                });\n            }, delay);\n            if (this.opts.autoUnref) {\n                timer.unref();\n            }\n            this.subs.push(function subDestroy() {\n                clearTimeout(timer);\n            });\n        }\n    }\n    /**\n     * Called upon successful reconnect.\n     *\n     * @private\n     */\n    onreconnect() {\n        const attempt = this.backoff.attempts;\n        this._reconnecting = false;\n        this.backoff.reset();\n        this.emitReserved(\"reconnect\", attempt);\n    }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n    if (typeof uri === \"object\") {\n        opts = uri;\n        uri = undefined;\n    }\n    opts = opts || {};\n    const parsed = url(uri, opts.path || \"/socket.io\");\n    const source = parsed.source;\n    const id = parsed.id;\n    const path = parsed.path;\n    const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n    const newConnection = opts.forceNew ||\n        opts[\"force new connection\"] ||\n        false === opts.multiplex ||\n        sameNamespace;\n    let io;\n    if (newConnection) {\n        io = new Manager(source, opts);\n    }\n    else {\n        if (!cache[id]) {\n            cache[id] = new Manager(source, opts);\n        }\n        io = cache[id];\n    }\n    if (parsed.query && !opts.query) {\n        opts.query = parsed.queryKey;\n    }\n    return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n    Manager,\n    Socket,\n    io: lookup,\n    connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n *        Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n    let obj = uri;\n    // default to window.location\n    loc = loc || (typeof location !== \"undefined\" && location);\n    if (null == uri)\n        uri = loc.protocol + \"//\" + loc.host;\n    // relative path support\n    if (typeof uri === \"string\") {\n        if (\"/\" === uri.charAt(0)) {\n            if (\"/\" === uri.charAt(1)) {\n                uri = loc.protocol + uri;\n            }\n            else {\n                uri = loc.host + uri;\n            }\n        }\n        if (!/^(https?|wss?):\\/\\//.test(uri)) {\n            if (\"undefined\" !== typeof loc) {\n                uri = loc.protocol + \"//\" + uri;\n            }\n            else {\n                uri = \"https://\" + uri;\n            }\n        }\n        // parse\n        obj = parse(uri);\n    }\n    // make sure we treat `localhost:80` and `localhost` equally\n    if (!obj.port) {\n        if (/^(http|ws)$/.test(obj.protocol)) {\n            obj.port = \"80\";\n        }\n        else if (/^(http|ws)s$/.test(obj.protocol)) {\n            obj.port = \"443\";\n        }\n    }\n    obj.path = obj.path || \"/\";\n    const ipv6 = obj.host.indexOf(\":\") !== -1;\n    const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n    // define unique id\n    obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n    // define href\n    obj.href =\n        obj.protocol +\n            \"://\" +\n            host +\n            (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n    return obj;\n}\n","import React from 'react';\nimport classNames from 'classnames';\nimport extend from 'extend';\nimport PropTypes from 'prop-types';\nimport Sefaria from './sefaria/sefaria';\nimport Header from './Header';\nimport ReaderPanel from './ReaderPanel';\nimport $ from './sefaria/sefariaJquery';\nimport EditCollectionPage from './EditCollectionPage';\nimport Footer from './Footer';\nimport SearchState from './sefaria/searchState';\nimport {ContentLanguageContext, AdContext, StrapiDataProvider, ExampleComponent, StrapiDataContext} from './context';\nimport {\n  ContestLandingPage,\n  RemoteLearningPage,\n  SheetsLandingPage,\n  ContextUSsheetsLandingPage,\n  PBSC2020LandingPage,\n  PBSC2021LandingPage,\n  PoweredByPage,\n  RambanLandingPage,\n  EducatorsPage,\n  RabbisPage,\n  DonatePage,\n  WordByWordPage,\n  JobsPage,\n  TeamMembersPage,\n} from './StaticPages';\nimport {\n  SignUpModal,\n  InterruptingMessage,\n  Banner,\n  CookiesNotification,\n  CommunityPagePreviewControls\n} from './Misc';\nimport { Promotions } from './Promotions';\nimport Component from 'react-class';\nimport  { io }  from 'socket.io-client';\n\nclass ReaderApp extends Component {\n  constructor(props) {\n    super(props);\n    // TODO clean up generation of initial panels objects.\n    // Currently these get generated in reader/views.py then regenerated again in ReaderApp.\n    this.MIN_PANEL_WIDTH       = 360.0;\n    let panels                 = [];\n\n    if (props.initialMenu) {\n      // If a menu is specified in `initialMenu`, make a panel for it\n      panels[0] = {\n        mode:                    \"Menu\",\n        menuOpen:                props.initialMenu,\n        searchQuery:             props.initialQuery,\n        searchTab:               props.initialSearchTab,\n        tab:                     props.initialTab,\n        topicSort:               props.initialTopicSort,\n        textSearchState: new SearchState({\n          type: 'text',\n          appliedFilters:        props.initialTextSearchFilters,\n          field:                 props.initialTextSearchField,\n          appliedFilterAggTypes: props.initialTextSearchFilterAggTypes,\n          sortType:              props.initialTextSearchSortType,\n        }),\n        sheetSearchState: new SearchState({\n          type: 'sheet',\n          appliedFilters:        props.initialSheetSearchFilters,\n          appliedFilterAggTypes: props.initialSheetSearchFilterAggTypes,\n          sortType:              props.initialSheetSearchSortType,\n        }),\n        navigationCategories:    props.initialNavigationCategories,\n        navigationTopicCategory: props.initialNavigationTopicCategory,\n        navigationTopic:         props.initialTopic,\n        navigationTopicTitle:    props.initialNavigationTopicTitle,\n        navigationTopicLetter:   props.initialNavigationTopicLetter,\n        topicTitle:              props.initialTopicTitle,\n        topicTestVersion:        props.topicTestVersion,\n        profile:                 props.initialProfile,\n        collectionName:          props.initialCollectionName,\n        collectionSlug:          props.initialCollectionSlug,\n        collectionTag:           props.initialCollectionTag,\n        translationsSlug:        props.initialTranslationsSlug,\n      };\n    }\n\n    const defaultPanelSettings = this.getDefaultPanelSettings();\n\n    const initialPanels = props.initialPanels || [];\n    panels = panels.concat(initialPanels.map(this.clonePanel));\n\n    panels = panels.map(panel => {\n      if (!panel.hasOwnProperty(\"settings\") && !!panel.currVersions) {\n        // If a panel doesn't have its own settings, but it does have a text version set\n        // make sure the settings show the language of the version set.\n        if (panel.currVersions.he && panel.currVersions.en) { panel.settings = {language: \"bilingual\"}; }\n        else if (panel.currVersions.he)                     { panel.settings = {language: \"hebrew\"}; }\n        else if (panel.currVersions.en)                     { panel.settings = {language: \"english\"}; }\n      }\n      panel.settings = extend(Sefaria.util.clone(defaultPanelSettings), (panel.settings || {}));\n\n      if (panel.mode.endsWith(\"AndConnections\")) {\n        panel.highlightedRefs = panel.refs;\n      }\n      if (panel.menuOpen === \"book toc\") { // TODO figure out how to delete this\n        panel.tab = props.initialTab // why is book toc initial menu false?\n      }\n      return panel;\n    }).map(panel => this.makePanelState(panel));\n\n    const defaultVersions   = Sefaria.util.clone(props.initialDefaultVersions) || {};\n    const layoutOrientation = (props.interfaceLang == \"hebrew\") ? \"rtl\" : \"ltr\";\n\n    this.state = {\n      panels: panels,\n      headerMode: props.headerMode,\n      defaultVersions: defaultVersions,\n      defaultPanelSettings: Sefaria.util.clone(defaultPanelSettings),\n      layoutOrientation: layoutOrientation,\n      path: props.initialPath,\n      panelCap: props.initialPanelCap,\n      initialAnalyticsTracked: false,\n      showSignUpModal: false,\n      translationLanguagePreference: props.translationLanguagePreference,\n    };\n  }\n  makePanelState(state) {\n    // Return a full representation of a single panel's state, given a partial representation in `state`\n    var panel = {\n      mode:                    state.mode,                   // \"Text\", \"TextAndConnections\", \"Connections\", \"Sheet\", \"SheetAndConnection\", \"Menu\"\n      refs:                    state.refs                    || [], // array of ref strings\n      filter:                  state.filter                  || [],\n      versionFilter:           state.versionFilter           || [],\n      connectionsMode:         state.connectionsMode         || \"Resources\",\n      connectionsCategory:     state.connectionsCategory     || null,\n      currVersions:            state.currVersions            || {en:null,he:null},\n      highlightedRefs:         state.highlightedRefs         || [],\n      highlightedNode:         state.highlightedNode         || null,\n      scrollToHighlighted:     state.scrollToHighlighted     || false,\n      currentlyVisibleRef:     state.refs && state.refs.length ? state.refs[0] : null,\n      recentFilters:           state.recentFilters           || state.filter || [],\n      recentVersionFilters:    state.recentVersionFilters    || state.versionFilter || [],\n      menuOpen:                state.menuOpen                || null, // \"navigation\", \"text toc\", \"display\", \"search\", \"sheets\", \"community\", \"book toc\"\n      navigationCategories:    state.navigationCategories    || [],\n      navigationTopicCategory: state.navigationTopicCategory || \"\",\n      sheetID:                 state.sheetID                 || null,\n      sheetNodes:              state.sheetNodes              || null,\n      nodeRef:                 state.nodeRef                 || null,\n      navigationTopic:         state.navigationTopic         || null,\n      navigationTopicTitle:    state.navigationTopicTitle    || null,\n      navigationTopicLetter:   state.navigationTopicLetter   || null,\n      topicTitle:              state.topicTitle              || null,\n      collectionName:          state.collectionName          || null,\n      collectionSlug:          state.collectionSlug          || null,\n      collectionTag:           state.collectionTag           || null,\n      translationsSlug:        state.translationsSlug        || null,\n      searchQuery:             state.searchQuery             || null,\n      searchTab:               state.searchTab               || 'text',\n      showHighlight:           state.showHighlight           || null,\n      textSearchState:         state.textSearchState         || new SearchState({ type: 'text' }),\n      sheetSearchState:        state.sheetSearchState        || new SearchState({ type: 'sheet' }),\n      compare:                 state.compare                 || false,\n      openSidebarAsConnect:    state.openSidebarAsConnect    || false,\n      bookRef:                 state.bookRef                 || null,\n      settings:                state.settings ? Sefaria.util.clone(state.settings) : Sefaria.util.clone(this.getDefaultPanelSettings()),\n      displaySettingsOpen:     false,\n      initialAnalyticsTracked: state.initialAnalyticsTracked || false,\n      selectedWords:           state.selectedWords           || \"\",\n      sidebarSearchQuery:      state.sidebarSearchQuery      || null,\n      selectedNamedEntity:     state.selectedNamedEntity     || null,\n      selectedNamedEntityText: state.selectedNamedEntityText || null,\n      textHighlights:          state.textHighlights          || null,\n      profile:                 state.profile                 || null,\n      tab:                     state.tab                     || null,\n      topicSort:               state.topicSort               || null,\n      webPagesFilter:          state.webPagesFilter          || null,\n      sideScrollPosition:      state.sideScrollPosition      || null,\n      topicTestVersion:        state.topicTestVersion        || null\n    };\n    // if version is not set for the language you're in, see if you can retrieve it from cache\n    if (this.state && panel.refs.length && ((panel.settings.language === \"hebrew\" && !panel.currVersions.he) || (panel.settings.language !== \"hebrew\" && !panel.currVersions.en ))) {\n      const oRef = Sefaria.ref(panel.refs[0]);\n      if (oRef) {\n        const lang = panel.settings.language === \"hebrew\"?\"he\":\"en\";\n        panel.currVersions[lang] = this.getCachedVersion(oRef.indexTitle, lang);\n      }\n    }\n    return panel;\n  }\n  componentDidMount() {\n    this.updateHistoryState(true); // make sure initial page state is in history, (passing true to replace)\n    window.addEventListener(\"popstate\", this.handlePopState);\n    window.addEventListener(\"resize\", this.setPanelCap);\n    window.addEventListener(\"beforeprint\", this.handlePrint);\n    document.addEventListener('copy', this.handleCopyEvent);\n    this.setPanelCap();\n    if (this.props.headerMode) {\n      // Handle in app links on static pages outside of react container\n      $(\"a\").not($(ReactDOM.findDOMNode(this)).find(\"a\"))\n        .on(\"click\", this.handleInAppLinkClick);\n    }\n    //Add a default handler on all (link) clicks that is set to fire first\n    // and check if we need to just ignore other handlers because someone is doing ctrl+click or something.\n    // (because its set to capture, or the event going down the dom stage, and the listener is the document element- it should fire before other handlers. Specifically\n    // handleInAppLinkClick that disables modifier keys such as cmd, alt, shift)\n    document.addEventListener('click', this.handleInAppClickWithModifiers, {capture: true});\n    // Save all initial panels to recently viewed\n    this.state.panels.map(this.saveLastPlace);\n    if (Sefaria._uid) {\n      // A logged in user is automatically a returning visitor\n      Sefaria.markUserAsReturningVisitor();\n    } else if (Sefaria.isNewVisitor()) {\n      // Initialize entries for first-time visitors to determine if they are new or returning presently or in the future\n      Sefaria.markUserAsNewVisitor();\n    }\n  }\n  componentWillUnmount() {\n    window.removeEventListener(\"popstate\", this.handlePopState);\n    window.removeEventListener(\"resize\", this.setPanelCap);\n    window.removeEventListener(\"beforeprint\", this.handlePrint);\n    document.removeEventListener('copy', this.handleCopyEvent);\n  }\n  componentDidUpdate(prevProps, prevState) {\n    $(\".content\").off(\"scroll.scrollPosition\").on(\"scroll.scrollPosition\", this.setScrollPositionInHistory); // when .content may have rerendered\n\n    if (this.justPopped) {\n      //console.log(\"Skipping history update - just popped\")\n      this.justPopped = false;\n      return;\n    }\n\n    // Set initial page view (deferred from analytics.js instanciation)\n    if (!this.state.initialAnalyticsTracked) { this.trackPageview(); }\n    // If a new panel has been added, and the panels extend beyond the viewable area, check horizontal scroll\n    if (this.state.panels.length > this.state.panelCap && this.state.panels.length > prevState.panels.length) {\n      const elem = document.getElementById(\"panelWrapBox\");\n      const viewExtent = (this.state.layoutOrientation === \"ltr\")                      // How far (px) current view extends into viewable area\n          ? elem.scrollLeft + this.state.windowWidth\n          : elem.scrollWidth - elem.scrollLeft;\n      const lastCompletelyVisible = Math.floor(viewExtent / this.MIN_PANEL_WIDTH);    // # of last visible panel - base 1\n      const leftover = viewExtent % this.MIN_PANEL_WIDTH;                             // Leftover viewable pixels after last fully visible panel\n\n      let newPanelPosition;                                                         // # of newly inserted panel - base 1\n      for (let i = 0; i < this.state.panels.length; i++) {\n        if (!prevState.panels[i] || this.state.panels[i] != prevState.panels[i]) {\n          newPanelPosition = i+1;\n          break;\n        }\n      }\n      if(newPanelPosition > lastCompletelyVisible) {\n        let scrollBy = 0;      // Pixels to scroll by\n        let panelOffset = 0;   // Account for partial panel scroll\n        if (leftover > 0) {    // If a panel is half scrolled, bring it fully into view\n          scrollBy += this.MIN_PANEL_WIDTH - leftover;\n          panelOffset += 1;\n        }\n        scrollBy += (newPanelPosition - lastCompletelyVisible - panelOffset) * this.MIN_PANEL_WIDTH;\n        elem.scrollLeft = (this.state.layoutOrientation === \"ltr\")\n            ? elem.scrollLeft + scrollBy\n            : elem.scrollLeft - scrollBy;\n      }\n    }\n\n    this.setContainerMode();\n    this.updateHistoryState(this.replaceHistory);\n  }\n\n\n  handlePopState(event) {\n    const state = event.state;\n    // console.log(\"Pop - \" + window.location.pathname);\n    // console.log(event.state);\n    if (state) {\n      this.justPopped = true;\n\n      // history does not preserve custom objects\n      if (state.panels) {\n        for (let p of state.panels) {\n          p.textSearchState = p.textSearchState && new SearchState(p.textSearchState);\n          p.sheetSearchState = p.sheetSearchState && new SearchState(p.sheetSearchState);\n        }\n      } else {\n        state.panels = [];\n      }\n      this.setState(state, () => {\n        if (state.scrollPosition) {\n          $(\".content\").scrollTop(event.state.scrollPosition)\n            .trigger(\"scroll\");\n        }\n      });\n\n      this.setContainerMode();\n    }\n  }\n  trackPageview() {\n      var panels = this.state.panels;\n      var textPanels = panels.filter(panel => (panel.refs.length || panel.bookRef) && panel.mode !== \"Connections\");\n      var connectionPanels = panels.filter(panel => panel.mode == \"Connections\");\n\n      // Set Page Type\n      // Todo: More specificity for sheets - browsing, reading, writing\n      const pageType = !panels.length ? \"Static\" : (panels[0].menuOpen || panels[0].mode);\n      Sefaria.track.setPageType(pageType);\n\n      // Number of panels as e.g. \"2\" meaning 2 text panels or \"3.2\" meaning 3 text panels and 2 connection panels\n      if (connectionPanels.length == 0) {\n        Sefaria.track.setNumberOfPanels(textPanels.length.toString());\n      } else {\n        Sefaria.track.setNumberOfPanels(`${textPanels.length}.${connectionPanels.length}`);\n      }\n\n      // refs - per text panel\n      var refs =  textPanels.map(panel => (panel.refs.length) ? panel.refs.slice(-1)[0] : panel.bookRef);\n      Sefaria.track.setRef(refs.join(\" | \"));\n\n      // Book name (Index record primary name) - per text panel\n      var bookNames = refs.map(ref => Sefaria.parseRef(ref).index).filter(b => !!b);\n      Sefaria.track.setBookName(bookNames.join(\" | \"));\n\n      // Indexes - per text panel\n      var indexes = bookNames.map(b => Sefaria.index(b)).filter(i => !!i);\n\n      // categories - per text panel\n      var primaryCats = indexes.map(i => (i.dependence === \"Commentary\")? i.categories[0] + \" Commentary\": i.categories[0]);\n      Sefaria.track.setPrimaryCategory(primaryCats.join(\" | \"));\n\n      var secondaryCats = indexes.map(i => {\n          var cats = i.categories.filter(cat=> cat != \"Commentary\").slice(1);\n          return (cats.length >= 1) ? cats[0] : \"\"\n      });\n      Sefaria.track.setSecondaryCategory(secondaryCats.join(\" | \"));\n\n      // panel content languages - per text panel\n      var contentLanguages = textPanels.map(panel => panel.settings.language);\n      Sefaria.track.setContentLanguage(contentLanguages.join(\" | \"));\n\n      // Set Versions - per text panel\n      var versionTitles = textPanels.map(p => p.currVersions.en ? `${p.currVersions.en}(en)`: (p.currVersions.he ? `${p.currVersions.he}(he)` : 'default version'));\n      Sefaria.track.setVersionTitle(versionTitles.join(\" | \"));\n\n      // Set Sidebar usages\n      // todo: handle toolbar selections\n      var sidebars = connectionPanels.map(panel => panel.filter.length ? panel.filter.join(\"+\") : \"all\");\n      Sefaria.track.setSidebars(sidebars.join(\" | \"));\n\n      // After setting the dimensions, post the hit\n      var url = window.location.pathname + window.location.search;\n      // Sefaria.track.pageview(url);\n\n      if (!this.state.initialAnalyticsTracked) {\n        this.setState({initialAnalyticsTracked: true});\n      }\n  }\n  shouldHistoryUpdate() {\n    // Compare the current state to the state last pushed to history,\n    // Return true if the change warrants pushing to history.\n    if (!history.state\n        || (!history.state.panels && !!this.state.panels)\n        || (history.state.panels && (history.state.panels.length !== this.state.panels.length))\n      ) {\n      // If there's no history or the number or basic state of panels has changed\n      return true;\n    }\n\n    const prevPanels = history.state.panels || [];\n    const nextPanels = this.state.panels || [];\n\n    for (let i = 0; i < prevPanels.length; i++) {\n      // Cycle through each panel, compare previous state to next state, looking for differences\n      const prev  = prevPanels[i];\n      const next  = nextPanels[i];\n      if (!prev || !next) { return true; }\n      // history does not preserve custom objects\n      const prevTextSearchState = new SearchState(prev.textSearchState);\n      const prevSheetSearchState = new SearchState(prev.sheetSearchState);\n      const nextTextSearchState = new SearchState(next.textSearchState);\n      const nextSheetSearchState = new SearchState(next.sheetSearchState);\n\n      if ((prev.mode !== next.mode) ||\n          (prev.menuOpen !== next.menuOpen) ||\n          (prev.menuOpen === \"book toc\" && prev.bookRef !== next.bookRef) ||\n          (next.mode === \"Text\" && prev.refs.slice(-1)[0] !== next.refs.slice(-1)[0]) ||\n          (next.mode === \"Text\" && !prev.highlightedRefs.compare(next.highlightedRefs)) ||\n          (next.mode === \"TextAndConnections\" && prev.highlightedRefs.slice(-1)[0] !== next.highlightedRefs.slice(-1)[0]) ||\n          ((next.mode === \"Connections\" || next.mode === \"TextAndConnections\") && prev.filter && !prev.filter.compare(next.filter)) ||\n          (next.mode === \"Translation Open\" && prev.versionFilter && !prev.versionFilter(next.versionFilter)) ||\n          (next.mode === \"Connections\" && !prev.refs.compare(next.refs)) ||\n          (next.currentlyVisibleRef !== prev.currentlyVisibleRef) ||\n          (next.connectionsMode !== prev.connectionsMode) ||\n          (prev.currVersions.en !== next.currVersions.en) ||\n          (prev.currVersions.he !== next.currVersions.he) ||\n          (prev.searchQuery != next.searchQuery) ||\n          (prev.searchTab != next.searchTab) ||\n          (prev.tab !== next.tab) ||\n          (prev.topicSort !== next.topicSort) ||\n          (prev.collectionName !== next.collectionName) ||\n          (prev.collectionTag !== next.collectionTag) ||\n          (!prevTextSearchState.isEqual({ other: nextTextSearchState, fields: [\"appliedFilters\", \"field\", \"sortType\"]})) ||\n          (!prevSheetSearchState.isEqual({ other: nextSheetSearchState, fields: [\"appliedFilters\", \"field\", \"sortType\"]})) ||\n          (prev.settings.language != next.settings.language) ||\n          (prev.navigationTopicCategory !== next.navigationTopicCategory) ||\n          (prev.settings.aliyotTorah != next.settings.aliyotTorah) ||\n           prev.navigationTopic != next.navigationTopic) {\n        return true;\n      } else if (prev.navigationCategories !== next.navigationCategories) {\n        // Handle array comparison, !== could mean one is null or both are arrays\n        if (!prev.navigationCategories || !next.navigationCategories) {\n          return true; // They are not equal and one is null\n        } else if (!prev.navigationCategories.compare(next.navigationCategories)) {\n          return true; // both are set, compare arrays\n        }\n      }\n    }\n    return false;\n  }\n  clonePanel(panel, prepareForSerialization) {\n    return Sefaria.util.clone(panel, prepareForSerialization);\n  }\n  makeHistoryState() {\n    // Returns an object with state, title and url params for the current state\n    var histories = [];\n    const states = this.state.panels.map(panel => this.clonePanel(panel, true));\n    var siteName = Sefaria._siteSettings[\"SITE_NAME\"][\"en\"]; // e.g. \"Sefaria\"\n    const shortLang = Sefaria.interfaceLang === 'hebrew' ? 'he' : 'en';\n\n    // List of modes that the ConnectionsPanel may have which can be represented in a URL.\n    const sidebarModes = new Set([\"Sheets\", \"Notes\", \"Translations\", \"Translation Open\",\n      \"About\", \"AboutSheet\", \"Navigation\", \"WebPages\", \"extended notes\", \"Topics\", \"Torah Readings\", \"manuscripts\", \"Lexicon\", \"SidebarSearch\"]);\n    const addTab = (url) => {\n      if (state.tab && state.menuOpen !== \"search\") {\n        return  url + `&tab=${state.tab}`\n      } else {\n        return url;\n      }\n    }\n    for (var i = 0; i < states.length; i++) {\n      // Walk through each panel, create a history object as though for this panel alone\n      if (!states[i]) { debugger; }\n      var state = states[i];\n      var hist  = {url: \"\"};\n\n      if (state.menuOpen) {\n        hist.menuPage = true;\n        switch (state.menuOpen) {\n          case \"navigation\":\n            var cats   = state.navigationCategories ? state.navigationCategories.join(\"/\") : \"\";\n            hist.title = cats ? state.navigationCategories.map(Sefaria._).join(\", \") + \" | \" + Sefaria._(siteName) : Sefaria._(Sefaria._siteSettings[\"LONG_SITE_NAME\"]);\n            hist.url   = \"texts\" + (cats ? \"/\" + cats : \"\");\n            hist.mode  = \"navigation\";\n            break;\n          case \"text toc\":\n            var ref    = state.refs.slice(-1)[0];\n            var bookTitle  = ref ? Sefaria.parseRef(ref).index : \"404\";\n            hist.title = Sefaria._(bookTitle) + \" | \" + Sefaria._(siteName);\n            hist.url   = bookTitle.replace(/ /g, \"_\");\n            hist.mode  = \"text toc\";\n            break;\n          case \"book toc\":\n            var bookTitle = state.bookRef;\n            hist.title = Sefaria._(bookTitle) + \" | \" + Sefaria._(siteName);\n            hist.url = bookTitle.replace(/ /g, \"_\");\n            hist.mode = \"book toc\";\n            break;\n          case \"sheet meta\":\n            const sheet = Sefaria.sheets.loadSheetByID(state.sheetID);\n            const sheetTitle = sheet? sheet.title.stripHtml() : \"\";\n            hist.title = Sefaria._(siteName + \" Source Sheets\")+\": \" + sheetTitle;\n            hist.url = i == 0 ? \"sheets/\"+ state.sheetID : \"sheet&s=\"+ state.sheetID;\n            hist.mode = \"sheet meta\";\n            break;\n          case \"extended notes\":\n            var bookTitle = state.mode===\"Connections\" ?Sefaria.parseRef(state.currentlyVisibleRef).index : state.bookRef;\n            hist.currVersions = state.currVersions;\n            hist.url = `${bookTitle}&notes${i>1 ? i : ''}=1`.replace(/ /g, \"_\");\n            hist.mode = \"extended notes\";\n            break;\n          case \"search\":\n            const query = state.searchQuery ? encodeURIComponent(state.searchQuery) : \"\";\n            hist.title = state.searchQuery ? state.searchQuery + \" | \" : \"\";\n            hist.title += Sefaria._(siteName + \" Search\");\n            hist.url   = \"search\" + (state.searchQuery ? (`&q=${query}&tab=${state.searchTab}` +\n              state.textSearchState.makeURL({ prefix: 't', isStart: false }) +\n              state.sheetSearchState.makeURL({ prefix: 's', isStart: false })) : \"\");\n            hist.mode  = \"search\";\n            break;\n          case \"topics\":\n            const topicMsg = Sefaria._siteSettings.TORAH_SPECIFIC ? \"Texts & Source Sheets from Torah, Talmud and Sefaria's library of Jewish sources.\" : \"Texts & Source Sheets\";\n            if (state.navigationTopic) {\n              hist.url = state.topicTestVersion ? `topics/${state.topicTestVersion}/${state.navigationTopic}` : `topics/${state.navigationTopic}`;\n              hist.url = hist.url + (state.topicSort ? `&sort=${state.topicSort}` : '');\n              hist.title = `${state.topicTitle[shortLang]} | ${ Sefaria._(topicMsg)}`;\n              hist.mode  = \"topic\";\n            } else if (state.navigationTopicCategory) {\n              hist.title = state.navigationTopicTitle[shortLang] + \" | \" + Sefaria._(topicMsg);\n              hist.url   =  \"topics/category/\" + state.navigationTopicCategory;\n              hist.mode  = \"topicCat\";\n            } else {\n              hist.url   = \"topics\";\n              hist.title = Sefaria._(\"Topics | \" + siteName);\n              hist.mode  = \"topics\";\n            }\n            break;\n          case \"allTopics\":\n              hist.url   = \"topics/all/\" + state.navigationTopicLetter;\n              const allTopicMsg = Sefaria._siteSettings.TORAH_SPECIFIC ? \"Explore Jewish Texts by Topic\" : \"Explore Texts by Topic\";\n              hist.title = Sefaria._(allTopicMsg) + \" - \" + state.navigationTopicLetter + \" | \" + Sefaria._(siteName);\n              hist.mode  = \"topics\";\n            break;\n          case \"community\":\n            hist.title = Sefaria._(\"From the Community: Today on Sefaria\");\n            hist.url   = \"community\";\n            hist.mode  = \"community\";\n            break;\n          case \"profile\":\n            hist.title = `${state.profile.full_name} ${Sefaria._(` on ${siteName}`)}`;\n            hist.url   = `profile/${state.profile.slug}?tab=${state.profileTab}`;\n            hist.mode = \"profile\";\n            break;\n          case \"notifications\":\n            hist.title = Sefaria._(siteName + \" Notifications\");\n            hist.url   = \"notifications\";\n            hist.mode  = \"notifications\";\n            break;\n          case \"collection\":\n            hist.url   = \"collections/\" + state.collectionSlug;\n            if (states[i].collectionTag) {\n              hist.url += \"&tag=\" + state.collectionTag.replace(\"#\",\"%23\");\n            }\n            hist.title = (state.collectionName ? state.collectionName + \" | \" : \"\") + Sefaria._(siteName + \" Collections\");\n            hist.mode  = \"collection\";\n            break;\n          case \"collectionsPublic\":\n            hist.title = Sefaria._(\"Collections\") + \" | \" + Sefaria._(siteName);\n            hist.url = \"collections\";\n            hist.mode = \"collcetionsPublic\";\n            break;\n          case \"translationsPage\":\n            hist.url   = \"translations/\" + state.translationsSlug;\n            hist.title = Sefaria.getHebrewTitle(state.translationsSlug);\n            hist.mode  = \"translations\";\n            break;\n          case \"calendars\":\n            hist.title = Sefaria._(\"Learning Schedules\") + \" | \" + Sefaria._(siteName);\n            hist.url = \"calendars\";\n            hist.mode = \"calendars\";\n            break;\n          case \"updates\":\n            hist.title = Sefaria._(\"New Additions to the \" + siteName + \" Library\");\n            hist.url = \"updates\";\n            hist.mode = \"updates\";\n            break;\n          case \"modtools\":\n            hist.title = Sefaria._(\"Moderator Tools\");\n            hist.url = \"modtools\";\n            hist.mode = \"modtools\";\n            break;\n          case \"user_stats\":\n            hist.title = Sefaria._(\"Torah Tracker\");\n            hist.url = \"torahtracker\";\n            hist.mode = \"user_stats\";\n            break;\n          case \"saved\":\n            hist.title = Sefaria._(\"My Saved Content\");\n            hist.url = \"texts/saved\";\n            hist.mode = \"saved\";\n            break;\n          case \"history\":\n            hist.title = Sefaria._(\"My Reading History\");\n            hist.url = \"texts/history\";\n            hist.mode = \"history\";\n        }\n        hist.url = addTab(hist.url)\n      } else if (state.mode === \"Text\") {\n        var highlighted = state.highlightedRefs.length ? Sefaria.normRefList(state.highlightedRefs) : null;\n\n        if (highlighted &&\n            (Sefaria.refContains(highlighted, state.currentlyVisibleRef)\n             || Sefaria.refContains(state.currentlyVisibleRef, highlighted))) {\n          var htitle = highlighted;\n        } else {\n          var htitle = state.currentlyVisibleRef;\n        }\n        hist.title        = Sefaria._r(htitle);\n        hist.url          = Sefaria.normRef(htitle);\n        hist.currVersions = state.currVersions;\n        hist.mode         = \"Text\";\n        if(Sefaria.titleIsTorah(htitle)){\n          hist.aliyot = (state.settings.aliyotTorah == \"aliyotOff\") ? 0 : 1;\n        }\n\n      } else if (state.mode === \"Connections\") {\n        var ref       = Sefaria.normRefList(state.refs);\n        if(state.connectionsMode === \"WebPagesList\") {\n          hist.sources = \"WebPage:\" + state.webPagesFilter;\n        } else {\n           var filter    = state.filter.length ? state.filter :\n                          (sidebarModes.has(state.connectionsMode) ? [state.connectionsMode] : [\"all\"]);\n        filter = state.connectionsMode === \"ConnectionsList\" ? filter.map(x => x + \" ConnectionsList\") : filter ; // \"Reflect ConnectionsList\n        hist.sources  = filter.join(\"+\");\n        }\n        if (state.connectionsMode === \"Translation Open\" && state.versionFilter.length) {\n          hist.versionFilter = state.versionFilter[0];\n        }\n        if (state.connectionsMode ===\"SidebarSearch\") {\n            state.refs = states[i-1].refs\n            if (state.sidebarSearchQuery) {\n              hist.sidebarSearchQuery = state.sidebarSearchQuery\n            }\n        }\n        if (state.connectionsMode === \"Lexicon\") {\n          if (state.selectedWords.length) { hist.selectedWords = state.selectedWords; }\n          if (state.selectedNamedEntity) { hist.selectedNamedEntity = state.selectedNamedEntity; }\n          if (state.selectedNamedEntityText) { hist.selectedNamedEntityText = state.selectedNamedEntityText; }\n        }\n        hist.title    = Sefaria._r(ref)  + Sefaria._(\" with \") + Sefaria._(hist.sources === \"all\" ? \"Connections\" : hist.sources);\n        hist.url      = Sefaria.normRef(ref); // + \"?with=\" + sources;\n        hist.mode     = \"Connections\";\n\n      } else if (state.mode === \"TextAndConnections\") {\n        var highlighted = state.highlightedRefs.length ? Sefaria.normRefList(state.highlightedRefs) : null;\n        var filter    = state.filter.length ? state.filter :\n                          (sidebarModes.has(state.connectionsMode) ? [state.connectionsMode] : [\"all\"]);\n        hist.sources  = filter.join(\"+\");\n        if (highlighted &&\n            (Sefaria.refContains(highlighted, state.currentlyVisibleRef)\n             || Sefaria.refContains(state.currentlyVisibleRef, highlighted))) {\n          var htitle = highlighted;\n        } else {\n          var htitle = state.currentlyVisibleRef;\n        }\n        if (state.connectionsMode === \"Translation Open\" && state.versionFilter.length) {\n          hist.versionFilter = state.versionFilter[0];\n        }\n        hist.title    = Sefaria._r(htitle)  + Sefaria._(\" with \") + Sefaria._(hist.sources === \"all\" ? \"Connections\" : hist.sources);\n        hist.url      = Sefaria.normRef(htitle); // + \"?with=\" + sources;\n        hist.currVersions = state.currVersions;\n        hist.mode     = \"TextAndConnections\";\n        if(Sefaria.titleIsTorah(htitle)){\n          hist.aliyot = (state.settings.aliyotTorah == \"aliyotOff\") ? 0 : 1;\n        }\n\n      } else if (state.mode === \"Sheet\") {\n        const sheet = Sefaria.sheets.loadSheetByID(state.sheetID);\n        hist.title = sheet ? sheet.title.stripHtml() : \"\";\n        const sheetURLSlug = state.highlightedNode ? state.sheetID + \".\" + state.highlightedNode : state.sheetID;\n        const filter    = state.filter.length ? state.filter :\n                          (sidebarModes.has(state.connectionsMode) ? [state.connectionsMode] : [\"all\"]);\n        hist.sources  = filter.join(\"+\");\n        hist.url = i == 0 ? \"sheets/\" + sheetURLSlug : \"sheet&s=\" + sheetURLSlug;\n        hist.mode     = \"Sheet\"\n\n      } else if (state.mode === \"SheetAndConnections\") {\n        const filter    = state.filter.length ? state.filter :\n                          (sidebarModes.has(state.connectionsMode) ? [state.connectionsMode] : [\"all\"]);\n        hist.sources  = filter.join(\"+\");\n        if (state.connectionsMode === \"Translation Open\" && state.versionFilter.length) {\n          hist.versionFilter = state.versionFilter[0];\n        }\n        const sheet = Sefaria.sheets.loadSheetByID(state.sheetID);\n        const title = sheet ? sheet.title.stripHtml() : \"\";\n        hist.title  = title + Sefaria._(\" with \") + Sefaria._(hist.sources === \"all\" ? \"Connections\" : hist.sources);\n        hist.url    = i == 0 ? \"sheets/\" + state.sheetID : \"sheet&s=\" + state.sheetID + \"?with=\" + Sefaria._(hist.sources === \"all\" ? \"Connections\" : hist.sources);\n        hist.mode   = \"SheetAndConnections\";\n      }\n\n      if (!state.settings) { debugger; }\n      if (!hist.menuPage) {\n        hist.lang = state.settings.language ? state.settings.language.substring(0,2) : \"bi\";\n      }\n      histories.push(hist);\n    }\n\n    if (!histories.length) {\n      // If there were no panels, we're in headerMode over a static page\n      histories[0] = {\n        title: document.title,\n        url: window.location.pathname.slice(1),\n        mode: \"Header\",\n      };\n      if (window.location.search != \"\"){\n        // Replace initial ? of query string with & which logic below expects\n        histories[0].url += \"&\" + window.location.search.slice(1);\n      }\n    }\n\n    // Now merge all history objects into one\n    var title =  histories.length ? histories[0].title : Sefaria._siteSettings[\"SITE_NAME\"][\"en\"];\n\n    var url   = \"/\" + (histories.length ? histories[0].url : \"\");\n    url += Sefaria.util.getUrlVersionsParams(histories[0].currVersions, 0);\n    if (histories[0].mode === \"TextAndConnections\" || histories[0].mode === \"SheetAndConnections\") {\n        url += \"&with=\" + histories[0].sources;\n    }\n    if(histories[0].lang) {\n        url += \"&lang=\" + histories[0].lang;\n    }\n    if(\"aliyot\" in histories[0]) {\n        url += \"&aliyot=\" + histories[0].aliyot;\n    }\n    hist = {state: {panels: states}, url: url, title: title, mode: histories[0].mode};\n    let isMobileConnectionsOpen = histories[0].mode === \"TextAndConnections\" || histories[0].mode === \"SheetAndConnections\";\n    for (var i = 1; i < histories.length || (isMobileConnectionsOpen && i===1); i++) {\n      let isMultiPanelConnectionsOpen = ((histories[i-1].mode === \"Text\" && histories[i].mode === \"Connections\") ||\n        (histories[i-1].mode === \"Sheet\" && histories[i].mode === \"Connections\"));\n      if (isMultiPanelConnectionsOpen || isMobileConnectionsOpen) {\n        if (i == 1) {\n          var sheetAndCommentary = histories[i-1].mode === \"Sheet\" ? true : false;\n          var connectionsHistory = (isMultiPanelConnectionsOpen) ? histories[1] : histories[0];\n          // short form for two panels text+commentary - e.g., /Genesis.1?with=Rashi\n          hist.url  = sheetAndCommentary ? \"/\" + histories[0].url : \"/\" + connectionsHistory.url; // Rewrite the URL\n          hist.url += Sefaria.util.getUrlVersionsParams(histories[0].currVersions, 0);\n          if(histories[0].lang) {\n            hist.url += \"&lang=\" + histories[0].lang;\n          }\n          if(\"aliyot\" in histories[0]) {\n              url += \"&aliyot=\" + histories[0].aliyot;\n          }\n          if(connectionsHistory.versionFilter) {\n            hist.url += \"&vside=\" + Sefaria.util.encodeVtitle(connectionsHistory.versionFilter);\n          }\n          if (connectionsHistory.selectedWords) {\n            hist.url += \"&lookup=\" + encodeURIComponent(connectionsHistory.selectedWords);\n          }\n          if (connectionsHistory.selectedNamedEntity) {\n            hist.url += \"&namedEntity=\" + connectionsHistory.selectedNamedEntity;\n          }\n          if (connectionsHistory.sidebarSearchQuery) {\n            hist.url += \"&sbsq=\" + connectionsHistory.sidebarSearchQuery;\n          }\n          if (connectionsHistory.selectedNamedEntityText) {\n            hist.url += \"&namedEntityText=\" + encodeURIComponent(connectionsHistory.selectedNamedEntityText);\n          }\n          hist.url += \"&with=\" + connectionsHistory.sources;\n\n          hist.title = sheetAndCommentary ? histories[0].title : connectionsHistory.title;\n        } else {\n          var replacer = \"&p\" + i + \"=\";\n          hist.url    = hist.url.replace(RegExp(replacer + \".*\"), \"\");\n          hist.url   += replacer + histories[i].url;\n          hist.url += Sefaria.util.getUrlVersionsParams(histories[i-1].currVersions, i);\n          if(histories[i-1].lang) {\n            hist.url += \"&lang\" + (i) + \"=\" + histories[i-1].lang;\n          }\n          if(\"aliyot\" in histories[i-1]) {\n            hist.url += \"&aliyot\" + (i) + \"=\" + histories[i-1].aliyot;\n          }\n          if(histories[i].versionFilter) {\n            hist.url += \"&vside\" + (i) + \"=\" + Sefaria.util.encodeVtitle(histories[i].versionFilter);\n          }\n          if (histories[i].selectedWords) {\n            hist.url += `&lookup${i}=${encodeURIComponent(histories[i].selectedWords)}`;\n          }\n          if (histories[i].sidebarSearchQuery) {\n            hist.url += `&sbsq{i}=${histories[i].sidebarSearchQuery}`;\n          }\n          if (histories[i].selectedNamedEntity) {\n            hist.url += `&namedEntity${i}=${histories[i].selectedNamedEntity}`;\n          }\n          if (histories[i].selectedNamedEntityText) {\n            hist.url += `&namedEntityText${i}=${encodeURIComponent(histories[i].selectedNamedEntityText)}`;\n          }\n          hist.url   += \"&w\" + i + \"=\" + histories[i].sources; //.replace(\"with=\", \"with\" + i + \"=\").replace(\"?\", \"&\");\n          hist.title += Sefaria._(\" & \") + histories[i].title; // TODO this doesn't trim title properly\n        }\n      } else {\n        var next    = \"&p=\" + histories[i].url;\n        next        = next.replace(\"?\", \"&\").replace(/=/g, (i+1) + \"=\");\n        hist.url   += next;\n        hist.url += Sefaria.util.getUrlVersionsParams(histories[i].currVersions, i+1);\n        hist.title += Sefaria._(\" & \") + histories[i].title;\n      }\n      if (!isMobileConnectionsOpen) {\n        if (histories[i].lang) {\n          hist.url += \"&lang\" + (i + 1) + \"=\" + histories[i].lang;\n        }\n        if (\"aliyot\" in histories[i]) {\n          hist.url += \"&aliyot\" + (i + 1) + \"=\" + histories[i].aliyot;\n        }\n      }\n    }\n    // Replace the first only & with a ?\n    hist.url = hist.url.replace(/&/, \"?\");\n\n    return hist;\n  }\n  updateHistoryState(replace) {\n    if (!this.shouldHistoryUpdate()) {\n      return;\n    }\n    let currentUrl = (window.location.pathname + window.location.search);\n    let hist       = this.makeHistoryState();\n    if(window.location.hash.length){\n      currentUrl += window.location.hash;\n      hist.url += window.location.hash;\n    }\n\n    if (replace) {\n      history.replaceState(hist.state, hist.title, hist.url);\n      // console.log(\"Replace History - \" + hist.url + \" | \" + currentUrl);\n      if (currentUrl !== hist.url) { this.checkScrollIntentAndTrack(); }\n      //console.log(hist);\n    } else {\n      if (currentUrl === hist.url) { return; } // Never push history with the same URL\n      history.pushState(hist.state, hist.title, hist.url);\n      // console.log(\"Push History - \" + hist.url);\n      this.trackPageview();\n    }\n\n    $(\"title\").html(hist.title);\n    this.replaceHistory = false;\n\n    this.setPaddingForScrollbar() // Called here to save duplicate calls to shouldHistoryUpdate\n  }\n  _refState() {\n    // Return a single flat list of all the refs across all panels\n    return [].concat(...this.state.panels.map(p => p.refs || []))\n  }\n  // These two methods to check scroll intent have similar implementations on the panel level.  Refactor?\n  // Dec 2018 - somewhat refactored\n  checkScrollIntentAndTrack() {\n    // Record current state of panel refs, and check if it has changed after some delay.  If it remains the same, track analytics.\n    const initialRefs = this._refState();\n    this.scrollIntentTimer = this.checkIntentTimer(this.scrollIntentTimer, () => {\n      if (initialRefs.compare(this._refState())) {\n        console.log(\"TRACK PAGE VIEW\");\n        this.trackPageview();\n      }\n      this.scrollIntentTimer = null;\n    });\n  }\n  checkPanelScrollIntentAndSaveRecent(state, n) {\n    // Record current state of panel refs, and check if it has changed after some delay.  If it remains the same, track analytics.\n    this.panelScrollIntentTimer = this.panelScrollIntentTimer || [];\n    this.panelScrollIntentTimer[n] = this.checkIntentTimer(this.panelScrollIntentTimer[n], () => {\n      if (!this.didPanelRefChange(state, this.state.panels[n])) {\n        //const ref  = (state.highlightedRefs && state.highlightedRefs.length) ? Sefaria.normRef(state.highlightedRefs) : (state.currentlyVisibleRef || state.refs.slice(-1)[0]);  // Will currentlyVisibleRef ever not be available?\n        //console.log(\"Firing last viewed \" + ref + \" in panel \" + n);\n        this.saveLastPlace(this.state.panels[n], n);\n      }\n      this.panelScrollIntentTimer[n] = null;\n    });\n  }\n  checkIntentTimer(timer, cb, intentDelay) {\n    intentDelay = intentDelay || 3000;  // Number of milliseconds to demonstrate intent\n    if (timer) { clearTimeout(timer); }\n    return window.setTimeout(cb, intentDelay);\n  }\n  setScrollPositionInHistory(e) {\n    const $scrollContainer = $(e.target);\n    this.scrollPositionTimer = this.checkIntentTimer(this.scrollPositionTimer, () => {\n      const scrollTop = $scrollContainer.scrollTop();\n      const state = history.state;\n      if (scrollTop === state.scrollPosition) { return; }\n      state.scrollPosition = scrollTop;\n      history.replaceState(state, window.location.href);\n    }, 300);\n  }\n  getDefaultPanelSettings() {\n    if (this.state && this.state.defaultPanelSettings) {\n      return this.state.defaultPanelSettings;\n    } else if (this.props.initialSettings) {\n      return this.props.initialSettings;\n    } else {\n      return {\n        language:          \"bilingual\",\n        layoutDefault:     \"segmented\",\n        layoutTalmud:      \"continuous\",\n        layoutTanakh:      \"segmented\",\n        aliyotTorah:       \"aliyotOff\",\n        vowels:            \"all\",\n        punctuationTalmud: \"punctuationOn\",\n        biLayout:          \"stacked\",\n        color:             \"light\",\n        fontSize:          62.5\n      };\n    }\n  }\n  setContainerMode() {\n    // Applies CSS classes to the React container and body so that the App can function as a\n    // header only on top of a static page.\n    if (this.props.headerMode) {\n      if (this.state.panels && this.state.panels.length) {\n        $(\"#s2\").removeClass(\"headerOnly\");\n        $(\"body\").css({overflow: \"hidden\"})\n          .addClass(\"inApp\")\n          .removeClass(\"hasBannerMessage\");\n      } else {\n        $(\"#s2\").addClass(\"headerOnly\");\n        $(\"body\").css({overflow: \"auto\"})\n          .removeClass(\"inApp\");\n      }\n    }\n  }\n  setPanelCap() {\n    // In multi panel mode, set the maximum number of visible panels depending on the window width.\n    this.setWindowWidth();\n    var panelCap = Math.floor($(window).outerWidth() / this.MIN_PANEL_WIDTH);\n    this.setState({panelCap: panelCap});\n  }\n  setWindowWidth() {\n    // console.log(\"Setting window width: \" + $(window).outerWidth());\n    this.setState({windowWidth: $(window).outerWidth()});\n  }\n  setPaddingForScrollbar() {\n    // Scrollbars take up spacing, causing the centering of panels to be slightly off\n    // compared to the header. This functions sets appropriate padding to compensate.\n    var width = Sefaria.util.getScrollbarWidth();\n    // These are the divs that actually scroll\n    var $container = $(ReactDOM.findDOMNode(this)).find(\".textColumn, .sheetsInPanel\");\n    if (this.state.panels.length > 1) {\n      $container.css({paddingRight: \"\", paddingLeft: \"\"});\n    } else {\n      $container.css({paddingRight: 0, paddingLeft: width});\n    }\n  }\n  toggleSignUpModal() {\n    this.setState({ showSignUpModal: !this.state.showSignUpModal });\n  }\n  handleNavigationClick(ref, currVersions, options) {\n    this.openPanel(ref, currVersions, options);\n  }\n  handleSegmentClick(n, ref, sheetNode) {\n    // Handle a click on a text segment `ref` in from panel in position `n`\n    // Update or add panel after this one to be a TextList\n    const refs = typeof ref == \"string\" ? [ref] : ref;\n\n    if (sheetNode) {\n      this.setSheetHighlight(n, sheetNode);\n    }\n    else {\n      this.setTextListHighlight(n, refs);\n    }\n\n    const nodeRef = sheetNode ? this.state.panels[n].sheetID + \".\" + sheetNode : null;\n\n    if (this.currentlyConnecting()) { return }\n\n    this.openTextListAt(n+1, refs, nodeRef);\n\n    if ($(\".readerPanel\")[n+1] && window.getSelection().isCollapsed && window.getSelection().anchorNode.nodeType !== 3) {\n      //Focus on the first focusable element of the newly loaded panel if text not selected and not actively typing\n      // in editor. Exists for a11y\n      var curPanel = $(\".readerPanel\")[n+1];\n      $(curPanel).find(':focusable').first().focus();\n    }\n  }\n  closeConnectionPanel(n) {\n    if (this.state.panels.length > n+1  && this.state.panels[n+1].mode === \"Connections\") {\n      this.closePanel(n+1);\n    }\n  }\n  closeNamedEntityInConnectionPanel(n) {\n    if (this.state.panels.length > n+1  && this.state.panels[n+1].selectedNamedEntity) {\n      this.setPanelState(n+1, {connectionsMode: \"Resources\"});\n      this.clearNamedEntity(n+1);\n    }\n  }\n  handleCitationClick(n, citationRef, textRef, replace, currVersions) {\n    // Handle clicking on the citation `citationRef` which was found inside of `textRef` in panel `n`.\n    // If `replace`, replace a following panel with this citation, otherwise open a new panel after.\n    if (this.state.panels.length > n+1  &&\n      (replace || this.state.panels[n+1].mode === \"Connections\")) {\n      this.closePanel(n+1);\n    }\n    if (textRef) {\n      this.setTextListHighlight(n, textRef);\n    }\n    this.openPanelAt(n, citationRef, currVersions, {scrollToHighlighted: !!replace});\n  }\n  openNamedEntityInNewPanel(n, textRef, namedEntityState) {\n    //this.setTextListHighlight(n, [textRef]);\n    this.openTextListAt(n+1, [textRef], null, namedEntityState);\n  }\n  clearSelectedWords(n) {\n    this.setPanelState(n, {selectedWords: \"\"});\n  }\n  clearNamedEntity(n) {\n    this.setPanelState(n, {selectedNamedEntity: null, selectedNamedEntityText: null});\n  }\n  setSidebarSearchQuery(n, query) {\n    this.setPanelState(n, {sidebarSearchQuery: query});\n  }\n  handleCompareSearchClick(n, ref, currVersions, options) {\n    // Handle clicking a search result in a compare panel, so that clicks don't clobber open panels\n    this.replacePanel(n, ref, currVersions, options);\n  }\n  handleSidebarSearchClick(n, ref, currVersions, options) {\n    const refs = typeof ref == \"string\" ? [ref] : ref;\n    const new_opts = {\n                      scrollToHighlighted: true,\n                      refs: refs,\n                      highlightedRefs: refs,\n                      showHighlight: true,\n                      currentlyVisibleRef: refs,\n                    }\n    this.replacePanel(n-1, ref, currVersions, new_opts);\n}\n  getHTMLLinkParentOfEventTarget(event){\n    //get the lowest level parent element of an event target that is an HTML link tag. Or Null.\n    let target = event.target,\n    parent = target,\n    outmost = event.currentTarget;\n    while (parent) {\n      if(parent.nodeName === 'A'){\n        return parent\n      }\n      else if (parent.parentNode === outmost) {\n        return null;\n      }\n      parent = parent.parentNode;\n    }\n  }\n  handleInAppClickWithModifiers(e){\n    //Make sure to respect ctrl/cmd etc modifier keys when a click on a link happens\n    const linkTarget = this.getHTMLLinkParentOfEventTarget(e);\n    if (linkTarget) { // We want the absolute target of the event to be a link tag, not the \"currentTarget\".\n      // Dont trigger if user is attempting to open a link with a modifier key (new tab, new window)\n      if (e.metaKey || e.shiftKey || e.ctrlKey || e.altKey) { //the ctrl/cmd, shift and alt/options keys in Windows and MacOS\n        // in this case we want to stop other handlers from running and just go to target href\n        e.stopImmediatePropagation();\n        return;\n      }\n    }\n  }\n  handleInAppLinkClick(e) {\n    //Allow global navigation handling in app via link elements\n    // If a default has been prevented, assume a custom handler is already in place\n    if (e.isDefaultPrevented()) {\n      return;\n    }\n    // Don't trigger from v1 Sheet Builder which has conflicting CSS\n    if (typeof sjs !== \"undefined\") {\n      return;\n    }\n    // https://github.com/STRML/react-router-component/blob/master/lib/CaptureClicks.js\n    // Get the <a> element.\n    const linkTarget = this.getHTMLLinkParentOfEventTarget(e);\n    // Ignore clicks from non-a elements.\n    if (!linkTarget) {\n      return;\n    }\n    // Ignore the click if the element has a target.\n    if (linkTarget.target && linkTarget.target !== '_self') {\n      return;\n    }\n    const href = linkTarget.getAttribute('href');\n    if (!href) {\n      return;\n    }\n    //on mobile just replace panel w/ any link\n    if (!this.props.multiPanel) {\n      const handled = this.openURL(href, true);\n      if (handled) {\n        e.preventDefault();\n      }\n      return\n    }\n    //All links within sheet content should open in a new panel\n    const isSheet = !!(linkTarget.closest(\".sheetItem\"))\n    const replacePanel = !(isSheet)\n    const isTranslationsPage = !!(linkTarget.closest(\".translationsPage\"));\n    const handled = this.openURL(href,replacePanel, isTranslationsPage);\n    if (handled) {\n      e.preventDefault();\n    }\n  }\n  openURL(href, replace=true, overrideContentLang=false) {\n    // Attempts to open `href` in app, return true if successful.\n    href = href.startsWith(\"/\") ? \"https://www.sefaria.org\" + href : href;\n    let url;\n    try {\n      url = new URL(href);\n    } catch {\n      return false;\n    }\n    // Open non-Sefaria urls in new tab/window\n    // TODO generalize to any domain of current deploy.\n    if (url.hostname.indexOf(\"www.sefaria.org\") === -1) {\n      window.open(url, '_blank')\n      return true;\n    }\n    const path = decodeURI(url.pathname);\n    const params = url.searchParams;\n    if(overrideContentLang && params.get('lang')) {\n      let lang = params.get(\"lang\")\n      lang = lang === \"bi\" ? \"bilingual\" : lang === \"en\" ? \"english\" : \"hebrew\";\n      this.setDefaultOption(\"language\", lang)\n    }\n    const openPanel = replace ? this.openPanel : this.openPanelAtEnd;\n    if (path === \"/\") {\n      this.showLibrary();\n\n    } else if (path === \"/texts\") {\n      this.showLibrary();\n\n    } else if (path === \"/texts/history\") {\n      this.showHistory();\n\n    } else if (path === \"/texts/saved\") {\n      this.showSaved();\n\n    } else if (path.match(/\\/texts\\/.+/)) {\n      this.showLibrary(path.slice(7).split(\"/\"));\n\n    } else if (path === \"/collections\") {\n      this.showCollections();\n\n    } else if (path === \"/community\") {\n      this.showCommunity();\n\n    } else if (path === \"/my/profile\") {\n      this.openProfile(Sefaria.slug, params.get(\"tab\"));\n\n    } else if (path === \"/notifications\") {\n      this.showNotifications();\n\n    } else if (path === \"/calendars\") {\n      this.showCalendars();\n\n    } else if (path === \"/torahtracker\") {\n      this.showUserStats();\n\n    } else if (path.match(/^\\/sheets\\/\\d+/)) {\n      openPanel(\"Sheet \" + path.slice(8));\n\n    } else if (path === \"/topics\") {\n      this.showTopics();\n\n    } else if (path.match(/^\\/topics\\/category\\/[^\\/]/)) {\n      this.openTopicCategory(path.slice(17));\n\n    } else if (path.match(/^\\/topics\\/all\\/[^\\/]/)) {\n      this.openAllTopics(path.slice(12));\n\n    } else if (path.match(/^\\/topics\\/[^\\/]+/)) {\n      this.openTopic(path.slice(8), params.get(\"tab\"));\n\n    } else if (path.match(/^\\/profile\\/.+/)) {\n      this.openProfile(path.slice(9), params.get(\"tab\"));\n\n    } else if (path.match(/^\\/collections\\/.+/) && !path.endsWith(\"/settings\") && !path.endsWith(\"/new\")) {\n      this.openCollection(path.slice(13), params.get(\"tag\"));\n\n    } else if (path.match(/^\\/translations\\/.+/)) {\n      let slug = path.slice(14);\n      this.openTranslationsPage(slug);\n    } else if (Sefaria.isRef(path.slice(1))) {\n      const currVersions = {en: params.get(\"ven\"), he: params.get(\"vhe\")};\n      const options = {showHighlight: path.slice(1).indexOf(\"-\") !== -1};   // showHighlight when ref is ranged\n      openPanel(Sefaria.humanRef(path.slice(1)), currVersions, options);\n    } else {\n      return false\n    }\n    return true;\n  }\n  unsetTextHighlight(n) {\n    this.setPanelState(n, { textHighlights: null });\n  }\n  _getSearchStateName(type) {\n    return `${type}SearchState`;\n  }\n  _getSearchState(state, type) {\n    return !!state && state[this._getSearchStateName(type)];\n  }\n  updateQuery(n, query) {\n    const state = this.state.panels[n];\n    const updates = {\n      searchQuery: query,\n      textSearchState: state.textSearchState.update({ filtersValid: false }),\n      sheetSearchState: state.sheetSearchState.update({ filtersValid: false }),\n    };\n    this.setPanelState(n, updates);\n  }\n  updateSearchTab(n, searchTab) {\n    this.setPanelState(n, { searchTab });\n  }\n  updateAvailableFilters(n, type, availableFilters, filterRegistry, orphanFilters, aggregationsToUpdate) {\n    const state = this.state.panels[n];\n    const searchState = this._getSearchState(state, type);\n    const searchStateName = this._getSearchStateName(type);\n    this.setPanelState(n, {\n      [searchStateName]: !!searchState ?\n        searchState.update({\n          availableFilters,\n          filterRegistry,\n          orphanFilters,\n          filtersValid: true,\n          aggregationsToUpdate,\n        }) : new SearchState({\n        type,\n        availableFilters,\n        filterRegistry,\n        orphanFilters,\n        filtersValid: true,\n      })\n    });\n  }\n  updateSearchFilter(n, type, filterNode) {\n    const state = this.state.panels[n];\n    const searchState = this._getSearchState(state, type);\n    const searchStateName = this._getSearchStateName(type);\n    if (filterNode.isUnselected()) {\n      filterNode.setSelected(true);\n    } else {\n      filterNode.setUnselected(true);\n    }\n    const update = Sefaria.search.getAppliedSearchFilters(searchState.availableFilters)\n    this.setPanelState(n, {\n      [searchStateName]: searchState.update(update)\n    });\n  }\n  updateSearchOptionField(n, type, field) {\n    const state = this.state.panels[n];\n    const searchState = this._getSearchState(state, type);\n    const searchStateName = this._getSearchStateName(type);\n    this.setPanelState(n, {\n      [searchStateName]: searchState.update({ field, filtersValid: false })\n    });\n  }\n  updateSearchOptionSort(n, type, sortType) {\n    const state = this.state.panels[n];\n    const searchState = this._getSearchState(state, type);\n    const searchStateName = this._getSearchStateName(type);\n    this.setPanelState(n, {\n      [searchStateName]: searchState.update({ sortType })\n    });\n  }\n  setPanelState(n, state, replaceHistory) {\n    this.replaceHistory  = Boolean(replaceHistory);\n    //console.log(`setPanel State ${n}, replace: ` + this.replaceHistory);\n    //console.log(state)\n    // When the driving panel changes language, carry that to the dependent panel\n    // However, when carrying a language change to the Tools Panel, do not carry over an incorrect version\n    if (!this.state.panels[n]) { debugger; }\n    let langChange  = state.settings && state.settings.language !== this.state.panels[n].settings.language;\n    let next        = this.state.panels[n+1];\n    if (langChange && next && next.mode === \"Connections\" && state.settings.language !== \"bilingual\") {\n        next.settings.language = state.settings.language;\n    }\n    // state is not always a full panel state. make sure it has necessary fields needed to run saveLastPlace()\n    state = {\n      ...this.state.panels[n],\n      ...state,\n    };\n    if (this.didPanelRefChange(this.state.panels[n], state)) {\n      this.checkPanelScrollIntentAndSaveRecent(state, n);\n    }\n    this.state.panels[n] = extend(this.state.panels[n], state);\n    let new_state = {panels: this.state.panels};\n    if(this.didDefaultPanelSettingsChange(state)){\n      new_state[\"defaultPanelSettings\"] = Sefaria.util.clone(state.settings);\n    }\n    this.setState(new_state);\n  }\n  didDefaultPanelSettingsChange(state){\n    if (\"settings\" in state){\n      let defaultSettings = this.getDefaultPanelSettings();\n      let defaultKeys = Object.keys(defaultSettings);\n      for (let i of defaultKeys) {\n        //console.log(i); // logs 3, 5, 7\n        if (state.settings[i] != defaultSettings[i]){\n          return true;\n        }\n\n      }\n    } else {\n      return false;\n    }\n  }\n  didPanelRefChange(prevPanel, nextPanel) {\n    // Returns true if nextPanel represents a change in current ref (including version change) from prevPanel.\n    if (!prevPanel && !!nextPanel) { return true; }\n    if (!!prevPanel && !nextPanel) { return true; }\n    if (!prevPanel && !nextPanel) { return false; }\n    if (prevPanel.mode === 'Connections' && nextPanel.mode === 'Text') { return false; }  // special case. when opening new panel from commentary, ref is already logged in history\n    if (prevPanel.mode === 'Text' && nextPanel.mode === 'Sheet') { return true; }\n    if (prevPanel.mode === 'Sheet' && nextPanel.mode === 'Text') { return true; }\n    if (nextPanel.mode === 'Text') {\n      if (nextPanel.menu || nextPanel.mode == \"Connections\" ||\n          !nextPanel.refs || nextPanel.refs.length == 0 ||\n          !prevPanel.refs || prevPanel.refs.length == 0 ) { return false; }\n      if (nextPanel.refs.compare(prevPanel.refs)) {\n        if (nextPanel.currVersions.en !== prevPanel.currVersions.en) { return true; }\n        if (nextPanel.currVersions.he !== prevPanel.currVersions.he) { return true; }\n        //console.log('didPanelRefChange?', nextPanel.highlightedRefs, prevPanel.highlightedRefs);\n        return !((nextPanel.highlightedRefs || []).compare(prevPanel.highlightedRefs || []));\n      } else {\n        return true;\n      }\n    } else if (nextPanel.mode === 'Sheet') {\n      if (prevPanel.sheetID !== nextPanel.sheetID) { return true; }\n      return prevPanel.highlightedNode !== nextPanel.highlightedNode\n    } else {\n      return true;\n    }\n  }\n  _getPanelLangOnVersionChange(panel, versionLanguage, isConnectionsPanel) {\n    let panelLang;\n    if (panel.settings.language === 'bilingual' ||\n        (!!panel.currVersions[\"he\"] && !!panel.currVersions[\"en\"]) ||\n        (versionLanguage === \"he\" && panel.settings.language === 'english') ||\n        (versionLanguage === \"en\" && panel.settings.language === 'hebrew')) {\n      // if lang of version isn't visible, display it\n      panelLang = \"bilingual\";\n    } else if (versionLanguage === \"he\") {\n      panelLang = \"hebrew\";\n    } else {\n      panelLang = \"english\";\n    }\n    if (isConnectionsPanel) {\n      panelLang = panelLang !== \"bilingual\" ? panelLang : (versionLanguage === \"he\" ? \"hebrew\" : \"english\");\n    }\n    return panelLang;\n  }\n  selectVersion(n, versionName, versionLanguage) {\n    // Set the version for panel `n`.\n    const panel = this.state.panels[n];\n    const oRef = Sefaria.ref(panel.refs[0]);\n    if (versionName && versionLanguage) {\n      panel.currVersions[versionLanguage] = versionName;\n      this.setCachedVersion(oRef.indexTitle, versionLanguage, versionName);\n      Sefaria.track.event(\"Reader\", \"Choose Version\", `${oRef.indexTitle} / ${versionName} / ${versionLanguage}`)\n    } else {\n      panel.currVersions[versionLanguage] = null;\n      Sefaria.track.event(\"Reader\", \"Choose Version\", `${oRef.indexTitle} / default version / ${panel.settings.language}`)\n    }\n    panel.settings.language = this._getPanelLangOnVersionChange(panel, versionLanguage, panel.mode === \"Connections\");\n    const { dependentPanel, isDependentPanelConnections } = this._getDependentPanel(n);\n\n    // make sure object reference changes for setState()\n    panel.currVersions = {...panel.currVersions};\n    if (this.props.multiPanel) { //there is no dependentPanel in mobile\n      dependentPanel.currVersions = {...panel.currVersions};\n\n      dependentPanel.settings.language = this._getPanelLangOnVersionChange(dependentPanel, versionLanguage, isDependentPanelConnections);\n\n    }\n    this.setState({panels: this.state.panels});\n  }\n  navigatePanel(n, ref, currVersions={en: null, he: null}) {\n    // Sets the ref on panel `n` and cascades to any attached panels (Text + Connections)\n    const panel = this.state.panels[n];\n    // next few lines adapted from ReaderPanel.showBaseText()\n    let refs, currentlyVisibleRef, highlightedRefs;\n    if (ref.constructor === Array) {\n      // When called with an array, set highlight for the whole spanning range\n      refs = ref;\n      currentlyVisibleRef = Sefaria.humanRef(ref);\n      let splitArray = refs.map(ref => Sefaria.splitRangingRef(ref));\n      highlightedRefs = [].concat.apply([], splitArray);\n    } else {\n      refs = [ref];\n      currentlyVisibleRef = ref;\n      highlightedRefs = (panel.mode === \"TextAndConnections\") ? [ref] : [];\n    }\n    let updatePanelObj = {refs, currentlyVisibleRef, highlightedRefs};\n    const { dependentPanel } = this._getDependentPanel(n);\n    if (dependentPanel) {\n      Object.assign(dependentPanel, updatePanelObj);\n    }\n    Object.assign(panel, updatePanelObj);\n    this.setState({panels: this.state.panels});\n  }\n  viewExtendedNotes(n, method, title, versionLanguage, versionName) {\n    const panel = this.state.panels[n];\n    panel.bookRef = title;\n    panel.currVersions = {'en': null, 'he': null}; // ensure only 1 version is set\n    panel.currVersions[versionLanguage] = versionName;\n    if (method === \"toc\") {\n      panel.menuOpen = \"extended notes\";\n    }\n    else if (method === \"Connections\") {\n      panel.connectionsMode = \"extended notes\";\n    }\n    this.setState({panels: this.state.panels});\n  }\n  backFromExtendedNotes(n, bookRef, currVersions){\n    const panel = this.state.panels[n];\n    panel.menuOpen = panel.currentlyVisibleRef ? \"text toc\" : \"book toc\";\n    panel.bookRef = bookRef;\n    panel.currVersions = currVersions;\n    this.setState({panels: this.state.panels});\n  }\n  // this.state.defaultVersion is a depth 2 dictionary - keyed: bookname, language\n  getCachedVersion(indexTitle, language) {\n    if ((!indexTitle) || (!(this.state.defaultVersions[indexTitle]))) { return null; }\n    return (language) ? (this.state.defaultVersions[indexTitle][language] || null) : this.state.defaultVersions[indexTitle];\n  }\n  setCachedVersion(indexTitle, language, versionTitle) {\n    this.state.defaultVersions[indexTitle] = this.state.defaultVersions[indexTitle] || {};\n    this.state.defaultVersions[indexTitle][language] = versionTitle;  // Does this need a setState?  I think not.\n  }\n  setDefaultOption(option, value) {\n    if (value !== this.state.defaultPanelSettings[option]) {\n      this.state.defaultPanelSettings[option] = value;\n      this.setState(this.state);\n    }\n  }\n  openPanel(ref, currVersions, options) {\n    // Opens a text panel, replacing all panels currently open.\n    // options can contain {\n    //  'textHighlights': array of strings to highlight in focused segment. used when clicking on search query result\n    // }\n    this.state.panels = []; // temporarily clear panels directly in state, set properly with setState in openPanelAt\n    this.openPanelAt(0, ref, currVersions, options);\n  }\n  openPanelAt(n, ref, currVersions, options, replace) {\n    // Open a new panel after `n` with the new ref\n    // If `replace`, replace existing panel at `n`, otherwise insert new panel at `n`\n    // If book level, Open book toc\n    const parsedRef = Sefaria.parseRef(ref);\n    const index = Sefaria.index(ref); // Do we have to worry about normalization, as in Header.subimtSearch()?\n    let panel;\n    if (index) {\n      panel = this.makePanelState({\"menuOpen\": \"book toc\", \"bookRef\": index.title});\n    } else if (parsedRef.book === \"Sheet\") {\n      const [sheetID, sheetNode] = parsedRef.sections;\n      panel = this.makePanelState({\n        mode: 'Sheet',\n        sheetID: parseInt(sheetID),\n        highlightedNode: parseInt(sheetNode),\n        refs: null,\n        ...options\n      });\n    } else {  // Text\n      let refs, currentlyVisibleRef, highlightedRefs;\n      if (ref.constructor === Array) {\n        // When called with an array, set highlight for the whole spanning range of the array\n        refs = ref;\n        currentlyVisibleRef = Sefaria.normRef(ref);\n        const splitArray = refs.map(ref => Sefaria.splitRangingRef(ref));\n        highlightedRefs = [].concat.apply([], splitArray);\n      } else {\n        refs = [ref];\n        currentlyVisibleRef = ref;\n        highlightedRefs = [];\n      }\n      //console.log(\"Higlighted refs:\", highlightedRefs)\n      panel = this.makePanelState({\n        refs,\n        currVersions,\n        highlightedRefs,\n        currentlyVisibleRef, mode: \"Text\",\n        ...options\n      });\n    }\n\n    const newPanels = this.state.panels.slice();\n    newPanels.splice(replace ? n : n+1, replace ? 1 : 0, panel);\n    this.setState({panels: newPanels});\n    this.saveLastPlace(panel, n+1);\n  }\n  openPanelAtEnd(ref, currVersions) {\n    this.openPanelAt(this.state.panels.length+1, ref, currVersions);\n  }\n  replacePanel(n, ref, currVersions, options) {\n    // Opens a text in in place of the panel currently open at `n`.\n    this.openPanelAt(n, ref, currVersions, options, true);\n  }\n  openComparePanel(n, connectAfter) {\n    const comparePanel = this.makePanelState({\n      menuOpen: \"navigation\",\n      compare: true,\n      openSidebarAsConnect: typeof connectAfter !== \"undefined\" ? connectAfter : false,\n    });\n    Sefaria.track.event(\"Reader\", \"Other Text Click\");\n    this.state.panels[n] = comparePanel;\n    this.setState({panels: this.state.panels});\n  }\n  openTextListAt(n, refs, sheetNodes, textListState) {\n    // Open a connections panel at position `n` for `refs`\n    // Replace panel there if already a connections panel, otherwise splice new panel into position `n`\n    // `refs` is an array of ref strings\n    // `textListState` is an object of initial state to pass to the new panel. if `undefined`, no-op\n    const newPanels = this.state.panels.slice();\n    let panel = newPanels[n] || {};\n    const parentPanel = (n >= 1 && newPanels[n-1].mode === 'Text' || n >= 1 && newPanels[n-1].mode === 'Sheet') ? newPanels[n-1] : null;\n\n    if (panel.mode !== \"Connections\") {\n      // No connections panel is open yet, splice in a new one\n      this.saveLastPlace(parentPanel, n, true);\n      newPanels.splice(n, 0, {});\n      panel = newPanels[n];\n      panel.filter = [];\n      panel.versionFilter = [];\n    }\n    panel.refs              = refs;\n    panel.sheetNodes        = sheetNodes ? sheetNodes.split(\".\")[1] : null;\n    panel.nodeRef           = sheetNodes;\n    panel.menuOpen          = null;\n    panel.mode              = panel.mode || \"Connections\";\n    panel.settings          = panel.settings ? panel.settings : Sefaria.util.clone(this.getDefaultPanelSettings());\n    panel.settings.language = panel.settings.language === \"hebrew\" ? \"hebrew\" : \"english\"; // Don't let connections panels be bilingual\n    if(parentPanel) {\n      panel.filter = parentPanel.filter;\n      panel.versionFilter = parentPanel.versionFilter;\n      panel.connectionsMode   = parentPanel.openSidebarAsConnect ? \"Add Connection\" : panel.connectionsMode;\n      panel.recentFilters = parentPanel.recentFilters;\n      panel.recentVersionFilters = parentPanel.recentVersionFilters;\n      panel.currVersions = parentPanel.currVersions;\n    }\n    if (textListState) {\n      panel = {...panel, ...textListState};\n    }\n    newPanels[n] = this.makePanelState(panel);\n    this.setState({panels: newPanels});\n  }\n  setTextListHighlight(n, refs) {\n    // Set the textListHighlight for panel `n` to `refs`\n    refs = typeof refs === \"string\" ? [refs] : refs;\n    this.state.panels[n].highlightedRefs = refs;\n    this.setState({panels: this.state.panels});\n    // If a connections panel is opened after n, update its refs as well.\n    const next = this.state.panels[n+1];\n    if (next && next.mode === \"Connections\" && !next.menuOpen) {\n      this.openTextListAt(n+1, refs);\n    }\n  }\n  setSheetHighlight(n, node) {\n    // Set the sheetListHighlight for panel `n` to `node`\n    node = typeof node === \"string\" ? [node] : node;\n    this.state.panels[n].highlightedNode = node;\n    this.state.panels[n].scrollToHighlighted = false;\n    this.setState({panels: this.state.panels});\n    }\n  setDivineNameReplacement(mode) {\n    this.setState({divineNameReplacement: mode})\n  }\n  setConnectionsFilter(n, filter, updateRecent) {\n    // Set the filter for connections panel at `n`, carry data onto the panel's basetext as well.\n    const connectionsPanel = this.state.panels[n];\n    const basePanel        = this.state.panels[n-1];\n    if (filter) {\n      if (updateRecent) {\n        if (Sefaria.util.inArray(filter, connectionsPanel.recentFilters) !== -1) {\n          connectionsPanel.recentFilters.toggle(filter);\n        }\n        connectionsPanel.recentFilters = [filter].concat(connectionsPanel.recentFilters);\n      }\n      connectionsPanel.filter = [filter];\n      const filterAndSuffix = filter.split(\"|\");\n      connectionsPanel.connectionsMode = filterAndSuffix.length === 2 && filterAndSuffix[1] === \"Essay\" ? \"EssayList\" : \"TextList\";\n    } else {\n      connectionsPanel.filter = [];\n      connectionsPanel.connectionsMode = \"ConnectionsList\";\n    }\n    if (basePanel) {\n      basePanel.filter        = connectionsPanel.filter;\n      basePanel.recentFilters = connectionsPanel.recentFilters;\n    }\n    this.setState({panels: this.state.panels});\n  }\n  setSideScrollPosition(n, pos) {\n    const connectionsPanel = this.state.panels[n];\n    connectionsPanel.sideScrollPosition = pos;\n    this.setState({panels: this.state.panels});\n  }\n  setVersionFilter(n, filter) {\n    const connectionsPanel = this.state.panels[n];\n    const basePanel        = this.state.panels[n-1];\n    if (filter) {\n      if (Sefaria.util.inArray(filter, connectionsPanel.recentVersionFilters) === -1) {\n        connectionsPanel.recentVersionFilters = [filter].concat(connectionsPanel.recentVersionFilters);\n      }\n      connectionsPanel.versionFilter = [filter];\n      connectionsPanel.connectionsMode = \"Translation Open\";\n    } else {\n      connectionsPanel.versionFilter = [];\n      connectionsPanel.connectionsMode = \"Translations\";\n    }\n    if (basePanel) {\n      basePanel.versionFilter        = connectionsPanel.versionFilter;\n      basePanel.recentVersionFilters = connectionsPanel.recentVersionFilters;\n    }\n    this.setState({panels: this.state.panels});\n  }\n  setSelectedWords(n, words){\n    //console.log(this.state.panels[n].refs);\n    const next = this.state.panels[n+1];\n    if (next && !next.menuOpen) {\n      this.state.panels[n+1].selectedWords = words;\n      this.setState({panels: this.state.panels});\n    }\n  }\n  setUnreadNotificationsCount(n) {\n    Sefaria.notificationCount = n;\n    this.forceUpdate();\n  }\n  closePanel(n) {\n    // Removes the panel in position `n`, as well as connections panel in position `n+1` if it exists.\n    if (this.state.panels.length === 1 && n === 0) {\n      this.state.panels = [];\n    } else {\n      // If this is a Connection panel, we need to unset the filter in the base panel\n      if (n > 0 && this.state.panels[n] && this.state.panels[n].mode === \"Connections\"){\n        const parent = this.state.panels[n-1];\n        parent.filter = [];\n        parent.highlightedRefs = [];\n        parent.refs = parent.refs.map(ref => Sefaria.ref(ref).sectionRef);\n        parent.currentlyVisibleRef = parent.currentlyVisibleRef ? Sefaria.ref(parent.currentlyVisibleRef).sectionRef : null;\n      }\n      this.state.panels.splice(n, 1);\n      if (this.state.panels[n] && (this.state.panels[n].mode === \"Connections\" || this.state.panels[n].compare)) {\n        // Close connections panel or compare panel when text panel is closed\n        if (this.state.panels.length === 1) {\n          this.state.panels = [];\n        } else {\n          this.state.panels.splice(n, 1);\n        }\n      }\n    }\n    const state = {panels: this.state.panels};\n    if (state.panels.length === 0) {\n      this.showLibrary();\n    } else {\n      this.setState(state);\n    }\n  }\n  convertToTextList(n) {\n    console.log(\"convert\")\n    var base = this.state.panels[n-1];\n    this.closePanel(n);\n    if (base.mode == \"Sheet\") {\n      const sheet = Sefaria.sheets.loadSheetByID(base.sheetID);\n      if (!sheet) { return; }\n      for(var i in sheet.sources){\n        if (sheet.sources[i].node == base.highlightedNode) {\n          this.openTextListAt(n, [sheet.sources[i].ref]);\n        }\n      }\n    }\n    else {\n      this.openTextListAt(n, base.highlightedRefs);\n    }\n  }\n  showLibrary(categories) {\n    let state = {menuOpen: \"navigation\", navigationCategories: categories, \"mode\": \"Menu\"};\n    state = this.makePanelState(state);\n    if (!Sefaria._siteSettings.TORAH_SPECIFIC) {\n      state.settings.language = \"english\";\n    }\n    this.setSinglePanelState(state);\n  }\n  showSearch(searchQuery) {\n    let panel;\n    const textSearchState =  (!!this.state.panels && this.state.panels.length && !!this.state.panels[0].textSearchState)  ? this.state.panels[0].textSearchState.update({ filtersValid: false })  : new SearchState({ type: 'text' });\n    const sheetSearchState = (!!this.state.panels && this.state.panels.length && !!this.state.panels[0].sheetSearchState) ? this.state.panels[0].sheetSearchState.update({ filtersValid: false }) : new SearchState({ type: 'sheet' });\n\n    const searchTab = !!this.state.panels && this.state.panels.length ? this.state.panels[0].searchTab : \"text\";\n    this.setSinglePanelState({mode: \"Menu\", menuOpen: \"search\", searchQuery, searchTab, textSearchState, sheetSearchState });\n  }\n  searchInCollection(searchQuery, collection) {\n    let panel;\n    const textSearchState =  new SearchState({ type: 'text' });\n    const sheetSearchState = new SearchState({ type: 'sheet',  appliedFilters: [collection], appliedFilterAggTypes: ['collections']});\n\n    this.setSinglePanelState({mode: \"Menu\", menuOpen: \"search\", \"searchTab\": \"sheet\", searchQuery, textSearchState, sheetSearchState });\n  }\n  showCommunity() {\n    this.setSinglePanelState({menuOpen: \"community\"});\n  }\n  showSaved() {\n    this.setSinglePanelState({menuOpen: \"saved\"});\n  }\n  showHistory() {\n    this.setSinglePanelState({menuOpen: \"history\"});\n  }\n  showTopics() {\n    this.setSinglePanelState({menuOpen: \"topics\", navigationTopicCategory: null, navigationTopic: null});\n  }\n  showNotifications() {\n    this.setSinglePanelState({menuOpen: \"notifications\"});\n  }\n  showCalendars() {\n    this.setSinglePanelState({menuOpen: \"calendars\"});\n  }\n  showUserStats() {\n    this.setSinglePanelState({menuOpen: \"user_stats\"});\n  }\n  showCollections() {\n    this.setSinglePanelState({menuOpen: \"collectionsPublic\"});\n  }\n  setSinglePanelState(state) {\n    // Sets state to be a single panel with properties of `state`\n    state = this.makePanelState(state);\n    this.setState({panels: [state], headerMode: false});\n  }\n  openTopic(slug) {\n    Sefaria.getTopic(slug).then(topic => {\n      this.setSinglePanelState({ menuOpen: \"topics\", navigationTopic: slug, topicTitle: topic.primaryTitle, topicTestVersion: this.props.topicTestVersion});\n    });\n  }\n  openTopicCategory(slug) {\n    this.setSinglePanelState({\n      menuOpen: \"topics\",\n      navigationTopicCategory: slug,\n      navigationTopicTitle: Sefaria.topicTocCategoryTitle(slug),\n      navigationTopic: null,\n    });\n  }\n  openAllTopics(letter) {\n    this.setSinglePanelState({menuOpen: \"allTopics\", navigationTopicLetter: letter});\n  }\n  openProfile(slug, tab) {\n    tab = tab || \"sheets\";\n    Sefaria.profileAPI(slug).then(profile => {\n      this.setSinglePanelState({ menuOpen: \"profile\", profile, tab: tab});\n    });\n  }\n  openCollection(slug, tag) {\n    this.setSinglePanelState({menuOpen: \"collection\",  collectionSlug: slug, collectionTag: tag});\n  }\n  openTranslationsPage(slug) {\n    this.setSinglePanelState({menuOpen: \"translationsPage\", translationsSlug: slug})\n  }\n  toggleMobileNavMenu() {\n    this.setState({mobileNavMenuOpen: !this.state.mobileNavMenuOpen});\n  }\n  toggleLanguageInFirstPanel() {\n    if (this.state.panels[0].settings.language === \"hebrew\") {\n      this.state.panels[0].settings.language = \"english\";\n    } else {\n      this.state.panels[0].settings.language = \"hebrew\";\n    }\n    this.setState({panels: this.state.panels});\n  }\n  getHistoryObject(panel, hasSidebar) {\n    // get rave to send to /api/profile/user_history\n    let ref, sheet_owner, sheet_title;\n    if (panel.mode === 'Sheet' || panel.mode === \"SheetAndConnections\") {\n      const sheet = Sefaria.sheets.loadSheetByID(panel.sheetID);\n      if (!sheet) { return null; }\n      ref = `Sheet ${sheet.id}${panel.highlightedNode ? `:${panel.highlightedNode}`: ''}`;\n      sheet_owner = sheet.ownerName;\n      sheet_title = sheet.title;\n    } else {\n      ref = (hasSidebar && panel.highlightedRefs && panel.highlightedRefs.length) ? Sefaria.normRef(panel.highlightedRefs) : (panel.currentlyVisibleRef || panel.refs.slice(-1)[0]);  // Will currentlyVisibleRef ever not be available?\n    }\n    // strip APIResult fields from currVersions\n    const currVersions = Sefaria.util.getCurrVersionsWithoutAPIResultFields(panel.currVersions);\n    const parsedRef = Sefaria.parseRef(ref);\n    if (!ref) { debugger; }\n    return {\n      ref,\n      versions: currVersions,\n      book: parsedRef.book,\n      language: panel.settings.language,\n      sheet_owner,\n      sheet_title,\n    };\n  }\n  setTranslationLanguagePreference(lang) {\n    let suggested = true;\n    if (lang === null) {\n      suggested = false;\n      $.removeCookie(\"translation_language_preference\", {path: \"/\"});\n      $.removeCookie(\"translation_language_preference_suggested\", {path: \"/\"});\n    } else {\n      $.cookie(\"translation_language_preference\", lang, {path: \"/\"});\n      $.cookie(\"translation_language_preference_suggested\", JSON.stringify(1), {path: \"/\"});\n    }\n    Sefaria.track.event(\"Reader\", \"Set Translation Language Preference\", lang);\n    Sefaria.editProfileAPI({settings: {translation_language_preference: lang, translation_language_preference_suggested: suggested}});\n    this.setState({translationLanguagePreference: lang});\n  }\n  doesPanelHaveSidebar(n) {\n    return this.state.panels.length > n+1 && this.state.panels[n+1].mode == \"Connections\";\n  }\n  saveLastPlace(panel, n, openingSidebar) {\n    //openingSidebar is true when you call `saveLastPlace` at the time you're opening the sidebar. In this case, `doesPanelHaveSidebar` will be false\n    const hasSidebar = this.doesPanelHaveSidebar(n) || openingSidebar;\n    // if panel is sheet, panel.refs isn't set\n    if ((panel.mode !== 'Sheet' && !panel.refs.length ) || panel.mode === 'Connections') { return; }\n    Sefaria.saveUserHistory(this.getHistoryObject(panel, hasSidebar));\n  }\n  currentlyConnecting() {\n    // returns true if there is currently an \"Add Connections\" Panel open\n    for (var i = 0; i < this.state.panels.length; i++) {\n      //console.log(this.state.panels[i].connectionsMode)\n      if (this.state.panels[i].connectionsMode === \"Add Connection\") {\n        return true;\n      }\n    }\n    return false;\n  }\n  getDisplayString(mode) {\n    const learningStatus = [\"text toc\", \"book toc\", \"sheet meta\",  \"Text\", \"TextAndConnections\", \"SheetAndConnections\"];\n    const topicStatus = [\"topicCat\", \"topic\"]\n    if(mode.includes(\"sheet\")) {\n      return \"learning the Sheet\"\n    } else if (topicStatus.includes(mode)) {\n      return \"viewing the topic\"\n    }\n    else if(learningStatus.includes(mode)) {\n      return \"learning\";\n    } else {\n      return \"currently viewing\"\n    }\n  }\n  generateCurrentlyReading() {\n    const currentHistoryState = this.makeHistoryState();\n    const inBeitMidrash = [\"navigation\", \"text toc\", \"book toc\", \"sheet meta\", \"topics\", \"topic\", \"topicCat\", \"Text\", \"TextAndConnections\", \"Sheet\", \"SheetAndConnections\"];\n    currentHistoryState.title = currentHistoryState.title.match(/[^|]*/)[0];\n    if (inBeitMidrash.includes(currentHistoryState.mode)) {\n      return {title: currentHistoryState.title, url: currentHistoryState.url, mode: currentHistoryState.mode, display: this.getDisplayString(currentHistoryState.mode)};\n    } else {\n      return null;\n    }\n\n  }\n\n  handlePrint(e) {\n      gtag(\"event\", \"print\");\n  }\n\n  handleGACopyEvents(e, selectedEls, textOnly) {\n      const activePanelIndex = e.target.closest('.readerPanel').id.split(\"-\")[1]\n      const activePanel = this.state.panels[activePanelIndex]\n\n\n      const book = activePanel['currentlyVisibleRef'] ? Sefaria.parseRef(activePanel['currentlyVisibleRef'])[\"book\"] : null\n      const category = book && Sefaria.index(book) ? Sefaria.index(book)[\"primary_category\"] : null\n\n      let params = {\n        \"length\": textOnly.length,\n        \"panelType\": activePanel[\"menuOpen\"] || activePanel[\"mode\"],\n        \"book\": book,\n        \"category\": category,\n      }\n\n      gtag(\"event\", \"copy_text\", params);\n\n      // check if selection is spanning or bilingual\n      if (book) {\n        const selectedEnEls = selectedEls.querySelectorAll('.en')\n        const selectedHeEls = selectedEls.querySelectorAll('.he')\n        if ((selectedEnEls.length > 0) && (selectedHeEls.length > 0)) {\n          gtag(\"event\", \"bilingual_copy_text\", params);\n        }\n        if ((selectedEnEls.length > 1) || (selectedHeEls.length > 1)) {\n          gtag(\"event\", \"spanning_copy_text\", params);\n        }\n      }\n  }\n\n\n  handleCopyEvent(e) {\n    // Custom processing of Copy/Paste\n    const tagsToIgnore = [\"INPUT\", \"TEXTAREA\"];\n    if (tagsToIgnore.includes(e.srcElement.tagName)) {\n      // If the selection is from an input or textarea tag, don't do anything special\n      return\n    }\n    const selection = document.getSelection()\n    const closestReaderPanel = this.state.panels.length > 0 && e.target.closest('.readerPanel') || null\n    let textOnly = selection.toString();\n    let html = textOnly;\n    let selectedEls;\n\n    if (selection.rangeCount) {\n      const container = document.createElement(\"div\");\n      for (let i = 0, len = selection.rangeCount; i < len; ++i) {\n        container.appendChild(selection.getRangeAt(i).cloneContents());\n      }\n\n\n      // Set content direction & add line breaks for each contentSpan\n      let contentSpans = container.querySelectorAll(\".contentSpan\");\n      if (closestReaderPanel && !closestReaderPanel.classList.contains('continuous')) {\n        contentSpans.forEach(el => {\n            el.outerHTML = `<div dir=\"${Sefaria.hebrew.isHebrew(el.innerText) ? 'rtl' : 'ltr'}\">${el.innerHTML}</div>`;\n        })\n      }\n\n      if (closestReaderPanel && closestReaderPanel.classList.contains('hebrew')) {\n        container.setAttribute('dir', 'rtl');\n      }\n\n      // Collapse all nodes with poetry classes. This is needed for specifically pasting into Google Docs in Chrome to work.\n      const poetryElsToCollapse = container.querySelectorAll('.poetry');\n      poetryElsToCollapse.forEach(poetryEl => {\n        poetryEl.outerHTML = poetryEl.innerHTML;\n      });\n\n      // Remove extra breaks for continuous mode\n      if (closestReaderPanel && closestReaderPanel.classList.contains('continuous')) {\n        let elsToRemove = container.querySelectorAll(\"br\");\n        elsToRemove.forEach(el => el.remove())\n\n        // each of these are divs which by default creates line breaks for various html/txt renderers on paste. We want to collapse them.\n        const classesToCollapse = [\"segment\", \"rangeSpan\", \"segmentText\", \"contentSpan\"];\n        classesToCollapse.map(cls => {\n          let elsToCollapse = container.getElementsByClassName(cls);\n          while(elsToCollapse.length > 0){\n            elsToCollapse[0].outerHTML = elsToCollapse[0].innerHTML;\n          }\n        });\n      }\n\n      // These interfere with the copying and pasting of text and users do not want them there. This code removes them.\n      const classesToRemove = [\"segmentNumber\", \"linkCount\", \"clearFix\", \"footnote-marker\"];\n      classesToRemove.map(cls => {\n        let elsToRemove = container.getElementsByClassName(cls);\n        while(elsToRemove.length > 0){\n          elsToRemove[0].parentNode.removeChild(elsToRemove[0]);\n        }\n      });\n\n      // Remove hidden footnotes\n      let hiddenFootnotes = container.querySelectorAll(\".footnote:not([style*='display: inline'])\");\n      for(let footnote of hiddenFootnotes){\n        footnote.parentNode.removeChild(footnote);\n      }\n\n      // Add footnote marker and appropriate space for open footnotes\n      let footnotes = container.querySelectorAll(\".footnote\");\n      footnotes.forEach(el => el.prepend(\" *\"))\n\n      // Links to Strip\n      const linksToStrip = \"a.namedEntityLink, a.refLink\";\n      let elsToStrip = container.querySelectorAll(linksToStrip);\n      elsToStrip.forEach(el => el.outerHTML = el.innerText);\n\n\n      // Collapse all spans that are not rangeSpan. This is also needed for specifically pasting into Google Docs in Chrome to work.\n      let SourceTextSpans = container.querySelectorAll('span:not(.rangeSpan)');\n      SourceTextSpans.forEach(el => el.outerHTML = el.innerText);\n\n      html = container.outerHTML;\n      textOnly = Sefaria.util.htmlToText(html);\n      selectedEls = container;\n    }\n\n\n    // ga tracking\n    if (closestReaderPanel) {\n      this.handleGACopyEvents(e, selectedEls, textOnly)\n    }\n\n    const clipdata = e.clipboardData || window.clipboardData;\n    clipdata.setData('text/plain', textOnly);\n    clipdata.setData('text/html', html);\n    e.preventDefault();\n  }\n  rerender() {\n    this.forceUpdate();\n    this.setContainerMode();\n  }\n\n  getUserContext() {\n    const returnNullIfEmpty = (value) => {\n      if(Array.isArray(value)) {\n        if(value.length === 0) {\n          return null;\n        } else {\n          return value;\n        }\n      }\n\n    }\n    const refs = this.state.panels.map(panel => panel.currentlyVisibleRef || panel.bookRef || returnNullIfEmpty(panel.navigationCategories) || panel.navigationTopic).flat();\n    const books = refs.map(ref => Sefaria.parseRef(ref).book);\n    const triggers = refs.map(ref => Sefaria.refCategories(ref))\n          .concat(books)\n          .concat(refs)\n          .flat()\n          .filter(ref => !!ref);\n    const deDupedTriggers = [...new Set(triggers.map(JSON.stringify))].map(JSON.parse).map(x => x.toLowerCase());\n    const context = {\n      isDebug: this.props._debug,\n      isLoggedIn: Sefaria._uid,\n      interfaceLang: Sefaria.interfaceLang,\n      dt: Sefaria.util.epoch_time(new Date())*1000,\n      keywordTargets: refs ? deDupedTriggers : []\n    };\n    return context\n  }\n\n\n  render() {\n    var panelStates = this.state.panels;\n    var evenWidth;\n    var widths;\n    var unit;\n    var wrapBoxScroll = false;\n\n    if (panelStates.length <= this.state.panelCap || !this.state.panelCap) {\n      evenWidth = (100.0 / panelStates.length);\n      unit = \"%\";\n    } else {\n      evenWidth = this.MIN_PANEL_WIDTH;\n      unit = \"px\";\n      wrapBoxScroll = true;\n    }\n\n    if (panelStates.length === 2 &&\n        (panelStates[0].mode === \"Text\" || panelStates[0].mode === \"Sheet\") &&\n        (panelStates[1].mode === \"Connections\" || panelStates[1].menuOpen === \"search\" || panelStates[1].compare)) {\n      widths = [68.0, 32.0];\n      unit = \"%\";\n    } else if (panelStates.length === 3 &&\n        (panelStates[0].mode === \"Text\" || panelStates[0].mode === \"Sheet\") &&\n        panelStates[1].mode === \"Connections\" &&\n        (panelStates[2].mode === \"Text\" || panelStates[2].mode === \"Sheet\")) {\n      widths = [37.0, 26.0, 37.0];\n      unit = \"%\";\n    } else if (panelStates.length === 3 &&\n        (panelStates[0].mode === \"Text\"|| panelStates[0].mode === \"Sheet\") &&\n        (panelStates[1].mode === \"Text\"|| panelStates[1].mode === \"Sheet\") &&\n        panelStates[2].mode === \"Connections\") {\n      widths = [37.0, 37.0, 26.0];\n      unit = \"%\";\n    } else {\n      widths = panelStates.map( panel => evenWidth );\n    }\n\n    // Header should not show box-shadow over panels that have color line\n    const menuOpen = this.state.panels?.[0]?.menuOpen;\n    const hasColorLine = [null, \"book toc\", \"sheets\", \"sheets meta\"];\n    const headerHasBoxShadow = hasColorLine.indexOf(menuOpen) === -1 || !this.props.multiPanel;\n    // Header is hidden on certain mobile panels, but still rendered so the mobileNavMenu can be opened\n    const hideHeader = !this.props.multiPanel && !this.state.headerMode && (!menuOpen || menuOpen === \"text toc\");\n    const header = (\n      <Header\n        multiPanel={this.props.multiPanel}\n        onRefClick={this.handleNavigationClick}\n        showSearch={this.showSearch}\n        openURL={this.openURL}\n        headerMode={this.props.headerMode}\n        openTopic={this.openTopic}\n        hidden={hideHeader}\n        mobileNavMenuOpen={this.state.mobileNavMenuOpen}\n        onMobileMenuButtonClick={this.toggleMobileNavMenu}\n        hasLanguageToggle={!this.props.multiPanel && Sefaria.interfaceLang !== \"hebrew\" && this.state.panels?.[0]?.menuOpen === \"navigation\"}\n        toggleLanguage={this.toggleLanguageInFirstPanel}\n        firstPanelLanguage={this.state.panels?.[0]?.settings?.language}\n        hasBoxShadow={headerHasBoxShadow}\n        translationLanguagePreference={this.state.translationLanguagePreference}\n        setTranslationLanguagePreference={this.setTranslationLanguagePreference} />\n    );\n\n    var panels = [];\n    var allOpenRefs = panelStates.filter( panel => panel.mode == \"Text\" && !panel.menuOpen)\n                                  .map( panel => Sefaria.humanRef(panel.highlightedRefs.length ? panel.highlightedRefs : panel.refs));\n\n    for (var i = 0; i < panelStates.length; i++) {\n      const panel                        = panelStates[i];\n      if (!(\"settings\" in panel )) { debugger; }\n      var offset                         = widths.reduce(function(prev, curr, index, arr) { return index < i ? prev+curr : prev}, 0);\n      var width                          = widths[i];\n      var style                          = (this.state.layoutOrientation==\"ltr\")?{width: width + unit, left: offset + unit}:{width: width + unit, right: offset + unit};\n      var onSegmentClick                 = this.props.multiPanel ? this.handleSegmentClick.bind(null, i) : null;\n      var onCitationClick                = this.handleCitationClick.bind(null, i);\n      var openNamedEntityInNewPanel      = this.openNamedEntityInNewPanel.bind(null, i);\n      var onCloseConnectionClick         = this.closeConnectionPanel.bind(null,i);\n      var closeNamedEntityInConnectionPanel = this.closeNamedEntityInConnectionPanel.bind(null,i);\n      var onSearchResultClick            = i > 0 ? this.handleCompareSearchClick.bind(null, i) : this.handleNavigationClick;\n      var onSidebarSearchClick           = this.handleSidebarSearchClick.bind(null, i);\n      var unsetTextHighlight             = this.unsetTextHighlight.bind(null, i);\n      var updateQuery                    = this.updateQuery.bind(null, i);\n      var updateSearchTab                = this.updateSearchTab.bind(null, i);\n      var updateAvailableFilters         = this.updateAvailableFilters.bind(null, i);\n      var updateSearchFilter             = this.updateSearchFilter.bind(null, i);\n      var updateSearchOptionField        = this.updateSearchOptionField.bind(null, i);\n      var updateSearchOptionSort         = this.updateSearchOptionSort.bind(null, i);\n      var openConnectionsPanel           = this.openTextListAt.bind(null, i+1);\n      var setTextListHighlight           = this.setTextListHighlight.bind(null, i);\n      var setSelectedWords               = this.setSelectedWords.bind(null, i);\n      var clearSelectedWords             = this.clearSelectedWords.bind(null, i);\n      var clearNamedEntity               = this.clearNamedEntity.bind(null, i);\n      var setSidebarSearchQuery          = this.setSidebarSearchQuery.bind(null, i);\n      var openComparePanel               = this.openComparePanel.bind(null, i);\n      var closePanel                     = panel.compare ? this.convertToTextList.bind(null, i) : this.closePanel.bind(null, i);\n      var setPanelState                  = this.setPanelState.bind(null, i);\n      var setConnectionsFilter           = this.setConnectionsFilter.bind(this, i);\n      var setSideScrollPosition          = this.setSideScrollPosition.bind(this, i);\n      var setVersionFilter               = this.setVersionFilter.bind(this, i);\n      var selectVersion                  = this.selectVersion.bind(null, i);\n      var viewExtendedNotes              = this.viewExtendedNotes.bind(this, i);\n      var backFromExtendedNotes          = this.backFromExtendedNotes.bind(this, i);\n      var navigatePanel                  = this.navigatePanel.bind(null, i)\n\n      var ref   = panel.refs && panel.refs.length ? panel.refs[0] : null;\n      var oref  = ref ? Sefaria.parseRef(ref) : null;\n      var title = oref && oref.indexTitle ? oref.indexTitle : 0;\n      // Keys must be constant as text scrolls, but changing as new panels open in new positions\n      // Use a combination of the panel number and text title\n      var key   = i + title;\n      var classes = classNames({readerPanelBox: 1, sidebar: panel.mode == \"Connections\"});\n      panels.push(<div className={classes} style={style} key={key}>\n                    <ReaderPanel\n                      panelPosition={i}\n                      initialState={panel}\n                      interfaceLang={this.props.interfaceLang}\n                      setCentralState={setPanelState}\n                      multiPanel={this.props.multiPanel}\n                      onSegmentClick={onSegmentClick}\n                      onCitationClick={onCitationClick}\n                      openNamedEntityInNewPanel={openNamedEntityInNewPanel}\n                      closeConnectionPanel={onCloseConnectionClick}\n                      closeNamedEntityInConnectionPanel={closeNamedEntityInConnectionPanel}\n                      onSearchResultClick={onSearchResultClick}\n                      onSidebarSearchClick={onSidebarSearchClick}\n                      onNavigationClick={this.handleNavigationClick}\n                      openConnectionsPanel={openConnectionsPanel}\n                      openComparePanel={openComparePanel}\n                      setTextListHighlight={setTextListHighlight}\n                      setConnectionsFilter={setConnectionsFilter}\n                      setSideScrollPosition={setSideScrollPosition}\n                      setVersionFilter={setVersionFilter}\n                      setSelectedWords={setSelectedWords}\n                      selectVersion={selectVersion}\n                      viewExtendedNotes={viewExtendedNotes}\n                      backFromExtendedNotes={backFromExtendedNotes}\n                      setDefaultOption={this.setDefaultOption}\n                      unsetTextHighlight={unsetTextHighlight}\n                      onQueryChange={updateQuery}\n                      updateSearchTab={updateSearchTab}\n                      updateSearchFilter={updateSearchFilter}\n                      updateSearchOptionField={updateSearchOptionField}\n                      updateSearchOptionSort={updateSearchOptionSort}\n                      registerAvailableFilters={updateAvailableFilters}\n                      searchInCollection={this.searchInCollection}\n                      setUnreadNotificationsCount={this.setUnreadNotificationsCount}\n                      closePanel={closePanel}\n                      panelsOpen={panelStates.length}\n                      allOpenRefs={allOpenRefs}\n                      hasSidebar={this.doesPanelHaveSidebar(i)}\n                      masterPanelLanguage={panel.mode === \"Connections\" ? panelStates[i-1].settings.language : panel.settings.language}\n                      masterPanelMode={panel.mode === \"Connections\" ? panelStates[i-1].mode : null}\n                      masterPanelSheetId={panel.mode === \"Connections\" ? panelStates[i-1].sheetID : null}\n                      layoutWidth={width}\n                      analyticsInitialized={this.state.initialAnalyticsTracked}\n                      saveLastPlace={this.saveLastPlace}\n                      checkIntentTimer={this.checkIntentTimer}\n                      openMobileNavMenu={this.toggleMobileNavMenu}\n                      toggleSignUpModal={this.toggleSignUpModal}\n                      getHistoryObject={this.getHistoryObject}\n                      clearSelectedWords={clearSelectedWords}\n                      clearNamedEntity={clearNamedEntity}\n                      setSidebarSearchQuery={setSidebarSearchQuery}\n                      translationLanguagePreference={this.state.translationLanguagePreference}\n                      setTranslationLanguagePreference={this.setTranslationLanguagePreference}\n                      navigatePanel={navigatePanel}\n                      divineNameReplacement={this.state.divineNameReplacement}\n                      setDivineNameReplacement={this.setDivineNameReplacement}\n                      topicTestVersion={this.props.topicTestVersion}\n                    />\n                  </div>);\n    }\n    var boxClasses = classNames({wrapBoxScroll: wrapBoxScroll});\n    var boxWidth = wrapBoxScroll ? this.state.windowWidth + \"px\" : \"100%\";\n    var boxStyle = this.state.beitMidrashStatus ? {width: `calc(${boxWidth} - 330px)`} : {width: boxWidth};\n    panels = panels.length ?\n              (<div id=\"panelWrapBox\" className={boxClasses} style={boxStyle}>\n                {panels}\n                 </div>) : null;\n\n    const signUpModal = (\n      <SignUpModal\n        onClose={this.toggleSignUpModal}\n        show={this.state.showSignUpModal}\n        modalContentKind={this.state.modalContentKind}\n      />\n    );\n\n    const communityPagePreviewControls = this.props.communityPreview ?\n      <CommunityPagePreviewControls date={this.props.communityPreview} /> : null;\n\n\n    var classDict = {readerApp: 1, multiPanel: this.props.multiPanel, singlePanel: !this.props.multiPanel};\n    var interfaceLangClass = `interface-${this.props.interfaceLang}`;\n    classDict[interfaceLangClass] = true;\n    var classes = classNames(classDict);\n\n    return (\n      // The Strapi context is put at the highest level of scope so any component or children within ReaderApp can use the static content received\n      // InterruptingMessage modals and Banners will always render if available but stay hidden initially\n      <StrapiDataProvider>\n        <AdContext.Provider value={this.getUserContext()}>\n          <div id=\"readerAppWrap\">\n            <InterruptingMessage />\n            <Banner onClose={this.setContainerMode} />\n            <div className={classes} onClick={this.handleInAppLinkClick}>\n              {header}\n              {panels}\n              {signUpModal}\n              {communityPagePreviewControls}\n              <CookiesNotification />\n            </div>\n          </div>\n        </AdContext.Provider>\n      </StrapiDataProvider>\n    );\n  }\n}\nReaderApp.propTypes = {\n  multiPanel:                  PropTypes.bool,\n  headerMode:                  PropTypes.bool,  // is the App serving only as a header on top of another page?\n  interfaceLang:               PropTypes.string,\n  initialRefs:                 PropTypes.array,\n  initialFilter:               PropTypes.array,\n  initialMenu:                 PropTypes.string,\n  initialCollection:           PropTypes.string,\n  initialQuery:                PropTypes.string,\n  initialTextSearchFilters:    PropTypes.array,\n  initialTextSearchField:      PropTypes.string,\n  initialTextSearchSortType:   PropTypes.string,\n  initialSheetSearchFilters:   PropTypes.array,\n  initialSheetSearchField:     PropTypes.string,\n  initialSheetSearchSortType:  PropTypes.string,\n  initialTopic:                PropTypes.string,\n  initialProfile:              PropTypes.object,\n  initialNavigationCategories: PropTypes.array,\n  initialSettings:             PropTypes.object,\n  initialPanels:               PropTypes.array,\n  initialDefaultVersions:      PropTypes.object,\n  initialPath:                 PropTypes.string,\n  initialPanelCap:             PropTypes.number,\n  topicTestVersion:          PropTypes.string,\n};\nReaderApp.defaultProps = {\n  multiPanel:                  true,\n  headerMode:                  false,  // is the App serving only as a header on top of another page?\n  interfaceLang:               \"english\",\n  initialRefs:                 [],\n  initialFilter:               null,\n  initialMenu:                 null,\n  initialCollection:           null,\n  initialQuery:                null,\n  initialTopic:                null,\n  initialProfile:              null,\n  initialNavigationCategories: [],\n  initialPanels:               [],\n  initialDefaultVersions:      {},\n  initialPanelCap:             2,\n  initialPath:                 \"/\",\n  topicTestVersion:          null\n};\n\nconst sefariaSetup = Sefaria.setup;\nconst { unpackDataFromProps, loadServerData } = Sefaria;\nexport {\n  ReaderApp,\n  Footer,\n  sefariaSetup,\n  unpackDataFromProps,\n  loadServerData,\n  EditCollectionPage,\n  RemoteLearningPage,\n  ContextUSsheetsLandingPage,\n  SheetsLandingPage,\n  ContestLandingPage,\n  PBSC2020LandingPage,\n  PBSC2021LandingPage,\n  PoweredByPage,\n  RambanLandingPage,\n  EducatorsPage,\n  RabbisPage,\n  DonatePage,\n  WordByWordPage,\n  JobsPage,\n  TeamMembersPage,\n};\n","// https://d3js.org v5.9.7 Copyright 2019 Mike Bostock\n!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],n):n(t.d3=t.d3||{})}(this,function(t){\"use strict\";function n(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function e(t){var e;return 1===t.length&&(e=t,t=function(t,r){return n(e(t),r)}),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}var r=e(n),i=r.right,o=r.left;function a(t,n){return[t,n]}function u(t){return null===t?NaN:+t}function c(t,n){var e,r,i=t.length,o=0,a=-1,c=0,f=0;if(null==n)for(;++a<i;)isNaN(e=u(t[a]))||(f+=(r=e-c)*(e-(c+=r/++o)));else for(;++a<i;)isNaN(e=u(n(t[a],a,t)))||(f+=(r=e-c)*(e-(c+=r/++o)));if(o>1)return f/(o-1)}function f(t,n){var e=c(t,n);return e?Math.sqrt(e):e}function s(t,n){var e,r,i,o=t.length,a=-1;if(null==n){for(;++a<o;)if(null!=(e=t[a])&&e>=e)for(r=i=e;++a<o;)null!=(e=t[a])&&(r>e&&(r=e),i<e&&(i=e))}else for(;++a<o;)if(null!=(e=n(t[a],a,t))&&e>=e)for(r=i=e;++a<o;)null!=(e=n(t[a],a,t))&&(r>e&&(r=e),i<e&&(i=e));return[r,i]}var l=Array.prototype,h=l.slice,d=l.map;function p(t){return function(){return t}}function v(t){return t}function g(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o}var y=Math.sqrt(50),_=Math.sqrt(10),b=Math.sqrt(2);function m(t,n,e){var r,i,o,a,u=-1;if(e=+e,(t=+t)===(n=+n)&&e>0)return[t];if((r=n<t)&&(i=t,t=n,n=i),0===(a=x(t,n,e))||!isFinite(a))return[];if(a>0)for(t=Math.ceil(t/a),n=Math.floor(n/a),o=new Array(i=Math.ceil(n-t+1));++u<i;)o[u]=(t+u)*a;else for(t=Math.floor(t*a),n=Math.ceil(n*a),o=new Array(i=Math.ceil(t-n+1));++u<i;)o[u]=(t-u)/a;return r&&o.reverse(),o}function x(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=y?10:o>=_?5:o>=b?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=y?10:o>=_?5:o>=b?2:1)}function w(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=y?i*=10:o>=_?i*=5:o>=b&&(i*=2),n<t?-i:i}function M(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}function N(t,n,e){if(null==e&&(e=u),r=t.length){if((n=+n)<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),a=+e(t[o],o,t);return a+(+e(t[o+1],o+1,t)-a)*(i-o)}}function A(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&e>r&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&e>r&&(r=e);return r}function T(t){for(var n,e,r,i=t.length,o=-1,a=0;++o<i;)a+=t[o].length;for(e=new Array(a);--i>=0;)for(n=(r=t[i]).length;--n>=0;)e[--a]=r[n];return e}function S(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&r>e&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&r>e&&(r=e);return r}function k(t){if(!(i=t.length))return[];for(var n=-1,e=S(t,E),r=new Array(e);++n<e;)for(var i,o=-1,a=r[n]=new Array(i);++o<i;)a[o]=t[o][n];return r}function E(t){return t.length}var C=Array.prototype.slice;function P(t){return t}var z=1,R=2,D=3,q=4,L=1e-6;function U(t){return\"translate(\"+(t+.5)+\",0)\"}function O(t){return\"translate(0,\"+(t+.5)+\")\"}function B(){return!this.__axis}function Y(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c=t===z||t===q?-1:1,f=t===q||t===R?\"x\":\"y\",s=t===z||t===D?U:O;function l(l){var h=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,d=null==i?n.tickFormat?n.tickFormat.apply(n,e):P:i,p=Math.max(o,0)+u,v=n.range(),g=+v[0]+.5,y=+v[v.length-1]+.5,_=(n.bandwidth?function(t){var n=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(n=Math.round(n)),function(e){return+t(e)+n}}:function(t){return function(n){return+t(n)}})(n.copy()),b=l.selection?l.selection():l,m=b.selectAll(\".domain\").data([null]),x=b.selectAll(\".tick\").data(h,n).order(),w=x.exit(),M=x.enter().append(\"g\").attr(\"class\",\"tick\"),N=x.select(\"line\"),A=x.select(\"text\");m=m.merge(m.enter().insert(\"path\",\".tick\").attr(\"class\",\"domain\").attr(\"stroke\",\"currentColor\")),x=x.merge(M),N=N.merge(M.append(\"line\").attr(\"stroke\",\"currentColor\").attr(f+\"2\",c*o)),A=A.merge(M.append(\"text\").attr(\"fill\",\"currentColor\").attr(f,c*p).attr(\"dy\",t===z?\"0em\":t===D?\"0.71em\":\"0.32em\")),l!==b&&(m=m.transition(l),x=x.transition(l),N=N.transition(l),A=A.transition(l),w=w.transition(l).attr(\"opacity\",L).attr(\"transform\",function(t){return isFinite(t=_(t))?s(t):this.getAttribute(\"transform\")}),M.attr(\"opacity\",L).attr(\"transform\",function(t){var n=this.parentNode.__axis;return s(n&&isFinite(n=n(t))?n:_(t))})),w.remove(),m.attr(\"d\",t===q||t==R?a?\"M\"+c*a+\",\"+g+\"H0.5V\"+y+\"H\"+c*a:\"M0.5,\"+g+\"V\"+y:a?\"M\"+g+\",\"+c*a+\"V0.5H\"+y+\"V\"+c*a:\"M\"+g+\",0.5H\"+y),x.attr(\"opacity\",1).attr(\"transform\",function(t){return s(_(t))}),N.attr(f+\"2\",c*o),A.attr(f,c*p).text(d),b.filter(B).attr(\"fill\",\"none\").attr(\"font-size\",10).attr(\"font-family\",\"sans-serif\").attr(\"text-anchor\",t===R?\"start\":t===q?\"end\":\"middle\"),b.each(function(){this.__axis=_})}return l.scale=function(t){return arguments.length?(n=t,l):n},l.ticks=function(){return e=C.call(arguments),l},l.tickArguments=function(t){return arguments.length?(e=null==t?[]:C.call(t),l):e.slice()},l.tickValues=function(t){return arguments.length?(r=null==t?null:C.call(t),l):r&&r.slice()},l.tickFormat=function(t){return arguments.length?(i=t,l):i},l.tickSize=function(t){return arguments.length?(o=a=+t,l):o},l.tickSizeInner=function(t){return arguments.length?(o=+t,l):o},l.tickSizeOuter=function(t){return arguments.length?(a=+t,l):a},l.tickPadding=function(t){return arguments.length?(u=+t,l):u},l}var F={value:function(){}};function I(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+\"\")||t in r)throw new Error(\"illegal type: \"+t);r[t]=[]}return new j(r)}function j(t){this._=t}function H(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function X(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=F,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}j.prototype=I.prototype={constructor:j,on:function(t,n){var e,r,i=this._,o=(r=i,(t+\"\").trim().split(/^|\\s+/).map(function(t){var n=\"\",e=t.indexOf(\".\");if(e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);return{type:t,name:n}})),a=-1,u=o.length;if(!(arguments.length<2)){if(null!=n&&\"function\"!=typeof n)throw new Error(\"invalid callback: \"+n);for(;++a<u;)if(e=(t=o[a]).type)i[e]=X(i[e],t.name,n);else if(null==n)for(e in i)i[e]=X(i[e],t.name,null);return this}for(;++a<u;)if((e=(t=o[a]).type)&&(e=H(i[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new j(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error(\"unknown type: \"+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};var G=\"http://www.w3.org/1999/xhtml\",V={svg:\"http://www.w3.org/2000/svg\",xhtml:G,xlink:\"http://www.w3.org/1999/xlink\",xml:\"http://www.w3.org/XML/1998/namespace\",xmlns:\"http://www.w3.org/2000/xmlns/\"};function $(t){var n=t+=\"\",e=n.indexOf(\":\");return e>=0&&\"xmlns\"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),V.hasOwnProperty(n)?{space:V[n],local:t}:t}function W(t){var n=$(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===G&&n.documentElement.namespaceURI===G?n.createElement(t):n.createElementNS(e,t)}})(n)}function Z(){}function Q(t){return null==t?Z:function(){return this.querySelector(t)}}function J(){return[]}function K(t){return null==t?J:function(){return this.querySelectorAll(t)}}function tt(t){return function(){return this.matches(t)}}function nt(t){return new Array(t.length)}function et(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}et.prototype={constructor:et,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var rt=\"$\";function it(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;u<f;++u)(a=n[u])?(a.__data__=o[u],r[u]=a):e[u]=new et(t,o[u]);for(;u<c;++u)(a=n[u])&&(i[u]=a)}function ot(t,n,e,r,i,o,a){var u,c,f,s={},l=n.length,h=o.length,d=new Array(l);for(u=0;u<l;++u)(c=n[u])&&(d[u]=f=rt+a.call(c,c.__data__,u,n),f in s?i[u]=c:s[f]=c);for(u=0;u<h;++u)(c=s[f=rt+a.call(t,o[u],u,o)])?(r[u]=c,c.__data__=o[u],s[f]=null):e[u]=new et(t,o[u]);for(u=0;u<l;++u)(c=n[u])&&s[d[u]]===c&&(i[u]=c)}function at(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function ut(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ct(t,n){return t.style.getPropertyValue(n)||ut(t).getComputedStyle(t,null).getPropertyValue(n)}function ft(t){return t.trim().split(/^|\\s+/)}function st(t){return t.classList||new lt(t)}function lt(t){this._node=t,this._names=ft(t.getAttribute(\"class\")||\"\")}function ht(t,n){for(var e=st(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function dt(t,n){for(var e=st(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function pt(){this.textContent=\"\"}function vt(){this.innerHTML=\"\"}function gt(){this.nextSibling&&this.parentNode.appendChild(this)}function yt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function _t(){return null}function bt(){var t=this.parentNode;t&&t.removeChild(this)}function mt(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function xt(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}lt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute(\"class\",this._names.join(\" \")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute(\"class\",this._names.join(\" \")))},contains:function(t){return this._names.indexOf(t)>=0}};var wt={};(t.event=null,\"undefined\"!=typeof document)&&(\"onmouseenter\"in document.documentElement||(wt={mouseenter:\"mouseover\",mouseleave:\"mouseout\"}));function Mt(t,n,e){return t=Nt(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function Nt(n,e,r){return function(i){var o=t.event;t.event=i;try{n.call(this,this.__data__,e,r)}finally{t.event=o}}}function At(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.capture);++i?n.length=i:delete this.__on}}}function Tt(t,n,e){var r=wt.hasOwnProperty(t.type)?Mt:Nt;return function(i,o,a){var u,c=this.__on,f=r(n,o,a);if(c)for(var s=0,l=c.length;s<l;++s)if((u=c[s]).type===t.type&&u.name===t.name)return this.removeEventListener(u.type,u.listener,u.capture),this.addEventListener(u.type,u.listener=f,u.capture=e),void(u.value=n);this.addEventListener(t.type,f,e),u={type:t.type,name:t.name,value:n,listener:f,capture:e},c?c.push(u):this.__on=[u]}}function St(n,e,r,i){var o=t.event;n.sourceEvent=t.event,t.event=n;try{return e.apply(r,i)}finally{t.event=o}}function kt(t,n,e){var r=ut(t),i=r.CustomEvent;\"function\"==typeof i?i=new i(n,e):(i=r.document.createEvent(\"Event\"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}var Et=[null];function Ct(t,n){this._groups=t,this._parents=n}function Pt(){return new Ct([[document.documentElement]],Et)}function zt(t){return\"string\"==typeof t?new Ct([[document.querySelector(t)]],[document.documentElement]):new Ct([[t]],Et)}Ct.prototype=Pt.prototype={constructor:Ct,select:function(t){\"function\"!=typeof t&&(t=Q(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a,u=n[i],c=u.length,f=r[i]=new Array(c),s=0;s<c;++s)(o=u[s])&&(a=t.call(o,o.__data__,s,u))&&(\"__data__\"in o&&(a.__data__=o.__data__),f[s]=a);return new Ct(r,this._parents)},selectAll:function(t){\"function\"!=typeof t&&(t=K(t));for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var a,u=n[o],c=u.length,f=0;f<c;++f)(a=u[f])&&(r.push(t.call(a,a.__data__,f,u)),i.push(a));return new Ct(r,i)},filter:function(t){\"function\"!=typeof t&&(t=tt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Ct(r,this._parents)},data:function(t,n){if(!t)return p=new Array(this.size()),s=-1,this.each(function(t){p[++s]=t}),p;var e,r=n?ot:it,i=this._parents,o=this._groups;\"function\"!=typeof t&&(e=t,t=function(){return e});for(var a=o.length,u=new Array(a),c=new Array(a),f=new Array(a),s=0;s<a;++s){var l=i[s],h=o[s],d=h.length,p=t.call(l,l&&l.__data__,s,i),v=p.length,g=c[s]=new Array(v),y=u[s]=new Array(v);r(l,h,g,y,f[s]=new Array(d),p,n);for(var _,b,m=0,x=0;m<v;++m)if(_=g[m]){for(m>=x&&(x=m+1);!(b=y[x])&&++x<v;);_._next=b||null}}return(u=new Ct(u,i))._enter=c,u._exit=f,u},enter:function(){return new Ct(this._enter||this._groups.map(nt),this._parents)},exit:function(){return new Ct(this._exit||this._groups.map(nt),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return r=\"function\"==typeof t?t(r):r.append(t+\"\"),null!=n&&(i=n(i)),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new Ct(a,this._parents)},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=at);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var a,u=e[o],c=u.length,f=i[o]=new Array(c),s=0;s<c;++s)(a=u[s])&&(f[s]=a);f.sort(n)}return new Ct(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){var t=new Array(this.size()),n=-1;return this.each(function(){t[++n]=this}),t},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){var t=0;return this.each(function(){++t}),t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,n){var e=$(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}}:\"function\"==typeof n?e.local?function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}:function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}:e.local?function(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}:function(t,n){return function(){this.setAttribute(t,n)}})(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?function(t){return function(){this.style.removeProperty(t)}}:\"function\"==typeof n?function(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}:function(t,n,e){return function(){this.style.setProperty(t,n,e)}})(t,n,null==e?\"\":e)):ct(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?function(t){return function(){delete this[t]}}:\"function\"==typeof n?function(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}:function(t,n){return function(){this[t]=n}})(t,n)):this.node()[t]},classed:function(t,n){var e=ft(t+\"\");if(arguments.length<2){for(var r=st(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each((\"function\"==typeof n?function(t,n){return function(){(n.apply(this,arguments)?ht:dt)(this,t)}}:n?function(t){return function(){ht(this,t)}}:function(t){return function(){dt(this,t)}})(e,n))},text:function(t){return arguments.length?this.each(null==t?pt:(\"function\"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?\"\":n}}:function(t){return function(){this.textContent=t}})(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?vt:(\"function\"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?\"\":n}}:function(t){return function(){this.innerHTML=t}})(t)):this.node().innerHTML},raise:function(){return this.each(gt)},lower:function(){return this.each(yt)},append:function(t){var n=\"function\"==typeof t?t:W(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})},insert:function(t,n){var e=\"function\"==typeof t?t:W(t),r=null==n?_t:\"function\"==typeof n?n:Q(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})},remove:function(){return this.each(bt)},clone:function(t){return this.select(t?xt:mt)},datum:function(t){return arguments.length?this.property(\"__data__\",t):this.node().__data__},on:function(t,n,e){var r,i,o=function(t){return t.trim().split(/^|\\s+/).map(function(t){var n=\"\",e=t.indexOf(\".\");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}(t+\"\"),a=o.length;if(!(arguments.length<2)){for(u=n?Tt:At,null==e&&(e=!1),r=0;r<a;++r)this.each(u(o[r],n,e));return this}var u=this.node().__on;if(u)for(var c,f=0,s=u.length;f<s;++f)for(r=0,c=u[f];r<a;++r)if((i=o[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,n){return this.each((\"function\"==typeof n?function(t,n){return function(){return kt(this,t,n.apply(this,arguments))}}:function(t,n){return function(){return kt(this,t,n)}})(t,n))}};var Rt=0;function Dt(){return new qt}function qt(){this._=\"@\"+(++Rt).toString(36)}function Lt(){for(var n,e=t.event;n=e.sourceEvent;)e=n;return e}function Ut(t,n){var e=t.ownerSVGElement||t;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=n.clientX,r.y=n.clientY,[(r=r.matrixTransform(t.getScreenCTM().inverse())).x,r.y]}var i=t.getBoundingClientRect();return[n.clientX-i.left-t.clientLeft,n.clientY-i.top-t.clientTop]}function Ot(t){var n=Lt();return n.changedTouches&&(n=n.changedTouches[0]),Ut(t,n)}function Bt(t,n,e){arguments.length<3&&(e=n,n=Lt().changedTouches);for(var r,i=0,o=n?n.length:0;i<o;++i)if((r=n[i]).identifier===e)return Ut(t,r);return null}function Yt(){t.event.stopImmediatePropagation()}function Ft(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function It(t){var n=t.document.documentElement,e=zt(t).on(\"dragstart.drag\",Ft,!0);\"onselectstart\"in n?e.on(\"selectstart.drag\",Ft,!0):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect=\"none\")}function jt(t,n){var e=t.document.documentElement,r=zt(t).on(\"dragstart.drag\",null);n&&(r.on(\"click.drag\",Ft,!0),setTimeout(function(){r.on(\"click.drag\",null)},0)),\"onselectstart\"in e?r.on(\"selectstart.drag\",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}function Ht(t){return function(){return t}}function Xt(t,n,e,r,i,o,a,u,c,f){this.target=t,this.type=n,this.subject=e,this.identifier=r,this.active=i,this.x=o,this.y=a,this.dx=u,this.dy=c,this._=f}function Gt(){return!t.event.button}function Vt(){return this.parentNode}function $t(n){return null==n?{x:t.event.x,y:t.event.y}:n}function Wt(){return\"ontouchstart\"in this}function Zt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Qt(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Jt(){}qt.prototype=Dt.prototype={constructor:qt,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}},Xt.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var Kt=\"\\\\s*([+-]?\\\\d+)\\\\s*\",tn=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",nn=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",en=/^#([0-9a-f]{3})$/,rn=/^#([0-9a-f]{6})$/,on=new RegExp(\"^rgb\\\\(\"+[Kt,Kt,Kt]+\"\\\\)$\"),an=new RegExp(\"^rgb\\\\(\"+[nn,nn,nn]+\"\\\\)$\"),un=new RegExp(\"^rgba\\\\(\"+[Kt,Kt,Kt,tn]+\"\\\\)$\"),cn=new RegExp(\"^rgba\\\\(\"+[nn,nn,nn,tn]+\"\\\\)$\"),fn=new RegExp(\"^hsl\\\\(\"+[tn,nn,nn]+\"\\\\)$\"),sn=new RegExp(\"^hsla\\\\(\"+[tn,nn,nn,tn]+\"\\\\)$\"),ln={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function hn(t){var n;return t=(t+\"\").trim().toLowerCase(),(n=en.exec(t))?new yn((n=parseInt(n[1],16))>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):(n=rn.exec(t))?dn(parseInt(n[1],16)):(n=on.exec(t))?new yn(n[1],n[2],n[3],1):(n=an.exec(t))?new yn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=un.exec(t))?pn(n[1],n[2],n[3],n[4]):(n=cn.exec(t))?pn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=fn.exec(t))?bn(n[1],n[2]/100,n[3]/100,1):(n=sn.exec(t))?bn(n[1],n[2]/100,n[3]/100,n[4]):ln.hasOwnProperty(t)?dn(ln[t]):\"transparent\"===t?new yn(NaN,NaN,NaN,0):null}function dn(t){return new yn(t>>16&255,t>>8&255,255&t,1)}function pn(t,n,e,r){return r<=0&&(t=n=e=NaN),new yn(t,n,e,r)}function vn(t){return t instanceof Jt||(t=hn(t)),t?new yn((t=t.rgb()).r,t.g,t.b,t.opacity):new yn}function gn(t,n,e,r){return 1===arguments.length?vn(t):new yn(t,n,e,null==r?1:r)}function yn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function _n(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function bn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new xn(t,n,e,r)}function mn(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof xn)return new xn(t.h,t.s,t.l,t.opacity);if(t instanceof Jt||(t=hn(t)),!t)return new xn;if(t instanceof xn)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e<r):e===o?(r-n)/u+2:(n-e)/u+4,u/=c<.5?o+i:2-o-i,a*=60):u=c>0&&c<1?0:a,new xn(a,u,c,t.opacity)}(t):new xn(t,n,e,null==r?1:r)}function xn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function wn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}Zt(Jt,hn,{displayable:function(){return this.rgb().displayable()},hex:function(){return this.rgb().hex()},toString:function(){return this.rgb()+\"\"}}),Zt(yn,gn,Qt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new yn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new yn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:function(){return\"#\"+_n(this.r)+_n(this.g)+_n(this.b)},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?\")\":\", \"+t+\")\")}})),Zt(xn,mn,Qt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new xn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new xn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new yn(wn(t>=240?t-240:t+120,i,r),wn(t,i,r),wn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Mn=Math.PI/180,Nn=180/Math.PI,An=.96422,Tn=1,Sn=.82521,kn=4/29,En=6/29,Cn=3*En*En,Pn=En*En*En;function zn(t){if(t instanceof Dn)return new Dn(t.l,t.a,t.b,t.opacity);if(t instanceof Fn)return In(t);t instanceof yn||(t=vn(t));var n,e,r=On(t.r),i=On(t.g),o=On(t.b),a=qn((.2225045*r+.7168786*i+.0606169*o)/Tn);return r===i&&i===o?n=e=a:(n=qn((.4360747*r+.3850649*i+.1430804*o)/An),e=qn((.0139322*r+.0971045*i+.7141733*o)/Sn)),new Dn(116*a-16,500*(n-a),200*(a-e),t.opacity)}function Rn(t,n,e,r){return 1===arguments.length?zn(t):new Dn(t,n,e,null==r?1:r)}function Dn(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function qn(t){return t>Pn?Math.pow(t,1/3):t/Cn+kn}function Ln(t){return t>En?t*t*t:Cn*(t-kn)}function Un(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function On(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Bn(t){if(t instanceof Fn)return new Fn(t.h,t.c,t.l,t.opacity);if(t instanceof Dn||(t=zn(t)),0===t.a&&0===t.b)return new Fn(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*Nn;return new Fn(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Yn(t,n,e,r){return 1===arguments.length?Bn(t):new Fn(t,n,e,null==r?1:r)}function Fn(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function In(t){if(isNaN(t.h))return new Dn(t.l,0,0,t.opacity);var n=t.h*Mn;return new Dn(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}Zt(Dn,Rn,Qt(Jt,{brighter:function(t){return new Dn(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Dn(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new yn(Un(3.1338561*(n=An*Ln(n))-1.6168667*(t=Tn*Ln(t))-.4906146*(e=Sn*Ln(e))),Un(-.9787684*n+1.9161415*t+.033454*e),Un(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),Zt(Fn,Yn,Qt(Jt,{brighter:function(t){return new Fn(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Fn(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return In(this).rgb()}}));var jn=-.14861,Hn=1.78277,Xn=-.29227,Gn=-.90649,Vn=1.97294,$n=Vn*Gn,Wn=Vn*Hn,Zn=Hn*Xn-Gn*jn;function Qn(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Jn)return new Jn(t.h,t.s,t.l,t.opacity);t instanceof yn||(t=vn(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Zn*r+$n*n-Wn*e)/(Zn+$n-Wn),o=r-i,a=(Vn*(e-i)-Xn*o)/Gn,u=Math.sqrt(a*a+o*o)/(Vn*i*(1-i)),c=u?Math.atan2(a,o)*Nn-120:NaN;return new Jn(c<0?c+360:c,u,i,t.opacity)}(t):new Jn(t,n,e,null==r?1:r)}function Jn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Kn(t,n,e,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*n+(4-6*o+3*a)*e+(1+3*t+3*o-3*a)*r+a*i)/6}function te(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<n-1?t[r+2]:2*o-i;return Kn((e-r/n)*n,a,i,o,u)}}function ne(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],a=t[(r+1)%n],u=t[(r+2)%n];return Kn((e-r/n)*n,i,o,a,u)}}function ee(t){return function(){return t}}function re(t,n){return function(e){return t+e*n}}function ie(t,n){var e=n-t;return e?re(t,e>180||e<-180?e-360*Math.round(e/360):e):ee(isNaN(t)?n:t)}function oe(t){return 1==(t=+t)?ae:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):ee(isNaN(n)?e:n)}}function ae(t,n){var e=n-t;return e?re(t,e):ee(isNaN(t)?n:t)}Zt(Jn,Qn,Qt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Jn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Jn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Mn,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new yn(255*(n+e*(jn*r+Hn*i)),255*(n+e*(Xn*r+Gn*i)),255*(n+e*(Vn*r)),this.opacity)}}));var ue=function t(n){var e=oe(n);function r(t,n){var r=e((t=gn(t)).r,(n=gn(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=ae(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+\"\"}}return r.gamma=t,r}(1);function ce(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;e<i;++e)r=gn(n[e]),o[e]=r.r||0,a[e]=r.g||0,u[e]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+\"\"}}}var fe=ce(te),se=ce(ne);function le(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),a=new Array(r);for(e=0;e<i;++e)o[e]=_e(t[e],n[e]);for(;e<r;++e)a[e]=n[e];return function(t){for(e=0;e<i;++e)a[e]=o[e](t);return a}}function he(t,n){var e=new Date;return n-=t=+t,function(r){return e.setTime(t+n*r),e}}function de(t,n){return n-=t=+t,function(e){return t+n*e}}function pe(t,n){var e,r={},i={};for(e in null!==t&&\"object\"==typeof t||(t={}),null!==n&&\"object\"==typeof n||(n={}),n)e in t?r[e]=_e(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var ve=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,ge=new RegExp(ve.source,\"g\");function ye(t,n){var e,r,i,o=ve.lastIndex=ge.lastIndex=0,a=-1,u=[],c=[];for(t+=\"\",n+=\"\";(e=ve.exec(t))&&(r=ge.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:de(e,r)})),o=ge.lastIndex;return o<n.length&&(i=n.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?c[0]?function(t){return function(n){return t(n)+\"\"}}(c[0].x):function(t){return function(){return t}}(n):(n=c.length,function(t){for(var e,r=0;r<n;++r)u[(e=c[r]).i]=e.x(t);return u.join(\"\")})}function _e(t,n){var e,r=typeof n;return null==n||\"boolean\"===r?ee(n):(\"number\"===r?de:\"string\"===r?(e=hn(n))?(n=e,ue):ye:n instanceof hn?ue:n instanceof Date?he:Array.isArray(n)?le:\"function\"!=typeof n.valueOf&&\"function\"!=typeof n.toString||isNaN(n)?pe:de)(t,n)}function be(t,n){return n-=t=+t,function(e){return Math.round(t+n*e)}}var me,xe,we,Me,Ne=180/Math.PI,Ae={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Te(t,n,e,r,i,o){var a,u,c;return(a=Math.sqrt(t*t+n*n))&&(t/=a,n/=a),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,c/=u),t*r<n*e&&(t=-t,n=-n,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Ne,skewX:Math.atan(c)*Ne,scaleX:a,scaleY:u}}function Se(t,n,e,r){function i(t){return t.length?t.pop()+\" \":\"\"}return function(o,a){var u=[],c=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var c=a.push(\"translate(\",null,n,null,e);u.push({i:c-4,x:de(t,i)},{i:c-2,x:de(r,o)})}else(i||o)&&a.push(\"translate(\"+i+n+o+e)}(o.translateX,o.translateY,a.translateX,a.translateY,u,c),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+\"rotate(\",null,r)-2,x:de(t,n)})):n&&e.push(i(e)+\"rotate(\"+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+\"skewX(\",null,r)-2,x:de(t,n)}):n&&e.push(i(e)+\"skewX(\"+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+\"scale(\",null,\",\",null,\")\");a.push({i:u-4,x:de(t,e)},{i:u-2,x:de(n,r)})}else 1===e&&1===r||o.push(i(o)+\"scale(\"+e+\",\"+r+\")\")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e<r;)u[(n=c[e]).i]=n.x(t);return u.join(\"\")}}}var ke=Se(function(t){return\"none\"===t?Ae:(me||(me=document.createElement(\"DIV\"),xe=document.documentElement,we=document.defaultView),me.style.transform=t,t=we.getComputedStyle(xe.appendChild(me),null).getPropertyValue(\"transform\"),xe.removeChild(me),Te(+(t=t.slice(7,-1).split(\",\"))[0],+t[1],+t[2],+t[3],+t[4],+t[5]))},\"px, \",\"px)\",\"deg)\"),Ee=Se(function(t){return null==t?Ae:(Me||(Me=document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\")),Me.setAttribute(\"transform\",t),(t=Me.transform.baseVal.consolidate())?Te((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Ae)},\", \",\")\",\")\"),Ce=Math.SQRT2,Pe=2,ze=4,Re=1e-12;function De(t){return((t=Math.exp(t))+1/t)/2}function qe(t,n){var e,r,i=t[0],o=t[1],a=t[2],u=n[0],c=n[1],f=n[2],s=u-i,l=c-o,h=s*s+l*l;if(h<Re)r=Math.log(f/a)/Ce,e=function(t){return[i+t*s,o+t*l,a*Math.exp(Ce*t*r)]};else{var d=Math.sqrt(h),p=(f*f-a*a+ze*h)/(2*a*Pe*d),v=(f*f-a*a-ze*h)/(2*f*Pe*d),g=Math.log(Math.sqrt(p*p+1)-p),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-g)/Ce,e=function(t){var n,e=t*r,u=De(g),c=a/(Pe*d)*(u*(n=Ce*e+g,((n=Math.exp(2*n))-1)/(n+1))-function(t){return((t=Math.exp(t))-1/t)/2}(g));return[i+c*s,o+c*l,a*u/De(Ce*e+g)]}}return e.duration=1e3*r,e}function Le(t){return function(n,e){var r=t((n=mn(n)).h,(e=mn(e)).h),i=ae(n.s,e.s),o=ae(n.l,e.l),a=ae(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=o(t),n.opacity=a(t),n+\"\"}}}var Ue=Le(ie),Oe=Le(ae);function Be(t){return function(n,e){var r=t((n=Yn(n)).h,(e=Yn(e)).h),i=ae(n.c,e.c),o=ae(n.l,e.l),a=ae(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=o(t),n.opacity=a(t),n+\"\"}}}var Ye=Be(ie),Fe=Be(ae);function Ie(t){return function n(e){function r(n,r){var i=t((n=Qn(n)).h,(r=Qn(r)).h),o=ae(n.s,r.s),a=ae(n.l,r.l),u=ae(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=o(t),n.l=a(Math.pow(t,e)),n.opacity=u(t),n+\"\"}}return e=+e,r.gamma=n,r}(1)}var je=Ie(ie),He=Ie(ae);var Xe,Ge,Ve=0,$e=0,We=0,Ze=1e3,Qe=0,Je=0,Ke=0,tr=\"object\"==typeof performance&&performance.now?performance:Date,nr=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function er(){return Je||(nr(rr),Je=tr.now()+Ke)}function rr(){Je=0}function ir(){this._call=this._time=this._next=null}function or(t,n,e){var r=new ir;return r.restart(t,n,e),r}function ar(){er(),++Ve;for(var t,n=Xe;n;)(t=Je-n._time)>=0&&n._call.call(null,t),n=n._next;--Ve}function ur(){Je=(Qe=tr.now())+Ke,Ve=$e=0;try{ar()}finally{Ve=0,function(){var t,n,e=Xe,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Xe=n);Ge=t,fr(r)}(),Je=0}}function cr(){var t=tr.now(),n=t-Qe;n>Ze&&(Ke-=n,Qe=t)}function fr(t){Ve||($e&&($e=clearTimeout($e)),t-Je>24?(t<1/0&&($e=setTimeout(ur,t-tr.now()-Ke)),We&&(We=clearInterval(We))):(We||(Qe=tr.now(),We=setInterval(cr,Ze)),Ve=1,nr(ur)))}function sr(t,n,e){var r=new ir;return n=null==n?0:+n,r.restart(function(e){r.stop(),t(e+n)},n,e),r}ir.prototype=or.prototype={constructor:ir,restart:function(t,n,e){if(\"function\"!=typeof t)throw new TypeError(\"callback is not a function\");e=(null==e?er():+e)+(null==n?0:+n),this._next||Ge===this||(Ge?Ge._next=this:Xe=this,Ge=this),this._call=t,this._time=e,fr()},stop:function(){this._call&&(this._call=null,this._time=1/0,fr())}};var lr=I(\"start\",\"end\",\"cancel\",\"interrupt\"),hr=[],dr=0,pr=1,vr=2,gr=3,yr=4,_r=5,br=6;function mr(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(c){var f,s,l,h;if(e.state!==pr)return u();for(f in i)if((h=i[f]).name===e.name){if(h.state===gr)return sr(o);h.state===yr?(h.state=br,h.timer.stop(),h.on.call(\"interrupt\",t,t.__data__,h.index,h.group),delete i[f]):+f<n&&(h.state=br,h.timer.stop(),h.on.call(\"cancel\",t,t.__data__,h.index,h.group),delete i[f])}if(sr(function(){e.state===gr&&(e.state=yr,e.timer.restart(a,e.delay,e.time),a(c))}),e.state=vr,e.on.call(\"start\",t,t.__data__,e.index,e.group),e.state===vr){for(e.state=gr,r=new Array(l=e.tween.length),f=0,s=-1;f<l;++f)(h=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(r[++s]=h);r.length=s+1}}function a(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(u),e.state=_r,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);e.state===_r&&(e.on.call(\"end\",t,t.__data__,e.index,e.group),u())}function u(){for(var r in e.state=br,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=or(function(t){e.state=pr,e.timer.restart(o,e.delay,e.time),e.delay<=t&&o(t-e.delay)},0,e.time)}(t,e,{name:n,index:r,group:i,on:lr,tween:hr,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:dr})}function xr(t,n){var e=Mr(t,n);if(e.state>dr)throw new Error(\"too late; already scheduled\");return e}function wr(t,n){var e=Mr(t,n);if(e.state>gr)throw new Error(\"too late; already running\");return e}function Mr(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error(\"transition not found\");return e}function Nr(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+\"\",o)(e=o[i]).name===n?(r=e.state>vr&&e.state<_r,e.state=br,e.timer.stop(),e.on.call(r?\"interrupt\":\"cancel\",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}function Ar(t,n,e){var r=t._id;return t.each(function(){var t=wr(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)}),function(t){return Mr(t,r).value[n]}}function Tr(t,n){var e;return(\"number\"==typeof n?de:n instanceof hn?ue:(e=hn(n))?(n=e,ue):ye)(t,n)}var Sr=Pt.prototype.constructor;function kr(t){return function(){this.style.removeProperty(t)}}var Er=0;function Cr(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Pr(t){return Pt().transition(t)}function zr(){return++Er}var Rr=Pt.prototype;function Dr(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function qr(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}Cr.prototype=Pr.prototype={constructor:Cr,select:function(t){var n=this._name,e=this._id;\"function\"!=typeof t&&(t=Q(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a<i;++a)for(var u,c,f=r[a],s=f.length,l=o[a]=new Array(s),h=0;h<s;++h)(u=f[h])&&(c=t.call(u,u.__data__,h,f))&&(\"__data__\"in u&&(c.__data__=u.__data__),l[h]=c,mr(l[h],n,e,h,l,Mr(u,e)));return new Cr(o,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;\"function\"!=typeof t&&(t=K(t));for(var r=this._groups,i=r.length,o=[],a=[],u=0;u<i;++u)for(var c,f=r[u],s=f.length,l=0;l<s;++l)if(c=f[l]){for(var h,d=t.call(c,c.__data__,l,f),p=Mr(c,e),v=0,g=d.length;v<g;++v)(h=d[v])&&mr(h,n,e,v,d,p);o.push(d),a.push(c)}return new Cr(o,a,n,e)},filter:function(t){\"function\"!=typeof t&&(t=tt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Cr(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new Cr(a,this._parents,this._name,this._id)},selection:function(){return new Sr(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=zr(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)if(a=u[f]){var s=Mr(a,n);mr(a,t,e,f,u,{time:s.time+s.delay+s.duration,delay:0,duration:s.duration,ease:s.ease})}return new Cr(r,this._parents,t,e)},call:Rr.call,nodes:Rr.nodes,node:Rr.node,size:Rr.size,empty:Rr.empty,each:Rr.each,on:function(t,n){var e=this._id;return arguments.length<2?Mr(this.node(),e).on.on(t):this.each(function(t,n,e){var r,i,o=function(t){return(t+\"\").trim().split(/^|\\s+/).every(function(t){var n=t.indexOf(\".\");return n>=0&&(t=t.slice(0,n)),!t||\"start\"===t})}(n)?xr:wr;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=$(t),r=\"transform\"===e?Ee:Tr;return this.attrTween(t,\"function\"==typeof n?(e.local?function(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+\"\")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttributeNS(t.space,t.local)}}:function(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+\"\")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttribute(t)}})(e,r,Ar(this,\"attr.\"+t,n)):null==n?(e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(e):(e.local?function(t,n,e){var r,i,o=e+\"\";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}:function(t,n,e){var r,i,o=e+\"\";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}})(e,r,n))},attrTween:function(t,n){var e=\"attr.\"+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if(\"function\"!=typeof n)throw new Error;var r=$(t);return this.tween(e,(r.local?function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n(e))}}(t,i)),e}return i._value=n,i}:function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n(e))}}(t,i)),e}return i._value=n,i})(r,n))},style:function(t,n,e){var r=\"transform\"==(t+=\"\")?ke:Tr;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=ct(this,t),a=(this.style.removeProperty(t),ct(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on(\"end.style.\"+t,kr(t)):\"function\"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=ct(this,t),u=e(this),c=u+\"\";return null==u&&(this.style.removeProperty(t),c=u=ct(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,Ar(this,\"style.\"+t,n))).each(function(t,n){var e,r,i,o,a=\"style.\"+n,u=\"end.\"+a;return function(){var c=wr(this,t),f=c.on,s=null==c.value[a]?o||(o=kr(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+\"\";return function(){var a=ct(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on(\"end.style.\"+t,null)},styleTween:function(t,n,e){var r=\"style.\"+(t+=\"\");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if(\"function\"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n(r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?\"\":e))},text:function(t){return this.tween(\"text\",\"function\"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?\"\":n}}(Ar(this,\"text\",t)):function(t){return function(){this.textContent=t}}(null==t?\"\":t+\"\"))},remove:function(){return this.on(\"end.remove\",(t=this._id,function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}));var t},tween:function(t,n){var e=this._id;if(t+=\"\",arguments.length<2){for(var r,i=Mr(this.node(),e).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?function(t,n){var e,r;return function(){var i=wr(this,t),o=i.tween;if(o!==e)for(var a=0,u=(r=e=o).length;a<u;++a)if(r[a].name===n){(r=r.slice()).splice(a,1);break}i.tween=r}}:function(t,n,e){var r,i;if(\"function\"!=typeof e)throw new Error;return function(){var o=wr(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var u={name:n,value:e},c=0,f=i.length;c<f;++c)if(i[c].name===n){i[c]=u;break}c===f&&i.push(u)}o.tween=i}})(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each((\"function\"==typeof t?function(t,n){return function(){xr(this,t).delay=+n.apply(this,arguments)}}:function(t,n){return n=+n,function(){xr(this,t).delay=n}})(n,t)):Mr(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each((\"function\"==typeof t?function(t,n){return function(){wr(this,t).duration=+n.apply(this,arguments)}}:function(t,n){return n=+n,function(){wr(this,t).duration=n}})(n,t)):Mr(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(function(t,n){if(\"function\"!=typeof n)throw new Error;return function(){wr(this,t).ease=n}}(n,t)):Mr(this.node(),n).ease},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(o,a){var u={value:a},c={value:function(){0==--i&&o()}};e.each(function(){var e=wr(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(u),n._.interrupt.push(u),n._.end.push(c)),e.on=n})})}};var Lr=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),Ur=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),Or=function t(n){function e(t){return((t*=2)<=1?Math.pow(t,n):2-Math.pow(2-t,n))/2}return n=+n,e.exponent=t,e}(3),Br=Math.PI,Yr=Br/2;function Fr(t){return(1-Math.cos(Br*t))/2}function Ir(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function jr(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var Hr=4/11,Xr=6/11,Gr=8/11,Vr=.75,$r=9/11,Wr=10/11,Zr=.9375,Qr=21/22,Jr=63/64,Kr=1/Hr/Hr;function ti(t){return(t=+t)<Hr?Kr*t*t:t<Gr?Kr*(t-=Xr)*t+Vr:t<Wr?Kr*(t-=$r)*t+Zr:Kr*(t-=Qr)*t+Jr}var ni=function t(n){function e(t){return t*t*((n+1)*t-n)}return n=+n,e.overshoot=t,e}(1.70158),ei=function t(n){function e(t){return--t*t*((n+1)*t+n)+1}return n=+n,e.overshoot=t,e}(1.70158),ri=function t(n){function e(t){return((t*=2)<1?t*t*((n+1)*t-n):(t-=2)*t*((n+1)*t+n)+2)/2}return n=+n,e.overshoot=t,e}(1.70158),ii=2*Math.PI,oi=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=ii);function i(t){return n*Math.pow(2,10*--t)*Math.sin((r-t)/e)}return i.amplitude=function(n){return t(n,e*ii)},i.period=function(e){return t(n,e)},i}(1,.3),ai=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=ii);function i(t){return 1-n*Math.pow(2,-10*(t=+t))*Math.sin((t+r)/e)}return i.amplitude=function(n){return t(n,e*ii)},i.period=function(e){return t(n,e)},i}(1,.3),ui=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=ii);function i(t){return((t=2*t-1)<0?n*Math.pow(2,10*t)*Math.sin((r-t)/e):2-n*Math.pow(2,-10*t)*Math.sin((r+t)/e))/2}return i.amplitude=function(n){return t(n,e*ii)},i.period=function(e){return t(n,e)},i}(1,.3),ci={time:null,delay:0,duration:250,ease:qr};function fi(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return ci.time=er(),ci;return e}Pt.prototype.interrupt=function(t){return this.each(function(){Nr(this,t)})},Pt.prototype.transition=function(t){var n,e;t instanceof Cr?(n=t._id,t=t._name):(n=zr(),(e=ci).time=er(),t=null==t?null:t+\"\");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)(a=u[f])&&mr(a,t,n,f,u,e||fi(a,n));return new Cr(r,this._parents,t,n)};var si=[null];function li(t){return function(){return t}}function hi(t,n,e){this.target=t,this.type=n,this.selection=e}function di(){t.event.stopImmediatePropagation()}function pi(){t.event.preventDefault(),t.event.stopImmediatePropagation()}var vi={name:\"drag\"},gi={name:\"space\"},yi={name:\"handle\"},_i={name:\"center\"},bi={name:\"x\",handles:[\"e\",\"w\"].map(Si),input:function(t,n){return t&&[[t[0],n[0][1]],[t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},mi={name:\"y\",handles:[\"n\",\"s\"].map(Si),input:function(t,n){return t&&[[n[0][0],t[0]],[n[1][0],t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},xi={name:\"xy\",handles:[\"n\",\"e\",\"s\",\"w\",\"nw\",\"ne\",\"se\",\"sw\"].map(Si),input:function(t){return t},output:function(t){return t}},wi={overlay:\"crosshair\",selection:\"move\",n:\"ns-resize\",e:\"ew-resize\",s:\"ns-resize\",w:\"ew-resize\",nw:\"nwse-resize\",ne:\"nesw-resize\",se:\"nwse-resize\",sw:\"nesw-resize\"},Mi={e:\"w\",w:\"e\",nw:\"ne\",ne:\"nw\",se:\"sw\",sw:\"se\"},Ni={n:\"s\",s:\"n\",nw:\"sw\",ne:\"se\",se:\"ne\",sw:\"nw\"},Ai={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},Ti={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function Si(t){return{type:t}}function ki(){return!t.event.button}function Ei(){var t=this.ownerSVGElement||this;return[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Ci(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Pi(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function zi(n){var e,r=Ei,i=ki,o=I(u,\"start\",\"brush\",\"end\"),a=6;function u(t){var e=t.property(\"__brush\",h).selectAll(\".overlay\").data([Si(\"overlay\")]);e.enter().append(\"rect\").attr(\"class\",\"overlay\").attr(\"pointer-events\",\"all\").attr(\"cursor\",wi.overlay).merge(e).each(function(){var t=Ci(this).extent;zt(this).attr(\"x\",t[0][0]).attr(\"y\",t[0][1]).attr(\"width\",t[1][0]-t[0][0]).attr(\"height\",t[1][1]-t[0][1])}),t.selectAll(\".selection\").data([Si(\"selection\")]).enter().append(\"rect\").attr(\"class\",\"selection\").attr(\"cursor\",wi.selection).attr(\"fill\",\"#777\").attr(\"fill-opacity\",.3).attr(\"stroke\",\"#fff\").attr(\"shape-rendering\",\"crispEdges\");var r=t.selectAll(\".handle\").data(n.handles,function(t){return t.type});r.exit().remove(),r.enter().append(\"rect\").attr(\"class\",function(t){return\"handle handle--\"+t.type}).attr(\"cursor\",function(t){return wi[t.type]}),t.each(c).attr(\"fill\",\"none\").attr(\"pointer-events\",\"all\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\").on(\"mousedown.brush touchstart.brush\",l)}function c(){var t=zt(this),n=Ci(this).selection;n?(t.selectAll(\".selection\").style(\"display\",null).attr(\"x\",n[0][0]).attr(\"y\",n[0][1]).attr(\"width\",n[1][0]-n[0][0]).attr(\"height\",n[1][1]-n[0][1]),t.selectAll(\".handle\").style(\"display\",null).attr(\"x\",function(t){return\"e\"===t.type[t.type.length-1]?n[1][0]-a/2:n[0][0]-a/2}).attr(\"y\",function(t){return\"s\"===t.type[0]?n[1][1]-a/2:n[0][1]-a/2}).attr(\"width\",function(t){return\"n\"===t.type||\"s\"===t.type?n[1][0]-n[0][0]+a:a}).attr(\"height\",function(t){return\"e\"===t.type||\"w\"===t.type?n[1][1]-n[0][1]+a:a})):t.selectAll(\".selection,.handle\").style(\"display\",\"none\").attr(\"x\",null).attr(\"y\",null).attr(\"width\",null).attr(\"height\",null)}function f(t,n){return t.__brush.emitter||new s(t,n)}function s(t,n){this.that=t,this.args=n,this.state=t.__brush,this.active=0}function l(){if(t.event.touches){if(t.event.changedTouches.length<t.event.touches.length)return pi()}else if(e)return;if(i.apply(this,arguments)){var r,o,a,u,s,l,h,d,p,v,g,y,_,b=this,m=t.event.target.__data__.type,x=\"selection\"===(t.event.metaKey?m=\"overlay\":m)?vi:t.event.altKey?_i:yi,w=n===mi?null:Ai[m],M=n===bi?null:Ti[m],N=Ci(b),A=N.extent,T=N.selection,S=A[0][0],k=A[0][1],E=A[1][0],C=A[1][1],P=w&&M&&t.event.shiftKey,z=Ot(b),R=z,D=f(b,arguments).beforestart();\"overlay\"===m?N.selection=T=[[r=n===mi?S:z[0],a=n===bi?k:z[1]],[s=n===mi?E:r,h=n===bi?C:a]]:(r=T[0][0],a=T[0][1],s=T[1][0],h=T[1][1]),o=r,u=a,l=s,d=h;var q=zt(b).attr(\"pointer-events\",\"none\"),L=q.selectAll(\".overlay\").attr(\"cursor\",wi[m]);if(t.event.touches)q.on(\"touchmove.brush\",O,!0).on(\"touchend.brush touchcancel.brush\",Y,!0);else{var U=zt(t.event.view).on(\"keydown.brush\",function(){switch(t.event.keyCode){case 16:P=w&&M;break;case 18:x===yi&&(w&&(s=l-p*w,r=o+p*w),M&&(h=d-v*M,a=u+v*M),x=_i,B());break;case 32:x!==yi&&x!==_i||(w<0?s=l-p:w>0&&(r=o-p),M<0?h=d-v:M>0&&(a=u-v),x=gi,L.attr(\"cursor\",wi.selection),B());break;default:return}pi()},!0).on(\"keyup.brush\",function(){switch(t.event.keyCode){case 16:P&&(y=_=P=!1,B());break;case 18:x===_i&&(w<0?s=l:w>0&&(r=o),M<0?h=d:M>0&&(a=u),x=yi,B());break;case 32:x===gi&&(t.event.altKey?(w&&(s=l-p*w,r=o+p*w),M&&(h=d-v*M,a=u+v*M),x=_i):(w<0?s=l:w>0&&(r=o),M<0?h=d:M>0&&(a=u),x=yi),L.attr(\"cursor\",wi[m]),B());break;default:return}pi()},!0).on(\"mousemove.brush\",O,!0).on(\"mouseup.brush\",Y,!0);It(t.event.view)}di(),Nr(b),c.call(b),D.start()}function O(){var t=Ot(b);!P||y||_||(Math.abs(t[0]-R[0])>Math.abs(t[1]-R[1])?_=!0:y=!0),R=t,g=!0,pi(),B()}function B(){var t;switch(p=R[0]-z[0],v=R[1]-z[1],x){case gi:case vi:w&&(p=Math.max(S-r,Math.min(E-s,p)),o=r+p,l=s+p),M&&(v=Math.max(k-a,Math.min(C-h,v)),u=a+v,d=h+v);break;case yi:w<0?(p=Math.max(S-r,Math.min(E-r,p)),o=r+p,l=s):w>0&&(p=Math.max(S-s,Math.min(E-s,p)),o=r,l=s+p),M<0?(v=Math.max(k-a,Math.min(C-a,v)),u=a+v,d=h):M>0&&(v=Math.max(k-h,Math.min(C-h,v)),u=a,d=h+v);break;case _i:w&&(o=Math.max(S,Math.min(E,r-p*w)),l=Math.max(S,Math.min(E,s+p*w))),M&&(u=Math.max(k,Math.min(C,a-v*M)),d=Math.max(k,Math.min(C,h+v*M)))}l<o&&(w*=-1,t=r,r=s,s=t,t=o,o=l,l=t,m in Mi&&L.attr(\"cursor\",wi[m=Mi[m]])),d<u&&(M*=-1,t=a,a=h,h=t,t=u,u=d,d=t,m in Ni&&L.attr(\"cursor\",wi[m=Ni[m]])),N.selection&&(T=N.selection),y&&(o=T[0][0],l=T[1][0]),_&&(u=T[0][1],d=T[1][1]),T[0][0]===o&&T[0][1]===u&&T[1][0]===l&&T[1][1]===d||(N.selection=[[o,u],[l,d]],c.call(b),D.brush())}function Y(){if(di(),t.event.touches){if(t.event.touches.length)return;e&&clearTimeout(e),e=setTimeout(function(){e=null},500),q.on(\"touchmove.brush touchend.brush touchcancel.brush\",null)}else jt(t.event.view,g),U.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\",null);q.attr(\"pointer-events\",\"all\"),L.attr(\"cursor\",wi.overlay),N.selection&&(T=N.selection),Pi(T)&&(N.selection=null,c.call(b)),D.end()}}function h(){var t=this.__brush||{selection:null};return t.extent=r.apply(this,arguments),t.dim=n,t}return u.move=function(t,e){t.selection?t.on(\"start.brush\",function(){f(this,arguments).beforestart().start()}).on(\"interrupt.brush end.brush\",function(){f(this,arguments).end()}).tween(\"brush\",function(){var t=this,r=t.__brush,i=f(t,arguments),o=r.selection,a=n.input(\"function\"==typeof e?e.apply(this,arguments):e,r.extent),u=_e(o,a);function s(n){r.selection=1===n&&Pi(a)?null:u(n),c.call(t),i.brush()}return o&&a?s:s(1)}):t.each(function(){var t=arguments,r=this.__brush,i=n.input(\"function\"==typeof e?e.apply(this,t):e,r.extent),o=f(this,t).beforestart();Nr(this),r.selection=null==i||Pi(i)?null:i,c.call(this),o.start().brush().end()})},s.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting&&(this.starting=!1,this.emit(\"start\")),this},brush:function(){return this.emit(\"brush\"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit(\"end\")),this},emit:function(t){St(new hi(u,t,n.output(this.state.selection)),o.apply,o,[t,this.that,this.args])}},u.extent=function(t){return arguments.length?(r=\"function\"==typeof t?t:li([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),u):r},u.filter=function(t){return arguments.length?(i=\"function\"==typeof t?t:li(!!t),u):i},u.handleSize=function(t){return arguments.length?(a=+t,u):a},u.on=function(){var t=o.on.apply(o,arguments);return t===o?u:t},u}var Ri=Math.cos,Di=Math.sin,qi=Math.PI,Li=qi/2,Ui=2*qi,Oi=Math.max;var Bi=Array.prototype.slice;function Yi(t){return function(){return t}}var Fi=Math.PI,Ii=2*Fi,ji=Ii-1e-6;function Hi(){this._x0=this._y0=this._x1=this._y1=null,this._=\"\"}function Xi(){return new Hi}function Gi(t){return t.source}function Vi(t){return t.target}function $i(t){return t.radius}function Wi(t){return t.startAngle}function Zi(t){return t.endAngle}Hi.prototype=Xi.prototype={constructor:Hi,moveTo:function(t,n){this._+=\"M\"+(this._x0=this._x1=+t)+\",\"+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+=\"Z\")},lineTo:function(t,n){this._+=\"L\"+(this._x1=+t)+\",\"+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+=\"Q\"+ +t+\",\"+ +n+\",\"+(this._x1=+e)+\",\"+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,o){this._+=\"C\"+ +t+\",\"+ +n+\",\"+ +e+\",\"+ +r+\",\"+(this._x1=+i)+\",\"+(this._y1=+o)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var o=this._x1,a=this._y1,u=e-t,c=r-n,f=o-t,s=a-n,l=f*f+s*s;if(i<0)throw new Error(\"negative radius: \"+i);if(null===this._x1)this._+=\"M\"+(this._x1=t)+\",\"+(this._y1=n);else if(l>1e-6)if(Math.abs(s*u-c*f)>1e-6&&i){var h=e-o,d=r-a,p=u*u+c*c,v=h*h+d*d,g=Math.sqrt(p),y=Math.sqrt(l),_=i*Math.tan((Fi-Math.acos((p+l-v)/(2*g*y)))/2),b=_/y,m=_/g;Math.abs(b-1)>1e-6&&(this._+=\"L\"+(t+b*f)+\",\"+(n+b*s)),this._+=\"A\"+i+\",\"+i+\",0,0,\"+ +(s*h>f*d)+\",\"+(this._x1=t+m*u)+\",\"+(this._y1=n+m*c)}else this._+=\"L\"+(this._x1=t)+\",\"+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n;var a=(e=+e)*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;if(e<0)throw new Error(\"negative radius: \"+e);null===this._x1?this._+=\"M\"+c+\",\"+f:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-f)>1e-6)&&(this._+=\"L\"+c+\",\"+f),e&&(l<0&&(l=l%Ii+Ii),l>ji?this._+=\"A\"+e+\",\"+e+\",0,1,\"+s+\",\"+(t-a)+\",\"+(n-u)+\"A\"+e+\",\"+e+\",0,1,\"+s+\",\"+(this._x1=c)+\",\"+(this._y1=f):l>1e-6&&(this._+=\"A\"+e+\",\"+e+\",0,\"+ +(l>=Fi)+\",\"+s+\",\"+(this._x1=t+e*Math.cos(i))+\",\"+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+=\"M\"+(this._x0=this._x1=+t)+\",\"+(this._y0=this._y1=+n)+\"h\"+ +e+\"v\"+ +r+\"h\"+-e+\"Z\"},toString:function(){return this._}};function Qi(){}function Ji(t,n){var e=new Qi;if(t instanceof Qi)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i<o;)e.set(i,t[i]);else for(;++i<o;)e.set(n(r=t[i],i,t),r)}else if(t)for(var a in t)e.set(a,t[a]);return e}function Ki(){return{}}function to(t,n,e){t[n]=e}function no(){return Ji()}function eo(t,n,e){t.set(n,e)}function ro(){}Qi.prototype=Ji.prototype={constructor:Qi,has:function(t){return\"$\"+t in this},get:function(t){return this[\"$\"+t]},set:function(t,n){return this[\"$\"+t]=n,this},remove:function(t){var n=\"$\"+t;return n in this&&delete this[n]},clear:function(){for(var t in this)\"$\"===t[0]&&delete this[t]},keys:function(){var t=[];for(var n in this)\"$\"===n[0]&&t.push(n.slice(1));return t},values:function(){var t=[];for(var n in this)\"$\"===n[0]&&t.push(this[n]);return t},entries:function(){var t=[];for(var n in this)\"$\"===n[0]&&t.push({key:n.slice(1),value:this[n]});return t},size:function(){var t=0;for(var n in this)\"$\"===n[0]&&++t;return t},empty:function(){for(var t in this)if(\"$\"===t[0])return!1;return!0},each:function(t){for(var n in this)\"$\"===n[0]&&t(this[n],n.slice(1),this)}};var io=Ji.prototype;function oo(t,n){var e=new ro;if(t instanceof ro)t.each(function(t){e.add(t)});else if(t){var r=-1,i=t.length;if(null==n)for(;++r<i;)e.add(t[r]);else for(;++r<i;)e.add(n(t[r],r,t))}return e}ro.prototype=oo.prototype={constructor:ro,has:io.has,add:function(t){return this[\"$\"+(t+=\"\")]=t,this},remove:io.remove,clear:io.clear,values:io.keys,size:io.size,empty:io.empty,each:io.each};var ao=Array.prototype.slice;function uo(t,n){return t-n}function co(t){return function(){return t}}function fo(t,n){for(var e,r=-1,i=n.length;++r<i;)if(e=so(t,n[r]))return e;return 0}function so(t,n){for(var e=n[0],r=n[1],i=-1,o=0,a=t.length,u=a-1;o<a;u=o++){var c=t[o],f=c[0],s=c[1],l=t[u],h=l[0],d=l[1];if(lo(c,l,n))return 0;s>r!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function lo(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function ho(){}var po=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function vo(){var t=1,n=1,e=M,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(uo);else{var r=s(t),i=r[0],a=r[1];n=w(i,a,n),n=g(Math.floor(i/n)*n,Math.floor(a/n)*n,n)}return n.map(function(n){return o(t,n)})}function o(e,i){var o=[],u=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=e[0]>=r,po[f<<1].forEach(p);for(;++o<t-1;)c=f,f=e[o+1]>=r,po[c|f<<1].forEach(p);po[f<<0].forEach(p);for(;++u<n-1;){for(o=-1,f=e[u*t+t]>=r,s=e[u*t]>=r,po[f<<1|s<<2].forEach(p);++o<t-1;)c=f,f=e[u*t+t+o+1]>=r,l=s,s=e[u*t+o+1]>=r,po[c|f<<1|s<<2|l<<3].forEach(p);po[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,po[s<<2].forEach(p);for(;++o<t-1;)l=s,s=e[u*t+o+1]>=r,po[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}po[s<<3].forEach(p)}(e,i,function(t){r(t,e,i),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n<e;)r+=t[n-1][1]*t[n][0]-t[n-1][0]*t[n][1];return r}(t)>0?o.push([t]):u.push(t)}),u.forEach(function(t){for(var n,e=0,r=o.length;e<r;++e)if(-1!==fo((n=o[e])[0],t))return void n.push(t)}),{type:\"MultiPolygon\",value:i,coordinates:o}}function a(n){return 2*n[0]+n[1]*(t+1)*4}function u(e,r,i){e.forEach(function(e){var o,a=e[0],u=e[1],c=0|a,f=0|u,s=r[f*t+c];a>0&&a<t&&c===a&&(o=r[f*t+c-1],e[0]=a+(i-o)/(s-o)-.5),u>0&&u<n&&f===u&&(o=r[(f-1)*t+c],e[1]=u+(i-o)/(s-o)-.5)})}return i.contour=o,i.size=function(e){if(!arguments.length)return[t,n];var r=Math.ceil(e[0]),o=Math.ceil(e[1]);if(!(r>0&&o>0))throw new Error(\"invalid size\");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e=\"function\"==typeof t?t:Array.isArray(t)?co(ao.call(t)):co(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:ho,i):r===u},i}function go(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a<i;++a)for(var u=0,c=0;u<r+e;++u)u<r&&(c+=t.data[u+a*r]),u>=e&&(u>=o&&(c-=t.data[u-o+a*r]),n.data[u-e+a*r]=c/Math.min(u+1,r-1+o-u,o))}function yo(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a<r;++a)for(var u=0,c=0;u<i+e;++u)u<i&&(c+=t.data[a+u*r]),u>=e&&(u>=o&&(c-=t.data[a+(u-o)*r]),n.data[a+(u-e)*r]=c/Math.min(u+1,i-1+o-u,o))}function _o(t){return t[0]}function bo(t){return t[1]}function mo(){return 1}var xo={},wo={},Mo=34,No=10,Ao=13;function To(t){return new Function(\"d\",\"return {\"+t.map(function(t,n){return JSON.stringify(t)+\": d[\"+n+\"]\"}).join(\",\")+\"}\")}function So(t){var n=Object.create(null),e=[];return t.forEach(function(t){for(var r in t)r in n||e.push(n[r]=r)}),e}function ko(t,n){var e=t+\"\",r=e.length;return r<n?new Array(n-r+1).join(0)+e:e}function Eo(t){var n,e=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),o=t.getUTCMilliseconds();return isNaN(t)?\"Invalid Date\":((n=t.getUTCFullYear())<0?\"-\"+ko(-n,6):n>9999?\"+\"+ko(n,6):ko(n,4))+\"-\"+ko(t.getUTCMonth()+1,2)+\"-\"+ko(t.getUTCDate(),2)+(o?\"T\"+ko(e,2)+\":\"+ko(r,2)+\":\"+ko(i,2)+\".\"+ko(o,3)+\"Z\":i?\"T\"+ko(e,2)+\":\"+ko(r,2)+\":\"+ko(i,2)+\"Z\":r||e?\"T\"+ko(e,2)+\":\"+ko(r,2)+\"Z\":\"\")}function Co(t){var n=new RegExp('[\"'+t+\"\\n\\r]\"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return wo;if(f)return f=!1,xo;var n,r,i=a;if(t.charCodeAt(i)===Mo){for(;a++<o&&t.charCodeAt(a)!==Mo||t.charCodeAt(++a)===Mo;);return(n=a)>=o?c=!0:(r=t.charCodeAt(a++))===No?f=!0:r===Ao&&(f=!0,t.charCodeAt(a)===No&&++a),t.slice(i+1,n-1).replace(/\"\"/g,'\"')}for(;a<o;){if((r=t.charCodeAt(n=a++))===No)f=!0;else if(r===Ao)f=!0,t.charCodeAt(a)===No&&++a;else if(r!==e)continue;return t.slice(i,n)}return c=!0,t.slice(i,o)}for(t.charCodeAt(o-1)===No&&--o,t.charCodeAt(o-1)===Ao&&--o;(r=s())!==wo;){for(var l=[];r!==xo&&r!==wo;)l.push(r),r=s();n&&null==(l=n(l,u++))||i.push(l)}return i}function i(n,e){return n.map(function(n){return e.map(function(t){return a(n[t])}).join(t)})}function o(n){return n.map(a).join(t)}function a(t){return null==t?\"\":t instanceof Date?Eo(t):n.test(t+=\"\")?'\"'+t.replace(/\"/g,'\"\"')+'\"':t}return{parse:function(t,n){var e,i,o=r(t,function(t,r){if(e)return e(t,r-1);i=t,e=n?function(t,n){var e=To(t);return function(r,i){return n(e(r),i,t)}}(t,n):To(t)});return o.columns=i||[],o},parseRows:r,format:function(n,e){return null==e&&(e=So(n)),[e.map(a).join(t)].concat(i(n,e)).join(\"\\n\")},formatBody:function(t,n){return null==n&&(n=So(t)),i(t,n).join(\"\\n\")},formatRows:function(t){return t.map(o).join(\"\\n\")}}}var Po=Co(\",\"),zo=Po.parse,Ro=Po.parseRows,Do=Po.format,qo=Po.formatBody,Lo=Po.formatRows,Uo=Co(\"\\t\"),Oo=Uo.parse,Bo=Uo.parseRows,Yo=Uo.format,Fo=Uo.formatBody,Io=Uo.formatRows;function jo(t){if(!t.ok)throw new Error(t.status+\" \"+t.statusText);return t.blob()}function Ho(t){if(!t.ok)throw new Error(t.status+\" \"+t.statusText);return t.arrayBuffer()}function Xo(t){if(!t.ok)throw new Error(t.status+\" \"+t.statusText);return t.text()}function Go(t,n){return fetch(t,n).then(Xo)}function Vo(t){return function(n,e,r){return 2===arguments.length&&\"function\"==typeof e&&(r=e,e=void 0),Go(n,e).then(function(n){return t(n,r)})}}var $o=Vo(zo),Wo=Vo(Oo);function Zo(t){if(!t.ok)throw new Error(t.status+\" \"+t.statusText);return t.json()}function Qo(t){return function(n,e){return Go(n,e).then(function(n){return(new DOMParser).parseFromString(n,t)})}}var Jo=Qo(\"application/xml\"),Ko=Qo(\"text/html\"),ta=Qo(\"image/svg+xml\");function na(t){return function(){return t}}function ea(){return 1e-6*(Math.random()-.5)}function ra(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,a,u,c,f,s,l,h,d=t._root,p={data:r},v=t._x0,g=t._y0,y=t._x1,_=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(o=(v+y)/2))?v=o:y=o,(s=e>=(a=(g+_)/2))?g=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(v+y)/2))?v=o:y=o,(s=e>=(a=(g+_)/2))?g=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function ia(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function oa(t){return t[0]}function aa(t){return t[1]}function ua(t,n,e){var r=new ca(null==n?oa:n,null==e?aa:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function ca(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function fa(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var sa=ua.prototype=ca.prototype;function la(t){return t.x+t.vx}function ha(t){return t.y+t.vy}function da(t){return t.index}function pa(t,n){var e=t.get(n);if(!e)throw new Error(\"missing: \"+n);return e}function va(t){return t.x}function ga(t){return t.y}sa.copy=function(){var t,n,e=new ca(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=fa(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=fa(n));return e},sa.add=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return ra(this.cover(n,e),n,e,t)},sa.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;e<o;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(a[e]=r,u[e]=i,r<c&&(c=r),r>s&&(s=r),i<f&&(f=i),i>l&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;e<o;++e)ra(this,a[e],u[e],t[e]);return this},sa.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{for(var a,u,c=i-e,f=this._root;e>t||t>=i||r>n||n>=o;)switch(u=(n<r)<<1|t<e,(a=new Array(4))[u]=f,f=a,c*=2,u){case 0:i=e+c,o=r+c;break;case 1:e=i-c,o=r+c;break;case 2:i=e+c,r=o-c;break;case 3:e=i-c,r=o-c}this._root&&this._root.length&&(this._root=f)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},sa.data=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},sa.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},sa.find=function(t,n,e){var r,i,o,a,u,c,f,s=this._x0,l=this._y0,h=this._x1,d=this._y1,p=[],v=this._root;for(v&&p.push(new ia(v,s,l,h,d)),null==e?e=1/0:(s=t-e,l=n-e,h=t+e,d=n+e,e*=e);c=p.pop();)if(!(!(v=c.node)||(i=c.x0)>h||(o=c.y0)>d||(a=c.x1)<s||(u=c.y1)<l))if(v.length){var g=(i+a)/2,y=(o+u)/2;p.push(new ia(v[3],g,y,a,u),new ia(v[2],i,y,g,u),new ia(v[1],g,o,a,y),new ia(v[0],i,o,g,y)),(f=(n>=y)<<1|t>=g)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,v.data),b=n-+this._y.call(null,v.data),m=_*_+b*b;if(m<e){var x=Math.sqrt(e=m);s=t-x,l=n-x,h=t+x,d=n+x,r=v.data}}return r},sa.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var n,e,r,i,o,a,u,c,f,s,l,h,d=this._root,p=this._x0,v=this._y0,g=this._x1,y=this._y1;if(!d)return this;if(d.length)for(;;){if((f=o>=(u=(p+g)/2))?p=u:g=u,(s=a>=(c=(v+y)/2))?v=c:y=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},sa.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},sa.root=function(){return this._root},sa.size=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t},sa.visit=function(t){var n,e,r,i,o,a,u=[],c=this._root;for(c&&u.push(new ia(c,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,a=n.y1)&&c.length){var f=(r+o)/2,s=(i+a)/2;(e=c[3])&&u.push(new ia(e,f,s,o,a)),(e=c[2])&&u.push(new ia(e,r,s,f,a)),(e=c[1])&&u.push(new ia(e,f,i,o,s)),(e=c[0])&&u.push(new ia(e,r,i,f,s))}return this},sa.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new ia(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,a=n.x0,u=n.y0,c=n.x1,f=n.y1,s=(a+c)/2,l=(u+f)/2;(o=i[0])&&e.push(new ia(o,a,u,s,l)),(o=i[1])&&e.push(new ia(o,s,u,c,l)),(o=i[2])&&e.push(new ia(o,a,l,s,f)),(o=i[3])&&e.push(new ia(o,s,l,c,f))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},sa.x=function(t){return arguments.length?(this._x=t,this):this._x},sa.y=function(t){return arguments.length?(this._y=t,this):this._y};var ya=10,_a=Math.PI*(3-Math.sqrt(5));function ba(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf(\"e\"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function ma(t){return(t=ba(Math.abs(t)))?t[1]:NaN}var xa,wa=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function Ma(t){return new Na(t)}function Na(t){if(!(n=wa.exec(t)))throw new Error(\"invalid format: \"+t);var n;this.fill=n[1]||\" \",this.align=n[2]||\">\",this.sign=n[3]||\"-\",this.symbol=n[4]||\"\",this.zero=!!n[5],this.width=n[6]&&+n[6],this.comma=!!n[7],this.precision=n[8]&&+n[8].slice(1),this.trim=!!n[9],this.type=n[10]||\"\"}function Aa(t,n){var e=ba(t,n);if(!e)return t+\"\";var r=e[0],i=e[1];return i<0?\"0.\"+new Array(-i).join(\"0\")+r:r.length>i+1?r.slice(0,i+1)+\".\"+r.slice(i+1):r+new Array(i-r.length+2).join(\"0\")}Ma.prototype=Na.prototype,Na.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(null==this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(null==this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};var Ta={\"%\":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+\"\"},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return Aa(100*t,n)},r:Aa,s:function(t,n){var e=ba(t,n);if(!e)return t+\"\";var r=e[0],i=e[1],o=i-(xa=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join(\"0\"):o>0?r.slice(0,o)+\".\"+r.slice(o):\"0.\"+new Array(1-o).join(\"0\")+ba(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function Sa(t){return t}var ka,Ea=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function Ca(t){var n,e,r=t.grouping&&t.thousands?(n=t.grouping,e=t.thousands,function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}):Sa,i=t.currency,o=t.decimal,a=t.numerals?function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(t.numerals):Sa,u=t.percent||\"%\";function c(t){var n=(t=Ma(t)).fill,e=t.align,c=t.sign,f=t.symbol,s=t.zero,l=t.width,h=t.comma,d=t.precision,p=t.trim,v=t.type;\"n\"===v?(h=!0,v=\"g\"):Ta[v]||(null==d&&(d=12),p=!0,v=\"g\"),(s||\"0\"===n&&\"=\"===e)&&(s=!0,n=\"0\",e=\"=\");var g=\"$\"===f?i[0]:\"#\"===f&&/[boxX]/.test(v)?\"0\"+v.toLowerCase():\"\",y=\"$\"===f?i[1]:/[%p]/.test(v)?u:\"\",_=Ta[v],b=/[defgprs%]/.test(v);function m(t){var i,u,f,m=g,x=y;if(\"c\"===v)x=_(t)+x,t=\"\";else{var w=(t=+t)<0;if(t=_(Math.abs(t),d),p&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case\".\":i=n=r;break;case\"0\":0===i&&(i=r),n=r;break;default:if(i>0){if(!+t[r])break t;i=0}}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),w&&0==+t&&(w=!1),m=(w?\"(\"===c?c:\"-\":\"-\"===c||\"(\"===c?\"\":c)+m,x=(\"s\"===v?Ea[8+xa/3]:\"\")+x+(w&&\"(\"===c?\")\":\"\"),b)for(i=-1,u=t.length;++i<u;)if(48>(f=t.charCodeAt(i))||f>57){x=(46===f?o+t.slice(i+1):t.slice(i))+x,t=t.slice(0,i);break}}h&&!s&&(t=r(t,1/0));var M=m.length+t.length+x.length,N=M<l?new Array(l-M+1).join(n):\"\";switch(h&&s&&(t=r(N+t,N.length?l-x.length:1/0),N=\"\"),e){case\"<\":t=m+t+x+N;break;case\"=\":t=m+N+t+x;break;case\"^\":t=N.slice(0,M=N.length>>1)+m+t+x+N.slice(M);break;default:t=N+m+t+x}return a(t)}return d=null==d?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),m.toString=function(){return t+\"\"},m}return{format:c,formatPrefix:function(t,n){var e=c(((t=Ma(t)).type=\"f\",t)),r=3*Math.max(-8,Math.min(8,Math.floor(ma(n)/3))),i=Math.pow(10,-r),o=Ea[8+r/3];return function(t){return e(i*t)+o}}}}function Pa(n){return ka=Ca(n),t.format=ka.format,t.formatPrefix=ka.formatPrefix,ka}function za(t){return Math.max(0,-ma(Math.abs(t)))}function Ra(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(ma(n)/3)))-ma(Math.abs(t)))}function Da(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,ma(n)-ma(t))+1}function qa(){return new La}function La(){this.reset()}Pa({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"]}),La.prototype={constructor:La,reset:function(){this.s=this.t=0},add:function(t){Oa(Ua,t,this.t),Oa(this,Ua.s,this.s),this.s?this.t+=Ua.t:this.s=Ua.t},valueOf:function(){return this.s}};var Ua=new La;function Oa(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}var Ba=1e-6,Ya=1e-12,Fa=Math.PI,Ia=Fa/2,ja=Fa/4,Ha=2*Fa,Xa=180/Fa,Ga=Fa/180,Va=Math.abs,$a=Math.atan,Wa=Math.atan2,Za=Math.cos,Qa=Math.ceil,Ja=Math.exp,Ka=Math.log,tu=Math.pow,nu=Math.sin,eu=Math.sign||function(t){return t>0?1:t<0?-1:0},ru=Math.sqrt,iu=Math.tan;function ou(t){return t>1?0:t<-1?Fa:Math.acos(t)}function au(t){return t>1?Ia:t<-1?-Ia:Math.asin(t)}function uu(t){return(t=nu(t/2))*t}function cu(){}function fu(t,n){t&&lu.hasOwnProperty(t.type)&&lu[t.type](t,n)}var su={Feature:function(t,n){fu(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)fu(e[r].geometry,n)}},lu={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){hu(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)hu(e[r],n,0)},Polygon:function(t,n){du(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)du(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)fu(e[r],n)}};function hu(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function du(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)hu(t[e],n,1);n.polygonEnd()}function pu(t,n){t&&su.hasOwnProperty(t.type)?su[t.type](t,n):fu(t,n)}var vu,gu,yu,_u,bu,mu=qa(),xu=qa(),wu={point:cu,lineStart:cu,lineEnd:cu,polygonStart:function(){mu.reset(),wu.lineStart=Mu,wu.lineEnd=Nu},polygonEnd:function(){var t=+mu;xu.add(t<0?Ha+t:t),this.lineStart=this.lineEnd=this.point=cu},sphere:function(){xu.add(Ha)}};function Mu(){wu.point=Au}function Nu(){Tu(vu,gu)}function Au(t,n){wu.point=Tu,vu=t,gu=n,yu=t*=Ga,_u=Za(n=(n*=Ga)/2+ja),bu=nu(n)}function Tu(t,n){var e=(t*=Ga)-yu,r=e>=0?1:-1,i=r*e,o=Za(n=(n*=Ga)/2+ja),a=nu(n),u=bu*a,c=_u*o+u*Za(i),f=u*r*nu(i);mu.add(Wa(f,c)),yu=t,_u=o,bu=a}function Su(t){return[Wa(t[1],t[0]),au(t[2])]}function ku(t){var n=t[0],e=t[1],r=Za(e);return[r*Za(n),r*nu(n),nu(e)]}function Eu(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Cu(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function Pu(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function zu(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function Ru(t){var n=ru(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var Du,qu,Lu,Uu,Ou,Bu,Yu,Fu,Iu,ju,Hu,Xu,Gu,Vu,$u,Wu,Zu,Qu,Ju,Ku,tc,nc,ec,rc,ic,oc,ac=qa(),uc={point:cc,lineStart:sc,lineEnd:lc,polygonStart:function(){uc.point=hc,uc.lineStart=dc,uc.lineEnd=pc,ac.reset(),wu.polygonStart()},polygonEnd:function(){wu.polygonEnd(),uc.point=cc,uc.lineStart=sc,uc.lineEnd=lc,mu<0?(Du=-(Lu=180),qu=-(Uu=90)):ac>Ba?Uu=90:ac<-Ba&&(qu=-90),ju[0]=Du,ju[1]=Lu},sphere:function(){Du=-(Lu=180),qu=-(Uu=90)}};function cc(t,n){Iu.push(ju=[Du=t,Lu=t]),n<qu&&(qu=n),n>Uu&&(Uu=n)}function fc(t,n){var e=ku([t*Ga,n*Ga]);if(Fu){var r=Cu(Fu,e),i=Cu([r[1],-r[0],0],r);Ru(i),i=Su(i);var o,a=t-Ou,u=a>0?1:-1,c=i[0]*Xa*u,f=Va(a)>180;f^(u*Ou<c&&c<u*t)?(o=i[1]*Xa)>Uu&&(Uu=o):f^(u*Ou<(c=(c+360)%360-180)&&c<u*t)?(o=-i[1]*Xa)<qu&&(qu=o):(n<qu&&(qu=n),n>Uu&&(Uu=n)),f?t<Ou?vc(Du,t)>vc(Du,Lu)&&(Lu=t):vc(t,Lu)>vc(Du,Lu)&&(Du=t):Lu>=Du?(t<Du&&(Du=t),t>Lu&&(Lu=t)):t>Ou?vc(Du,t)>vc(Du,Lu)&&(Lu=t):vc(t,Lu)>vc(Du,Lu)&&(Du=t)}else Iu.push(ju=[Du=t,Lu=t]);n<qu&&(qu=n),n>Uu&&(Uu=n),Fu=e,Ou=t}function sc(){uc.point=fc}function lc(){ju[0]=Du,ju[1]=Lu,uc.point=cc,Fu=null}function hc(t,n){if(Fu){var e=t-Ou;ac.add(Va(e)>180?e+(e>0?360:-360):e)}else Bu=t,Yu=n;wu.point(t,n),fc(t,n)}function dc(){wu.lineStart()}function pc(){hc(Bu,Yu),wu.lineEnd(),Va(ac)>Ba&&(Du=-(Lu=180)),ju[0]=Du,ju[1]=Lu,Fu=null}function vc(t,n){return(n-=t)<0?n+360:n}function gc(t,n){return t[0]-n[0]}function yc(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var _c={sphere:cu,point:bc,lineStart:xc,lineEnd:Nc,polygonStart:function(){_c.lineStart=Ac,_c.lineEnd=Tc},polygonEnd:function(){_c.lineStart=xc,_c.lineEnd=Nc}};function bc(t,n){t*=Ga;var e=Za(n*=Ga);mc(e*Za(t),e*nu(t),nu(n))}function mc(t,n,e){Gu+=(t-Gu)/++Hu,Vu+=(n-Vu)/Hu,$u+=(e-$u)/Hu}function xc(){_c.point=wc}function wc(t,n){t*=Ga;var e=Za(n*=Ga);rc=e*Za(t),ic=e*nu(t),oc=nu(n),_c.point=Mc,mc(rc,ic,oc)}function Mc(t,n){t*=Ga;var e=Za(n*=Ga),r=e*Za(t),i=e*nu(t),o=nu(n),a=Wa(ru((a=ic*o-oc*i)*a+(a=oc*r-rc*o)*a+(a=rc*i-ic*r)*a),rc*r+ic*i+oc*o);Xu+=a,Wu+=a*(rc+(rc=r)),Zu+=a*(ic+(ic=i)),Qu+=a*(oc+(oc=o)),mc(rc,ic,oc)}function Nc(){_c.point=bc}function Ac(){_c.point=Sc}function Tc(){kc(nc,ec),_c.point=bc}function Sc(t,n){nc=t,ec=n,t*=Ga,n*=Ga,_c.point=kc;var e=Za(n);rc=e*Za(t),ic=e*nu(t),oc=nu(n),mc(rc,ic,oc)}function kc(t,n){t*=Ga;var e=Za(n*=Ga),r=e*Za(t),i=e*nu(t),o=nu(n),a=ic*o-oc*i,u=oc*r-rc*o,c=rc*i-ic*r,f=ru(a*a+u*u+c*c),s=au(f),l=f&&-s/f;Ju+=l*a,Ku+=l*u,tc+=l*c,Xu+=s,Wu+=s*(rc+(rc=r)),Zu+=s*(ic+(ic=i)),Qu+=s*(oc+(oc=o)),mc(rc,ic,oc)}function Ec(t){return function(){return t}}function Cc(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function Pc(t,n){return[Va(t)>Fa?t+Math.round(-t/Ha)*Ha:t,n]}function zc(t,n,e){return(t%=Ha)?n||e?Cc(Dc(t),qc(n,e)):Dc(t):n||e?qc(n,e):Pc}function Rc(t){return function(n,e){return[(n+=t)>Fa?n-Ha:n<-Fa?n+Ha:n,e]}}function Dc(t){var n=Rc(t);return n.invert=Rc(-t),n}function qc(t,n){var e=Za(t),r=nu(t),i=Za(n),o=nu(n);function a(t,n){var a=Za(n),u=Za(t)*a,c=nu(t)*a,f=nu(n),s=f*e+u*r;return[Wa(c*i-s*o,u*e-f*r),au(s*i+c*o)]}return a.invert=function(t,n){var a=Za(n),u=Za(t)*a,c=nu(t)*a,f=nu(n),s=f*i-c*o;return[Wa(c*i+f*o,u*e+s*r),au(s*e-u*r)]},a}function Lc(t){function n(n){return(n=t(n[0]*Ga,n[1]*Ga))[0]*=Xa,n[1]*=Xa,n}return t=zc(t[0]*Ga,t[1]*Ga,t.length>2?t[2]*Ga:0),n.invert=function(n){return(n=t.invert(n[0]*Ga,n[1]*Ga))[0]*=Xa,n[1]*=Xa,n},n}function Uc(t,n,e,r,i,o){if(e){var a=Za(n),u=nu(n),c=r*e;null==i?(i=n+r*Ha,o=n-c/2):(i=Oc(a,i),o=Oc(a,o),(r>0?i<o:i>o)&&(i+=r*Ha));for(var f,s=i;r>0?s>o:s<o;s-=c)f=Su([a,-u*Za(s),-u*nu(s)]),t.point(f[0],f[1])}}function Oc(t,n){(n=ku(n))[0]-=t,Ru(n);var e=ou(-n[1]);return((-n[2]<0?-e:e)+Ha-Ba)%Ha}function Bc(){var t,n=[];return{point:function(n,e){t.push([n,e])},lineStart:function(){n.push(t=[])},lineEnd:cu,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function Yc(t,n){return Va(t[0]-n[0])<Ba&&Va(t[1]-n[1])<Ba}function Fc(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Ic(t,n,e,r,i){var o,a,u=[],c=[];if(t.forEach(function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],a=t[n];if(Yc(r,a)){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);i.lineEnd()}else u.push(e=new Fc(r,t,null,!0)),c.push(e.o=new Fc(r,null,e,!1)),u.push(e=new Fc(a,t,null,!1)),c.push(e.o=new Fc(a,null,e,!0))}}),u.length){for(c.sort(n),jc(u),jc(c),o=0,a=c.length;o<a;++o)c[o].e=e=!e;for(var f,s,l=u[0];;){for(var h=l,d=!0;h.v;)if((h=h.n)===l)return;f=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(o=0,a=f.length;o<a;++o)i.point((s=f[o])[0],s[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(f=h.p.z,o=f.length-1;o>=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function jc(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}Pc.invert=Pc;var Hc=qa();function Xc(t){return Va(t[0])<=Fa?t[0]:eu(t[0])*((Va(t[0])+Fa)%Ha-Fa)}function Gc(t,n){var e=Xc(n),r=n[1],i=nu(r),o=[nu(e),-Za(e),0],a=0,u=0;Hc.reset(),1===i?r=Ia+Ba:-1===i&&(r=-Ia-Ba);for(var c=0,f=t.length;c<f;++c)if(l=(s=t[c]).length)for(var s,l,h=s[l-1],d=Xc(h),p=h[1]/2+ja,v=nu(p),g=Za(p),y=0;y<l;++y,d=b,v=x,g=w,h=_){var _=s[y],b=Xc(_),m=_[1]/2+ja,x=nu(m),w=Za(m),M=b-d,N=M>=0?1:-1,A=N*M,T=A>Fa,S=v*x;if(Hc.add(Wa(S*N*nu(A),g*w+S*Za(A))),a+=T?M+N*Ha:M,T^d>=e^b>=e){var k=Cu(ku(h),ku(_));Ru(k);var E=Cu(o,k);Ru(E);var C=(T^M>=0?-1:1)*au(E[2]);(r>C||r===C&&(k[0]||k[1]))&&(u+=T^M>=0?1:-1)}}return(a<-Ba||a<Ba&&Hc<-Ba)^1&u}function Vc(t,n,e,r){return function(i){var o,a,u,c=n(i),f=Bc(),s=n(f),l=!1,h={point:d,lineStart:v,lineEnd:g,polygonStart:function(){h.point=y,h.lineStart=_,h.lineEnd=b,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=v,h.lineEnd=g,a=T(a);var t=Gc(o,r);a.length?(l||(i.polygonStart(),l=!0),Ic(a,Wc,t,e,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){c.point(t,n)}function v(){h.point=p,c.lineStart()}function g(){h.point=d,c.lineEnd()}function y(t,n){u.push([t,n]),s.point(t,n)}function _(){s.lineStart(),u=[]}function b(){y(u[0][0],u[0][1]),s.lineEnd();var t,n,e,r,c=s.clean(),h=f.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&c){if((n=(e=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else d>1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter($c))}return h}}function $c(t){return t.length>1}function Wc(t,n){return((t=t.x)[0]<0?t[1]-Ia-Ba:Ia-t[1])-((n=n.x)[0]<0?n[1]-Ia-Ba:Ia-n[1])}var Zc=Vc(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?Fa:-Fa,c=Va(o-e);Va(c-Fa)<Ba?(t.point(e,r=(r+a)/2>0?Ia:-Ia),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=Fa&&(Va(e-i)<Ba&&(e-=i*Ba),Va(o-u)<Ba&&(o-=u*Ba),r=function(t,n,e,r){var i,o,a=nu(t-e);return Va(a)>Ba?$a((nu(n)*(o=Za(r))*nu(e)-nu(r)*(i=Za(n))*nu(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)i=e*Ia,r.point(-Fa,i),r.point(0,i),r.point(Fa,i),r.point(Fa,0),r.point(Fa,-i),r.point(0,-i),r.point(-Fa,-i),r.point(-Fa,0),r.point(-Fa,i);else if(Va(t[0]-n[0])>Ba){var o=t[0]<n[0]?Fa:-Fa;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])},[-Fa,-Ia]);function Qc(t){var n=Za(t),e=6*Ga,r=n>0,i=Va(n)>Ba;function o(t,e){return Za(t)*Za(e)>n}function a(t,e,r){var i=[1,0,0],o=Cu(ku(t),ku(e)),a=Eu(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=Cu(i,o),h=zu(i,f);Pu(h,zu(o,s));var d=l,p=Eu(h,d),v=Eu(d,d),g=p*p-v*(Eu(h,h)-1);if(!(g<0)){var y=ru(g),_=zu(d,(-p-y)/v);if(Pu(_,h),_=Su(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x<m&&(b=m,m=x,x=b);var N=x-m,A=Va(N-Fa)<Ba;if(!A&&M<w&&(b=w,w=M,M=b),A||N<Ba?A?w+M>0^_[1]<(Va(_[0]-m)<Ba?w:M):w<=_[1]&&_[1]<=M:N>Fa^(m<=_[0]&&_[0]<=x)){var T=zu(d,(-p+y)/v);return Pu(T,h),[_,Su(T)]}}}function u(n,e){var i=r?t:Fa-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return Vc(o,function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],v=o(l,h),g=r?v?0:u(l,h):v?u(l+(l<0?Fa:-Fa),h):0;if(!n&&(f=c=v)&&t.lineStart(),v!==c&&(!(d=a(n,p))||Yc(n,d)||Yc(p,d))&&(p[0]+=Ba,p[1]+=Ba,v=o(p[0],p[1])),v!==c)s=0,v?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(i&&n&&r^v){var y;g&e||!(y=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1])))}!v||n&&Yc(n,p)||t.point(p[0],p[1]),n=p,c=v,e=g},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}},function(n,r,i,o){Uc(o,t,e,i,n,r)},r?[0,-t]:[-Fa,t-Fa])}var Jc=1e9,Kc=-Jc;function tf(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return Va(r[0]-t)<Ba?i>0?0:3:Va(r[0]-e)<Ba?i>0?2:1:Va(r[1]-n)<Ba?i>0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,v,g,y,_,b=a,m=Bc(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);y=!0,g=!1,p=v=NaN},lineEnd:function(){c&&(M(l,h),d&&g&&m.rejoin(),c.push(m.result()));x.point=w,g&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;e<i;++e)for(var o,a,u=f[e],c=1,s=u.length,l=u[0],h=l[0],d=l[1];c<s;++c)o=h,a=d,l=u[c],h=l[0],d=l[1],a<=r?d>r&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=T(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&Ic(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),y)l=o,h=a,d=u,y=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&g)b.point(o,a);else{var c=[p=Math.max(Kc,Math.min(Jc,p)),v=Math.max(Kc,Math.min(Jc,v))],m=[o=Math.max(Kc,Math.min(Jc,o)),a=Math.max(Kc,Math.min(Jc,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a<f)return;a<s&&(s=a)}else if(l>0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a<f)return;a<s&&(s=a)}if(a=r-c,h||!(a>0)){if(a/=h,h<0){if(a<f)return;a<s&&(s=a)}else if(h>0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a<f)return;a<s&&(s=a)}return f>0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(g||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,v=a,g=u}return x}}var nf,ef,rf,of=qa(),af={sphere:cu,point:cu,lineStart:function(){af.point=cf,af.lineEnd=uf},lineEnd:cu,polygonStart:cu,polygonEnd:cu};function uf(){af.point=af.lineEnd=cu}function cf(t,n){nf=t*=Ga,ef=nu(n*=Ga),rf=Za(n),af.point=ff}function ff(t,n){t*=Ga;var e=nu(n*=Ga),r=Za(n),i=Va(t-nf),o=Za(i),a=r*nu(i),u=rf*e-ef*r*o,c=ef*e+rf*r*o;of.add(Wa(ru(a*a+u*u),c)),nf=t,ef=e,rf=r}function sf(t){return of.reset(),pu(t,af),+of}var lf=[null,null],hf={type:\"LineString\",coordinates:lf};function df(t,n){return lf[0]=t,lf[1]=n,sf(hf)}var pf={Feature:function(t,n){return gf(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(gf(e[r].geometry,n))return!0;return!1}},vf={Sphere:function(){return!0},Point:function(t,n){return yf(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(yf(e[r],n))return!0;return!1},LineString:function(t,n){return _f(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(_f(e[r],n))return!0;return!1},Polygon:function(t,n){return bf(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(bf(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(gf(e[r],n))return!0;return!1}};function gf(t,n){return!(!t||!vf.hasOwnProperty(t.type))&&vf[t.type](t,n)}function yf(t,n){return 0===df(t,n)}function _f(t,n){for(var e,r,i,o=0,a=t.length;o<a;o++){if(0===(r=df(t[o],n)))return!0;if(o>0&&(i=df(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<Ya*i)return!0;e=r}return!1}function bf(t,n){return!!Gc(t.map(mf),xf(n))}function mf(t){return(t=t.map(xf)).pop(),t}function xf(t){return[t[0]*Ga,t[1]*Ga]}function wf(t,n,e){var r=g(t,n-Ba,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function Mf(t,n,e){var r=g(t,n-Ba,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function Nf(){var t,n,e,r,i,o,a,u,c,f,s,l,h=10,d=h,p=90,v=360,y=2.5;function _(){return{type:\"MultiLineString\",coordinates:b()}}function b(){return g(Qa(r/p)*p,e,p).map(s).concat(g(Qa(u/v)*v,a,v).map(l)).concat(g(Qa(n/h)*h,t,h).filter(function(t){return Va(t%p)>Ba}).map(c)).concat(g(Qa(o/d)*d,i,d).filter(function(t){return Va(t%v)>Ba}).map(f))}return _.lines=function(){return b().map(function(t){return{type:\"LineString\",coordinates:t}})},_.outline=function(){return{type:\"Polygon\",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),_.precision(y)):[[r,u],[e,a]]},_.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),_.precision(y)):[[n,o],[t,i]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(p=+t[0],v=+t[1],_):[p,v]},_.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],_):[h,d]},_.precision=function(h){return arguments.length?(y=+h,c=wf(o,i,90),f=Mf(n,t,y),s=wf(u,a,90),l=Mf(r,e,y),_):y},_.extentMajor([[-180,-90+Ba],[180,90-Ba]]).extentMinor([[-180,-80-Ba],[180,80+Ba]])}function Af(t){return t}var Tf,Sf,kf,Ef,Cf=qa(),Pf=qa(),zf={point:cu,lineStart:cu,lineEnd:cu,polygonStart:function(){zf.lineStart=Rf,zf.lineEnd=Lf},polygonEnd:function(){zf.lineStart=zf.lineEnd=zf.point=cu,Cf.add(Va(Pf)),Pf.reset()},result:function(){var t=Cf/2;return Cf.reset(),t}};function Rf(){zf.point=Df}function Df(t,n){zf.point=qf,Tf=kf=t,Sf=Ef=n}function qf(t,n){Pf.add(Ef*t-kf*n),kf=t,Ef=n}function Lf(){qf(Tf,Sf)}var Uf=1/0,Of=Uf,Bf=-Uf,Yf=Bf,Ff={point:function(t,n){t<Uf&&(Uf=t);t>Bf&&(Bf=t);n<Of&&(Of=n);n>Yf&&(Yf=n)},lineStart:cu,lineEnd:cu,polygonStart:cu,polygonEnd:cu,result:function(){var t=[[Uf,Of],[Bf,Yf]];return Bf=Yf=-(Of=Uf=1/0),t}};var If,jf,Hf,Xf,Gf=0,Vf=0,$f=0,Wf=0,Zf=0,Qf=0,Jf=0,Kf=0,ts=0,ns={point:es,lineStart:rs,lineEnd:as,polygonStart:function(){ns.lineStart=us,ns.lineEnd=cs},polygonEnd:function(){ns.point=es,ns.lineStart=rs,ns.lineEnd=as},result:function(){var t=ts?[Jf/ts,Kf/ts]:Qf?[Wf/Qf,Zf/Qf]:$f?[Gf/$f,Vf/$f]:[NaN,NaN];return Gf=Vf=$f=Wf=Zf=Qf=Jf=Kf=ts=0,t}};function es(t,n){Gf+=t,Vf+=n,++$f}function rs(){ns.point=is}function is(t,n){ns.point=os,es(Hf=t,Xf=n)}function os(t,n){var e=t-Hf,r=n-Xf,i=ru(e*e+r*r);Wf+=i*(Hf+t)/2,Zf+=i*(Xf+n)/2,Qf+=i,es(Hf=t,Xf=n)}function as(){ns.point=es}function us(){ns.point=fs}function cs(){ss(If,jf)}function fs(t,n){ns.point=ss,es(If=Hf=t,jf=Xf=n)}function ss(t,n){var e=t-Hf,r=n-Xf,i=ru(e*e+r*r);Wf+=i*(Hf+t)/2,Zf+=i*(Xf+n)/2,Qf+=i,Jf+=(i=Xf*t-Hf*n)*(Hf+t),Kf+=i*(Xf+n),ts+=3*i,es(Hf=t,Xf=n)}function ls(t){this._context=t}ls.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Ha)}},result:cu};var hs,ds,ps,vs,gs,ys=qa(),_s={point:cu,lineStart:function(){_s.point=bs},lineEnd:function(){hs&&ms(ds,ps),_s.point=cu},polygonStart:function(){hs=!0},polygonEnd:function(){hs=null},result:function(){var t=+ys;return ys.reset(),t}};function bs(t,n){_s.point=ms,ds=vs=t,ps=gs=n}function ms(t,n){vs-=t,gs-=n,ys.add(ru(vs*vs+gs*gs)),vs=t,gs=n}function xs(){this._string=[]}function ws(t){return\"m0,\"+t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+-2*t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+2*t+\"z\"}function Ms(t){return function(n){var e=new Ns;for(var r in t)e[r]=t[r];return e.stream=n,e}}function Ns(){}function As(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),pu(e,t.stream(Ff)),n(Ff.result()),null!=r&&t.clipExtent(r),t}function Ts(t,n,e){return As(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])},e)}function Ss(t,n,e){return Ts(t,[[0,0],n],e)}function ks(t,n,e){return As(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])},e)}function Es(t,n,e){return As(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])},e)}xs.prototype={_radius:4.5,_circle:ws(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push(\"Z\"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push(\"M\",t,\",\",n),this._point=1;break;case 1:this._string.push(\"L\",t,\",\",n);break;default:null==this._circle&&(this._circle=ws(this._radius)),this._string.push(\"M\",t,\",\",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join(\"\");return this._string=[],t}return null}},Ns.prototype={constructor:Ns,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Cs=16,Ps=Za(30*Ga);function zs(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,v,g){var y=f-r,_=s-i,b=y*y+_*_;if(b>4*n&&v--){var m=a+h,x=u+d,w=c+p,M=ru(m*m+x*x+w*w),N=au(w/=M),A=Va(Va(w)-1)<Ba||Va(o-l)<Ba?(o+l)/2:Wa(x,m),T=t(A,N),S=T[0],k=T[1],E=S-r,C=k-i,P=_*E-y*C;(P*P/b>n||Va((y*E+_*C)/b-.5)>.3||a*h+u*d+c*p<Ps)&&(e(r,i,o,a,u,c,S,k,A,m/=M,x/=M,w,v,g),g.point(S,k),e(S,k,A,m,x,w,f,s,l,h,d,p,v,g))}}return function(n){var r,i,o,a,u,c,f,s,l,h,d,p,v={point:g,lineStart:y,lineEnd:b,polygonStart:function(){n.polygonStart(),v.lineStart=m},polygonEnd:function(){n.polygonEnd(),v.lineStart=y}};function g(e,r){e=t(e,r),n.point(e[0],e[1])}function y(){s=NaN,v.point=_,n.lineStart()}function _(r,i){var o=ku([r,i]),a=t(r,i);e(s,l,f,h,d,p,s=a[0],l=a[1],f=r,h=o[0],d=o[1],p=o[2],Cs,n),n.point(s,l)}function b(){v.point=g,n.lineEnd()}function m(){y(),v.point=x,v.lineEnd=w}function x(t,n){_(r=t,n),i=s,o=l,a=h,u=d,c=p,v.point=_}function w(){e(s,l,f,h,d,p,i,o,r,a,u,c,Cs,n),v.lineEnd=b,b()}return v}}(t,n):function(t){return Ms({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var Rs=Ms({point:function(t,n){this.stream.point(t*Ga,n*Ga)}});function Ds(t,n,e,r){var i=Za(r),o=nu(r),a=i*t,u=o*t,c=i/t,f=o/t,s=(o*e-i*n)/t,l=(o*n+i*e)/t;function h(t,r){return[a*t-u*r+n,e-u*t-a*r]}return h.invert=function(t,n){return[c*t-f*n+s,l-f*t-c*n]},h}function qs(t){return Ls(function(){return t})()}function Ls(t){var n,e,r,i,o,a,u,c,f,s,l=150,h=480,d=250,p=0,v=0,g=0,y=0,_=0,b=0,m=null,x=Zc,w=null,M=Af,N=.5;function A(t){return c(t[0]*Ga,t[1]*Ga)}function T(t){return(t=c.invert(t[0],t[1]))&&[t[0]*Xa,t[1]*Xa]}function S(){var t=Ds(l,0,0,b).apply(null,n(p,v)),r=(b?Ds:function(t,n,e){function r(r,i){return[n+t*r,e-t*i]}return r.invert=function(r,i){return[(r-n)/t,(e-i)/t]},r})(l,h-t[0],d-t[1],b);return e=zc(g,y,_),u=Cc(n,r),c=Cc(e,u),a=zs(u,N),k()}function k(){return f=s=null,A}return A.stream=function(t){return f&&s===t?f:f=Rs(function(t){return Ms({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(x(a(M(s=t)))))},A.preclip=function(t){return arguments.length?(x=t,m=void 0,k()):x},A.postclip=function(t){return arguments.length?(M=t,w=r=i=o=null,k()):M},A.clipAngle=function(t){return arguments.length?(x=+t?Qc(m=t*Ga):(m=null,Zc),k()):m*Xa},A.clipExtent=function(t){return arguments.length?(M=null==t?(w=r=i=o=null,Af):tf(w=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),k()):null==w?null:[[w,r],[i,o]]},A.scale=function(t){return arguments.length?(l=+t,S()):l},A.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],S()):[h,d]},A.center=function(t){return arguments.length?(p=t[0]%360*Ga,v=t[1]%360*Ga,S()):[p*Xa,v*Xa]},A.rotate=function(t){return arguments.length?(g=t[0]%360*Ga,y=t[1]%360*Ga,_=t.length>2?t[2]%360*Ga:0,S()):[g*Xa,y*Xa,_*Xa]},A.angle=function(t){return arguments.length?(b=t%360*Ga,S()):b*Xa},A.precision=function(t){return arguments.length?(a=zs(u,N=t*t),k()):ru(N)},A.fitExtent=function(t,n){return Ts(A,t,n)},A.fitSize=function(t,n){return Ss(A,t,n)},A.fitWidth=function(t,n){return ks(A,t,n)},A.fitHeight=function(t,n){return Es(A,t,n)},function(){return n=t.apply(this,arguments),A.invert=n.invert&&T,S()}}function Us(t){var n=0,e=Fa/3,r=Ls(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*Ga,e=t[1]*Ga):[n*Xa,e*Xa]},i}function Os(t,n){var e=nu(t),r=(e+nu(n))/2;if(Va(r)<Ba)return function(t){var n=Za(t);function e(t,e){return[t*n,nu(e)/n]}return e.invert=function(t,e){return[t/n,au(e*n)]},e}(t);var i=1+e*(2*r-e),o=ru(i)/r;function a(t,n){var e=ru(i-2*r*nu(n))/r;return[e*nu(t*=r),o-e*Za(t)]}return a.invert=function(t,n){var e=o-n;return[Wa(t,Va(e))/r*eu(e),au((i-(t*t+e*e)*r*r)/(2*r))]},a}function Bs(){return Us(Os).scale(155.424).center([0,33.6442])}function Ys(){return Bs().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Fs(t){return function(n,e){var r=Za(n),i=Za(e),o=t(r*i);return[o*i*nu(n),o*nu(e)]}}function Is(t){return function(n,e){var r=ru(n*n+e*e),i=t(r),o=nu(i),a=Za(i);return[Wa(n*o,r*a),au(r&&e*o/r)]}}var js=Fs(function(t){return ru(2/(1+t))});js.invert=Is(function(t){return 2*au(t/2)});var Hs=Fs(function(t){return(t=ou(t))&&t/nu(t)});function Xs(t,n){return[t,Ka(iu((Ia+n)/2))]}function Gs(t){var n,e,r,i=qs(t),o=i.center,a=i.scale,u=i.translate,c=i.clipExtent,f=null;function s(){var o=Fa*a(),u=i(Lc(i.rotate()).invert([0,0]));return c(null==f?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===Xs?[[Math.max(u[0]-o,f),n],[Math.min(u[0]+o,e),r]]:[[f,Math.max(u[1]-o,n)],[e,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(u(t),s()):u()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?f=n=e=r=null:(f=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),s()):null==f?null:[[f,n],[e,r]]},s()}function Vs(t){return iu((Ia+t)/2)}function $s(t,n){var e=Za(t),r=t===n?nu(t):Ka(e/Za(n))/Ka(Vs(n)/Vs(t)),i=e*tu(Vs(t),r)/r;if(!r)return Xs;function o(t,n){i>0?n<-Ia+Ba&&(n=-Ia+Ba):n>Ia-Ba&&(n=Ia-Ba);var e=i/tu(Vs(n),r);return[e*nu(r*t),i-e*Za(r*t)]}return o.invert=function(t,n){var e=i-n,o=eu(r)*ru(t*t+e*e);return[Wa(t,Va(e))/r*eu(e),2*$a(tu(i/o,1/r))-Ia]},o}function Ws(t,n){return[t,n]}function Zs(t,n){var e=Za(t),r=t===n?nu(t):(e-Za(n))/(n-t),i=e/r+t;if(Va(r)<Ba)return Ws;function o(t,n){var e=i-n,o=r*t;return[e*nu(o),i-e*Za(o)]}return o.invert=function(t,n){var e=i-n;return[Wa(t,Va(e))/r*eu(e),i-eu(r)*ru(t*t+e*e)]},o}Hs.invert=Is(function(t){return t}),Xs.invert=function(t,n){return[t,2*$a(Ja(n))-Ia]},Ws.invert=Ws;var Qs=1.340264,Js=-.081106,Ks=893e-6,tl=.003796,nl=ru(3)/2;function el(t,n){var e=au(nl*nu(n)),r=e*e,i=r*r*r;return[t*Za(e)/(nl*(Qs+3*Js*r+i*(7*Ks+9*tl*r))),e*(Qs+Js*r+i*(Ks+tl*r))]}function rl(t,n){var e=Za(n),r=Za(t)*e;return[e*nu(t)/r,nu(n)/r]}function il(t,n,e,r){return 1===t&&1===n&&0===e&&0===r?Af:Ms({point:function(i,o){this.stream.point(i*t+e,o*n+r)}})}function ol(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function al(t,n){return[Za(n)*nu(t),nu(n)]}function ul(t,n){var e=Za(n),r=1+Za(t)*e;return[e*nu(t)/r,nu(n)/r]}function cl(t,n){return[Ka(iu((Ia+n)/2)),-t]}function fl(t,n){return t.parent===n.parent?1:2}function sl(t,n){return t+n.x}function ll(t,n){return Math.max(t,n.y)}function hl(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function dl(t,n){var e,r,i,o,a,u=new yl(t),c=+t.value&&(u.value=t.value),f=[u];for(null==n&&(n=pl);e=f.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(a=i.length))for(e.children=new Array(a),o=a-1;o>=0;--o)f.push(r=e.children[o]=new yl(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(gl)}function pl(t){return t.children}function vl(t){t.data=t.data.data}function gl(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function yl(t){this.data=t,this.depth=this.height=0,this.parent=null}el.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(Qs+Js*i+o*(Ks+tl*i))-n)/(Qs+3*Js*i+o*(7*Ks+9*tl*i)))*r)*i*i,!(Va(e)<Ya));++a);return[nl*t*(Qs+3*Js*i+o*(7*Ks+9*tl*i))/Za(r),au(nu(r)/nl)]},rl.invert=Is($a),ol.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,a=o*o;r-=e=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-n)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(Va(e)>Ba&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},al.invert=Is(au),ul.invert=Is(function(t){return 2*$a(t)}),cl.invert=function(t,n){return[-n,2*$a(Ja(t))-Ia]},yl.prototype=dl.prototype={constructor:yl,count:function(){return this.eachAfter(hl)},each:function(t){var n,e,r,i,o=this,a=[o];do{for(n=a.reverse(),a=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r<i;++r)a.push(e[r])}while(a.length);return this},eachAfter:function(t){for(var n,e,r,i=this,o=[i],a=[];i=o.pop();)if(a.push(i),n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e]);for(;i=a.pop();)t(i);return this},eachBefore:function(t){for(var n,e,r=this,i=[r];r=i.pop();)if(t(r),n=r.children)for(e=n.length-1;e>=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each(function(n){t.push(n)}),t},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return dl(this).eachBefore(vl)}};var _l=Array.prototype.slice;function bl(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(_l.call(t))).length,o=[];r<i;)n=t[r],e&&wl(e,n)?++r:(e=Nl(o=ml(o,n)),r=0);return e}function ml(t,n){var e,r;if(Ml(n,t))return[n];for(e=0;e<t.length;++e)if(xl(n,t[e])&&Ml(Al(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(xl(Al(t[e],t[r]),n)&&xl(Al(t[e],n),t[r])&&xl(Al(t[r],n),t[e])&&Ml(Tl(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}function xl(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function wl(t,n){var e=t.r-n.r+1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function Ml(t,n){for(var e=0;e<n.length;++e)if(!wl(t,n[e]))return!1;return!0}function Nl(t){switch(t.length){case 1:return{x:(n=t[0]).x,y:n.y,r:n.r};case 2:return Al(t[0],t[1]);case 3:return Tl(t[0],t[1],t[2])}var n}function Al(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,a=n.y,u=n.r,c=o-e,f=a-r,s=u-i,l=Math.sqrt(c*c+f*f);return{x:(e+o+c/l*s)/2,y:(r+a+f/l*s)/2,r:(l+i+u)/2}}function Tl(t,n,e){var r=t.x,i=t.y,o=t.r,a=n.x,u=n.y,c=n.r,f=e.x,s=e.y,l=e.r,h=r-a,d=r-f,p=i-u,v=i-s,g=c-o,y=l-o,_=r*r+i*i-o*o,b=_-a*a-u*u+c*c,m=_-f*f-s*s+l*l,x=d*p-h*v,w=(p*m-v*b)/(2*x)-r,M=(v*g-p*y)/x,N=(d*b-h*m)/(2*x)-i,A=(h*y-d*g)/x,T=M*M+A*A-1,S=2*(o+w*M+N*A),k=w*w+N*N-o*o,E=-(T?(S+Math.sqrt(S*S-4*T*k))/(2*T):k/S);return{x:r+w+M*E,y:i+N+A*E,r:E}}function Sl(t,n,e){var r,i,o,a,u=t.x-n.x,c=t.y-n.y,f=u*u+c*c;f?(i=n.r+e.r,i*=i,a=t.r+e.r,i>(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function kl(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function El(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function Cl(t){this._=t,this.next=null,this.previous=null}function Pl(t){if(!(i=t.length))return 0;var n,e,r,i,o,a,u,c,f,s,l;if((n=t[0]).x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;Sl(e,n,r=t[2]),n=new Cl(n),e=new Cl(e),r=new Cl(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(u=3;u<i;++u){Sl(n._,e._,r=t[u]),r=new Cl(r),c=e.next,f=n.previous,s=e._.r,l=n._.r;do{if(s<=l){if(kl(c._,r._)){e=c,n.next=e,e.previous=n,--u;continue t}s+=c._.r,c=c.next}else{if(kl(f._,r._)){(n=f).next=e,e.previous=n,--u;continue t}l+=f._.r,f=f.previous}}while(c!==f.next);for(r.previous=n,r.next=e,n.next=e.previous=e=r,o=El(n);(r=r.next)!==e;)(a=El(r))<o&&(n=r,o=a);e=n.next}for(n=[e._],r=e;(r=r.next)!==e;)n.push(r._);for(r=bl(n),u=0;u<i;++u)(n=t[u]).x-=r.x,n.y-=r.y;return r.r}function zl(t){if(\"function\"!=typeof t)throw new Error;return t}function Rl(){return 0}function Dl(t){return function(){return t}}function ql(t){return Math.sqrt(t.value)}function Ll(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function Ul(t,n){return function(e){if(r=e.children){var r,i,o,a=r.length,u=t(e)*n||0;if(u)for(i=0;i<a;++i)r[i].r+=u;if(o=Pl(r),u)for(i=0;i<a;++i)r[i].r-=u;e.r=o+u}}}function Ol(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function Bl(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Yl(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(r-n)/t.value;++u<c;)(o=a[u]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*f}var Fl=\"$\",Il={depth:-1},jl={};function Hl(t){return t.id}function Xl(t){return t.parentId}function Gl(t,n){return t.parent===n.parent?1:2}function Vl(t){var n=t.children;return n?n[0]:t.t}function $l(t){var n=t.children;return n?n[n.length-1]:t.t}function Wl(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function Zl(t,n,e){return t.a.parent===n.parent?t.a:e}function Ql(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function Jl(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(i-e)/t.value;++u<c;)(o=a[u]).x0=n,o.x1=r,o.y0=e,o.y1=e+=o.value*f}Ql.prototype=Object.create(yl.prototype);var Kl=(1+Math.sqrt(5))/2;function th(t,n,e,r,i,o){for(var a,u,c,f,s,l,h,d,p,v,g,y=[],_=n.children,b=0,m=0,x=_.length,w=n.value;b<x;){c=i-e,f=o-r;do{s=_[m++].value}while(!s&&m<x);for(l=h=s,g=s*s*(v=Math.max(f/c,c/f)/(w*t)),p=Math.max(h/g,g/l);m<x;++m){if(s+=u=_[m].value,u<l&&(l=u),u>h&&(h=u),g=s*s*v,(d=Math.max(h/g,g/l))>p){s-=u;break}p=d}y.push(a={value:s,dice:c<f,children:_.slice(b,m)}),a.dice?Yl(a,e,r,i,w?r+=f*s/w:o):Jl(a,e,r,w?e+=c*s/w:i,o),w-=s,b=m}return y}var nh=function t(n){function e(t,e,r,i,o){th(n,t,e,r,i,o)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Kl);var eh=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l<h;){for(c=(u=a[l]).children,f=u.value=0,s=c.length;f<s;++f)u.value+=c[f].value;u.dice?Yl(u,e,r,i,r+=(o-r)*u.value/d):Jl(u,e,r,e+=(i-e)*u.value/d,o),d-=u.value}else t._squarify=a=th(n,t,e,r,i,o),a.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Kl);function rh(t,n){return t[0]-n[0]||t[1]-n[1]}function ih(t){for(var n,e,r,i=t.length,o=[0,1],a=2,u=2;u<i;++u){for(;a>1&&(n=t[o[a-2]],e=t[o[a-1]],r=t[u],(e[0]-n[0])*(r[1]-n[1])-(e[1]-n[1])*(r[0]-n[0])<=0);)--a;o[a++]=u}return o.slice(0,a)}function oh(){return Math.random()}var ah=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(oh),uh=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(oh),ch=function t(n){function e(){var t=uh.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(oh),fh=function t(n){function e(t){return function(){for(var e=0,r=0;r<t;++r)e+=n();return e}}return e.source=t,e}(oh),sh=function t(n){function e(t){var e=fh.source(n)(t);return function(){return e()/t}}return e.source=t,e}(oh),lh=function t(n){function e(t){return function(){return-Math.log(1-n())/t}}return e.source=t,e}(oh);function hh(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function dh(t,n){switch(arguments.length){case 0:break;case 1:this.interpolator(t);break;default:this.interpolator(n).domain(t)}return this}var ph=Array.prototype,vh=ph.map,gh=ph.slice,yh={name:\"implicit\"};function _h(){var t=Ji(),n=[],e=[],r=yh;function i(i){var o=i+\"\",a=t.get(o);if(!a){if(r!==yh)return r;t.set(o,a=n.push(i))}return e[(a-1)%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=Ji();for(var r,o,a=-1,u=e.length;++a<u;)t.has(o=(r=e[a])+\"\")||t.set(o,n.push(r));return i},i.range=function(t){return arguments.length?(e=gh.call(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return _h(n,e).unknown(r)},hh.apply(i,arguments),i}function bh(){var t,n,e=_h().unknown(void 0),r=e.domain,i=e.range,o=[0,1],a=!1,u=0,c=0,f=.5;function s(){var e=r().length,s=o[1]<o[0],l=o[s-0],h=o[1-s];t=(h-l)/Math.max(1,e-u+2*c),a&&(t=Math.floor(t)),l+=(h-l-t*(e-u))*f,n=t*(1-u),a&&(l=Math.round(l),n=Math.round(n));var d=g(e).map(function(n){return l+t*n});return i(s?d.reverse():d)}return delete e.unknown,e.domain=function(t){return arguments.length?(r(t),s()):r()},e.range=function(t){return arguments.length?(o=[+t[0],+t[1]],s()):o.slice()},e.rangeRound=function(t){return o=[+t[0],+t[1]],a=!0,s()},e.bandwidth=function(){return n},e.step=function(){return t},e.round=function(t){return arguments.length?(a=!!t,s()):a},e.padding=function(t){return arguments.length?(u=Math.min(1,c=+t),s()):u},e.paddingInner=function(t){return arguments.length?(u=Math.min(1,t),s()):u},e.paddingOuter=function(t){return arguments.length?(c=+t,s()):c},e.align=function(t){return arguments.length?(f=Math.max(0,Math.min(1,t)),s()):f},e.copy=function(){return bh(r(),o).round(a).paddingInner(u).paddingOuter(c).align(f)},hh.apply(s(),arguments)}function mh(t){return+t}var xh=[0,1];function wh(t){return t}function Mh(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:(e=isNaN(n)?NaN:.5,function(){return e});var e}function Nh(t){var n,e=t[0],r=t[t.length-1];return e>r&&(n=e,e=r,r=n),function(t){return Math.max(e,Math.min(r,t))}}function Ah(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i<r?(r=Mh(i,r),o=e(a,o)):(r=Mh(r,i),o=e(o,a)),function(t){return o(r(t))}}function Th(t,n,e){var r=Math.min(t.length,n.length)-1,o=new Array(r),a=new Array(r),u=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++u<r;)o[u]=Mh(t[u],t[u+1]),a[u]=e(n[u],n[u+1]);return function(n){var e=i(t,n,1,r)-1;return a[e](o[e](n))}}function Sh(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function kh(){var t,n,e,r,i,o,a=xh,u=xh,c=_e,f=wh;function s(){return r=Math.min(a.length,u.length)>2?Th:Ah,i=o=null,l}function l(n){return isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),de)))(e)))},l.domain=function(t){return arguments.length?(a=vh.call(t,mh),f===wh||(f=Nh(a)),s()):a.slice()},l.range=function(t){return arguments.length?(u=gh.call(t),s()):u.slice()},l.rangeRound=function(t){return u=gh.call(t),c=be,s()},l.clamp=function(t){return arguments.length?(f=t?Nh(a):wh,l):f!==wh},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Eh(t,n){return kh()(t,n)}function Ch(n,e,r,i){var o,a=w(n,e,r);switch((i=Ma(null==i?\",f\":i)).type){case\"s\":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=Ra(a,u))||(i.precision=o),t.formatPrefix(i,u);case\"\":case\"e\":case\"g\":case\"p\":case\"r\":null!=i.precision||isNaN(o=Da(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-(\"e\"===i.type));break;case\"f\":case\"%\":null!=i.precision||isNaN(o=za(a))||(i.precision=o-2*(\"%\"===i.type))}return t.format(i)}function Ph(t){var n=t.domain;return t.ticks=function(t){var e=n();return m(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Ch(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i=n(),o=0,a=i.length-1,u=i[o],c=i[a];return c<u&&(r=u,u=c,c=r,r=o,o=a,a=r),(r=x(u,c,e))>0?r=x(u=Math.floor(u/r)*r,c=Math.ceil(c/r)*r,e):r<0&&(r=x(u=Math.ceil(u*r)/r,c=Math.floor(c*r)/r,e)),r>0?(i[o]=Math.floor(u/r)*r,i[a]=Math.ceil(c/r)*r,n(i)):r<0&&(i[o]=Math.ceil(u*r)/r,i[a]=Math.floor(c*r)/r,n(i)),t},t}function zh(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a<o&&(e=r,r=i,i=e,e=o,o=a,a=e),t[r]=n.floor(o),t[i]=n.ceil(a),t}function Rh(t){return Math.log(t)}function Dh(t){return Math.exp(t)}function qh(t){return-Math.log(-t)}function Lh(t){return-Math.exp(-t)}function Uh(t){return isFinite(t)?+(\"1e\"+t):t<0?0:t}function Oh(t){return function(n){return-t(-n)}}function Bh(n){var e,r,i=n(Rh,Dh),o=i.domain,a=10;function u(){return e=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(n){return Math.log(n)/t})}(a),r=function(t){return 10===t?Uh:t===Math.E?Math.exp:function(n){return Math.pow(t,n)}}(a),o()[0]<0?(e=Oh(e),r=Oh(r),n(qh,Lh)):n(Rh,Dh),i}return i.base=function(t){return arguments.length?(a=+t,u()):a},i.domain=function(t){return arguments.length?(o(t),u()):o()},i.ticks=function(t){var n,i=o(),u=i[0],c=i[i.length-1];(n=c<u)&&(h=u,u=c,c=h);var f,s,l,h=e(u),d=e(c),p=null==t?10:+t,v=[];if(!(a%1)&&d-h<p){if(h=Math.round(h)-1,d=Math.round(d)+1,u>0){for(;h<d;++h)for(s=1,f=r(h);s<a;++s)if(!((l=f*s)<u)){if(l>c)break;v.push(l)}}else for(;h<d;++h)for(s=a-1,f=r(h);s>=1;--s)if(!((l=f*s)<u)){if(l>c)break;v.push(l)}}else v=m(h,d,Math.min(d-h,p)).map(r);return n?v.reverse():v},i.tickFormat=function(n,o){if(null==o&&(o=10===a?\".0e\":\",\"),\"function\"!=typeof o&&(o=t.format(o)),n===1/0)return o;null==n&&(n=10);var u=Math.max(1,a*n/i.ticks().length);return function(t){var n=t/r(Math.round(e(t)));return n*a<a-.5&&(n*=a),n<=u?o(t):\"\"}},i.nice=function(){return o(zh(o(),{floor:function(t){return r(Math.floor(e(t)))},ceil:function(t){return r(Math.ceil(e(t)))}}))},i}function Yh(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function Fh(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function Ih(t){var n=1,e=t(Yh(n),Fh(n));return e.constant=function(e){return arguments.length?t(Yh(n=+e),Fh(n)):n},Ph(e)}function jh(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function Hh(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Xh(t){return t<0?-t*t:t*t}function Gh(t){var n=t(wh,wh),e=1;return n.exponent=function(n){return arguments.length?1===(e=+n)?t(wh,wh):.5===e?t(Hh,Xh):t(jh(e),jh(1/e)):e},Ph(n)}function Vh(){var t=Gh(kh());return t.copy=function(){return Sh(t,Vh()).exponent(t.exponent())},hh.apply(t,arguments),t}var $h=new Date,Wh=new Date;function Zh(t,n,e,r){function i(n){return t(n=new Date(+n)),n}return i.floor=i,i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},i.range=function(e,r,o){var a,u=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e<r&&o>0))return u;do{u.push(a=new Date(+e)),n(e,o),t(e)}while(a<e&&e<r);return u},i.filter=function(e){return Zh(function(n){if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return $h.setTime(+n),Wh.setTime(+r),t($h),t(Wh),Math.floor(e($h,Wh))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}var Qh=Zh(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});Qh.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Zh(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):Qh:null};var Jh=Qh.range,Kh=6e4,td=6048e5,nd=Zh(function(t){t.setTime(t-t.getMilliseconds())},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),ed=nd.range,rd=Zh(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,n){t.setTime(+t+n*Kh)},function(t,n){return(n-t)/Kh},function(t){return t.getMinutes()}),id=rd.range,od=Zh(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*Kh)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),ad=od.range,ud=Zh(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Kh)/864e5},function(t){return t.getDate()-1}),cd=ud.range;function fd(t){return Zh(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Kh)/td})}var sd=fd(0),ld=fd(1),hd=fd(2),dd=fd(3),pd=fd(4),vd=fd(5),gd=fd(6),yd=sd.range,_d=ld.range,bd=hd.range,md=dd.range,xd=pd.range,wd=vd.range,Md=gd.range,Nd=Zh(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),Ad=Nd.range,Td=Zh(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Td.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Zh(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var Sd=Td.range,kd=Zh(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*Kh)},function(t,n){return(n-t)/Kh},function(t){return t.getUTCMinutes()}),Ed=kd.range,Cd=Zh(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),Pd=Cd.range,zd=Zh(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),Rd=zd.range;function Dd(t){return Zh(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/td})}var qd=Dd(0),Ld=Dd(1),Ud=Dd(2),Od=Dd(3),Bd=Dd(4),Yd=Dd(5),Fd=Dd(6),Id=qd.range,jd=Ld.range,Hd=Ud.range,Xd=Od.range,Gd=Bd.range,Vd=Yd.range,$d=Fd.range,Wd=Zh(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),Zd=Wd.range,Qd=Zh(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Qd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Zh(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var Jd=Qd.range;function Kd(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function tp(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function np(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function ep(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=sp(i),s=lp(i),l=sp(o),h=lp(o),d=sp(a),p=lp(a),v=sp(u),g=lp(u),y=sp(c),_=lp(c),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Pp,e:Pp,f:Lp,H:zp,I:Rp,j:Dp,L:qp,m:Up,M:Op,p:function(t){return i[+(t.getHours()>=12)]},Q:hv,s:dv,S:Bp,u:Yp,U:Fp,V:Ip,w:jp,W:Hp,x:null,X:null,y:Xp,Y:Gp,Z:Vp,\"%\":lv},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:$p,e:$p,f:Kp,H:Wp,I:Zp,j:Qp,L:Jp,m:tv,M:nv,p:function(t){return i[+(t.getUTCHours()>=12)]},Q:hv,s:dv,S:ev,u:rv,U:iv,V:ov,w:av,W:uv,x:null,X:null,y:cv,Y:fv,Z:sv,\"%\":lv},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=y.exec(n.slice(e));return r?(t.m=_[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=g[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,e,r){return N(t,n,e,r)},d:xp,e:xp,f:Sp,H:Mp,I:Mp,j:wp,L:Tp,m:mp,M:Np,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s[r[0].toLowerCase()],e+r[0].length):-1},Q:Ep,s:Cp,S:Ap,u:dp,U:pp,V:vp,w:hp,W:gp,x:function(t,n,r){return N(t,e,n,r)},X:function(t,n,e){return N(t,r,n,e)},y:_p,Y:yp,Z:bp,\"%\":kp};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u<f;)37===t.charCodeAt(u)&&(a.push(t.slice(c,u)),null!=(i=ip[r=t.charAt(++u)])?r=t.charAt(++u):i=\"e\"===r?\" \":\"0\",(o=n[r])&&(r=o(e,i)),a.push(r),c=u+1);return a.push(t.slice(c,u)),a.join(\"\")}}function M(t,n){return function(e){var r,i,o=np(1900);if(N(o,t,e+=\"\",0)!=e.length)return null;if(\"Q\"in o)return new Date(o.Q);if(\"p\"in o&&(o.H=o.H%12+12*o.p),\"V\"in o){if(o.V<1||o.V>53)return null;\"w\"in o||(o.w=1),\"Z\"in o?(i=(r=tp(np(o.y))).getUTCDay(),r=i>4||0===i?Ld.ceil(r):Ld(r),r=zd.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=n(np(o.y))).getDay(),r=i>4||0===i?ld.ceil(r):ld(r),r=ud.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else(\"W\"in o||\"U\"in o)&&(\"w\"in o||(o.w=\"u\"in o?o.u%7:\"W\"in o?1:0),i=\"Z\"in o?tp(np(o.y)).getUTCDay():n(np(o.y)).getDay(),o.m=0,o.d=\"W\"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return\"Z\"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,tp(o)):n(o)}}function N(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a<u;){if(r>=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in ip?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+=\"\",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+=\"\",Kd);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+=\"\",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t,tp);return n.toString=function(){return t},n}}}var rp,ip={\"-\":\"\",_:\" \",0:\"0\"},op=/^\\s*\\d+/,ap=/^%/,up=/[\\\\^$*+?|[\\]().{}]/g;function cp(t,n,e){var r=t<0?\"-\":\"\",i=(r?-t:t)+\"\",o=i.length;return r+(o<e?new Array(e-o+1).join(n)+i:i)}function fp(t){return t.replace(up,\"\\\\$&\")}function sp(t){return new RegExp(\"^(?:\"+t.map(fp).join(\"|\")+\")\",\"i\")}function lp(t){for(var n={},e=-1,r=t.length;++e<r;)n[t[e].toLowerCase()]=e;return n}function hp(t,n,e){var r=op.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function dp(t,n,e){var r=op.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function pp(t,n,e){var r=op.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function vp(t,n,e){var r=op.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function gp(t,n,e){var r=op.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function yp(t,n,e){var r=op.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function _p(t,n,e){var r=op.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function bp(t,n,e){var r=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||\"00\")),e+r[0].length):-1}function mp(t,n,e){var r=op.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function xp(t,n,e){var r=op.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function wp(t,n,e){var r=op.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Mp(t,n,e){var r=op.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Np(t,n,e){var r=op.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Ap(t,n,e){var r=op.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function Tp(t,n,e){var r=op.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Sp(t,n,e){var r=op.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function kp(t,n,e){var r=ap.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Ep(t,n,e){var r=op.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Cp(t,n,e){var r=op.exec(n.slice(e));return r?(t.Q=1e3*+r[0],e+r[0].length):-1}function Pp(t,n){return cp(t.getDate(),n,2)}function zp(t,n){return cp(t.getHours(),n,2)}function Rp(t,n){return cp(t.getHours()%12||12,n,2)}function Dp(t,n){return cp(1+ud.count(Td(t),t),n,3)}function qp(t,n){return cp(t.getMilliseconds(),n,3)}function Lp(t,n){return qp(t,n)+\"000\"}function Up(t,n){return cp(t.getMonth()+1,n,2)}function Op(t,n){return cp(t.getMinutes(),n,2)}function Bp(t,n){return cp(t.getSeconds(),n,2)}function Yp(t){var n=t.getDay();return 0===n?7:n}function Fp(t,n){return cp(sd.count(Td(t),t),n,2)}function Ip(t,n){var e=t.getDay();return t=e>=4||0===e?pd(t):pd.ceil(t),cp(pd.count(Td(t),t)+(4===Td(t).getDay()),n,2)}function jp(t){return t.getDay()}function Hp(t,n){return cp(ld.count(Td(t),t),n,2)}function Xp(t,n){return cp(t.getFullYear()%100,n,2)}function Gp(t,n){return cp(t.getFullYear()%1e4,n,4)}function Vp(t){var n=t.getTimezoneOffset();return(n>0?\"-\":(n*=-1,\"+\"))+cp(n/60|0,\"0\",2)+cp(n%60,\"0\",2)}function $p(t,n){return cp(t.getUTCDate(),n,2)}function Wp(t,n){return cp(t.getUTCHours(),n,2)}function Zp(t,n){return cp(t.getUTCHours()%12||12,n,2)}function Qp(t,n){return cp(1+zd.count(Qd(t),t),n,3)}function Jp(t,n){return cp(t.getUTCMilliseconds(),n,3)}function Kp(t,n){return Jp(t,n)+\"000\"}function tv(t,n){return cp(t.getUTCMonth()+1,n,2)}function nv(t,n){return cp(t.getUTCMinutes(),n,2)}function ev(t,n){return cp(t.getUTCSeconds(),n,2)}function rv(t){var n=t.getUTCDay();return 0===n?7:n}function iv(t,n){return cp(qd.count(Qd(t),t),n,2)}function ov(t,n){var e=t.getUTCDay();return t=e>=4||0===e?Bd(t):Bd.ceil(t),cp(Bd.count(Qd(t),t)+(4===Qd(t).getUTCDay()),n,2)}function av(t){return t.getUTCDay()}function uv(t,n){return cp(Ld.count(Qd(t),t),n,2)}function cv(t,n){return cp(t.getUTCFullYear()%100,n,2)}function fv(t,n){return cp(t.getUTCFullYear()%1e4,n,4)}function sv(){return\"+0000\"}function lv(){return\"%\"}function hv(t){return+t}function dv(t){return Math.floor(+t/1e3)}function pv(n){return rp=ep(n),t.timeFormat=rp.format,t.timeParse=rp.parse,t.utcFormat=rp.utcFormat,t.utcParse=rp.utcParse,rp}pv({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});var vv=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(\"%Y-%m-%dT%H:%M:%S.%LZ\");var gv=+new Date(\"2000-01-01T00:00:00.000Z\")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse(\"%Y-%m-%dT%H:%M:%S.%LZ\"),yv=1e3,_v=60*yv,bv=60*_v,mv=24*bv,xv=7*mv,wv=30*mv,Mv=365*mv;function Nv(t){return new Date(t)}function Av(t){return t instanceof Date?+t:+new Date(+t)}function Tv(t,n,r,i,o,a,u,c,f){var s=Eh(wh,wh),l=s.invert,h=s.domain,d=f(\".%L\"),p=f(\":%S\"),v=f(\"%I:%M\"),g=f(\"%I %p\"),y=f(\"%a %d\"),_=f(\"%b %d\"),b=f(\"%B\"),m=f(\"%Y\"),x=[[u,1,yv],[u,5,5*yv],[u,15,15*yv],[u,30,30*yv],[a,1,_v],[a,5,5*_v],[a,15,15*_v],[a,30,30*_v],[o,1,bv],[o,3,3*bv],[o,6,6*bv],[o,12,12*bv],[i,1,mv],[i,2,2*mv],[r,1,xv],[n,1,wv],[n,3,3*wv],[t,1,Mv]];function M(e){return(u(e)<e?d:a(e)<e?p:o(e)<e?v:i(e)<e?g:n(e)<e?r(e)<e?y:_:t(e)<e?b:m)(e)}function N(n,r,i,o){if(null==n&&(n=10),\"number\"==typeof n){var a=Math.abs(i-r)/n,u=e(function(t){return t[2]}).right(x,a);u===x.length?(o=w(r/Mv,i/Mv,n),n=t):u?(o=(u=x[a/x[u-1][2]<x[u][2]/a?u-1:u])[1],n=u[0]):(o=Math.max(w(r,i,n),1),n=c)}return null==o?n:n.every(o)}return s.invert=function(t){return new Date(l(t))},s.domain=function(t){return arguments.length?h(vh.call(t,Av)):h().map(Nv)},s.ticks=function(t,n){var e,r=h(),i=r[0],o=r[r.length-1],a=o<i;return a&&(e=i,i=o,o=e),e=(e=N(t,i,o,n))?e.range(i,o+1):[],a?e.reverse():e},s.tickFormat=function(t,n){return null==n?M:f(n)},s.nice=function(t,n){var e=h();return(t=N(t,e[0],e[e.length-1],n))?h(zh(e,t)):s},s.copy=function(){return Sh(s,Tv(t,n,r,i,o,a,u,c,f))},s}function Sv(){var t,n,e,r,i,o=0,a=1,u=wh,c=!1;function f(n){return isNaN(n=+n)?i:u(0===e?.5:(n=(r(n)-t)*e,c?Math.max(0,Math.min(1,n)):n))}return f.domain=function(i){return arguments.length?(t=r(o=+i[0]),n=r(a=+i[1]),e=t===n?0:1/(n-t),f):[o,a]},f.clamp=function(t){return arguments.length?(c=!!t,f):c},f.interpolator=function(t){return arguments.length?(u=t,f):u},f.unknown=function(t){return arguments.length?(i=t,f):i},function(i){return r=i,t=i(o),n=i(a),e=t===n?0:1/(n-t),f}}function kv(t,n){return n.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Ev(){var t=Gh(Sv());return t.copy=function(){return kv(t,Ev()).exponent(t.exponent())},dh.apply(t,arguments)}function Cv(){var t,n,e,r,i,o,a,u=0,c=.5,f=1,s=wh,l=!1;function h(t){return isNaN(t=+t)?a:(t=.5+((t=+o(t))-n)*(t<n?r:i),s(l?Math.max(0,Math.min(1,t)):t))}return h.domain=function(a){return arguments.length?(t=o(u=+a[0]),n=o(c=+a[1]),e=o(f=+a[2]),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),h):[u,c,f]},h.clamp=function(t){return arguments.length?(l=!!t,h):l},h.interpolator=function(t){return arguments.length?(s=t,h):s},h.unknown=function(t){return arguments.length?(a=t,h):a},function(a){return o=a,t=a(u),n=a(c),e=a(f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),h}}function Pv(){var t=Gh(Cv());return t.copy=function(){return kv(t,Pv()).exponent(t.exponent())},dh.apply(t,arguments)}function zv(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]=\"#\"+t.slice(6*r,6*++r);return e}var Rv=zv(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\"),Dv=zv(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\"),qv=zv(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\"),Lv=zv(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\"),Uv=zv(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\"),Ov=zv(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\"),Bv=zv(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\"),Yv=zv(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\"),Fv=zv(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");function Iv(t){return fe(t[t.length-1])}var jv=new Array(3).concat(\"d8b365f5f5f55ab4ac\",\"a6611adfc27d80cdc1018571\",\"a6611adfc27df5f5f580cdc1018571\",\"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\").map(zv),Hv=Iv(jv),Xv=new Array(3).concat(\"af8dc3f7f7f77fbf7b\",\"7b3294c2a5cfa6dba0008837\",\"7b3294c2a5cff7f7f7a6dba0008837\",\"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\").map(zv),Gv=Iv(Xv),Vv=new Array(3).concat(\"e9a3c9f7f7f7a1d76a\",\"d01c8bf1b6dab8e1864dac26\",\"d01c8bf1b6daf7f7f7b8e1864dac26\",\"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\").map(zv),$v=Iv(Vv),Wv=new Array(3).concat(\"998ec3f7f7f7f1a340\",\"5e3c99b2abd2fdb863e66101\",\"5e3c99b2abd2f7f7f7fdb863e66101\",\"542788998ec3d8daebfee0b6f1a340b35806\",\"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\").map(zv),Zv=Iv(Wv),Qv=new Array(3).concat(\"ef8a62f7f7f767a9cf\",\"ca0020f4a58292c5de0571b0\",\"ca0020f4a582f7f7f792c5de0571b0\",\"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\").map(zv),Jv=Iv(Qv),Kv=new Array(3).concat(\"ef8a62ffffff999999\",\"ca0020f4a582bababa404040\",\"ca0020f4a582ffffffbababa404040\",\"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\").map(zv),tg=Iv(Kv),ng=new Array(3).concat(\"fc8d59ffffbf91bfdb\",\"d7191cfdae61abd9e92c7bb6\",\"d7191cfdae61ffffbfabd9e92c7bb6\",\"d73027fc8d59fee090e0f3f891bfdb4575b4\",\"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\").map(zv),eg=Iv(ng),rg=new Array(3).concat(\"fc8d59ffffbf91cf60\",\"d7191cfdae61a6d96a1a9641\",\"d7191cfdae61ffffbfa6d96a1a9641\",\"d73027fc8d59fee08bd9ef8b91cf601a9850\",\"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\").map(zv),ig=Iv(rg),og=new Array(3).concat(\"fc8d59ffffbf99d594\",\"d7191cfdae61abdda42b83ba\",\"d7191cfdae61ffffbfabdda42b83ba\",\"d53e4ffc8d59fee08be6f59899d5943288bd\",\"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\").map(zv),ag=Iv(og),ug=new Array(3).concat(\"e5f5f999d8c92ca25f\",\"edf8fbb2e2e266c2a4238b45\",\"edf8fbb2e2e266c2a42ca25f006d2c\",\"edf8fbccece699d8c966c2a42ca25f006d2c\",\"edf8fbccece699d8c966c2a441ae76238b45005824\",\"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\").map(zv),cg=Iv(ug),fg=new Array(3).concat(\"e0ecf49ebcda8856a7\",\"edf8fbb3cde38c96c688419d\",\"edf8fbb3cde38c96c68856a7810f7c\",\"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\").map(zv),sg=Iv(fg),lg=new Array(3).concat(\"e0f3dba8ddb543a2ca\",\"f0f9e8bae4bc7bccc42b8cbe\",\"f0f9e8bae4bc7bccc443a2ca0868ac\",\"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\").map(zv),hg=Iv(lg),dg=new Array(3).concat(\"fee8c8fdbb84e34a33\",\"fef0d9fdcc8afc8d59d7301f\",\"fef0d9fdcc8afc8d59e34a33b30000\",\"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\").map(zv),pg=Iv(dg),vg=new Array(3).concat(\"ece2f0a6bddb1c9099\",\"f6eff7bdc9e167a9cf02818a\",\"f6eff7bdc9e167a9cf1c9099016c59\",\"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\").map(zv),gg=Iv(vg),yg=new Array(3).concat(\"ece7f2a6bddb2b8cbe\",\"f1eef6bdc9e174a9cf0570b0\",\"f1eef6bdc9e174a9cf2b8cbe045a8d\",\"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\").map(zv),_g=Iv(yg),bg=new Array(3).concat(\"e7e1efc994c7dd1c77\",\"f1eef6d7b5d8df65b0ce1256\",\"f1eef6d7b5d8df65b0dd1c77980043\",\"f1eef6d4b9dac994c7df65b0dd1c77980043\",\"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\").map(zv),mg=Iv(bg),xg=new Array(3).concat(\"fde0ddfa9fb5c51b8a\",\"feebe2fbb4b9f768a1ae017e\",\"feebe2fbb4b9f768a1c51b8a7a0177\",\"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\").map(zv),wg=Iv(xg),Mg=new Array(3).concat(\"edf8b17fcdbb2c7fb8\",\"ffffcca1dab441b6c4225ea8\",\"ffffcca1dab441b6c42c7fb8253494\",\"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\").map(zv),Ng=Iv(Mg),Ag=new Array(3).concat(\"f7fcb9addd8e31a354\",\"ffffccc2e69978c679238443\",\"ffffccc2e69978c67931a354006837\",\"ffffccd9f0a3addd8e78c67931a354006837\",\"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\").map(zv),Tg=Iv(Ag),Sg=new Array(3).concat(\"fff7bcfec44fd95f0e\",\"ffffd4fed98efe9929cc4c02\",\"ffffd4fed98efe9929d95f0e993404\",\"ffffd4fee391fec44ffe9929d95f0e993404\",\"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\").map(zv),kg=Iv(Sg),Eg=new Array(3).concat(\"ffeda0feb24cf03b20\",\"ffffb2fecc5cfd8d3ce31a1c\",\"ffffb2fecc5cfd8d3cf03b20bd0026\",\"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\").map(zv),Cg=Iv(Eg),Pg=new Array(3).concat(\"deebf79ecae13182bd\",\"eff3ffbdd7e76baed62171b5\",\"eff3ffbdd7e76baed63182bd08519c\",\"eff3ffc6dbef9ecae16baed63182bd08519c\",\"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\").map(zv),zg=Iv(Pg),Rg=new Array(3).concat(\"e5f5e0a1d99b31a354\",\"edf8e9bae4b374c476238b45\",\"edf8e9bae4b374c47631a354006d2c\",\"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\").map(zv),Dg=Iv(Rg),qg=new Array(3).concat(\"f0f0f0bdbdbd636363\",\"f7f7f7cccccc969696525252\",\"f7f7f7cccccc969696636363252525\",\"f7f7f7d9d9d9bdbdbd969696636363252525\",\"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\").map(zv),Lg=Iv(qg),Ug=new Array(3).concat(\"efedf5bcbddc756bb1\",\"f2f0f7cbc9e29e9ac86a51a3\",\"f2f0f7cbc9e29e9ac8756bb154278f\",\"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\").map(zv),Og=Iv(Ug),Bg=new Array(3).concat(\"fee0d2fc9272de2d26\",\"fee5d9fcae91fb6a4acb181d\",\"fee5d9fcae91fb6a4ade2d26a50f15\",\"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\").map(zv),Yg=Iv(Bg),Fg=new Array(3).concat(\"fee6cefdae6be6550d\",\"feeddefdbe85fd8d3cd94701\",\"feeddefdbe85fd8d3ce6550da63603\",\"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\").map(zv),Ig=Iv(Fg),jg=He(Qn(300,.5,0),Qn(-240,.5,1)),Hg=He(Qn(-100,.75,.35),Qn(80,1.5,.8)),Xg=He(Qn(260,.75,.35),Qn(80,1.5,.8)),Gg=Qn();var Vg=gn(),$g=Math.PI/3,Wg=2*Math.PI/3;function Zg(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var Qg=Zg(zv(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\")),Jg=Zg(zv(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\")),Kg=Zg(zv(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\")),ty=Zg(zv(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));function ny(t){return function(){return t}}var ey=Math.abs,ry=Math.atan2,iy=Math.cos,oy=Math.max,ay=Math.min,uy=Math.sin,cy=Math.sqrt,fy=1e-12,sy=Math.PI,ly=sy/2,hy=2*sy;function dy(t){return t>=1?ly:t<=-1?-ly:Math.asin(t)}function py(t){return t.innerRadius}function vy(t){return t.outerRadius}function gy(t){return t.startAngle}function yy(t){return t.endAngle}function _y(t){return t&&t.padAngle}function by(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/cy(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,v=r+l,g=(h+p)/2,y=(d+v)/2,_=p-h,b=v-d,m=_*_+b*b,x=i-o,w=h*v-p*d,M=(b<0?-1:1)*cy(oy(0,x*x*m-w*w)),N=(w*b-_*M)/m,A=(-w*_-b*M)/m,T=(w*b+_*M)/m,S=(-w*_+b*M)/m,k=N-g,E=A-y,C=T-g,P=S-y;return k*k+E*E>C*C+P*P&&(N=T,A=S),{cx:N,cy:A,x01:-s,y01:-l,x11:N*(i/x-1),y11:A*(i/x-1)}}function my(t){this._context=t}function xy(t){return new my(t)}function wy(t){return t[0]}function My(t){return t[1]}function Ny(){var t=wy,n=My,e=ny(!0),r=null,i=xy,o=null;function a(a){var u,c,f,s=a.length,l=!1;for(null==r&&(o=i(f=Xi())),u=0;u<=s;++u)!(u<s&&e(c=a[u],u,a))===l&&((l=!l)?o.lineStart():o.lineEnd()),l&&o.point(+t(c,u,a),+n(c,u,a));if(f)return o=null,f+\"\"||null}return a.x=function(n){return arguments.length?(t=\"function\"==typeof n?n:ny(+n),a):t},a.y=function(t){return arguments.length?(n=\"function\"==typeof t?t:ny(+t),a):n},a.defined=function(t){return arguments.length?(e=\"function\"==typeof t?t:ny(!!t),a):e},a.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),a):i},a.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),a):r},a}function Ay(){var t=wy,n=null,e=ny(0),r=My,i=ny(!0),o=null,a=xy,u=null;function c(c){var f,s,l,h,d,p=c.length,v=!1,g=new Array(p),y=new Array(p);for(null==o&&(u=a(d=Xi())),f=0;f<=p;++f){if(!(f<p&&i(h=c[f],f,c))===v)if(v=!v)s=f,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),l=f-1;l>=s;--l)u.point(g[l],y[l]);u.lineEnd(),u.areaEnd()}v&&(g[f]=+t(h,f,c),y[f]=+e(h,f,c),u.point(n?+n(h,f,c):g[f],r?+r(h,f,c):y[f]))}if(d)return u=null,d+\"\"||null}function f(){return Ny().defined(i).curve(a).context(o)}return c.x=function(e){return arguments.length?(t=\"function\"==typeof e?e:ny(+e),n=null,c):t},c.x0=function(n){return arguments.length?(t=\"function\"==typeof n?n:ny(+n),c):t},c.x1=function(t){return arguments.length?(n=null==t?null:\"function\"==typeof t?t:ny(+t),c):n},c.y=function(t){return arguments.length?(e=\"function\"==typeof t?t:ny(+t),r=null,c):e},c.y0=function(t){return arguments.length?(e=\"function\"==typeof t?t:ny(+t),c):e},c.y1=function(t){return arguments.length?(r=null==t?null:\"function\"==typeof t?t:ny(+t),c):r},c.lineX0=c.lineY0=function(){return f().x(t).y(e)},c.lineY1=function(){return f().x(t).y(r)},c.lineX1=function(){return f().x(n).y(e)},c.defined=function(t){return arguments.length?(i=\"function\"==typeof t?t:ny(!!t),c):i},c.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),c):a},c.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),c):o},c}function Ty(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function Sy(t){return t}my.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var ky=Cy(xy);function Ey(t){this._curve=t}function Cy(t){function n(n){return new Ey(t(n))}return n._curve=t,n}function Py(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Cy(t)):n()._curve},t}function zy(){return Py(Ny().curve(ky))}function Ry(){var t=Ay().curve(ky),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Py(e())},delete t.lineX0,t.lineEndAngle=function(){return Py(r())},delete t.lineX1,t.lineInnerRadius=function(){return Py(i())},delete t.lineY0,t.lineOuterRadius=function(){return Py(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Cy(t)):n()._curve},t}function Dy(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}Ey.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var qy=Array.prototype.slice;function Ly(t){return t.source}function Uy(t){return t.target}function Oy(t){var n=Ly,e=Uy,r=wy,i=My,o=null;function a(){var a,u=qy.call(arguments),c=n.apply(this,u),f=e.apply(this,u);if(o||(o=a=Xi()),t(o,+r.apply(this,(u[0]=c,u)),+i.apply(this,u),+r.apply(this,(u[0]=f,u)),+i.apply(this,u)),a)return o=null,a+\"\"||null}return a.source=function(t){return arguments.length?(n=t,a):n},a.target=function(t){return arguments.length?(e=t,a):e},a.x=function(t){return arguments.length?(r=\"function\"==typeof t?t:ny(+t),a):r},a.y=function(t){return arguments.length?(i=\"function\"==typeof t?t:ny(+t),a):i},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a}function By(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function Yy(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function Fy(t,n,e,r,i){var o=Dy(n,e),a=Dy(n,e=(e+i)/2),u=Dy(r,e),c=Dy(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(a[0],a[1],u[0],u[1],c[0],c[1])}var Iy={draw:function(t,n){var e=Math.sqrt(n/sy);t.moveTo(e,0),t.arc(0,0,e,0,hy)}},jy={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},Hy=Math.sqrt(1/3),Xy=2*Hy,Gy={draw:function(t,n){var e=Math.sqrt(n/Xy),r=e*Hy;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},Vy=Math.sin(sy/10)/Math.sin(7*sy/10),$y=Math.sin(hy/10)*Vy,Wy=-Math.cos(hy/10)*Vy,Zy={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=$y*e,i=Wy*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var a=hy*o/5,u=Math.cos(a),c=Math.sin(a);t.lineTo(c*e,-u*e),t.lineTo(u*r-c*i,c*r+u*i)}t.closePath()}},Qy={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},Jy=Math.sqrt(3),Ky={draw:function(t,n){var e=-Math.sqrt(n/(3*Jy));t.moveTo(0,2*e),t.lineTo(-Jy*e,-e),t.lineTo(Jy*e,-e),t.closePath()}},t_=Math.sqrt(3)/2,n_=1/Math.sqrt(12),e_=3*(n_/2+1),r_={draw:function(t,n){var e=Math.sqrt(n/e_),r=e/2,i=e*n_,o=r,a=e*n_+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(-.5*r-t_*i,t_*r+-.5*i),t.lineTo(-.5*o-t_*a,t_*o+-.5*a),t.lineTo(-.5*u-t_*c,t_*u+-.5*c),t.lineTo(-.5*r+t_*i,-.5*i-t_*r),t.lineTo(-.5*o+t_*a,-.5*a-t_*o),t.lineTo(-.5*u+t_*c,-.5*c-t_*u),t.closePath()}},i_=[Iy,jy,Gy,Qy,Zy,Ky,r_];function o_(){}function a_(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function u_(t){this._context=t}function c_(t){this._context=t}function f_(t){this._context=t}function s_(t,n){this._basis=new u_(t),this._beta=n}u_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:a_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:a_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},c_.prototype={areaStart:o_,areaEnd:o_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:a_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},f_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:a_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},s_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var l_=function t(n){function e(t){return 1===n?new u_(t):new s_(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function h_(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function d_(t,n){this._context=t,this._k=(1-n)/6}d_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:h_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:h_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var p_=function t(n){function e(t){return new d_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function v_(t,n){this._context=t,this._k=(1-n)/6}v_.prototype={areaStart:o_,areaEnd:o_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:h_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var g_=function t(n){function e(t){return new v_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function y_(t,n){this._context=t,this._k=(1-n)/6}y_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:h_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var __=function t(n){function e(t){return new y_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function b_(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>fy){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>fy){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function m_(t,n){this._context=t,this._alpha=n}m_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:b_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var x_=function t(n){function e(t){return n?new m_(t,n):new d_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function w_(t,n){this._context=t,this._alpha=n}w_.prototype={areaStart:o_,areaEnd:o_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:b_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var M_=function t(n){function e(t){return n?new w_(t,n):new v_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function N_(t,n){this._context=t,this._alpha=n}N_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:b_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var A_=function t(n){function e(t){return n?new N_(t,n):new y_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function T_(t){this._context=t}function S_(t){return t<0?-1:1}function k_(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(S_(o)+S_(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function E_(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function C_(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function P_(t){this._context=t}function z_(t){this._context=new R_(t)}function R_(t){this._context=t}function D_(t){this._context=t}function q_(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,o[n]=4,a[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/o[n-1],o[n]-=e,a[n]-=e*a[n-1];for(i[r-1]=a[r-1]/o[r-1],n=r-2;n>=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)o[n]=2*t[n+1]-i[n+1];return[i,o]}function L_(t,n){this._context=t,this._t=n}function U_(t,n){if((i=t.length)>1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o<i;++o)for(r=a,a=t[n[o]],e=0;e<u;++e)a[e][1]+=a[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]}function O_(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e}function B_(t,n){return t[n]}function Y_(t){var n=t.map(F_);return O_(t).sort(function(t,e){return n[t]-n[e]})}function F_(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++e<i;)(n=+t[e][1])>o&&(o=n,r=e);return r}function I_(t){var n=t.map(j_);return O_(t).sort(function(t,e){return n[t]-n[e]})}function j_(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}function H_(t){return function(){return t}}function X_(t){return t[0]}function G_(t){return t[1]}function V_(){this._=null}function $_(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function W_(t,n){var e=n,r=n.R,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function Z_(t,n){var e=n,r=n.L,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function Q_(t){for(;t.L;)t=t.L;return t}function J_(t,n,e,r){var i=[null,null],o=wb.push(i)-1;return i.left=t,i.right=n,e&&tb(i,t,n,e),r&&tb(i,n,t,r),mb[t.index].halfedges.push(o),mb[n.index].halfedges.push(o),i}function K_(t,n,e){var r=[n,e];return r.left=t,r}function tb(t,n,e,r){t[0]||t[1]?t.left===e?t[1]=r:t[0]=r:(t[0]=r,t.left=n,t.right=e)}function nb(t,n,e,r,i){var o,a=t[0],u=t[1],c=a[0],f=a[1],s=0,l=1,h=u[0]-c,d=u[1]-f;if(o=n-c,h||!(o>0)){if(o/=h,h<0){if(o<s)return;o<l&&(l=o)}else if(h>0){if(o>l)return;o>s&&(s=o)}if(o=r-c,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>s&&(s=o)}else if(h>0){if(o<s)return;o<l&&(l=o)}if(o=e-f,d||!(o>0)){if(o/=d,d<0){if(o<s)return;o<l&&(l=o)}else if(d>0){if(o>l)return;o>s&&(s=o)}if(o=i-f,d||!(o<0)){if(o/=d,d<0){if(o>l)return;o>s&&(s=o)}else if(d>0){if(o<s)return;o<l&&(l=o)}return!(s>0||l<1)||(s>0&&(t[0]=[c+s*h,f+s*d]),l<1&&(t[1]=[c+l*h,f+l*d]),!0)}}}}}function eb(t,n,e,r,i){var o=t[1];if(o)return!0;var a,u,c=t[0],f=t.left,s=t.right,l=f[0],h=f[1],d=s[0],p=s[1],v=(l+d)/2,g=(h+p)/2;if(p===h){if(v<n||v>=r)return;if(l>d){if(c){if(c[1]>=i)return}else c=[v,e];o=[v,i]}else{if(c){if(c[1]<e)return}else c=[v,i];o=[v,e]}}else if(u=g-(a=(l-d)/(p-h))*v,a<-1||a>1)if(l>d){if(c){if(c[1]>=i)return}else c=[(e-u)/a,e];o=[(i-u)/a,i]}else{if(c){if(c[1]<e)return}else c=[(i-u)/a,i];o=[(e-u)/a,e]}else if(h<p){if(c){if(c[0]>=r)return}else c=[n,a*n+u];o=[r,a*r+u]}else{if(c){if(c[0]<n)return}else c=[r,a*r+u];o=[n,a*n+u]}return t[0]=c,t[1]=o,!0}function rb(t,n){var e=t.site,r=n.left,i=n.right;return e===i&&(i=r,r=e),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(e===r?(r=n[1],i=n[0]):(r=n[0],i=n[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function ib(t,n){return n[+(n.left!==t.site)]}function ob(t,n){return n[+(n.left===t.site)]}T_.prototype={areaStart:o_,areaEnd:o_,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}},P_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:C_(this,this._t0,E_(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,C_(this,E_(this,e=k_(this,t,n)),e);break;default:C_(this,this._t0,e=k_(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(z_.prototype=Object.create(P_.prototype)).point=function(t,n){P_.prototype.point.call(this,n,t)},R_.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},D_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=q_(t),i=q_(n),o=0,a=1;a<e;++o,++a)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[a],n[a]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}},L_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}},V_.prototype={constructor:V_,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=Q_(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(W_(this,e),e=(t=e).U),e.C=!1,r.C=!0,Z_(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(Z_(this,e),e=(t=e).U),e.C=!1,r.C=!0,W_(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,a=t.R;if(e=o?a?Q_(a):o:a,i?i.L===t?i.L=e:i.R=e:this._=e,o&&a?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==a?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=a,a.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,W_(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,Z_(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,W_(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,Z_(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,W_(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,Z_(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var ab,ub=[];function cb(){$_(this),this.x=this.y=this.arc=this.site=this.cy=null}function fb(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,i=t.site,o=e.site;if(r!==o){var a=i[0],u=i[1],c=r[0]-a,f=r[1]-u,s=o[0]-a,l=o[1]-u,h=2*(c*l-f*s);if(!(h>=-Nb)){var d=c*c+f*f,p=s*s+l*l,v=(l*d-f*p)/h,g=(c*p-s*d)/h,y=ub.pop()||new cb;y.arc=t,y.site=i,y.x=v+a,y.y=(y.cy=g+u)+Math.sqrt(v*v+g*g),t.circle=y;for(var _=null,b=xb._;b;)if(y.y<b.y||y.y===b.y&&y.x<=b.x){if(!b.L){_=b.P;break}b=b.L}else{if(!b.R){_=b;break}b=b.R}xb.insert(_,y),_||(ab=y)}}}}function sb(t){var n=t.circle;n&&(n.P||(ab=n.N),xb.remove(n),ub.push(n),$_(n),t.circle=null)}var lb=[];function hb(){$_(this),this.edge=this.site=this.circle=null}function db(t){var n=lb.pop()||new hb;return n.site=t,n}function pb(t){sb(t),bb.remove(t),lb.push(t),$_(t)}function vb(t){var n=t.circle,e=n.x,r=n.cy,i=[e,r],o=t.P,a=t.N,u=[t];pb(t);for(var c=o;c.circle&&Math.abs(e-c.circle.x)<Mb&&Math.abs(r-c.circle.cy)<Mb;)o=c.P,u.unshift(c),pb(c),c=o;u.unshift(c),sb(c);for(var f=a;f.circle&&Math.abs(e-f.circle.x)<Mb&&Math.abs(r-f.circle.cy)<Mb;)a=f.N,u.push(f),pb(f),f=a;u.push(f),sb(f);var s,l=u.length;for(s=1;s<l;++s)f=u[s],c=u[s-1],tb(f.edge,c.site,f.site,i);c=u[0],(f=u[l-1]).edge=J_(c.site,f.site,null,i),fb(c),fb(f)}function gb(t){for(var n,e,r,i,o=t[0],a=t[1],u=bb._;u;)if((r=yb(u,a)-o)>Mb)u=u.L;else{if(!((i=o-_b(u,a))>Mb)){r>-Mb?(n=u.P,e=u):i>-Mb?(n=u,e=u.N):n=e=u;break}if(!u.R){n=u;break}u=u.R}!function(t){mb[t.index]={site:t,halfedges:[]}}(t);var c=db(t);if(bb.insert(n,c),n||e){if(n===e)return sb(n),e=db(n.site),bb.insert(c,e),c.edge=e.edge=J_(n.site,c.site),fb(n),void fb(e);if(e){sb(n),sb(e);var f=n.site,s=f[0],l=f[1],h=t[0]-s,d=t[1]-l,p=e.site,v=p[0]-s,g=p[1]-l,y=2*(h*g-d*v),_=h*h+d*d,b=v*v+g*g,m=[(g*_-d*b)/y+s,(h*b-v*_)/y+l];tb(e.edge,f,p,m),c.edge=J_(f,t,null,m),e.edge=J_(t,p,null,m),fb(n),fb(e)}else c.edge=J_(n.site,c.site)}}function yb(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var a=t.P;if(!a)return-1/0;var u=(e=a.site)[0],c=e[1],f=c-n;if(!f)return u;var s=u-r,l=1/o-1/f,h=s/f;return l?(-h+Math.sqrt(h*h-2*l*(s*s/(-2*f)-c+f/2+i-o/2)))/l+r:(r+u)/2}function _b(t,n){var e=t.N;if(e)return yb(e,n);var r=t.site;return r[1]===n?r[0]:1/0}var bb,mb,xb,wb,Mb=1e-6,Nb=1e-12;function Ab(t,n){return n[1]-t[1]||n[0]-t[0]}function Tb(t,n){var e,r,i,o=t.sort(Ab).pop();for(wb=[],mb=new Array(t.length),bb=new V_,xb=new V_;;)if(i=ab,o&&(!i||o[1]<i.y||o[1]===i.y&&o[0]<i.x))o[0]===e&&o[1]===r||(gb(o),e=o[0],r=o[1]),o=t.pop();else{if(!i)break;vb(i.arc)}if(function(){for(var t,n,e,r,i=0,o=mb.length;i<o;++i)if((t=mb[i])&&(r=(n=t.halfedges).length)){var a=new Array(r),u=new Array(r);for(e=0;e<r;++e)a[e]=e,u[e]=rb(t,wb[n[e]]);for(a.sort(function(t,n){return u[n]-u[t]}),e=0;e<r;++e)u[e]=n[a[e]];for(e=0;e<r;++e)n[e]=u[e]}}(),n){var a=+n[0][0],u=+n[0][1],c=+n[1][0],f=+n[1][1];!function(t,n,e,r){for(var i,o=wb.length;o--;)eb(i=wb[o],t,n,e,r)&&nb(i,t,n,e,r)&&(Math.abs(i[0][0]-i[1][0])>Mb||Math.abs(i[0][1]-i[1][1])>Mb)||delete wb[o]}(a,u,c,f),function(t,n,e,r){var i,o,a,u,c,f,s,l,h,d,p,v,g=mb.length,y=!0;for(i=0;i<g;++i)if(o=mb[i]){for(a=o.site,u=(c=o.halfedges).length;u--;)wb[c[u]]||c.splice(u,1);for(u=0,f=c.length;u<f;)p=(d=ob(o,wb[c[u]]))[0],v=d[1],l=(s=ib(o,wb[c[++u%f]]))[0],h=s[1],(Math.abs(p-l)>Mb||Math.abs(v-h)>Mb)&&(c.splice(u,0,wb.push(K_(a,d,Math.abs(p-t)<Mb&&r-v>Mb?[t,Math.abs(l-t)<Mb?h:r]:Math.abs(v-r)<Mb&&e-p>Mb?[Math.abs(h-r)<Mb?l:e,r]:Math.abs(p-e)<Mb&&v-n>Mb?[e,Math.abs(l-e)<Mb?h:n]:Math.abs(v-n)<Mb&&p-t>Mb?[Math.abs(h-n)<Mb?l:t,n]:null))-1),++f);f&&(y=!1)}if(y){var _,b,m,x=1/0;for(i=0,y=null;i<g;++i)(o=mb[i])&&(m=(_=(a=o.site)[0]-t)*_+(b=a[1]-n)*b)<x&&(x=m,y=o);if(y){var w=[t,n],M=[t,r],N=[e,r],A=[e,n];y.halfedges.push(wb.push(K_(a=y.site,w,M))-1,wb.push(K_(a,M,N))-1,wb.push(K_(a,N,A))-1,wb.push(K_(a,A,w))-1)}}for(i=0;i<g;++i)(o=mb[i])&&(o.halfedges.length||delete mb[i])}(a,u,c,f)}this.edges=wb,this.cells=mb,bb=xb=wb=mb=null}function Sb(t){return function(){return t}}function kb(t,n,e){this.target=t,this.type=n,this.transform=e}function Eb(t,n,e){this.k=t,this.x=n,this.y=e}Tb.prototype={constructor:Tb,polygons:function(){var t=this.edges;return this.cells.map(function(n){var e=n.halfedges.map(function(e){return ib(n,t[e])});return e.data=n.site.data,e})},triangles:function(){var t=[],n=this.edges;return this.cells.forEach(function(e,r){if(o=(i=e.halfedges).length)for(var i,o,a,u,c,f,s=e.site,l=-1,h=n[i[o-1]],d=h.left===s?h.right:h.left;++l<o;)a=d,d=(h=n[i[l]]).left===s?h.right:h.left,a&&d&&r<a.index&&r<d.index&&(c=a,f=d,((u=s)[0]-f[0])*(c[1]-u[1])-(u[0]-c[0])*(f[1]-u[1])<0)&&t.push([s.data,a.data,d.data])}),t},links:function(){return this.edges.filter(function(t){return t.right}).map(function(t){return{source:t.left.data,target:t.right.data}})},find:function(t,n,e){for(var r,i,o=this,a=o._found||0,u=o.cells.length;!(i=o.cells[a]);)if(++a>=u)return null;var c=t-i.site[0],f=n-i.site[1],s=c*c+f*f;do{i=o.cells[r=a],a=null,i.halfedges.forEach(function(e){var r=o.edges[e],u=r.left;if(u!==i.site&&u||(u=r.right)){var c=t-u[0],f=n-u[1],l=c*c+f*f;l<s&&(s=l,a=u.index)}})}while(null!==a);return o._found=r,null==e||s<=e*e?i.site:null}},Eb.prototype={constructor:Eb,scale:function(t){return 1===t?this:new Eb(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new Eb(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return\"translate(\"+this.x+\",\"+this.y+\") scale(\"+this.k+\")\"}};var Cb=new Eb(1,0,0);function Pb(t){return t.__zoom||Cb}function zb(){t.event.stopImmediatePropagation()}function Rb(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function Db(){return!t.event.button}function qb(){var t,n,e=this;return e instanceof SVGElement?(t=(e=e.ownerSVGElement||e).width.baseVal.value,n=e.height.baseVal.value):(t=e.clientWidth,n=e.clientHeight),[[0,0],[t,n]]}function Lb(){return this.__zoom||Cb}function Ub(){return-t.event.deltaY*(t.event.deltaMode?120:1)/500}function Ob(){return\"ontouchstart\"in this}function Bb(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Pb.prototype=Eb.prototype,t.version=\"5.9.7\",t.bisect=i,t.bisectRight=i,t.bisectLeft=o,t.ascending=n,t.bisector=e,t.cross=function(t,n,e){var r,i,o,u,c=t.length,f=n.length,s=new Array(c*f);for(null==e&&(e=a),r=o=0;r<c;++r)for(u=t[r],i=0;i<f;++i,++o)s[o]=e(u,n[i]);return s},t.descending=function(t,n){return n<t?-1:n>t?1:n>=t?0:NaN},t.deviation=f,t.extent=s,t.histogram=function(){var t=v,n=s,e=M;function r(r){var o,a,u=r.length,c=new Array(u);for(o=0;o<u;++o)c[o]=t(r[o],o,r);var f=n(c),s=f[0],l=f[1],h=e(c,s,l);Array.isArray(h)||(h=w(s,l,h),h=g(Math.ceil(s/h)*h,l,h));for(var d=h.length;h[0]<=s;)h.shift(),--d;for(;h[d-1]>l;)h.pop(),--d;var p,v=new Array(d+1);for(o=0;o<=d;++o)(p=v[o]=[]).x0=o>0?h[o-1]:s,p.x1=o<d?h[o]:l;for(o=0;o<u;++o)s<=(a=c[o])&&a<=l&&v[i(h,a,0,d)].push(r[o]);return v}return r.value=function(n){return arguments.length?(t=\"function\"==typeof n?n:p(n),r):t},r.domain=function(t){return arguments.length?(n=\"function\"==typeof t?t:p([t[0],t[1]]),r):n},r.thresholds=function(t){return arguments.length?(e=\"function\"==typeof t?t:Array.isArray(t)?p(h.call(t)):p(t),r):e},r},t.thresholdFreedmanDiaconis=function(t,e,r){return t=d.call(t,u).sort(n),Math.ceil((r-e)/(2*(N(t,.75)-N(t,.25))*Math.pow(t.length,-1/3)))},t.thresholdScott=function(t,n,e){return Math.ceil((e-n)/(3.5*f(t)*Math.pow(t.length,-1/3)))},t.thresholdSturges=M,t.max=A,t.mean=function(t,n){var e,r=t.length,i=r,o=-1,a=0;if(null==n)for(;++o<r;)isNaN(e=u(t[o]))?--i:a+=e;else for(;++o<r;)isNaN(e=u(n(t[o],o,t)))?--i:a+=e;if(i)return a/i},t.median=function(t,e){var r,i=t.length,o=-1,a=[];if(null==e)for(;++o<i;)isNaN(r=u(t[o]))||a.push(r);else for(;++o<i;)isNaN(r=u(e(t[o],o,t)))||a.push(r);return N(a.sort(n),.5)},t.merge=T,t.min=S,t.pairs=function(t,n){null==n&&(n=a);for(var e=0,r=t.length-1,i=t[0],o=new Array(r<0?0:r);e<r;)o[e]=n(i,i=t[++e]);return o},t.permute=function(t,n){for(var e=n.length,r=new Array(e);e--;)r[e]=t[n[e]];return r},t.quantile=N,t.range=g,t.scan=function(t,e){if(r=t.length){var r,i,o=0,a=0,u=t[a];for(null==e&&(e=n);++o<r;)(e(i=t[o],u)<0||0!==e(u,u))&&(u=i,a=o);return 0===e(u,u)?a:void 0}},t.shuffle=function(t,n,e){for(var r,i,o=(null==e?t.length:e)-(n=null==n?0:+n);o;)i=Math.random()*o--|0,r=t[o+n],t[o+n]=t[i+n],t[i+n]=r;return t},t.sum=function(t,n){var e,r=t.length,i=-1,o=0;if(null==n)for(;++i<r;)(e=+t[i])&&(o+=e);else for(;++i<r;)(e=+n(t[i],i,t))&&(o+=e);return o},t.ticks=m,t.tickIncrement=x,t.tickStep=w,t.transpose=k,t.variance=c,t.zip=function(){return k(arguments)},t.axisTop=function(t){return Y(z,t)},t.axisRight=function(t){return Y(R,t)},t.axisBottom=function(t){return Y(D,t)},t.axisLeft=function(t){return Y(q,t)},t.brush=function(){return zi(xi)},t.brushX=function(){return zi(bi)},t.brushY=function(){return zi(mi)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.chord=function(){var t=0,n=null,e=null,r=null;function i(i){var o,a,u,c,f,s,l=i.length,h=[],d=g(l),p=[],v=[],y=v.groups=new Array(l),_=new Array(l*l);for(o=0,f=-1;++f<l;){for(a=0,s=-1;++s<l;)a+=i[f][s];h.push(a),p.push(g(l)),o+=a}for(n&&d.sort(function(t,e){return n(h[t],h[e])}),e&&p.forEach(function(t,n){t.sort(function(t,r){return e(i[n][t],i[n][r])})}),c=(o=Oi(0,Ui-t*l)/o)?t:Ui/l,a=0,f=-1;++f<l;){for(u=a,s=-1;++s<l;){var b=d[f],m=p[b][s],x=i[b][m],w=a,M=a+=x*o;_[m*l+b]={index:b,subindex:m,startAngle:w,endAngle:M,value:x}}y[b]={index:b,startAngle:u,endAngle:a,value:h[b]},a+=c}for(f=-1;++f<l;)for(s=f-1;++s<l;){var N=_[s*l+f],A=_[f*l+s];(N.value||A.value)&&v.push(N.value<A.value?{source:A,target:N}:{source:N,target:A})}return r?v.sort(r):v}return i.padAngle=function(n){return arguments.length?(t=Oi(0,n),i):t},i.sortGroups=function(t){return arguments.length?(n=t,i):n},i.sortSubgroups=function(t){return arguments.length?(e=t,i):e},i.sortChords=function(t){return arguments.length?(null==t?r=null:(n=t,r=function(t,e){return n(t.source.value+t.target.value,e.source.value+e.target.value)})._=t,i):r&&r._;var n},i},t.ribbon=function(){var t=Gi,n=Vi,e=$i,r=Wi,i=Zi,o=null;function a(){var a,u=Bi.call(arguments),c=t.apply(this,u),f=n.apply(this,u),s=+e.apply(this,(u[0]=c,u)),l=r.apply(this,u)-Li,h=i.apply(this,u)-Li,d=s*Ri(l),p=s*Di(l),v=+e.apply(this,(u[0]=f,u)),g=r.apply(this,u)-Li,y=i.apply(this,u)-Li;if(o||(o=a=Xi()),o.moveTo(d,p),o.arc(0,0,s,l,h),l===g&&h===y||(o.quadraticCurveTo(0,0,v*Ri(g),v*Di(g)),o.arc(0,0,v,g,y)),o.quadraticCurveTo(0,0,d,p),o.closePath(),a)return o=null,a+\"\"||null}return a.radius=function(t){return arguments.length?(e=\"function\"==typeof t?t:Yi(+t),a):e},a.startAngle=function(t){return arguments.length?(r=\"function\"==typeof t?t:Yi(+t),a):r},a.endAngle=function(t){return arguments.length?(i=\"function\"==typeof t?t:Yi(+t),a):i},a.source=function(n){return arguments.length?(t=n,a):t},a.target=function(t){return arguments.length?(n=t,a):n},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a},t.nest=function(){var t,n,e,r=[],i=[];function o(e,i,a,u){if(i>=r.length)return null!=t&&e.sort(t),null!=n?n(e):e;for(var c,f,s,l=-1,h=e.length,d=r[i++],p=Ji(),v=a();++l<h;)(s=p.get(c=d(f=e[l])+\"\"))?s.push(f):p.set(c,[f]);return p.each(function(t,n){u(v,n,o(t,i,a,u))}),v}return e={object:function(t){return o(t,0,Ki,to)},map:function(t){return o(t,0,no,eo)},entries:function(t){return function t(e,o){if(++o>r.length)return e;var a,u=i[o-1];return null!=n&&o>=r.length?a=e.entries():(a=[],e.each(function(n,e){a.push({key:e,values:t(n,o)})})),null!=u?a.sort(function(t,n){return u(t.key,n.key)}):a}(o(t,0,no,eo),0)},key:function(t){return r.push(t),e},sortKeys:function(t){return i[r.length-1]=t,e},sortValues:function(n){return t=n,e},rollup:function(t){return n=t,e}}},t.set=oo,t.map=Ji,t.keys=function(t){var n=[];for(var e in t)n.push(e);return n},t.values=function(t){var n=[];for(var e in t)n.push(t[e]);return n},t.entries=function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},t.color=hn,t.rgb=gn,t.hsl=mn,t.lab=Rn,t.hcl=Yn,t.lch=function(t,n,e,r){return 1===arguments.length?Bn(t):new Fn(e,n,t,null==r?1:r)},t.gray=function(t,n){return new Dn(t,0,0,null==n?1:n)},t.cubehelix=Qn,t.contours=vo,t.contourDensity=function(){var t=_o,n=bo,e=mo,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=co(20);function l(r){var i=new Float32Array(c*f),l=new Float32Array(c*f);r.forEach(function(r,o,s){var l=+t(r,o,s)+u>>a,h=+n(r,o,s)+u>>a,d=+e(r,o,s);l>=0&&l<c&&h>=0&&h<f&&(i[l+h*c]+=d)}),go({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),yo({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),go({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),yo({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),go({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),yo({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a);var d=s(i);if(!Array.isArray(d)){var p=A(i);d=w(0,p,d),(d=g(0,Math.floor(p/d)*d,d)).shift()}return vo().thresholds(d).size([c,f])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*a),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function y(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,l}return l.x=function(n){return arguments.length?(t=\"function\"==typeof n?n:co(+n),l):t},l.y=function(t){return arguments.length?(n=\"function\"==typeof t?t:co(+t),l):n},l.weight=function(t){return arguments.length?(e=\"function\"==typeof t?t:co(+t),l):e},l.size=function(t){if(!arguments.length)return[r,i];var n=Math.ceil(t[0]),e=Math.ceil(t[1]);if(!(n>=0||n>=0))throw new Error(\"invalid size\");return r=n,i=e,y()},l.cellSize=function(t){if(!arguments.length)return 1<<a;if(!((t=+t)>=1))throw new Error(\"invalid cell size\");return a=Math.floor(Math.log(t)/Math.LN2),y()},l.thresholds=function(t){return arguments.length?(s=\"function\"==typeof t?t:Array.isArray(t)?co(ao.call(t)):co(t),l):s},l.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error(\"invalid bandwidth\");return o=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},l},t.dispatch=I,t.drag=function(){var n,e,r,i,o=Gt,a=Vt,u=$t,c=Wt,f={},s=I(\"start\",\"drag\",\"end\"),l=0,h=0;function d(t){t.on(\"mousedown.drag\",p).filter(c).on(\"touchstart.drag\",y).on(\"touchmove.drag\",_).on(\"touchend.drag touchcancel.drag\",b).style(\"touch-action\",\"none\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\")}function p(){if(!i&&o.apply(this,arguments)){var u=m(\"mouse\",a.apply(this,arguments),Ot,this,arguments);u&&(zt(t.event.view).on(\"mousemove.drag\",v,!0).on(\"mouseup.drag\",g,!0),It(t.event.view),Yt(),r=!1,n=t.event.clientX,e=t.event.clientY,u(\"start\"))}}function v(){if(Ft(),!r){var i=t.event.clientX-n,o=t.event.clientY-e;r=i*i+o*o>h}f.mouse(\"drag\")}function g(){zt(t.event.view).on(\"mousemove.drag mouseup.drag\",null),jt(t.event.view,r),Ft(),f.mouse(\"end\")}function y(){if(o.apply(this,arguments)){var n,e,r=t.event.changedTouches,i=a.apply(this,arguments),u=r.length;for(n=0;n<u;++n)(e=m(r[n].identifier,i,Bt,this,arguments))&&(Yt(),e(\"start\"))}}function _(){var n,e,r=t.event.changedTouches,i=r.length;for(n=0;n<i;++n)(e=f[r[n].identifier])&&(Ft(),e(\"drag\"))}function b(){var n,e,r=t.event.changedTouches,o=r.length;for(i&&clearTimeout(i),i=setTimeout(function(){i=null},500),n=0;n<o;++n)(e=f[r[n].identifier])&&(Yt(),e(\"end\"))}function m(n,e,r,i,o){var a,c,h,p=r(e,n),v=s.copy();if(St(new Xt(d,\"beforestart\",a,n,l,p[0],p[1],0,0,v),function(){return null!=(t.event.subject=a=u.apply(i,o))&&(c=a.x-p[0]||0,h=a.y-p[1]||0,!0)}))return function t(u){var s,g=p;switch(u){case\"start\":f[n]=t,s=l++;break;case\"end\":delete f[n],--l;case\"drag\":p=r(e,n),s=l}St(new Xt(d,u,a,n,s,p[0]+c,p[1]+h,p[0]-g[0],p[1]-g[1],v),v.apply,v,[u,i,o])}}return d.filter=function(t){return arguments.length?(o=\"function\"==typeof t?t:Ht(!!t),d):o},d.container=function(t){return arguments.length?(a=\"function\"==typeof t?t:Ht(t),d):a},d.subject=function(t){return arguments.length?(u=\"function\"==typeof t?t:Ht(t),d):u},d.touchable=function(t){return arguments.length?(c=\"function\"==typeof t?t:Ht(!!t),d):c},d.on=function(){var t=s.on.apply(s,arguments);return t===s?d:t},d.clickDistance=function(t){return arguments.length?(h=(t=+t)*t,d):Math.sqrt(h)},d},t.dragDisable=It,t.dragEnable=jt,t.dsvFormat=Co,t.csvParse=zo,t.csvParseRows=Ro,t.csvFormat=Do,t.csvFormatBody=qo,t.csvFormatRows=Lo,t.tsvParse=Oo,t.tsvParseRows=Bo,t.tsvFormat=Yo,t.tsvFormatBody=Fo,t.tsvFormatRows=Io,t.autoType=function(t){for(var n in t){var e,r=t[n].trim();if(r)if(\"true\"===r)r=!0;else if(\"false\"===r)r=!1;else if(\"NaN\"===r)r=NaN;else if(isNaN(e=+r)){if(!/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/.test(r))continue;r=new Date(r)}else r=e;else r=null;t[n]=r}return t},t.easeLinear=function(t){return+t},t.easeQuad=Dr,t.easeQuadIn=function(t){return t*t},t.easeQuadOut=function(t){return t*(2-t)},t.easeQuadInOut=Dr,t.easeCubic=qr,t.easeCubicIn=function(t){return t*t*t},t.easeCubicOut=function(t){return--t*t*t+1},t.easeCubicInOut=qr,t.easePoly=Or,t.easePolyIn=Lr,t.easePolyOut=Ur,t.easePolyInOut=Or,t.easeSin=Fr,t.easeSinIn=function(t){return 1-Math.cos(t*Yr)},t.easeSinOut=function(t){return Math.sin(t*Yr)},t.easeSinInOut=Fr,t.easeExp=Ir,t.easeExpIn=function(t){return Math.pow(2,10*t-10)},t.easeExpOut=function(t){return 1-Math.pow(2,-10*t)},t.easeExpInOut=Ir,t.easeCircle=jr,t.easeCircleIn=function(t){return 1-Math.sqrt(1-t*t)},t.easeCircleOut=function(t){return Math.sqrt(1- --t*t)},t.easeCircleInOut=jr,t.easeBounce=ti,t.easeBounceIn=function(t){return 1-ti(1-t)},t.easeBounceOut=ti,t.easeBounceInOut=function(t){return((t*=2)<=1?1-ti(1-t):ti(t-1)+1)/2},t.easeBack=ri,t.easeBackIn=ni,t.easeBackOut=ei,t.easeBackInOut=ri,t.easeElastic=ai,t.easeElasticIn=oi,t.easeElasticOut=ai,t.easeElasticInOut=ui,t.blob=function(t,n){return fetch(t,n).then(jo)},t.buffer=function(t,n){return fetch(t,n).then(Ho)},t.dsv=function(t,n,e,r){3===arguments.length&&\"function\"==typeof e&&(r=e,e=void 0);var i=Co(t);return Go(n,e).then(function(t){return i.parse(t,r)})},t.csv=$o,t.tsv=Wo,t.image=function(t,n){return new Promise(function(e,r){var i=new Image;for(var o in n)i[o]=n[o];i.onerror=r,i.onload=function(){e(i)},i.src=t})},t.json=function(t,n){return fetch(t,n).then(Zo)},t.text=Go,t.xml=Jo,t.html=Ko,t.svg=ta,t.forceCenter=function(t,n){var e;function r(){var r,i,o=e.length,a=0,u=0;for(r=0;r<o;++r)a+=(i=e[r]).x,u+=i.y;for(a=a/o-t,u=u/o-n,r=0;r<o;++r)(i=e[r]).x-=a,i.y-=u}return null==t&&(t=0),null==n&&(n=0),r.initialize=function(t){e=t},r.x=function(n){return arguments.length?(t=+n,r):t},r.y=function(t){return arguments.length?(n=+t,r):n},r},t.forceCollide=function(t){var n,e,r=1,i=1;function o(){for(var t,o,u,c,f,s,l,h=n.length,d=0;d<i;++d)for(o=ua(n,la,ha).visitAfter(a),t=0;t<h;++t)u=n[t],s=e[u.index],l=s*s,c=u.x+u.vx,f=u.y+u.vy,o.visit(p);function p(t,n,e,i,o){var a=t.data,h=t.r,d=s+h;if(!a)return n>c+d||i<c-d||e>f+d||o<f-d;if(a.index>u.index){var p=c-a.x-a.vx,v=f-a.y-a.vy,g=p*p+v*v;g<d*d&&(0===p&&(g+=(p=ea())*p),0===v&&(g+=(v=ea())*v),g=(d-(g=Math.sqrt(g)))/g*r,u.vx+=(p*=g)*(d=(h*=h)/(l+h)),u.vy+=(v*=g)*d,a.vx-=p*(d=1-d),a.vy-=v*d)}}}function a(t){if(t.data)return t.r=e[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function u(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r<o;++r)i=n[r],e[i.index]=+t(i,r,n)}}return\"function\"!=typeof t&&(t=na(null==t?1:+t)),o.initialize=function(t){n=t,u()},o.iterations=function(t){return arguments.length?(i=+t,o):i},o.strength=function(t){return arguments.length?(r=+t,o):r},o.radius=function(n){return arguments.length?(t=\"function\"==typeof n?n:na(+n),u(),o):t},o},t.forceLink=function(t){var n,e,r,i,o,a=da,u=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},c=na(30),f=1;function s(r){for(var i=0,a=t.length;i<f;++i)for(var u,c,s,l,h,d,p,v=0;v<a;++v)c=(u=t[v]).source,l=(s=u.target).x+s.vx-c.x-c.vx||ea(),h=s.y+s.vy-c.y-c.vy||ea(),l*=d=((d=Math.sqrt(l*l+h*h))-e[v])/d*r*n[v],h*=d,s.vx-=l*(p=o[v]),s.vy-=h*p,c.vx+=l*(p=1-p),c.vy+=h*p}function l(){if(r){var u,c,f=r.length,s=t.length,l=Ji(r,a);for(u=0,i=new Array(f);u<s;++u)(c=t[u]).index=u,\"object\"!=typeof c.source&&(c.source=pa(l,c.source)),\"object\"!=typeof c.target&&(c.target=pa(l,c.target)),i[c.source.index]=(i[c.source.index]||0)+1,i[c.target.index]=(i[c.target.index]||0)+1;for(u=0,o=new Array(s);u<s;++u)c=t[u],o[u]=i[c.source.index]/(i[c.source.index]+i[c.target.index]);n=new Array(s),h(),e=new Array(s),d()}}function h(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+u(t[e],e,t)}function d(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+c(t[n],n,t)}return null==t&&(t=[]),s.initialize=function(t){r=t,l()},s.links=function(n){return arguments.length?(t=n,l(),s):t},s.id=function(t){return arguments.length?(a=t,s):a},s.iterations=function(t){return arguments.length?(f=+t,s):f},s.strength=function(t){return arguments.length?(u=\"function\"==typeof t?t:na(+t),h(),s):u},s.distance=function(t){return arguments.length?(c=\"function\"==typeof t?t:na(+t),d(),s):c},s},t.forceManyBody=function(){var t,n,e,r,i=na(-30),o=1,a=1/0,u=.81;function c(r){var i,o=t.length,a=ua(t,va,ga).visitAfter(s);for(e=r,i=0;i<o;++i)n=t[i],a.visit(l)}function f(){if(t){var n,e,o=t.length;for(r=new Array(o),n=0;n<o;++n)e=t[n],r[e.index]=+i(e,n,t)}}function s(t){var n,e,i,o,a,u=0,c=0;if(t.length){for(i=o=a=0;a<4;++a)(n=t[a])&&(e=Math.abs(n.value))&&(u+=n.value,c+=e,i+=e*n.x,o+=e*n.y);t.x=i/c,t.y=o/c}else{(n=t).x=n.data.x,n.y=n.data.y;do{u+=r[n.data.index]}while(n=n.next)}t.value=u}function l(t,i,c,f){if(!t.value)return!0;var s=t.x-n.x,l=t.y-n.y,h=f-i,d=s*s+l*l;if(h*h/u<d)return d<a&&(0===s&&(d+=(s=ea())*s),0===l&&(d+=(l=ea())*l),d<o&&(d=Math.sqrt(o*d)),n.vx+=s*t.value*e/d,n.vy+=l*t.value*e/d),!0;if(!(t.length||d>=a)){(t.data!==n||t.next)&&(0===s&&(d+=(s=ea())*s),0===l&&(d+=(l=ea())*l),d<o&&(d=Math.sqrt(o*d)));do{t.data!==n&&(h=r[t.data.index]*e/d,n.vx+=s*h,n.vy+=l*h)}while(t=t.next)}}return c.initialize=function(n){t=n,f()},c.strength=function(t){return arguments.length?(i=\"function\"==typeof t?t:na(+t),f(),c):i},c.distanceMin=function(t){return arguments.length?(o=t*t,c):Math.sqrt(o)},c.distanceMax=function(t){return arguments.length?(a=t*t,c):Math.sqrt(a)},c.theta=function(t){return arguments.length?(u=t*t,c):Math.sqrt(u)},c},t.forceRadial=function(t,n,e){var r,i,o,a=na(.1);function u(t){for(var a=0,u=r.length;a<u;++a){var c=r[a],f=c.x-n||1e-6,s=c.y-e||1e-6,l=Math.sqrt(f*f+s*s),h=(o[a]-l)*i[a]*t/l;c.vx+=f*h,c.vy+=s*h}}function c(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)o[n]=+t(r[n],n,r),i[n]=isNaN(o[n])?0:+a(r[n],n,r)}}return\"function\"!=typeof t&&(t=na(+t)),null==n&&(n=0),null==e&&(e=0),u.initialize=function(t){r=t,c()},u.strength=function(t){return arguments.length?(a=\"function\"==typeof t?t:na(+t),c(),u):a},u.radius=function(n){return arguments.length?(t=\"function\"==typeof n?n:na(+n),c(),u):t},u.x=function(t){return arguments.length?(n=+t,u):n},u.y=function(t){return arguments.length?(e=+t,u):e},u},t.forceSimulation=function(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=Ji(),c=or(s),f=I(\"tick\",\"end\");function s(){l(),f.call(\"tick\",n),e<r&&(c.stop(),f.call(\"end\",n))}function l(r){var c,f,s=t.length;void 0===r&&(r=1);for(var l=0;l<r;++l)for(e+=(o-e)*i,u.each(function(t){t(e)}),c=0;c<s;++c)null==(f=t[c]).fx?f.x+=f.vx*=a:(f.x=f.fx,f.vx=0),null==f.fy?f.y+=f.vy*=a:(f.y=f.fy,f.vy=0);return n}function h(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=ya*Math.sqrt(e),o=e*_a;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function d(n){return n.initialize&&n.initialize(t),n}return null==t&&(t=[]),h(),n={tick:l,restart:function(){return c.restart(s),n},stop:function(){return c.stop(),n},nodes:function(e){return arguments.length?(t=e,h(),u.each(d),n):t},alpha:function(t){return arguments.length?(e=+t,n):e},alphaMin:function(t){return arguments.length?(r=+t,n):r},alphaDecay:function(t){return arguments.length?(i=+t,n):+i},alphaTarget:function(t){return arguments.length?(o=+t,n):o},velocityDecay:function(t){return arguments.length?(a=1-t,n):1-a},force:function(t,e){return arguments.length>1?(null==e?u.remove(t):u.set(t,d(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f<s;++f)(a=(i=n-(u=t[f]).x)*i+(o=e-u.y)*o)<r&&(c=u,r=a);return c},on:function(t,e){return arguments.length>1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=na(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vx+=(r[o]-i.x)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return\"function\"!=typeof t&&(t=na(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i=\"function\"==typeof t?t:na(+t),a(),o):i},o.x=function(n){return arguments.length?(t=\"function\"==typeof n?n:na(+n),a(),o):t},o},t.forceY=function(t){var n,e,r,i=na(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vy+=(r[o]-i.y)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return\"function\"!=typeof t&&(t=na(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i=\"function\"==typeof t?t:na(+t),a(),o):i},o.y=function(n){return arguments.length?(t=\"function\"==typeof n?n:na(+n),a(),o):t},o},t.formatDefaultLocale=Pa,t.formatLocale=Ca,t.formatSpecifier=Ma,t.precisionFixed=za,t.precisionPrefix=Ra,t.precisionRound=Da,t.geoArea=function(t){return xu.reset(),pu(t,wu),2*xu},t.geoBounds=function(t){var n,e,r,i,o,a,u;if(Uu=Lu=-(Du=qu=1/0),Iu=[],pu(t,uc),e=Iu.length){for(Iu.sort(gc),n=1,o=[r=Iu[0]];n<e;++n)yc(r,(i=Iu[n])[0])||yc(r,i[1])?(vc(r[0],i[1])>vc(r[0],r[1])&&(r[1]=i[1]),vc(i[0],r[1])>vc(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=vc(r[1],i[0]))>a&&(a=u,Du=i[0],Lu=r[1])}return Iu=ju=null,Du===1/0||qu===1/0?[[NaN,NaN],[NaN,NaN]]:[[Du,qu],[Lu,Uu]]},t.geoCentroid=function(t){Hu=Xu=Gu=Vu=$u=Wu=Zu=Qu=Ju=Ku=tc=0,pu(t,_c);var n=Ju,e=Ku,r=tc,i=n*n+e*e+r*r;return i<Ya&&(n=Wu,e=Zu,r=Qu,Xu<Ba&&(n=Gu,e=Vu,r=$u),(i=n*n+e*e+r*r)<Ya)?[NaN,NaN]:[Wa(e,n)*Xa,au(r/ru(i))*Xa]},t.geoCircle=function(){var t,n,e=Ec([0,0]),r=Ec(90),i=Ec(6),o={point:function(e,r){t.push(e=n(e,r)),e[0]*=Xa,e[1]*=Xa}};function a(){var a=e.apply(this,arguments),u=r.apply(this,arguments)*Ga,c=i.apply(this,arguments)*Ga;return t=[],n=zc(-a[0]*Ga,-a[1]*Ga,0).invert,Uc(o,u,c,1),a={type:\"Polygon\",coordinates:[t]},t=n=null,a}return a.center=function(t){return arguments.length?(e=\"function\"==typeof t?t:Ec([+t[0],+t[1]]),a):e},a.radius=function(t){return arguments.length?(r=\"function\"==typeof t?t:Ec(+t),a):r},a.precision=function(t){return arguments.length?(i=\"function\"==typeof t?t:Ec(+t),a):i},a},t.geoClipAntimeridian=Zc,t.geoClipCircle=Qc,t.geoClipExtent=function(){var t,n,e,r=0,i=0,o=960,a=500;return e={stream:function(e){return t&&n===e?t:t=tf(r,i,o,a)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],o=+u[1][0],a=+u[1][1],t=n=null,e):[[r,i],[o,a]]}}},t.geoClipRectangle=tf,t.geoContains=function(t,n){return(t&&pf.hasOwnProperty(t.type)?pf[t.type]:gf)(t,n)},t.geoDistance=df,t.geoGraticule=Nf,t.geoGraticule10=function(){return Nf()()},t.geoInterpolate=function(t,n){var e=t[0]*Ga,r=t[1]*Ga,i=n[0]*Ga,o=n[1]*Ga,a=Za(r),u=nu(r),c=Za(o),f=nu(o),s=a*Za(e),l=a*nu(e),h=c*Za(i),d=c*nu(i),p=2*au(ru(uu(o-r)+a*c*uu(i-e))),v=nu(p),g=p?function(t){var n=nu(t*=p)/v,e=nu(p-t)/v,r=e*s+n*h,i=e*l+n*d,o=e*u+n*f;return[Wa(i,r)*Xa,Wa(o,ru(r*r+i*i))*Xa]}:function(){return[e*Xa,r*Xa]};return g.distance=p,g},t.geoLength=sf,t.geoPath=function(t,n){var e,r,i=4.5;function o(t){return t&&(\"function\"==typeof i&&r.pointRadius(+i.apply(this,arguments)),pu(t,e(r))),r.result()}return o.area=function(t){return pu(t,e(zf)),zf.result()},o.measure=function(t){return pu(t,e(_s)),_s.result()},o.bounds=function(t){return pu(t,e(Ff)),Ff.result()},o.centroid=function(t){return pu(t,e(ns)),ns.result()},o.projection=function(n){return arguments.length?(e=null==n?(t=null,Af):(t=n).stream,o):t},o.context=function(t){return arguments.length?(r=null==t?(n=null,new xs):new ls(n=t),\"function\"!=typeof i&&r.pointRadius(i),o):n},o.pointRadius=function(t){return arguments.length?(i=\"function\"==typeof t?t:(r.pointRadius(+t),+t),o):i},o.projection(t).context(n)},t.geoAlbers=Ys,t.geoAlbersUsa=function(){var t,n,e,r,i,o,a=Ys(),u=Bs().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=Bs().rotate([157,0]).center([-3,19.9]).parallels([8,18]),f={point:function(t,n){o=[t,n]}};function s(t){var n=t[0],a=t[1];return o=null,e.point(n,a),o||(r.point(n,a),o)||(i.point(n,a),o)}function l(){return t=n=null,s}return s.invert=function(t){var n=a.scale(),e=a.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e<i;)r[e].point(t,n)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},s.precision=function(t){return arguments.length?(a.precision(t),u.precision(t),c.precision(t),l()):a.precision()},s.scale=function(t){return arguments.length?(a.scale(t),u.scale(.35*t),c.scale(t),s.translate(a.translate())):a.scale()},s.translate=function(t){if(!arguments.length)return a.translate();var n=a.scale(),o=+t[0],s=+t[1];return e=a.translate(t).clipExtent([[o-.455*n,s-.238*n],[o+.455*n,s+.238*n]]).stream(f),r=u.translate([o-.307*n,s+.201*n]).clipExtent([[o-.425*n+Ba,s+.12*n+Ba],[o-.214*n-Ba,s+.234*n-Ba]]).stream(f),i=c.translate([o-.205*n,s+.212*n]).clipExtent([[o-.214*n+Ba,s+.166*n+Ba],[o-.115*n-Ba,s+.234*n-Ba]]).stream(f),l()},s.fitExtent=function(t,n){return Ts(s,t,n)},s.fitSize=function(t,n){return Ss(s,t,n)},s.fitWidth=function(t,n){return ks(s,t,n)},s.fitHeight=function(t,n){return Es(s,t,n)},s.scale(1070)},t.geoAzimuthalEqualArea=function(){return qs(js).scale(124.75).clipAngle(179.999)},t.geoAzimuthalEqualAreaRaw=js,t.geoAzimuthalEquidistant=function(){return qs(Hs).scale(79.4188).clipAngle(179.999)},t.geoAzimuthalEquidistantRaw=Hs,t.geoConicConformal=function(){return Us($s).scale(109.5).parallels([30,30])},t.geoConicConformalRaw=$s,t.geoConicEqualArea=Bs,t.geoConicEqualAreaRaw=Os,t.geoConicEquidistant=function(){return Us(Zs).scale(131.154).center([0,13.9389])},t.geoConicEquidistantRaw=Zs,t.geoEqualEarth=function(){return qs(el).scale(177.158)},t.geoEqualEarthRaw=el,t.geoEquirectangular=function(){return qs(Ws).scale(152.63)},t.geoEquirectangularRaw=Ws,t.geoGnomonic=function(){return qs(rl).scale(144.049).clipAngle(60)},t.geoGnomonicRaw=rl,t.geoIdentity=function(){var t,n,e,r,i,o,a=1,u=0,c=0,f=1,s=1,l=Af,h=null,d=Af;function p(){return r=i=null,o}return o={stream:function(t){return r&&i===t?r:r=l(d(i=t))},postclip:function(r){return arguments.length?(d=r,h=t=n=e=null,p()):d},clipExtent:function(r){return arguments.length?(d=null==r?(h=t=n=e=null,Af):tf(h=+r[0][0],t=+r[0][1],n=+r[1][0],e=+r[1][1]),p()):null==h?null:[[h,t],[n,e]]},scale:function(t){return arguments.length?(l=il((a=+t)*f,a*s,u,c),p()):a},translate:function(t){return arguments.length?(l=il(a*f,a*s,u=+t[0],c=+t[1]),p()):[u,c]},reflectX:function(t){return arguments.length?(l=il(a*(f=t?-1:1),a*s,u,c),p()):f<0},reflectY:function(t){return arguments.length?(l=il(a*f,a*(s=t?-1:1),u,c),p()):s<0},fitExtent:function(t,n){return Ts(o,t,n)},fitSize:function(t,n){return Ss(o,t,n)},fitWidth:function(t,n){return ks(o,t,n)},fitHeight:function(t,n){return Es(o,t,n)}}},t.geoProjection=qs,t.geoProjectionMutator=Ls,t.geoMercator=function(){return Gs(Xs).scale(961/Ha)},t.geoMercatorRaw=Xs,t.geoNaturalEarth1=function(){return qs(ol).scale(175.295)},t.geoNaturalEarth1Raw=ol,t.geoOrthographic=function(){return qs(al).scale(249.5).clipAngle(90+Ba)},t.geoOrthographicRaw=al,t.geoStereographic=function(){return qs(ul).scale(250).clipAngle(142)},t.geoStereographicRaw=ul,t.geoTransverseMercator=function(){var t=Gs(cl),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=cl,t.geoRotation=Lc,t.geoStream=pu,t.geoTransform=function(t){return{stream:Ms(t)}},t.cluster=function(){var t=fl,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter(function(n){var e=n.children;e?(n.x=function(t){return t.reduce(sl,0)/t.length}(e),n.y=function(t){return 1+t.reduce(ll,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)});var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.hierarchy=dl,t.pack=function(){var t=null,n=1,e=1,r=Rl;function i(i){return i.x=n/2,i.y=e/2,t?i.eachBefore(Ll(t)).eachAfter(Ul(r,.5)).eachBefore(Ol(1)):i.eachBefore(Ll(ql)).eachAfter(Ul(Rl,1)).eachAfter(Ul(r,i.r/Math.min(n,e))).eachBefore(Ol(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=null==(e=n)?null:zl(e),i):t;var e},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r=\"function\"==typeof t?t:Dl(+t),i):r},i},t.packSiblings=function(t){return Pl(t),t},t.packEnclose=bl,t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Yl(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a<i&&(i=a=(i+a)/2),u<o&&(o=u=(o+u)/2),r.x0=i,r.y0=o,r.x1=a,r.y1=u}}(n,o)),r&&i.eachBefore(Bl),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i},t.stratify=function(){var t=Hl,n=Xl;function e(e){var r,i,o,a,u,c,f,s=e.length,l=new Array(s),h={};for(i=0;i<s;++i)r=e[i],u=l[i]=new yl(r),null!=(c=t(r,i,e))&&(c+=\"\")&&(h[f=Fl+(u.id=c)]=f in h?jl:u);for(i=0;i<s;++i)if(u=l[i],null!=(c=n(e[i],i,e))&&(c+=\"\")){if(!(a=h[Fl+c]))throw new Error(\"missing: \"+c);if(a===jl)throw new Error(\"ambiguous: \"+c);a.children?a.children.push(u):a.children=[u],u.parent=a}else{if(o)throw new Error(\"multiple roots\");o=u}if(!o)throw new Error(\"no root\");if(o.parent=Il,o.eachBefore(function(t){t.depth=t.parent.depth+1,--s}).eachBefore(gl),o.parent=null,s>0)throw new Error(\"cycle\");return o}return e.id=function(n){return arguments.length?(t=zl(n),e):t},e.parentId=function(t){return arguments.length?(n=zl(t),e):n},e},t.tree=function(){var t=Gl,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new Ql(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new Ql(r[i],i)),e.parent=n;return(a.parent=new Ql(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore(function(t){t.x<f.x&&(f=t),t.x>s.x&&(s=t),t.depth>l.depth&&(l=t)});var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),v=e/(l.depth||1);i.eachBefore(function(t){t.x=(t.x+d)*p,t.y=t.depth*v})}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=$l(u),o=Vl(o),u&&o;)c=Vl(c),(a=$l(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(Wl(Zl(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!$l(a)&&(a.t=u,a.m+=l-s),o&&!Vl(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=nh,n=!1,e=1,r=1,i=[0],o=Rl,a=Rl,u=Rl,c=Rl,f=Rl;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(Bl),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l<r&&(r=l=(r+l)/2),h<s&&(s=h=(s+h)/2),n.x0=r,n.y0=s,n.x1=l,n.y1=h,n.children&&(e=i[n.depth+1]=o(n)/2,r+=f(n)-e,s+=a(n)-e,(l-=u(n)-e)<r&&(r=l=(r+l)/2),(h-=c(n)-e)<s&&(s=h=(s+h)/2),t(n,r,s,l,h))}return s.round=function(t){return arguments.length?(n=!!t,s):n},s.size=function(t){return arguments.length?(e=+t[0],r=+t[1],s):[e,r]},s.tile=function(n){return arguments.length?(t=zl(n),s):t},s.padding=function(t){return arguments.length?s.paddingInner(t).paddingOuter(t):s.paddingInner()},s.paddingInner=function(t){return arguments.length?(o=\"function\"==typeof t?t:Dl(+t),s):o},s.paddingOuter=function(t){return arguments.length?s.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):s.paddingTop()},s.paddingTop=function(t){return arguments.length?(a=\"function\"==typeof t?t:Dl(+t),s):a},s.paddingRight=function(t){return arguments.length?(u=\"function\"==typeof t?t:Dl(+t),s):u},s.paddingBottom=function(t){return arguments.length?(c=\"function\"==typeof t?t:Dl(+t),s):c},s.paddingLeft=function(t){return arguments.length?(f=\"function\"==typeof t?t:Dl(+t),s):f},s},t.treemapBinary=function(t,n,e,r,i){var o,a,u=t.children,c=u.length,f=new Array(c+1);for(f[0]=a=o=0;o<c;++o)f[o+1]=a+=u[o].value;!function t(n,e,r,i,o,a,c){if(n>=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}for(var l=f[n],h=r/2+l,d=n+1,p=e-1;d<p;){var v=d+p>>>1;f[v]<h?d=v+1:p=v}h-f[d-1]<f[d]-h&&n+1<d&&--d;var g=f[d]-l,y=r-g;if(a-i>c-o){var _=(i*y+a*g)/r;t(n,d,g,i,o,_,c),t(d,e,y,_,o,a,c)}else{var b=(o*y+c*g)/r;t(n,d,g,i,o,a,b),t(d,e,y,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Yl,t.treemapSlice=Jl,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Jl:Yl)(t,n,e,r,i)},t.treemapSquarify=nh,t.treemapResquarify=eh,t.interpolate=_e,t.interpolateArray=le,t.interpolateBasis=te,t.interpolateBasisClosed=ne,t.interpolateDate=he,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateHue=function(t,n){var e=ie(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateNumber=de,t.interpolateObject=pe,t.interpolateRound=be,t.interpolateString=ye,t.interpolateTransformCss=ke,t.interpolateTransformSvg=Ee,t.interpolateZoom=qe,t.interpolateRgb=ue,t.interpolateRgbBasis=fe,t.interpolateRgbBasisClosed=se,t.interpolateHsl=Ue,t.interpolateHslLong=Oe,t.interpolateLab=function(t,n){var e=ae((t=Rn(t)).l,(n=Rn(n)).l),r=ae(t.a,n.a),i=ae(t.b,n.b),o=ae(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+\"\"}},t.interpolateHcl=Ye,t.interpolateHclLong=Fe,t.interpolateCubehelix=je,t.interpolateCubehelixLong=He,t.piecewise=function(t,n){for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e<r;)o[e]=t(i,i=n[++e]);return function(t){var n=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return o[n](t-n)}},t.quantize=function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e},t.path=Xi,t.polygonArea=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++e<r;)n=i,i=t[e],o+=n[1]*i[0]-n[0]*i[1];return o/2},t.polygonCentroid=function(t){for(var n,e,r=-1,i=t.length,o=0,a=0,u=t[i-1],c=0;++r<i;)n=u,u=t[r],c+=e=n[0]*u[1]-u[0]*n[1],o+=(n[0]+u[0])*e,a+=(n[1]+u[1])*e;return[o/(c*=3),a/c]},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n<e;++n)r[n]=[+t[n][0],+t[n][1],n];for(r.sort(rh),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var o=ih(r),a=ih(i),u=a[0]===o[0],c=a[a.length-1]===o[o.length-1],f=[];for(n=o.length-1;n>=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n<a.length-c;++n)f.push(t[r[a[n]][2]]);return f},t.polygonContains=function(t,n){for(var e,r,i=t.length,o=t[i-1],a=n[0],u=n[1],c=o[0],f=o[1],s=!1,l=0;l<i;++l)e=(o=t[l])[0],(r=o[1])>u!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r<i;)n=a,e=u,n-=a=(o=t[r])[0],e-=u=o[1],c+=Math.sqrt(n*n+e*e);return c},t.quadtree=ua,t.randomUniform=ah,t.randomNormal=uh,t.randomLogNormal=ch,t.randomBates=sh,t.randomIrwinHall=fh,t.randomExponential=lh,t.scaleBand=bh,t.scalePoint=function(){return function t(n){var e=n.copy;return n.padding=n.paddingOuter,delete n.paddingInner,delete n.paddingOuter,n.copy=function(){return t(e())},n}(bh.apply(null,arguments).paddingInner(1))},t.scaleIdentity=function t(n){var e;function r(t){return isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=vh.call(t,mh),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?vh.call(n,mh):[0,1],Ph(r)},t.scaleLinear=function t(){var n=Eh(wh,wh);return n.copy=function(){return Sh(n,t())},hh.apply(n,arguments),Ph(n)},t.scaleLog=function t(){var n=Bh(kh()).domain([1,10]);return n.copy=function(){return Sh(n,t()).base(n.base())},hh.apply(n,arguments),n},t.scaleSymlog=function t(){var n=Ih(kh());return n.copy=function(){return Sh(n,t()).constant(n.constant())},hh.apply(n,arguments)},t.scaleOrdinal=_h,t.scaleImplicit=yh,t.scalePow=Vh,t.scaleSqrt=function(){return Vh.apply(null,arguments).exponent(.5)},t.scaleQuantile=function t(){var e,r=[],o=[],a=[];function u(){var t=0,n=Math.max(1,o.length);for(a=new Array(n-1);++t<n;)a[t-1]=N(r,t/n);return c}function c(t){return isNaN(t=+t)?e:o[i(a,t)]}return c.invertExtent=function(t){var n=o.indexOf(t);return n<0?[NaN,NaN]:[n>0?a[n-1]:r[0],n<a.length?a[n]:r[r.length-1]]},c.domain=function(t){if(!arguments.length)return r.slice();r=[];for(var e,i=0,o=t.length;i<o;++i)null==(e=t[i])||isNaN(e=+e)||r.push(e);return r.sort(n),u()},c.range=function(t){return arguments.length?(o=gh.call(t),u()):o.slice()},c.unknown=function(t){return arguments.length?(e=t,c):e},c.quantiles=function(){return a.slice()},c.copy=function(){return t().domain(r).range(o).unknown(e)},hh.apply(c,arguments)},t.scaleQuantize=function t(){var n,e=0,r=1,o=1,a=[.5],u=[0,1];function c(t){return t<=t?u[i(a,t,0,o)]:n}function f(){var t=-1;for(a=new Array(o);++t<o;)a[t]=((t+1)*r-(t-o)*e)/(o+1);return c}return c.domain=function(t){return arguments.length?(e=+t[0],r=+t[1],f()):[e,r]},c.range=function(t){return arguments.length?(o=(u=gh.call(t)).length-1,f()):u.slice()},c.invertExtent=function(t){var n=u.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,a[0]]:n>=o?[a[o-1],r]:[a[n-1],a[n]]},c.unknown=function(t){return arguments.length?(n=t,c):c},c.thresholds=function(){return a.slice()},c.copy=function(){return t().domain([e,r]).range(u).unknown(n)},hh.apply(Ph(c),arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],o=1;function a(t){return t<=t?r[i(e,t,0,o)]:n}return a.domain=function(t){return arguments.length?(e=gh.call(t),o=Math.min(e.length,r.length-1),a):e.slice()},a.range=function(t){return arguments.length?(r=gh.call(t),o=Math.min(e.length,r.length-1),a):r.slice()},a.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},a.unknown=function(t){return arguments.length?(n=t,a):n},a.copy=function(){return t().domain(e).range(r).unknown(n)},hh.apply(a,arguments)},t.scaleTime=function(){return hh.apply(Tv(Td,Nd,sd,ud,od,rd,nd,Qh,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return hh.apply(Tv(Qd,Wd,qd,zd,Cd,kd,nd,Qh,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scaleSequential=function t(){var n=Ph(Sv()(wh));return n.copy=function(){return kv(n,t())},dh.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=Bh(Sv()).domain([1,10]);return n.copy=function(){return kv(n,t()).base(n.base())},dh.apply(n,arguments)},t.scaleSequentialPow=Ev,t.scaleSequentialSqrt=function(){return Ev.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=Ih(Sv());return n.copy=function(){return kv(n,t()).constant(n.constant())},dh.apply(n,arguments)},t.scaleSequentialQuantile=function t(){var e=[],r=wh;function o(t){if(!isNaN(t=+t))return r((i(e,t)-1)/(e.length-1))}return o.domain=function(t){if(!arguments.length)return e.slice();e=[];for(var r,i=0,a=t.length;i<a;++i)null==(r=t[i])||isNaN(r=+r)||e.push(r);return e.sort(n),o},o.interpolator=function(t){return arguments.length?(r=t,o):r},o.copy=function(){return t(r).domain(e)},dh.apply(o,arguments)},t.scaleDiverging=function t(){var n=Ph(Cv()(wh));return n.copy=function(){return kv(n,t())},dh.apply(n,arguments)},t.scaleDivergingLog=function t(){var n=Bh(Cv()).domain([.1,1,10]);return n.copy=function(){return kv(n,t()).base(n.base())},dh.apply(n,arguments)},t.scaleDivergingPow=Pv,t.scaleDivergingSqrt=function(){return Pv.apply(null,arguments).exponent(.5)},t.scaleDivergingSymlog=function t(){var n=Ih(Cv());return n.copy=function(){return kv(n,t()).constant(n.constant())},dh.apply(n,arguments)},t.tickFormat=Ch,t.schemeCategory10=Rv,t.schemeAccent=Dv,t.schemeDark2=qv,t.schemePaired=Lv,t.schemePastel1=Uv,t.schemePastel2=Ov,t.schemeSet1=Bv,t.schemeSet2=Yv,t.schemeSet3=Fv,t.interpolateBrBG=Hv,t.schemeBrBG=jv,t.interpolatePRGn=Gv,t.schemePRGn=Xv,t.interpolatePiYG=$v,t.schemePiYG=Vv,t.interpolatePuOr=Zv,t.schemePuOr=Wv,t.interpolateRdBu=Jv,t.schemeRdBu=Qv,t.interpolateRdGy=tg,t.schemeRdGy=Kv,t.interpolateRdYlBu=eg,t.schemeRdYlBu=ng,t.interpolateRdYlGn=ig,t.schemeRdYlGn=rg,t.interpolateSpectral=ag,t.schemeSpectral=og,t.interpolateBuGn=cg,t.schemeBuGn=ug,t.interpolateBuPu=sg,t.schemeBuPu=fg,t.interpolateGnBu=hg,t.schemeGnBu=lg,t.interpolateOrRd=pg,t.schemeOrRd=dg,t.interpolatePuBuGn=gg,t.schemePuBuGn=vg,t.interpolatePuBu=_g,t.schemePuBu=yg,t.interpolatePuRd=mg,t.schemePuRd=bg,t.interpolateRdPu=wg,t.schemeRdPu=xg,t.interpolateYlGnBu=Ng,t.schemeYlGnBu=Mg,t.interpolateYlGn=Tg,t.schemeYlGn=Ag,t.interpolateYlOrBr=kg,t.schemeYlOrBr=Sg,t.interpolateYlOrRd=Cg,t.schemeYlOrRd=Eg,t.interpolateBlues=zg,t.schemeBlues=Pg,t.interpolateGreens=Dg,t.schemeGreens=Rg,t.interpolateGreys=Lg,t.schemeGreys=qg,t.interpolatePurples=Og,t.schemePurples=Ug,t.interpolateReds=Yg,t.schemeReds=Bg,t.interpolateOranges=Ig,t.schemeOranges=Fg,t.interpolateCubehelixDefault=jg,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return Gg.h=360*t-100,Gg.s=1.5-1.5*n,Gg.l=.8-.9*n,Gg+\"\"},t.interpolateWarm=Hg,t.interpolateCool=Xg,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,Vg.r=255*(n=Math.sin(t))*n,Vg.g=255*(n=Math.sin(t+$g))*n,Vg.b=255*(n=Math.sin(t+Wg))*n,Vg+\"\"},t.interpolateViridis=Qg,t.interpolateMagma=Jg,t.interpolateInferno=Kg,t.interpolatePlasma=ty,t.create=function(t){return zt(W(t).call(document.documentElement))},t.creator=W,t.local=Dt,t.matcher=tt,t.mouse=Ot,t.namespace=$,t.namespaces=V,t.clientPoint=Ut,t.select=zt,t.selectAll=function(t){return\"string\"==typeof t?new Ct([document.querySelectorAll(t)],[document.documentElement]):new Ct([null==t?[]:t],Et)},t.selection=Pt,t.selector=Q,t.selectorAll=K,t.style=ct,t.touch=Bt,t.touches=function(t,n){null==n&&(n=Lt().touches);for(var e=0,r=n?n.length:0,i=new Array(r);e<r;++e)i[e]=Ut(t,n[e]);return i},t.window=ut,t.customEvent=St,t.arc=function(){var t=py,n=vy,e=ny(0),r=null,i=gy,o=yy,a=_y,u=null;function c(){var c,f,s,l=+t.apply(this,arguments),h=+n.apply(this,arguments),d=i.apply(this,arguments)-ly,p=o.apply(this,arguments)-ly,v=ey(p-d),g=p>d;if(u||(u=c=Xi()),h<l&&(f=h,h=l,l=f),h>fy)if(v>hy-fy)u.moveTo(h*iy(d),h*uy(d)),u.arc(0,0,h,d,p,!g),l>fy&&(u.moveTo(l*iy(p),l*uy(p)),u.arc(0,0,l,p,d,g));else{var y,_,b=d,m=p,x=d,w=p,M=v,N=v,A=a.apply(this,arguments)/2,T=A>fy&&(r?+r.apply(this,arguments):cy(l*l+h*h)),S=ay(ey(h-l)/2,+e.apply(this,arguments)),k=S,E=S;if(T>fy){var C=dy(T/l*uy(A)),P=dy(T/h*uy(A));(M-=2*C)>fy?(x+=C*=g?1:-1,w-=C):(M=0,x=w=(d+p)/2),(N-=2*P)>fy?(b+=P*=g?1:-1,m-=P):(N=0,b=m=(d+p)/2)}var z=h*iy(b),R=h*uy(b),D=l*iy(w),q=l*uy(w);if(S>fy){var L,U=h*iy(m),O=h*uy(m),B=l*iy(x),Y=l*uy(x);if(v<sy&&(L=function(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h<fy))return[t+(h=(s*(n-o)-l*(t-i))/h)*c,n+h*f]}(z,R,B,Y,U,O,D,q))){var F=z-L[0],I=R-L[1],j=U-L[0],H=O-L[1],X=1/uy(((s=(F*j+I*H)/(cy(F*F+I*I)*cy(j*j+H*H)))>1?0:s<-1?sy:Math.acos(s))/2),G=cy(L[0]*L[0]+L[1]*L[1]);k=ay(S,(l-G)/(X-1)),E=ay(S,(h-G)/(X+1))}}N>fy?E>fy?(y=by(B,Y,z,R,h,E,g),_=by(U,O,D,q,h,E,g),u.moveTo(y.cx+y.x01,y.cy+y.y01),E<S?u.arc(y.cx,y.cy,E,ry(y.y01,y.x01),ry(_.y01,_.x01),!g):(u.arc(y.cx,y.cy,E,ry(y.y01,y.x01),ry(y.y11,y.x11),!g),u.arc(0,0,h,ry(y.cy+y.y11,y.cx+y.x11),ry(_.cy+_.y11,_.cx+_.x11),!g),u.arc(_.cx,_.cy,E,ry(_.y11,_.x11),ry(_.y01,_.x01),!g))):(u.moveTo(z,R),u.arc(0,0,h,b,m,!g)):u.moveTo(z,R),l>fy&&M>fy?k>fy?(y=by(D,q,U,O,l,-k,g),_=by(z,R,B,Y,l,-k,g),u.lineTo(y.cx+y.x01,y.cy+y.y01),k<S?u.arc(y.cx,y.cy,k,ry(y.y01,y.x01),ry(_.y01,_.x01),!g):(u.arc(y.cx,y.cy,k,ry(y.y01,y.x01),ry(y.y11,y.x11),!g),u.arc(0,0,l,ry(y.cy+y.y11,y.cx+y.x11),ry(_.cy+_.y11,_.cx+_.x11),g),u.arc(_.cx,_.cy,k,ry(_.y11,_.x11),ry(_.y01,_.x01),!g))):u.arc(0,0,l,w,x,g):u.lineTo(D,q)}else u.moveTo(0,0);if(u.closePath(),c)return u=null,c+\"\"||null}return c.centroid=function(){var e=(+t.apply(this,arguments)+ +n.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-sy/2;return[iy(r)*e,uy(r)*e]},c.innerRadius=function(n){return arguments.length?(t=\"function\"==typeof n?n:ny(+n),c):t},c.outerRadius=function(t){return arguments.length?(n=\"function\"==typeof t?t:ny(+t),c):n},c.cornerRadius=function(t){return arguments.length?(e=\"function\"==typeof t?t:ny(+t),c):e},c.padRadius=function(t){return arguments.length?(r=null==t?null:\"function\"==typeof t?t:ny(+t),c):r},c.startAngle=function(t){return arguments.length?(i=\"function\"==typeof t?t:ny(+t),c):i},c.endAngle=function(t){return arguments.length?(o=\"function\"==typeof t?t:ny(+t),c):o},c.padAngle=function(t){return arguments.length?(a=\"function\"==typeof t?t:ny(+t),c):a},c.context=function(t){return arguments.length?(u=null==t?null:t,c):u},c},t.area=Ay,t.line=Ny,t.pie=function(){var t=Sy,n=Ty,e=null,r=ny(0),i=ny(hy),o=ny(0);function a(a){var u,c,f,s,l,h=a.length,d=0,p=new Array(h),v=new Array(h),g=+r.apply(this,arguments),y=Math.min(hy,Math.max(-hy,i.apply(this,arguments)-g)),_=Math.min(Math.abs(y)/h,o.apply(this,arguments)),b=_*(y<0?-1:1);for(u=0;u<h;++u)(l=v[p[u]=u]=+t(a[u],u,a))>0&&(d+=l);for(null!=n?p.sort(function(t,e){return n(v[t],v[e])}):null!=e&&p.sort(function(t,n){return e(a[t],a[n])}),u=0,f=d?(y-h*b)/d:0;u<h;++u,g=s)c=p[u],s=g+((l=v[c])>0?l*f:0)+b,v[c]={data:a[c],index:u,value:l,startAngle:g,endAngle:s,padAngle:_};return v}return a.value=function(n){return arguments.length?(t=\"function\"==typeof n?n:ny(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r=\"function\"==typeof t?t:ny(+t),a):r},a.endAngle=function(t){return arguments.length?(i=\"function\"==typeof t?t:ny(+t),a):i},a.padAngle=function(t){return arguments.length?(o=\"function\"==typeof t?t:ny(+t),a):o},a},t.areaRadial=Ry,t.radialArea=Ry,t.lineRadial=zy,t.radialLine=zy,t.pointRadial=Dy,t.linkHorizontal=function(){return Oy(By)},t.linkVertical=function(){return Oy(Yy)},t.linkRadial=function(){var t=Oy(Fy);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.symbol=function(){var t=ny(Iy),n=ny(64),e=null;function r(){var r;if(e||(e=r=Xi()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),r)return e=null,r+\"\"||null}return r.type=function(n){return arguments.length?(t=\"function\"==typeof n?n:ny(n),r):t},r.size=function(t){return arguments.length?(n=\"function\"==typeof t?t:ny(+t),r):n},r.context=function(t){return arguments.length?(e=null==t?null:t,r):e},r},t.symbols=i_,t.symbolCircle=Iy,t.symbolCross=jy,t.symbolDiamond=Gy,t.symbolSquare=Qy,t.symbolStar=Zy,t.symbolTriangle=Ky,t.symbolWye=r_,t.curveBasisClosed=function(t){return new c_(t)},t.curveBasisOpen=function(t){return new f_(t)},t.curveBasis=function(t){return new u_(t)},t.curveBundle=l_,t.curveCardinalClosed=g_,t.curveCardinalOpen=__,t.curveCardinal=p_,t.curveCatmullRomClosed=M_,t.curveCatmullRomOpen=A_,t.curveCatmullRom=x_,t.curveLinearClosed=function(t){return new T_(t)},t.curveLinear=xy,t.curveMonotoneX=function(t){return new P_(t)},t.curveMonotoneY=function(t){return new z_(t)},t.curveNatural=function(t){return new D_(t)},t.curveStep=function(t){return new L_(t,.5)},t.curveStepAfter=function(t){return new L_(t,1)},t.curveStepBefore=function(t){return new L_(t,0)},t.stack=function(){var t=ny([]),n=O_,e=U_,r=B_;function i(i){var o,a,u=t.apply(this,arguments),c=i.length,f=u.length,s=new Array(f);for(o=0;o<f;++o){for(var l,h=u[o],d=s[o]=new Array(c),p=0;p<c;++p)d[p]=l=[0,+r(i[p],h,p,i)],l.data=i[p];d.key=h}for(o=0,a=n(s);o<f;++o)s[a[o]].index=o;return e(s,a),s}return i.keys=function(n){return arguments.length?(t=\"function\"==typeof n?n:ny(qy.call(n)),i):t},i.value=function(t){return arguments.length?(r=\"function\"==typeof t?t:ny(+t),i):r},i.order=function(t){return arguments.length?(n=null==t?O_:\"function\"==typeof t?t:ny(qy.call(t)),i):n},i.offset=function(t){return arguments.length?(e=null==t?U_:t,i):e},i},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o<a;++o){for(i=e=0;e<r;++e)i+=t[e][o][1]||0;if(i)for(e=0;e<r;++e)t[e][o][1]/=i}U_(t,n)}},t.stackOffsetDiverging=function(t,n){if((u=t.length)>0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c<f;++c)for(o=a=0,e=0;e<u;++e)(i=(r=t[n[e]][c])[1]-r[0])>=0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):r[0]=o},t.stackOffsetNone=U_,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r<o;++r){for(var a=0,u=0;a<e;++a)u+=t[a][r][1]||0;i[r][1]+=i[r][0]=-u/2}U_(t,n)}},t.stackOffsetWiggle=function(t,n){if((i=t.length)>0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;a<r;++a){for(var u=0,c=0,f=0;u<i;++u){for(var s=t[n[u]],l=s[a][1]||0,h=(l-(s[a-1][1]||0))/2,d=0;d<u;++d){var p=t[n[d]];h+=(p[a][1]||0)-(p[a-1][1]||0)}c+=l,f+=h*l}e[a-1][1]+=e[a-1][0]=o,c&&(o-=f/c)}e[a-1][1]+=e[a-1][0]=o,U_(t,n)}},t.stackOrderAppearance=Y_,t.stackOrderAscending=I_,t.stackOrderDescending=function(t){return I_(t).reverse()},t.stackOrderInsideOut=function(t){var n,e,r=t.length,i=t.map(j_),o=Y_(t),a=0,u=0,c=[],f=[];for(n=0;n<r;++n)e=o[n],a<u?(a+=i[e],c.push(e)):(u+=i[e],f.push(e));return f.reverse().concat(c)},t.stackOrderNone=O_,t.stackOrderReverse=function(t){return O_(t).reverse()},t.timeInterval=Zh,t.timeMillisecond=Qh,t.timeMilliseconds=Jh,t.utcMillisecond=Qh,t.utcMilliseconds=Jh,t.timeSecond=nd,t.timeSeconds=ed,t.utcSecond=nd,t.utcSeconds=ed,t.timeMinute=rd,t.timeMinutes=id,t.timeHour=od,t.timeHours=ad,t.timeDay=ud,t.timeDays=cd,t.timeWeek=sd,t.timeWeeks=yd,t.timeSunday=sd,t.timeSundays=yd,t.timeMonday=ld,t.timeMondays=_d,t.timeTuesday=hd,t.timeTuesdays=bd,t.timeWednesday=dd,t.timeWednesdays=md,t.timeThursday=pd,t.timeThursdays=xd,t.timeFriday=vd,t.timeFridays=wd,t.timeSaturday=gd,t.timeSaturdays=Md,t.timeMonth=Nd,t.timeMonths=Ad,t.timeYear=Td,t.timeYears=Sd,t.utcMinute=kd,t.utcMinutes=Ed,t.utcHour=Cd,t.utcHours=Pd,t.utcDay=zd,t.utcDays=Rd,t.utcWeek=qd,t.utcWeeks=Id,t.utcSunday=qd,t.utcSundays=Id,t.utcMonday=Ld,t.utcMondays=jd,t.utcTuesday=Ud,t.utcTuesdays=Hd,t.utcWednesday=Od,t.utcWednesdays=Xd,t.utcThursday=Bd,t.utcThursdays=Gd,t.utcFriday=Yd,t.utcFridays=Vd,t.utcSaturday=Fd,t.utcSaturdays=$d,t.utcMonth=Wd,t.utcMonths=Zd,t.utcYear=Qd,t.utcYears=Jd,t.timeFormatDefaultLocale=pv,t.timeFormatLocale=ep,t.isoFormat=vv,t.isoParse=gv,t.now=er,t.timer=or,t.timerFlush=ar,t.timeout=sr,t.interval=function(t,n,e){var r=new ir,i=n;return null==n?(r.restart(t,n,e),r):(n=+n,e=null==e?er():+e,r.restart(function o(a){a+=i,r.restart(o,i+=n,e),t(a)},n,e),r)},t.transition=Pr,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+\"\",i)if((e=i[r]).state>pr&&e.name===n)return new Cr([[t]],si,n,+r);return null},t.interrupt=Nr,t.voronoi=function(){var t=X_,n=G_,e=null;function r(r){return new Tb(r.map(function(e,i){var o=[Math.round(t(e,i,r)/Mb)*Mb,Math.round(n(e,i,r)/Mb)*Mb];return o.index=i,o.data=e,o}),e)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(n){return arguments.length?(t=\"function\"==typeof n?n:H_(+n),r):t},r.y=function(t){return arguments.length?(n=\"function\"==typeof t?t:H_(+t),r):n},r.extent=function(t){return arguments.length?(e=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):e&&[[e[0][0],e[0][1]],[e[1][0],e[1][1]]]},r.size=function(t){return arguments.length?(e=null==t?null:[[0,0],[+t[0],+t[1]]],r):e&&[e[1][0]-e[0][0],e[1][1]-e[0][1]]},r},t.zoom=function(){var n,e,r=Db,i=qb,o=Bb,a=Ub,u=Ob,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=qe,h=[],d=I(\"start\",\"zoom\",\"end\"),p=500,v=150,g=0;function y(t){t.property(\"__zoom\",Lb).on(\"wheel.zoom\",N).on(\"mousedown.zoom\",A).on(\"dblclick.zoom\",T).filter(u).on(\"touchstart.zoom\",S).on(\"touchmove.zoom\",k).on(\"touchend.zoom touchcancel.zoom\",E).style(\"touch-action\",\"none\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\")}function _(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new Eb(n,t.x,t.y)}function b(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new Eb(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,n,e){t.on(\"start.zoom\",function(){w(this,arguments).start()}).on(\"interrupt.zoom end.zoom\",function(){w(this,arguments).end()}).tween(\"zoom\",function(){var t=arguments,r=w(this,t),o=i.apply(this,t),a=e||m(o),u=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),c=this.__zoom,f=\"function\"==typeof n?n.apply(this,t):n,s=l(c.invert(a).concat(u/c.k),f.invert(a).concat(u/f.k));return function(t){if(1===t)t=f;else{var n=s(t),e=u/n[2];t=new Eb(e,a[0]-n[0]*e,a[1]-n[1]*e)}r.zoom(null,t)}})}function w(t,n){for(var e,r=0,i=h.length;r<i;++r)if((e=h[r]).that===t)return e;return new M(t,n)}function M(t,n){this.that=t,this.args=n,this.index=-1,this.active=0,this.extent=i.apply(t,n)}function N(){if(r.apply(this,arguments)){var t=w(this,arguments),n=this.__zoom,e=Math.max(c[0],Math.min(c[1],n.k*Math.pow(2,a.apply(this,arguments)))),i=Ot(this);if(t.wheel)t.mouse[0][0]===i[0]&&t.mouse[0][1]===i[1]||(t.mouse[1]=n.invert(t.mouse[0]=i)),clearTimeout(t.wheel);else{if(n.k===e)return;t.mouse=[i,n.invert(i)],Nr(this),t.start()}Rb(),t.wheel=setTimeout(function(){t.wheel=null,t.end()},v),t.zoom(\"mouse\",o(b(_(n,e),t.mouse[0],t.mouse[1]),t.extent,f))}}function A(){if(!e&&r.apply(this,arguments)){var n=w(this,arguments),i=zt(t.event.view).on(\"mousemove.zoom\",function(){if(Rb(),!n.moved){var e=t.event.clientX-u,r=t.event.clientY-c;n.moved=e*e+r*r>g}n.zoom(\"mouse\",o(b(n.that.__zoom,n.mouse[0]=Ot(n.that),n.mouse[1]),n.extent,f))},!0).on(\"mouseup.zoom\",function(){i.on(\"mousemove.zoom mouseup.zoom\",null),jt(t.event.view,n.moved),Rb(),n.end()},!0),a=Ot(this),u=t.event.clientX,c=t.event.clientY;It(t.event.view),zb(),n.mouse=[a,this.__zoom.invert(a)],Nr(this),n.start()}}function T(){if(r.apply(this,arguments)){var n=this.__zoom,e=Ot(this),a=n.invert(e),u=n.k*(t.event.shiftKey?.5:2),c=o(b(_(n,u),e,a),i.apply(this,arguments),f);Rb(),s>0?zt(this).transition().duration(s).call(x,c,e):zt(this).call(y.transform,c)}}function S(){if(r.apply(this,arguments)){var e,i,o,a,u=w(this,arguments),c=t.event.changedTouches,f=c.length;for(zb(),i=0;i<f;++i)a=[a=Bt(this,c,(o=c[i]).identifier),this.__zoom.invert(a),o.identifier],u.touch0?u.touch1||(u.touch1=a):(u.touch0=a,e=!0);if(n&&(n=clearTimeout(n),!u.touch1))return u.end(),void((a=zt(this).on(\"dblclick.zoom\"))&&a.apply(this,arguments));e&&(n=setTimeout(function(){n=null},p),Nr(this),u.start())}}function k(){var e,r,i,a,u=w(this,arguments),c=t.event.changedTouches,s=c.length;for(Rb(),n&&(n=clearTimeout(n)),e=0;e<s;++e)i=Bt(this,c,(r=c[e]).identifier),u.touch0&&u.touch0[2]===r.identifier?u.touch0[0]=i:u.touch1&&u.touch1[2]===r.identifier&&(u.touch1[0]=i);if(r=u.that.__zoom,u.touch1){var l=u.touch0[0],h=u.touch0[1],d=u.touch1[0],p=u.touch1[1],v=(v=d[0]-l[0])*v+(v=d[1]-l[1])*v,g=(g=p[0]-h[0])*g+(g=p[1]-h[1])*g;r=_(r,Math.sqrt(v/g)),i=[(l[0]+d[0])/2,(l[1]+d[1])/2],a=[(h[0]+p[0])/2,(h[1]+p[1])/2]}else{if(!u.touch0)return;i=u.touch0[0],a=u.touch0[1]}u.zoom(\"touch\",o(b(r,i,a),u.extent,f))}function E(){var n,r,i=w(this,arguments),o=t.event.changedTouches,a=o.length;for(zb(),e&&clearTimeout(e),e=setTimeout(function(){e=null},p),n=0;n<a;++n)r=o[n],i.touch0&&i.touch0[2]===r.identifier?delete i.touch0:i.touch1&&i.touch1[2]===r.identifier&&delete i.touch1;i.touch1&&!i.touch0&&(i.touch0=i.touch1,delete i.touch1),i.touch0?i.touch0[1]=this.__zoom.invert(i.touch0[0]):i.end()}return y.transform=function(t,n){var e=t.selection?t.selection():t;e.property(\"__zoom\",Lb),t!==e?x(t,n):e.interrupt().each(function(){w(this,arguments).start().zoom(null,\"function\"==typeof n?n.apply(this,arguments):n).end()})},y.scaleBy=function(t,n){y.scaleTo(t,function(){return this.__zoom.k*(\"function\"==typeof n?n.apply(this,arguments):n)})},y.scaleTo=function(t,n){y.transform(t,function(){var t=i.apply(this,arguments),e=this.__zoom,r=m(t),a=e.invert(r),u=\"function\"==typeof n?n.apply(this,arguments):n;return o(b(_(e,u),r,a),t,f)})},y.translateBy=function(t,n,e){y.transform(t,function(){return o(this.__zoom.translate(\"function\"==typeof n?n.apply(this,arguments):n,\"function\"==typeof e?e.apply(this,arguments):e),i.apply(this,arguments),f)})},y.translateTo=function(t,n,e){y.transform(t,function(){var t=i.apply(this,arguments),r=this.__zoom,a=m(t);return o(Cb.translate(a[0],a[1]).scale(r.k).translate(\"function\"==typeof n?-n.apply(this,arguments):-n,\"function\"==typeof e?-e.apply(this,arguments):-e),t,f)})},M.prototype={start:function(){return 1==++this.active&&(this.index=h.push(this)-1,this.emit(\"start\")),this},zoom:function(t,n){return this.mouse&&\"mouse\"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&\"touch\"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&\"touch\"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit(\"zoom\"),this},end:function(){return 0==--this.active&&(h.splice(this.index,1),this.index=-1,this.emit(\"end\")),this},emit:function(t){St(new kb(y,t,this.that.__zoom),d.apply,d,[t,this.that,this.args])}},y.wheelDelta=function(t){return arguments.length?(a=\"function\"==typeof t?t:Sb(+t),y):a},y.filter=function(t){return arguments.length?(r=\"function\"==typeof t?t:Sb(!!t),y):r},y.touchable=function(t){return arguments.length?(u=\"function\"==typeof t?t:Sb(!!t),y):u},y.extent=function(t){return arguments.length?(i=\"function\"==typeof t?t:Sb([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),y):i},y.scaleExtent=function(t){return arguments.length?(c[0]=+t[0],c[1]=+t[1],y):[c[0],c[1]]},y.translateExtent=function(t){return arguments.length?(f[0][0]=+t[0][0],f[1][0]=+t[1][0],f[0][1]=+t[0][1],f[1][1]=+t[1][1],y):[[f[0][0],f[0][1]],[f[1][0],f[1][1]]]},y.constrain=function(t){return arguments.length?(o=t,y):o},y.duration=function(t){return arguments.length?(s=+t,y):s},y.interpolate=function(t){return arguments.length?(l=t,y):l},y.on=function(){var t=d.on.apply(d,arguments);return t===d?y:t},y.clickDistance=function(t){return arguments.length?(g=(t=+t)*t,y):Math.sqrt(g)},y},t.zoomTransform=Pb,t.zoomIdentity=Cb,Object.defineProperty(t,\"__esModule\",{value:!0})});\n","var $  = require('jquery');\n\nfunction init() {\n    $(document).ajaxSend(function(event, xhr, settings) {\n        function getCookie(name) {\n            var cookieValue = null;\n            if (document.cookie && document.cookie != '') {\n                var cookies = document.cookie.split(';');\n                for (var i = 0; i < cookies.length; i++) {\n                    var cookie = $.trim(cookies[i]);\n                    // Does this cookie string begin with the name we want?\n                    if (cookie.substring(0, name.length + 1) == (name + '=')) {\n                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\n                        break;\n                    }\n                }\n            }\n            return cookieValue;\n        }\n        function sameOrigin(url) {\n            // url could be relative or scheme relative or absolute\n            var host = document.location.host; // host + port\n            var protocol = document.location.protocol;\n            var sr_origin = '//' + host;\n            var origin = protocol + sr_origin;\n            // Allow absolute or scheme relative URLs to same origin\n            return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||\n                (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||\n                // or any other URL that isn't scheme relative or absolute i.e relative.\n                !(/^(\\/\\/|http:|https:).*/.test(url));\n        }\n        function safeMethod(method) {\n            return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));\n        }\n\n        if (!safeMethod(settings.type) && sameOrigin(settings.url)) {\n            xhr.setRequestHeader(\"X-CSRFToken\", getCookie('csrftoken'));\n        }\n    });\n}\n\nmodule.exports.init = init;","var $;\nif (typeof document !== 'undefined' ) {\n      $ = require(\"jquery\");\n          require('jquery.cookie');  //NOTE: these require statements are adding props to the $ obj. The order actually doesn't matter b/c it seems webpack deals with it\n          require('jquery-ui');  // Using autocomplete, what else?\n          require('jquery.scrollto');\n      window.$ = $;\n      window.jquery = $;\n} else {\n\t  const emptyPromise = () => {\n      \treturn {\"always\": ()=>new Promise(()=>{},()=>{})};\n      };\n      $         = require(\"cheerio\");\n      $.ajax    = emptyPromise; // fail silently if server-side code every hits one of these functions\n      $.getJSON = emptyPromise; // ditto\n      $.cookie  = function() {};\n}\n\nexport default $;\n","'use strict'\n\nmodule.exports = bail\n\nfunction bail(err) {\n  if (err) {\n    throw err\n  }\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    const arr = new Uint8Array(1)\n    const proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  const buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  const valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  const b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  const length = byteLength(string, encoding) | 0\n  let buf = createBuffer(length)\n\n  const actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  const length = array.length < 0 ? 0 : checked(array.length) | 0\n  const buf = createBuffer(length)\n  for (let i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    const copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  let buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    const len = checked(obj.length) | 0\n    const buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  let x = a.length\n  let y = b.length\n\n  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  let i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  const buffer = Buffer.allocUnsafe(length)\n  let pos = 0\n  for (i = 0; i < list.length; ++i) {\n    let buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n        buf.copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  const len = string.length\n  const mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  let loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  const i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  const len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (let i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  const len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (let i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  const len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (let i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  const length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  let str = ''\n  const max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  let x = thisEnd - thisStart\n  let y = end - start\n  const len = Math.min(x, y)\n\n  const thisCopy = this.slice(thisStart, thisEnd)\n  const targetCopy = target.slice(start, end)\n\n  for (let i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  let indexSize = 1\n  let arrLength = arr.length\n  let valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  let i\n  if (dir) {\n    let foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      let found = true\n      for (let j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  const remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  const strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  let i\n  for (i = 0; i < length; ++i) {\n    const parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  const remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  const res = []\n\n  let i = start\n  while (i < end) {\n    const firstByte = buf[i]\n    let codePoint = null\n    let bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      let secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  const len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  let res = ''\n  let i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  const len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  let out = ''\n  for (let i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  const bytes = buf.slice(start, end)\n  let res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (let i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  const len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  const newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  let val = this[offset + --byteLength]\n  let mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const lo = first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24\n\n  const hi = this[++offset] +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    last * 2 ** 24\n\n  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const hi = first * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  const lo = this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last\n\n  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let i = byteLength\n  let mul = 1\n  let val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = this[offset + 4] +\n    this[offset + 5] * 2 ** 8 +\n    this[offset + 6] * 2 ** 16 +\n    (last << 24) // Overflow\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = (first << 24) + // Overflow\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let mul = 1\n  let i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset + 7] = lo\n  lo = lo >> 8\n  buf[offset + 6] = lo\n  lo = lo >> 8\n  buf[offset + 5] = lo\n  lo = lo >> 8\n  buf[offset + 4] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset + 3] = hi\n  hi = hi >> 8\n  buf[offset + 2] = hi\n  hi = hi >> 8\n  buf[offset + 1] = hi\n  hi = hi >> 8\n  buf[offset] = hi\n  return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = 0\n  let mul = 1\n  let sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  let sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  const len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      const code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  let i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    const bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    const len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n  errors[sym] = class NodeError extends Base {\n    constructor () {\n      super()\n\n      Object.defineProperty(this, 'message', {\n        value: getMessage.apply(this, arguments),\n        writable: true,\n        configurable: true\n      })\n\n      // Add the error code to the name to include it in the stack trace.\n      this.name = `${this.name} [${sym}]`\n      // Access the stack to generate the error message including the error code\n      // from the name.\n      this.stack // eslint-disable-line no-unused-expressions\n      // Reset the name to the actual name.\n      delete this.name\n    }\n\n    get code () {\n      return sym\n    }\n\n    set code (value) {\n      Object.defineProperty(this, 'code', {\n        configurable: true,\n        enumerable: true,\n        value,\n        writable: true\n      })\n    }\n\n    toString () {\n      return `${this.name} [${sym}]: ${this.message}`\n    }\n  }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n  function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`\n    }\n\n    return 'Attempt to access memory outside buffer bounds'\n  }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n  function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n  }, TypeError)\nE('ERR_OUT_OF_RANGE',\n  function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`\n    let received = input\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    }\n    msg += ` It must be ${range}. Received ${received}`\n    return msg\n  }, RangeError)\n\nfunction addNumericalSeparator (val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n  validateNumber(offset, 'offset')\n  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n    boundsError(offset, buf.length - (byteLength + 1))\n  }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n  if (value > max || value < min) {\n    const n = typeof min === 'bigint' ? 'n' : ''\n    let range\n    if (byteLength > 3) {\n      if (min === 0 || min === BigInt(0)) {\n        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n      } else {\n        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n                `${(byteLength + 1) * 8 - 1}${n}`\n      }\n    } else {\n      range = `>= ${min}${n} and <= ${max}${n}`\n    }\n    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n  }\n  checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n  if (typeof value !== 'number') {\n    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n}\n\nfunction boundsError (value, length, type) {\n  if (Math.floor(value) !== value) {\n    validateNumber(value, type)\n    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n  }\n\n  if (length < 0) {\n    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n  }\n\n  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n                                    `>= ${type ? 1 : 0} and <= ${length}`,\n                                    value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  let codePoint\n  const length = string.length\n  let leadSurrogate = null\n  const bytes = []\n\n  for (let i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  let c, hi, lo\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  let i\n  for (i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n  const alphabet = '0123456789abcdef'\n  const table = new Array(256)\n  for (let i = 0; i < 16; ++i) {\n    const i16 = i * 16\n    for (let j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n  throw new Error('BigInt not supported')\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/**\n * Export cheerio (with )\n */\n\nexports = module.exports = require('./lib/cheerio');\n\n/*\n  Export the version\n*/\n\nexports.version = require('./package.json').version;\n","var $ = require('../static'),\n    utils = require('../utils'),\n    isTag = utils.isTag,\n    domEach = utils.domEach,\n    hasOwn = Object.prototype.hasOwnProperty,\n    camelCase = utils.camelCase,\n    cssCase = utils.cssCase,\n    rspace = /\\s+/,\n    dataAttrPrefix = 'data-',\n    _ = {\n      forEach: require('lodash.foreach'),\n      extend: require('lodash.assignin'),\n      some: require('lodash.some')\n    },\n\n  // Lookup table for coercing string data-* attributes to their corresponding\n  // JavaScript primitives\n  primitives = {\n    null: null,\n    true: true,\n    false: false\n  },\n\n  // Attributes that are booleans\n  rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n  // Matches strings that look like JSON objects or arrays\n  rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/;\n\n\nvar getAttr = function(elem, name) {\n  if (!elem || !isTag(elem)) return;\n\n  if (!elem.attribs) {\n    elem.attribs = {};\n  }\n\n  // Return the entire attribs object if no attribute specified\n  if (!name) {\n    return elem.attribs;\n  }\n\n  if (hasOwn.call(elem.attribs, name)) {\n    // Get the (decoded) attribute\n    return rboolean.test(name) ? name : elem.attribs[name];\n  }\n\n  // Mimic the DOM and return text content as value for `option's`\n  if (elem.name === 'option' && name === 'value') {\n    return $.text(elem.children);\n  }\n\n  // Mimic DOM with default value for radios/checkboxes\n  if (elem.name === 'input' &&\n      (elem.attribs.type === 'radio' || elem.attribs.type === 'checkbox') &&\n      name === 'value') {\n    return 'on';\n  }\n};\n\nvar setAttr = function(el, name, value) {\n\n  if (value === null) {\n    removeAttribute(el, name);\n  } else {\n    el.attribs[name] = value+'';\n  }\n};\n\nexports.attr = function(name, value) {\n  // Set the value (with attr map support)\n  if (typeof name === 'object' || value !== undefined) {\n    if (typeof value === 'function') {\n      return domEach(this, function(i, el) {\n        setAttr(el, name, value.call(el, i, el.attribs[name]));\n      });\n    }\n    return domEach(this, function(i, el) {\n      if (!isTag(el)) return;\n\n      if (typeof name === 'object') {\n        _.forEach(name, function(value, name) {\n          setAttr(el, name, value);\n        });\n      } else {\n        setAttr(el, name, value);\n      }\n    });\n  }\n\n  return getAttr(this[0], name);\n};\n\nvar getProp = function (el, name) {\n  if (!el || !isTag(el)) return;\n  \n  return el.hasOwnProperty(name)\n      ? el[name]\n      : rboolean.test(name)\n          ? getAttr(el, name) !== undefined\n          : getAttr(el, name);\n};\n\nvar setProp = function (el, name, value) {\n  el[name] = rboolean.test(name) ? !!value : value;\n};\n\nexports.prop = function (name, value) {\n  var i = 0,\n      property;\n\n  if (typeof name === 'string' && value === undefined) {\n\n    switch (name) {\n      case 'style':\n        property = this.css();\n\n        _.forEach(property, function (v, p) {\n          property[i++] = p;\n        });\n\n        property.length = i;\n\n        break;\n      case 'tagName':\n      case 'nodeName':\n        property = this[0].name.toUpperCase();\n        break;\n      default:\n        property = getProp(this[0], name);\n    }\n\n    return property;\n  }\n\n  if (typeof name === 'object' || value !== undefined) {\n\n    if (typeof value === 'function') {\n      return domEach(this, function(i, el) {\n        setProp(el, name, value.call(el, i, getProp(el, name)));\n      });\n    }\n\n    return domEach(this, function(i, el) {\n      if (!isTag(el)) return;\n\n      if (typeof name === 'object') {\n\n        _.forEach(name, function(val, name) {\n          setProp(el, name, val);\n        });\n\n      } else {\n        setProp(el, name, value);\n      }\n    });\n\n  }\n};\n\nvar setData = function(el, name, value) {\n  if (!el.data) {\n    el.data = {};\n  }\n\n  if (typeof name === 'object') return _.extend(el.data, name);\n  if (typeof name === 'string' && value !== undefined) {\n    el.data[name] = value;\n  } else if (typeof name === 'object') {\n    _.extend(el.data, name);\n  }\n};\n\n// Read the specified attribute from the equivalent HTML5 `data-*` attribute,\n// and (if present) cache the value in the node's internal data store. If no\n// attribute name is specified, read *all* HTML5 `data-*` attributes in this\n// manner.\nvar readData = function(el, name) {\n  var readAll = arguments.length === 1;\n  var domNames, domName, jsNames, jsName, value, idx, length;\n\n  if (readAll) {\n    domNames = Object.keys(el.attribs).filter(function(attrName) {\n      return attrName.slice(0, dataAttrPrefix.length) === dataAttrPrefix;\n    });\n    jsNames = domNames.map(function(domName) {\n      return camelCase(domName.slice(dataAttrPrefix.length));\n    });\n  } else {\n    domNames = [dataAttrPrefix + cssCase(name)];\n    jsNames = [name];\n  }\n\n  for (idx = 0, length = domNames.length; idx < length; ++idx) {\n    domName = domNames[idx];\n    jsName = jsNames[idx];\n    if (hasOwn.call(el.attribs, domName)) {\n      value = el.attribs[domName];\n\n      if (hasOwn.call(primitives, value)) {\n        value = primitives[value];\n      } else if (value === String(Number(value))) {\n        value = Number(value);\n      } else if (rbrace.test(value)) {\n        try {\n          value = JSON.parse(value);\n        } catch(e){ }\n      }\n\n      el.data[jsName] = value;\n    }\n  }\n\n  return readAll ? el.data : value;\n};\n\nexports.data = function(name, value) {\n  var elem = this[0];\n\n  if (!elem || !isTag(elem)) return;\n\n  if (!elem.data) {\n    elem.data = {};\n  }\n\n  // Return the entire data object if no data specified\n  if (!name) {\n    return readData(elem);\n  }\n\n  // Set the value (with attr map support)\n  if (typeof name === 'object' || value !== undefined) {\n    domEach(this, function(i, el) {\n      setData(el, name, value);\n    });\n    return this;\n  } else if (hasOwn.call(elem.data, name)) {\n    return elem.data[name];\n  }\n\n  return readData(elem, name);\n};\n\n/**\n * Get the value of an element\n */\n\nexports.val = function(value) {\n  var querying = arguments.length === 0,\n      element = this[0];\n\n  if(!element) return;\n\n  switch (element.name) {\n    case 'textarea':\n      return this.text(value);\n    case 'input':\n      switch (this.attr('type')) {\n        case 'radio':\n          if (querying) {\n            return this.attr('value');\n          } else {\n            this.attr('value', value);\n            return this;\n          }\n          break;\n        default:\n          return this.attr('value', value);\n      }\n      return;\n    case 'select':\n      var option = this.find('option:selected'),\n          returnValue;\n      if (option === undefined) return undefined;\n      if (!querying) {\n        if (!this.attr().hasOwnProperty('multiple') && typeof value == 'object') {\n          return this;\n        }\n        if (typeof value != 'object') {\n          value = [value];\n        }\n        this.find('option').removeAttr('selected');\n        for (var i = 0; i < value.length; i++) {\n          this.find('option[value=\"' + value[i] + '\"]').attr('selected', '');\n        }\n        return this;\n      }\n      returnValue = option.attr('value');\n      if (this.attr().hasOwnProperty('multiple')) {\n        returnValue = [];\n        domEach(option, function(i, el) {\n          returnValue.push(getAttr(el, 'value'));\n        });\n      }\n      return returnValue;\n    case 'option':\n      if (!querying) {\n        this.attr('value', value);\n        return this;\n      }\n      return this.attr('value');\n  }\n};\n\n/**\n * Remove an attribute\n */\n\nvar removeAttribute = function(elem, name) {\n  if (!elem.attribs || !hasOwn.call(elem.attribs, name))\n    return;\n\n  delete elem.attribs[name];\n};\n\n\nexports.removeAttr = function(name) {\n  domEach(this, function(i, elem) {\n    removeAttribute(elem, name);\n  });\n\n  return this;\n};\n\nexports.hasClass = function(className) {\n  return _.some(this, function(elem) {\n    var attrs = elem.attribs,\n        clazz = attrs && attrs['class'],\n        idx = -1,\n        end;\n\n    if (clazz) {\n      while ((idx = clazz.indexOf(className, idx+1)) > -1) {\n        end = idx + className.length;\n\n        if ((idx === 0 || rspace.test(clazz[idx-1]))\n            && (end === clazz.length || rspace.test(clazz[end]))) {\n          return true;\n        }\n      }\n    }\n  });\n};\n\nexports.addClass = function(value) {\n  // Support functions\n  if (typeof value === 'function') {\n    return domEach(this, function(i, el) {\n      var className = el.attribs['class'] || '';\n      exports.addClass.call([el], value.call(el, i, className));\n    });\n  }\n\n  // Return if no value or not a string or function\n  if (!value || typeof value !== 'string') return this;\n\n  var classNames = value.split(rspace),\n      numElements = this.length;\n\n\n  for (var i = 0; i < numElements; i++) {\n    // If selected element isn't a tag, move on\n    if (!isTag(this[i])) continue;\n\n    // If we don't already have classes\n    var className = getAttr(this[i], 'class'),\n        numClasses,\n        setClass;\n\n    if (!className) {\n      setAttr(this[i], 'class', classNames.join(' ').trim());\n    } else {\n      setClass = ' ' + className + ' ';\n      numClasses = classNames.length;\n\n      // Check if class already exists\n      for (var j = 0; j < numClasses; j++) {\n        var appendClass = classNames[j] + ' ';\n        if (setClass.indexOf(' ' + appendClass) < 0)\n          setClass += appendClass;\n      }\n\n      setAttr(this[i], 'class', setClass.trim());\n    }\n  }\n\n  return this;\n};\n\nvar splitClass = function(className) {\n  return className ? className.trim().split(rspace) : [];\n};\n\nexports.removeClass = function(value) {\n  var classes,\n      numClasses,\n      removeAll;\n\n  // Handle if value is a function\n  if (typeof value === 'function') {\n    return domEach(this, function(i, el) {\n      exports.removeClass.call(\n        [el], value.call(el, i, el.attribs['class'] || '')\n      );\n    });\n  }\n\n  classes = splitClass(value);\n  numClasses = classes.length;\n  removeAll = arguments.length === 0;\n\n  return domEach(this, function(i, el) {\n    if (!isTag(el)) return;\n\n    if (removeAll) {\n      // Short circuit the remove all case as this is the nice one\n      el.attribs.class = '';\n    } else {\n      var elClasses = splitClass(el.attribs.class),\n          index,\n          changed;\n\n      for (var j = 0; j < numClasses; j++) {\n        index = elClasses.indexOf(classes[j]);\n\n        if (index >= 0) {\n          elClasses.splice(index, 1);\n          changed = true;\n\n          // We have to do another pass to ensure that there are not duplicate\n          // classes listed\n          j--;\n        }\n      }\n      if (changed) {\n        el.attribs.class = elClasses.join(' ');\n      }\n    }\n  });\n};\n\nexports.toggleClass = function(value, stateVal) {\n  // Support functions\n  if (typeof value === 'function') {\n    return domEach(this, function(i, el) {\n      exports.toggleClass.call(\n        [el],\n        value.call(el, i, el.attribs['class'] || '', stateVal),\n        stateVal\n      );\n    });\n  }\n\n  // Return if no value or not a string or function\n  if (!value || typeof value !== 'string') return this;\n\n  var classNames = value.split(rspace),\n    numClasses = classNames.length,\n    state = typeof stateVal === 'boolean' ? stateVal ? 1 : -1 : 0,\n    numElements = this.length,\n    elementClasses,\n    index;\n\n  for (var i = 0; i < numElements; i++) {\n    // If selected element isn't a tag, move on\n    if (!isTag(this[i])) continue;\n\n    elementClasses = splitClass(this[i].attribs.class);\n\n    // Check if class already exists\n    for (var j = 0; j < numClasses; j++) {\n      // Check if the class name is currently defined\n      index = elementClasses.indexOf(classNames[j]);\n\n      // Add if stateValue === true or we are toggling and there is no value\n      if (state >= 0 && index < 0) {\n        elementClasses.push(classNames[j]);\n      } else if (state <= 0 && index >= 0) {\n        // Otherwise remove but only if the item exists\n        elementClasses.splice(index, 1);\n      }\n    }\n\n    this[i].attribs.class = elementClasses.join(' ');\n  }\n\n  return this;\n};\n\nexports.is = function (selector) {\n  if (selector) {\n    return this.filter(selector).length > 0;\n  }\n  return false;\n};\n\n","var domEach = require('../utils').domEach,\n    _ = {\n      pick: require('lodash.pick'),\n    };\n\nvar toString = Object.prototype.toString;\n\n/**\n * Set / Get css.\n *\n * @param {String|Object} prop\n * @param {String} val\n * @return {self}\n * @api public\n */\n\nexports.css = function(prop, val) {\n  if (arguments.length === 2 ||\n    // When `prop` is a \"plain\" object\n    (toString.call(prop) === '[object Object]')) {\n    return domEach(this, function(idx, el) {\n      setCss(el, prop, val, idx);\n    });\n  } else {\n    return getCss(this[0], prop);\n  }\n};\n\n/**\n * Set styles of all elements.\n *\n * @param {String|Object} prop\n * @param {String} val\n * @param {Number} idx - optional index within the selection\n * @return {self}\n * @api private\n */\n\nfunction setCss(el, prop, val, idx) {\n  if ('string' == typeof prop) {\n    var styles = getCss(el);\n    if (typeof val === 'function') {\n      val = val.call(el, idx, styles[prop]);\n    }\n\n    if (val === '') {\n      delete styles[prop];\n    } else if (val != null) {\n      styles[prop] = val;\n    }\n\n    el.attribs.style = stringify(styles);\n  } else if ('object' == typeof prop) {\n    Object.keys(prop).forEach(function(k){\n      setCss(el, k, prop[k]);\n    });\n  }\n}\n\n/**\n * Get parsed styles of the first element.\n *\n * @param {String} prop\n * @return {Object}\n * @api private\n */\n\nfunction getCss(el, prop) {\n  var styles = parse(el.attribs.style);\n  if (typeof prop === 'string') {\n    return styles[prop];\n  } else if (Array.isArray(prop)) {\n    return _.pick(styles, prop);\n  } else {\n    return styles;\n  }\n}\n\n/**\n * Stringify `obj` to styles.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction stringify(obj) {\n  return Object.keys(obj || {})\n    .reduce(function(str, prop){\n      return str += ''\n        + (str ? ' ' : '')\n        + prop\n        + ': '\n        + obj[prop]\n        + ';';\n    }, '');\n}\n\n/**\n * Parse `styles`.\n *\n * @param {String} styles\n * @return {Object}\n * @api private\n */\n\nfunction parse(styles) {\n  styles = (styles || '').trim();\n\n  if (!styles) return {};\n\n  return styles\n    .split(';')\n    .reduce(function(obj, str){\n      var n = str.indexOf(':');\n      // skip if there is no :, or if it is the first/last character\n      if (n < 1 || n === str.length-1) return obj;\n      obj[str.slice(0,n).trim()] = str.slice(n+1).trim();\n      return obj;\n    }, {});\n}\n","// https://github.com/jquery/jquery/blob/2.1.3/src/manipulation/var/rcheckableType.js\n// https://github.com/jquery/jquery/blob/2.1.3/src/serialize.js\nvar submittableSelector = 'input,select,textarea,keygen',\n    r20 = /%20/g,\n    rCRLF = /\\r?\\n/g,\n    _ = {\n      map: require('lodash.map')\n    };\n\nexports.serialize = function() {\n  // Convert form elements into name/value objects\n  var arr = this.serializeArray();\n\n  // Serialize each element into a key/value string\n  var retArr = _.map(arr, function(data) {\n    return encodeURIComponent(data.name) + '=' + encodeURIComponent(data.value);\n  });\n\n  // Return the resulting serialization\n  return retArr.join('&').replace(r20, '+');\n};\n\nexports.serializeArray = function() {\n  // Resolve all form elements from either forms or collections of form elements\n  var Cheerio = this.constructor;\n  return this.map(function() {\n      var elem = this;\n      var $elem = Cheerio(elem);\n      if (elem.name === 'form') {\n        return $elem.find(submittableSelector).toArray();\n      } else {\n        return $elem.filter(submittableSelector).toArray();\n      }\n    }).filter(\n        // Verify elements have a name (`attr.name`) and are not disabled (`:disabled`)\n        '[name!=\"\"]:not(:disabled)'\n        // and cannot be clicked (`[type=submit]`) or are used in `x-www-form-urlencoded` (`[type=file]`)\n        + ':not(:submit, :button, :image, :reset, :file)'\n        // and are either checked/don't have a checkable state\n        + ':matches([checked], :not(:checkbox, :radio))'\n    // Convert each of the elements to its value(s)\n    ).map(function(i, elem) {\n      var $elem = Cheerio(elem);\n      var name = $elem.attr('name');\n      var val = $elem.val();\n\n      // If there is no value set (e.g. `undefined`, `null`), then return nothing\n      if (val == null) {\n        return null;\n      } else {\n        // If we have an array of values (e.g. `<select multiple>`), return an array of key/value pairs\n        if (Array.isArray(val)) {\n          return _.map(val, function(val) {\n            // We trim replace any line endings (e.g. `\\r` or `\\r\\n` with `\\r\\n`) to guarantee consistency across platforms\n            //   These can occur inside of `<textarea>'s`\n            return {name: name, value: val.replace( rCRLF, '\\r\\n' )};\n          });\n        // Otherwise (e.g. `<input type=\"text\">`, return only one key/value pair\n        } else {\n          return {name: name, value: val.replace( rCRLF, '\\r\\n' )};\n        }\n      }\n    // Convert our result to an array\n    }).get();\n};\n","var parse = require('../parse'),\n    $ = require('../static'),\n    updateDOM = parse.update,\n    evaluate = parse.evaluate,\n    utils = require('../utils'),\n    domEach = utils.domEach,\n    cloneDom = utils.cloneDom,\n    isHtml = utils.isHtml,\n    slice = Array.prototype.slice,\n    _ = {\n      flatten: require('lodash.flatten'),\n      bind: require('lodash.bind'),\n      forEach: require('lodash.foreach')\n    };\n\n// Create an array of nodes, recursing into arrays and parsing strings if\n// necessary\nexports._makeDomArray = function makeDomArray(elem, clone) {\n  if (elem == null) {\n    return [];\n  } else if (elem.cheerio) {\n    return clone ? cloneDom(elem.get(), elem.options) : elem.get();\n  } else if (Array.isArray(elem)) {\n    return _.flatten(elem.map(function(el) {\n      return this._makeDomArray(el, clone);\n    }, this));\n  } else if (typeof elem === 'string') {\n    return evaluate(elem, this.options);\n  } else {\n    return clone ? cloneDom([elem]) : [elem];\n  }\n};\n\nvar _insert = function(concatenator) {\n  return function() {\n    var elems = slice.call(arguments),\n        lastIdx = this.length - 1;\n\n    return domEach(this, function(i, el) {\n      var dom, domSrc;\n\n      if (typeof elems[0] === 'function') {\n        domSrc = elems[0].call(el, i, $.html(el.children));\n      } else {\n        domSrc = elems;\n      }\n\n      dom = this._makeDomArray(domSrc, i < lastIdx);\n      concatenator(dom, el.children, el);\n    });\n  };\n};\n\n/*\n * Modify an array in-place, removing some number of elements and adding new\n * elements directly following them.\n *\n * @param {Array} array Target array to splice.\n * @param {Number} spliceIdx Index at which to begin changing the array.\n * @param {Number} spliceCount Number of elements to remove from the array.\n * @param {Array} newElems Elements to insert into the array.\n *\n * @api private\n */\nvar uniqueSplice = function(array, spliceIdx, spliceCount, newElems, parent) {\n  var spliceArgs = [spliceIdx, spliceCount].concat(newElems),\n      prev = array[spliceIdx - 1] || null,\n      next = array[spliceIdx] || null;\n  var idx, len, prevIdx, node, oldParent;\n\n  // Before splicing in new elements, ensure they do not already appear in the\n  // current array.\n  for (idx = 0, len = newElems.length; idx < len; ++idx) {\n    node = newElems[idx];\n    oldParent = node.parent || node.root;\n    prevIdx = oldParent && oldParent.children.indexOf(newElems[idx]);\n\n    if (oldParent && prevIdx > -1) {\n      oldParent.children.splice(prevIdx, 1);\n      if (parent === oldParent && spliceIdx > prevIdx) {\n        spliceArgs[0]--;\n      }\n    }\n\n    node.root = null;\n    node.parent = parent;\n\n    if (node.prev) {\n      node.prev.next = node.next || null;\n    }\n\n    if (node.next) {\n      node.next.prev = node.prev || null;\n    }\n\n    node.prev = newElems[idx - 1] || prev;\n    node.next = newElems[idx + 1] || next;\n  }\n\n  if (prev) {\n    prev.next = newElems[0];\n  }\n  if (next) {\n    next.prev = newElems[newElems.length - 1];\n  }\n  return array.splice.apply(array, spliceArgs);\n};\n\nexports.appendTo = function(target) {\n  if (!target.cheerio) {\n    target = this.constructor.call(this.constructor, target, null, this._originalRoot);\n  }\n\n  target.append(this);\n\n  return this;\n};\n\nexports.prependTo = function(target) {\n  if (!target.cheerio) {\n    target = this.constructor.call(this.constructor, target, null, this._originalRoot);\n  }\n\n  target.prepend(this);\n\n  return this;\n};\n\nexports.append = _insert(function(dom, children, parent) {\n  uniqueSplice(children, children.length, 0, dom, parent);\n});\n\nexports.prepend = _insert(function(dom, children, parent) {\n  uniqueSplice(children, 0, 0, dom, parent);\n});\n\nexports.wrap = function(wrapper) {\n  var wrapperFn = typeof wrapper === 'function' && wrapper,\n      lastIdx = this.length - 1;\n\n  _.forEach(this, _.bind(function(el, i) {\n    var parent = el.parent || el.root,\n        siblings = parent.children,\n        dom, index;\n\n    if (!parent) {\n      return;\n    }\n\n    if (wrapperFn) {\n      wrapper = wrapperFn.call(el, i);\n    }\n\n    if (typeof wrapper === 'string' && !isHtml(wrapper)) {\n      wrapper = this.parents().last().find(wrapper).clone();\n    }\n\n    dom = this._makeDomArray(wrapper, i < lastIdx).slice(0, 1);\n    index = siblings.indexOf(el);\n\n    updateDOM([el], dom[0]);\n    // The previous operation removed the current element from the `siblings`\n    // array, so the `dom` array can be inserted without removing any\n    // additional elements.\n    uniqueSplice(siblings, index, 0, dom, parent);\n  }, this));\n\n  return this;\n};\n\nexports.after = function() {\n  var elems = slice.call(arguments),\n      lastIdx = this.length - 1;\n\n  domEach(this, function(i, el) {\n    var parent = el.parent || el.root;\n    if (!parent) {\n      return;\n    }\n\n    var siblings = parent.children,\n        index = siblings.indexOf(el),\n        domSrc, dom;\n\n    // If not found, move on\n    if (index < 0) return;\n\n    if (typeof elems[0] === 'function') {\n      domSrc = elems[0].call(el, i, $.html(el.children));\n    } else {\n      domSrc = elems;\n    }\n    dom = this._makeDomArray(domSrc, i < lastIdx);\n\n    // Add element after `this` element\n    uniqueSplice(siblings, index + 1, 0, dom, parent);\n  });\n\n  return this;\n};\n\nexports.insertAfter = function(target) {\n  var clones = [],\n      self = this;\n  if (typeof target === 'string') {\n    target = this.constructor.call(this.constructor, target, null, this._originalRoot);\n  }\n  target = this._makeDomArray(target);\n  self.remove();\n  domEach(target, function(i, el) {\n    var clonedSelf = self._makeDomArray(self.clone());\n    var parent = el.parent || el.root;\n    if (!parent) {\n      return;\n    }\n\n    var siblings = parent.children,\n        index = siblings.indexOf(el);\n\n    // If not found, move on\n    if (index < 0) return;\n\n    // Add cloned `this` element(s) after target element\n    uniqueSplice(siblings, index + 1, 0, clonedSelf, parent);\n    clones.push(clonedSelf);\n  });\n  return this.constructor.call(this.constructor, this._makeDomArray(clones));\n};\n\nexports.before = function() {\n  var elems = slice.call(arguments),\n      lastIdx = this.length - 1;\n\n  domEach(this, function(i, el) {\n    var parent = el.parent || el.root;\n    if (!parent) {\n      return;\n    }\n\n    var siblings = parent.children,\n        index = siblings.indexOf(el),\n        domSrc, dom;\n\n    // If not found, move on\n    if (index < 0) return;\n\n    if (typeof elems[0] === 'function') {\n      domSrc = elems[0].call(el, i, $.html(el.children));\n    } else {\n      domSrc = elems;\n    }\n\n    dom = this._makeDomArray(domSrc, i < lastIdx);\n\n    // Add element before `el` element\n    uniqueSplice(siblings, index, 0, dom, parent);\n  });\n\n  return this;\n};\n\nexports.insertBefore = function(target) {\n  var clones = [],\n      self = this;\n  if (typeof target === 'string') {\n    target = this.constructor.call(this.constructor, target, null, this._originalRoot);\n  }\n  target = this._makeDomArray(target);\n  self.remove();\n  domEach(target, function(i, el) {\n    var clonedSelf = self._makeDomArray(self.clone());\n    var parent = el.parent || el.root;\n    if (!parent) {\n      return;\n    }\n\n    var siblings = parent.children,\n        index = siblings.indexOf(el);\n\n    // If not found, move on\n    if (index < 0) return;\n\n    // Add cloned `this` element(s) after target element\n    uniqueSplice(siblings, index, 0, clonedSelf, parent);\n    clones.push(clonedSelf);\n  });\n  return this.constructor.call(this.constructor, this._makeDomArray(clones));\n};\n\n/*\n  remove([selector])\n*/\nexports.remove = function(selector) {\n  var elems = this;\n\n  // Filter if we have selector\n  if (selector)\n    elems = elems.filter(selector);\n\n  domEach(elems, function(i, el) {\n    var parent = el.parent || el.root;\n    if (!parent) {\n      return;\n    }\n\n    var siblings = parent.children,\n        index = siblings.indexOf(el);\n\n    if (index < 0) return;\n\n    siblings.splice(index, 1);\n    if (el.prev) {\n      el.prev.next = el.next;\n    }\n    if (el.next) {\n      el.next.prev = el.prev;\n    }\n    el.prev = el.next = el.parent = el.root = null;\n  });\n\n  return this;\n};\n\nexports.replaceWith = function(content) {\n  var self = this;\n\n  domEach(this, function(i, el) {\n    var parent = el.parent || el.root;\n    if (!parent) {\n      return;\n    }\n\n    var siblings = parent.children,\n        dom = self._makeDomArray(typeof content === 'function' ? content.call(el, i, el) : content),\n        index;\n\n    // In the case that `dom` contains nodes that already exist in other\n    // structures, ensure those nodes are properly removed.\n    updateDOM(dom, null);\n\n    index = siblings.indexOf(el);\n\n    // Completely remove old element\n    uniqueSplice(siblings, index, 1, dom, parent);\n    el.parent = el.prev = el.next = el.root = null;\n  });\n\n  return this;\n};\n\nexports.empty = function() {\n  domEach(this, function(i, el) {\n    _.forEach(el.children, function(el) {\n      el.next = el.prev = el.parent = null;\n    });\n\n    el.children.length = 0;\n  });\n  return this;\n};\n\n/**\n * Set/Get the HTML\n */\nexports.html = function(str) {\n  if (str === undefined) {\n    if (!this[0] || !this[0].children) return null;\n    return $.html(this[0].children, this.options);\n  }\n\n  var opts = this.options;\n\n  domEach(this, function(i, el) {\n    _.forEach(el.children, function(el) {\n      el.next = el.prev = el.parent = null;\n    });\n\n    var content = str.cheerio ? str.clone().get() : evaluate('' + str, opts);\n\n    updateDOM(content, el);\n  });\n\n  return this;\n};\n\nexports.toString = function() {\n  return $.html(this, this.options);\n};\n\nexports.text = function(str) {\n  // If `str` is undefined, act as a \"getter\"\n  if (str === undefined) {\n    return $.text(this);\n  } else if (typeof str === 'function') {\n    // Function support\n    return domEach(this, function(i, el) {\n      var $el = [el];\n      return exports.text.call($el, str.call(el, i, $.text($el)));\n    });\n  }\n\n  // Append text node to each selected elements\n  domEach(this, function(i, el) {\n    _.forEach(el.children, function(el) {\n      el.next = el.prev = el.parent = null;\n    });\n\n    var elem = {\n      data: '' + str,\n      type: 'text',\n      parent: el,\n      prev: null,\n      next: null,\n      children: []\n    };\n\n    updateDOM(elem, el);\n  });\n\n  return this;\n};\n\nexports.clone = function() {\n  return this._make(cloneDom(this.get(), this.options));\n};\n","var select = require('css-select'),\n    utils = require('../utils'),\n    domEach = utils.domEach,\n    uniqueSort = require('htmlparser2').DomUtils.uniqueSort,\n    isTag = utils.isTag,\n    _ = {\n      bind: require('lodash.bind'),\n      forEach: require('lodash.foreach'),\n      reject: require('lodash.reject'),\n      filter: require('lodash.filter'),\n      reduce: require('lodash.reduce')\n    };\n\nexports.find = function(selectorOrHaystack) {\n  var elems = _.reduce(this, function(memo, elem) {\n    return memo.concat(_.filter(elem.children, isTag));\n  }, []);\n  var contains = this.constructor.contains;\n  var haystack;\n\n  if (selectorOrHaystack && typeof selectorOrHaystack !== 'string') {\n    if (selectorOrHaystack.cheerio) {\n      haystack = selectorOrHaystack.get();\n    } else {\n      haystack = [selectorOrHaystack];\n    }\n\n    return this._make(haystack.filter(function(elem) {\n      var idx, len;\n      for (idx = 0, len = this.length; idx < len; ++idx) {\n        if (contains(this[idx], elem)) {\n          return true;\n        }\n      }\n    }, this));\n  }\n\n  var options = {__proto__: this.options, context: this.toArray()};\n\n  return this._make(select(selectorOrHaystack, elems, options));\n};\n\n// Get the parent of each element in the current set of matched elements,\n// optionally filtered by a selector.\nexports.parent = function(selector) {\n  var set = [];\n\n  domEach(this, function(idx, elem) {\n    var parentElem = elem.parent;\n    if (parentElem && set.indexOf(parentElem) < 0) {\n      set.push(parentElem);\n    }\n  });\n\n  if (arguments.length) {\n    set = exports.filter.call(set, selector, this);\n  }\n\n  return this._make(set);\n};\n\nexports.parents = function(selector) {\n  var parentNodes = [];\n\n  // When multiple DOM elements are in the original set, the resulting set will\n  // be in *reverse* order of the original elements as well, with duplicates\n  // removed.\n  this.get().reverse().forEach(function(elem) {\n    traverseParents(this, elem.parent, selector, Infinity)\n      .forEach(function(node) {\n        if (parentNodes.indexOf(node) === -1) {\n          parentNodes.push(node);\n        }\n      }\n    );\n  }, this);\n\n  return this._make(parentNodes);\n};\n\nexports.parentsUntil = function(selector, filter) {\n  var parentNodes = [], untilNode, untilNodes;\n\n  if (typeof selector === 'string') {\n    untilNode = select(selector, this.parents().toArray(), this.options)[0];\n  } else if (selector && selector.cheerio) {\n    untilNodes = selector.toArray();\n  } else if (selector) {\n    untilNode = selector;\n  }\n\n  // When multiple DOM elements are in the original set, the resulting set will\n  // be in *reverse* order of the original elements as well, with duplicates\n  // removed.\n\n  this.toArray().reverse().forEach(function(elem) {\n    while ((elem = elem.parent)) {\n      if ((untilNode && elem !== untilNode) ||\n        (untilNodes && untilNodes.indexOf(elem) === -1) ||\n        (!untilNode && !untilNodes)) {\n        if (isTag(elem) && parentNodes.indexOf(elem) === -1) { parentNodes.push(elem); }\n      } else {\n        break;\n      }\n    }\n  }, this);\n\n  return this._make(filter ? select(filter, parentNodes, this.options) : parentNodes);\n};\n\n// For each element in the set, get the first element that matches the selector\n// by testing the element itself and traversing up through its ancestors in the\n// DOM tree.\nexports.closest = function(selector) {\n  var set = [];\n\n  if (!selector) {\n    return this._make(set);\n  }\n\n  domEach(this, function(idx, elem) {\n    var closestElem = traverseParents(this, elem, selector, 1)[0];\n\n    // Do not add duplicate elements to the set\n    if (closestElem && set.indexOf(closestElem) < 0) {\n      set.push(closestElem);\n    }\n  }.bind(this));\n\n  return this._make(set);\n};\n\nexports.next = function(selector) {\n  if (!this[0]) { return this; }\n  var elems = [];\n\n  _.forEach(this, function(elem) {\n    while ((elem = elem.next)) {\n      if (isTag(elem)) {\n        elems.push(elem);\n        return;\n      }\n    }\n  });\n\n  return selector ?\n    exports.filter.call(elems, selector, this) :\n    this._make(elems);\n};\n\nexports.nextAll = function(selector) {\n  if (!this[0]) { return this; }\n  var elems = [];\n\n  _.forEach(this, function(elem) {\n    while ((elem = elem.next)) {\n      if (isTag(elem) && elems.indexOf(elem) === -1) {\n        elems.push(elem);\n      }\n    }\n  });\n\n  return selector ?\n    exports.filter.call(elems, selector, this) :\n    this._make(elems);\n};\n\nexports.nextUntil = function(selector, filterSelector) {\n  if (!this[0]) { return this; }\n  var elems = [], untilNode, untilNodes;\n\n  if (typeof selector === 'string') {\n    untilNode = select(selector, this.nextAll().get(), this.options)[0];\n  } else if (selector && selector.cheerio) {\n    untilNodes = selector.get();\n  } else if (selector) {\n    untilNode = selector;\n  }\n\n  _.forEach(this, function(elem) {\n    while ((elem = elem.next)) {\n      if ((untilNode && elem !== untilNode) ||\n        (untilNodes && untilNodes.indexOf(elem) === -1) ||\n        (!untilNode && !untilNodes)) {\n        if (isTag(elem) && elems.indexOf(elem) === -1) {\n          elems.push(elem);\n        }\n      } else {\n        break;\n      }\n    }\n  });\n\n  return filterSelector ?\n    exports.filter.call(elems, filterSelector, this) :\n    this._make(elems);\n};\n\nexports.prev = function(selector) {\n  if (!this[0]) { return this; }\n  var elems = [];\n\n  _.forEach(this, function(elem) {\n    while ((elem = elem.prev)) {\n      if (isTag(elem)) {\n        elems.push(elem);\n        return;\n      }\n    }\n  });\n\n  return selector ?\n    exports.filter.call(elems, selector, this) :\n    this._make(elems);\n};\n\nexports.prevAll = function(selector) {\n  if (!this[0]) { return this; }\n  var elems = [];\n\n  _.forEach(this, function(elem) {\n    while ((elem = elem.prev)) {\n      if (isTag(elem) && elems.indexOf(elem) === -1) {\n        elems.push(elem);\n      }\n    }\n  });\n\n  return selector ?\n    exports.filter.call(elems, selector, this) :\n    this._make(elems);\n};\n\nexports.prevUntil = function(selector, filterSelector) {\n  if (!this[0]) { return this; }\n  var elems = [], untilNode, untilNodes;\n\n  if (typeof selector === 'string') {\n    untilNode = select(selector, this.prevAll().get(), this.options)[0];\n  } else if (selector && selector.cheerio) {\n    untilNodes = selector.get();\n  } else if (selector) {\n    untilNode = selector;\n  }\n\n  _.forEach(this, function(elem) {\n    while ((elem = elem.prev)) {\n      if ((untilNode && elem !== untilNode) ||\n        (untilNodes && untilNodes.indexOf(elem) === -1) ||\n        (!untilNode && !untilNodes)) {\n        if (isTag(elem) && elems.indexOf(elem) === -1) {\n          elems.push(elem);\n        }\n      } else {\n        break;\n      }\n    }\n  });\n\n  return filterSelector ?\n    exports.filter.call(elems, filterSelector, this) :\n    this._make(elems);\n};\n\nexports.siblings = function(selector) {\n  var parent = this.parent();\n\n  var elems = _.filter(\n    parent ? parent.children() : this.siblingsAndMe(),\n    _.bind(function(elem) { return isTag(elem) && !this.is(elem); }, this)\n  );\n\n  if (selector !== undefined) {\n    return exports.filter.call(elems, selector, this);\n  } else {\n    return this._make(elems);\n  }\n};\n\nexports.children = function(selector) {\n\n  var elems = _.reduce(this, function(memo, elem) {\n    return memo.concat(_.filter(elem.children, isTag));\n  }, []);\n\n  if (selector === undefined) return this._make(elems);\n\n  return exports.filter.call(elems, selector, this);\n};\n\nexports.contents = function() {\n  return this._make(_.reduce(this, function(all, elem) {\n    all.push.apply(all, elem.children);\n    return all;\n  }, []));\n};\n\nexports.each = function(fn) {\n  var i = 0, len = this.length;\n  while (i < len && fn.call(this[i], i, this[i]) !== false) ++i;\n  return this;\n};\n\nexports.map = function(fn) {\n  return this._make(_.reduce(this, function(memo, el, i) {\n    var val = fn.call(el, i, el);\n    return val == null ? memo : memo.concat(val);\n  }, []));\n};\n\nvar makeFilterMethod = function(filterFn) {\n  return function(match, container) {\n    var testFn;\n    container = container || this;\n\n    if (typeof match === 'string') {\n      testFn = select.compile(match, container.options);\n    } else if (typeof match === 'function') {\n      testFn = function(el, i) {\n        return match.call(el, i, el);\n      };\n    } else if (match.cheerio) {\n      testFn = match.is.bind(match);\n    } else {\n      testFn = function(el) {\n        return match === el;\n      };\n    }\n\n    return container._make(filterFn(this, testFn));\n  };\n};\n\nexports.filter = makeFilterMethod(_.filter);\nexports.not = makeFilterMethod(_.reject);\n\nexports.has = function(selectorOrHaystack) {\n  var that = this;\n  return exports.filter.call(this, function() {\n    return that._make(this).find(selectorOrHaystack).length > 0;\n  });\n};\n\nexports.first = function() {\n  return this.length > 1 ? this._make(this[0]) : this;\n};\n\nexports.last = function() {\n  return this.length > 1 ? this._make(this[this.length - 1]) : this;\n};\n\n// Reduce the set of matched elements to the one at the specified index.\nexports.eq = function(i) {\n  i = +i;\n\n  // Use the first identity optimization if possible\n  if (i === 0 && this.length <= 1) return this;\n\n  if (i < 0) i = this.length + i;\n  return this[i] ? this._make(this[i]) : this._make([]);\n};\n\n// Retrieve the DOM elements matched by the jQuery object.\nexports.get = function(i) {\n  if (i == null) {\n    return Array.prototype.slice.call(this);\n  } else {\n    return this[i < 0 ? (this.length + i) : i];\n  }\n};\n\n// Search for a given element from among the matched elements.\nexports.index = function(selectorOrNeedle) {\n  var $haystack, needle;\n\n  if (arguments.length === 0) {\n    $haystack = this.parent().children();\n    needle = this[0];\n  } else if (typeof selectorOrNeedle === 'string') {\n    $haystack = this._make(selectorOrNeedle);\n    needle = this[0];\n  } else {\n    $haystack = this;\n    needle = selectorOrNeedle.cheerio ? selectorOrNeedle[0] : selectorOrNeedle;\n  }\n\n  return $haystack.get().indexOf(needle);\n};\n\nexports.slice = function() {\n  return this._make([].slice.apply(this, arguments));\n};\n\nfunction traverseParents(self, elem, selector, limit) {\n  var elems = [];\n  while (elem && elems.length < limit) {\n    if (!selector || exports.filter.call([elem], selector, self).length) {\n      elems.push(elem);\n    }\n    elem = elem.parent;\n  }\n  return elems;\n}\n\n// End the most recent filtering operation in the current chain and return the\n// set of matched elements to its previous state.\nexports.end = function() {\n  return this.prevObject || this._make([]);\n};\n\nexports.add = function(other, context) {\n  var selection = this._make(other, context);\n  var contents = uniqueSort(selection.get().concat(this.get()));\n\n  for (var i = 0; i < contents.length; ++i) {\n    selection[i] = contents[i];\n  }\n  selection.length = contents.length;\n\n  return selection;\n};\n\n// Add the previous set of elements on the stack to the current set, optionally\n// filtered by a selector.\nexports.addBack = function(selector) {\n  return this.add(\n    arguments.length ? this.prevObject.filter(selector) : this.prevObject\n  );\n};\n","/*\n  Module dependencies\n*/\n\nvar parse = require('./parse'),\n    isHtml = require('./utils').isHtml,\n    _ = {\n      extend: require('lodash.assignin'),\n      bind: require('lodash.bind'),\n      forEach: require('lodash.foreach'),\n      defaults: require('lodash.defaults')\n    };\n\n/*\n * The API\n */\n\nvar api = [\n  require('./api/attributes'),\n  require('./api/traversing'),\n  require('./api/manipulation'),\n  require('./api/css'),\n  require('./api/forms')\n];\n\n/*\n * Instance of cheerio\n */\n\nvar Cheerio = module.exports = function(selector, context, root, options) {\n  if (!(this instanceof Cheerio)) return new Cheerio(selector, context, root, options);\n\n  this.options = _.defaults(options || {}, this.options);\n\n  // $(), $(null), $(undefined), $(false)\n  if (!selector) return this;\n\n  if (root) {\n    if (typeof root === 'string') root = parse(root, this.options);\n    this._root = Cheerio.call(this, root);\n  }\n\n  // $($)\n  if (selector.cheerio) return selector;\n\n  // $(dom)\n  if (isNode(selector))\n    selector = [selector];\n\n  // $([dom])\n  if (Array.isArray(selector)) {\n    _.forEach(selector, _.bind(function(elem, idx) {\n      this[idx] = elem;\n    }, this));\n    this.length = selector.length;\n    return this;\n  }\n\n  // $(<html>)\n  if (typeof selector === 'string' && isHtml(selector)) {\n    return Cheerio.call(this, parse(selector, this.options).children);\n  }\n\n  // If we don't have a context, maybe we have a root, from loading\n  if (!context) {\n    context = this._root;\n  } else if (typeof context === 'string') {\n    if (isHtml(context)) {\n      // $('li', '<ul>...</ul>')\n      context = parse(context, this.options);\n      context = Cheerio.call(this, context);\n    } else {\n      // $('li', 'ul')\n      selector = [context, selector].join(' ');\n      context = this._root;\n    }\n  // $('li', node), $('li', [nodes])\n  } else if (!context.cheerio) {\n    context = Cheerio.call(this, context);\n  }\n\n  // If we still don't have a context, return\n  if (!context) return this;\n\n  // #id, .class, tag\n  return context.find(selector);\n};\n\n/**\n * Mix in `static`\n */\n\n_.extend(Cheerio, require('./static'));\n\n/*\n * Set a signature of the object\n */\n\nCheerio.prototype.cheerio = '[cheerio object]';\n\n/*\n * Cheerio default options\n */\n\nCheerio.prototype.options = {\n  withDomLvl1: true,\n  normalizeWhitespace: false,\n  xmlMode: false,\n  decodeEntities: true\n};\n\n/*\n * Make cheerio an array-like object\n */\n\nCheerio.prototype.length = 0;\nCheerio.prototype.splice = Array.prototype.splice;\n\n/*\n * Make a cheerio object\n *\n * @api private\n */\n\nCheerio.prototype._make = function(dom, context) {\n  var cheerio = new this.constructor(dom, context, this._root, this.options);\n  cheerio.prevObject = this;\n  return cheerio;\n};\n\n/**\n * Turn a cheerio object into an array\n */\n\nCheerio.prototype.toArray = function() {\n  return this.get();\n};\n\n/**\n * Plug in the API\n */\napi.forEach(function(mod) {\n  _.extend(Cheerio.prototype, mod);\n});\n\nvar isNode = function(obj) {\n  return obj.name || obj.type === 'text' || obj.type === 'comment';\n};\n","/*\n  Module Dependencies\n*/\nvar htmlparser = require('htmlparser2');\n\n/*\n  Parser\n*/\nexports = module.exports = function(content, options) {\n  var dom = exports.evaluate(content, options),\n      // Generic root element\n      root = exports.evaluate('<root></root>', options)[0];\n\n  root.type = 'root';\n\n  // Update the dom using the root\n  exports.update(dom, root);\n\n  return root;\n};\n\nexports.evaluate = function(content, options) {\n  // options = options || $.fn.options;\n\n  var dom;\n\n  if (typeof content === 'string' || Buffer.isBuffer(content)) {\n    dom = htmlparser.parseDOM(content, options);\n  } else {\n    dom = content;\n  }\n\n  return dom;\n};\n\n/*\n  Update the dom structure, for one changed layer\n*/\nexports.update = function(arr, parent) {\n  // normalize\n  if (!Array.isArray(arr)) arr = [arr];\n\n  // Update parent\n  if (parent) {\n    parent.children = arr;\n  } else {\n    parent = null;\n  }\n\n  // Update neighbors\n  for (var i = 0; i < arr.length; i++) {\n    var node = arr[i];\n\n    // Cleanly remove existing nodes from their previous structures.\n    var oldParent = node.parent || node.root,\n        oldSiblings = oldParent && oldParent.children;\n    if (oldSiblings && oldSiblings !== arr) {\n      oldSiblings.splice(oldSiblings.indexOf(node), 1);\n      if (node.prev) {\n        node.prev.next = node.next;\n      }\n      if (node.next) {\n        node.next.prev = node.prev;\n      }\n    }\n\n    if (parent) {\n      node.prev = arr[i - 1] || null;\n      node.next = arr[i + 1] || null;\n    } else {\n      node.prev = node.next = null;\n    }\n\n    if (parent && parent.type === 'root') {\n      node.root = parent;\n      node.parent = null;\n    } else {\n      node.root = null;\n      node.parent = parent;\n    }\n  }\n\n  return parent;\n};\n\n// module.exports = $.extend(exports);\n","/**\n * Module dependencies\n */\n\nvar serialize = require('dom-serializer'),\n    select = require('css-select'),\n    parse = require('./parse'),\n    _ = {\n      merge: require('lodash.merge'),\n      defaults: require('lodash.defaults')\n    };\n\n/**\n * $.load(str)\n */\n\nexports.load = function(content, options) {\n  var Cheerio = require('./cheerio');\n\n  options = _.defaults(options || {}, Cheerio.prototype.options);\n\n  var root = parse(content, options);\n\n  var initialize = function(selector, context, r, opts) {\n    if (!(this instanceof initialize)) {\n      return new initialize(selector, context, r, opts);\n    }\n    opts = _.defaults(opts || {}, options);\n    return Cheerio.call(this, selector, context, r || root, opts);\n  };\n\n  // Ensure that selections created by the \"loaded\" `initialize` function are\n  // true Cheerio instances.\n  initialize.prototype = Object.create(Cheerio.prototype);\n  initialize.prototype.constructor = initialize;\n\n  // Mimic jQuery's prototype alias for plugin authors.\n  initialize.fn = initialize.prototype;\n\n  // Keep a reference to the top-level scope so we can chain methods that implicitly\n  // resolve selectors; e.g. $(\"<span>\").(\".bar\"), which otherwise loses ._root\n  initialize.prototype._originalRoot = root;\n\n  // Add in the static methods\n  _.merge(initialize, exports);\n\n  // Add in the root\n  initialize._root = root;\n  // store options\n  initialize._options = options;\n\n  return initialize;\n};\n\n/*\n* Helper function\n*/\n\nfunction render(that, dom, options) {\n  if (!dom) {\n    if (that._root && that._root.children) {\n      dom = that._root.children;\n    } else {\n      return '';\n    }\n  } else if (typeof dom === 'string') {\n    dom = select(dom, that._root, options);\n  }\n\n  return serialize(dom, options);\n}\n\n/**\n * $.html([selector | dom], [options])\n */\n\nexports.html = function(dom, options) {\n  var Cheerio = require('./cheerio');\n\n  // be flexible about parameters, sometimes we call html(),\n  // with options as only parameter\n  // check dom argument for dom element specific properties\n  // assume there is no 'length' or 'type' properties in the options object\n  if (Object.prototype.toString.call(dom) === '[object Object]' && !options && !('length' in dom) && !('type' in dom))\n  {\n    options = dom;\n    dom = undefined;\n  }\n\n  // sometimes $.html() used without preloading html\n  // so fallback non existing options to the default ones\n  options = _.defaults(options || {}, this._options, Cheerio.prototype.options);\n\n  return render(this, dom, options);\n};\n\n/**\n * $.xml([selector | dom])\n */\n\nexports.xml = function(dom) {\n  var options = _.defaults({xmlMode: true}, this._options);\n\n  return render(this, dom, options);\n};\n\n/**\n * $.text(dom)\n */\n\nexports.text = function(elems) {\n  if (!elems) {\n    elems = this.root();\n  }\n\n  var ret = '',\n      len = elems.length,\n      elem;\n\n  for (var i = 0; i < len; i++) {\n    elem = elems[i];\n    if (elem.type === 'text') ret += elem.data;\n    else if (elem.children && elem.type !== 'comment') {\n      ret += exports.text(elem.children);\n    }\n  }\n\n  return ret;\n};\n\n/**\n * $.parseHTML(data [, context ] [, keepScripts ])\n * Parses a string into an array of DOM nodes. The `context` argument has no\n * meaning for Cheerio, but it is maintained for API compatibility with jQuery.\n */\nexports.parseHTML = function(data, context, keepScripts) {\n  var parsed;\n\n  if (!data || typeof data !== 'string') {\n    return null;\n  }\n\n  if (typeof context === 'boolean') {\n    keepScripts = context;\n  }\n\n  parsed = this.load(data);\n  if (!keepScripts) {\n    parsed('script').remove();\n  }\n\n  // The `children` array is used by Cheerio internally to group elements that\n  // share the same parents. When nodes created through `parseHTML` are\n  // inserted into previously-existing DOM structures, they will be removed\n  // from the `children` array. The results of `parseHTML` should remain\n  // constant across these operations, so a shallow copy should be returned.\n  return parsed.root()[0].children.slice();\n};\n\n/**\n * $.root()\n */\nexports.root = function() {\n  return this(this._root);\n};\n\n/**\n * $.contains()\n */\nexports.contains = function(container, contained) {\n\n  // According to the jQuery API, an element does not \"contain\" itself\n  if (contained === container) {\n    return false;\n  }\n\n  // Step up the descendants, stopping when the root element is reached\n  // (signaled by `.parent` returning a reference to the same object)\n  while (contained && contained !== contained.parent) {\n    contained = contained.parent;\n    if (contained === container) {\n      return true;\n    }\n  }\n\n  return false;\n};\n","var parse = require('./parse'),\n    render = require('dom-serializer');\n\n/**\n * HTML Tags\n */\n\nvar tags = { tag: true, script: true, style: true };\n\n/**\n * Check if the DOM element is a tag\n *\n * isTag(type) includes <script> and <style> tags\n */\n\nexports.isTag = function(type) {\n  if (type.type) type = type.type;\n  return tags[type] || false;\n};\n\n/**\n * Convert a string to camel case notation.\n * @param  {String} str String to be converted.\n * @return {String}     String in camel case notation.\n */\n\nexports.camelCase = function(str) {\n  return str.replace(/[_.-](\\w|$)/g, function(_, x) {\n    return x.toUpperCase();\n  });\n};\n\n/**\n * Convert a string from camel case to \"CSS case\", where word boundaries are\n * described by hyphens (\"-\") and all characters are lower-case.\n * @param  {String} str String to be converted.\n * @return {string}     String in \"CSS case\".\n */\nexports.cssCase = function(str) {\n  return str.replace(/[A-Z]/g, '-$&').toLowerCase();\n};\n\n/**\n * Iterate over each DOM element without creating intermediary Cheerio instances.\n *\n * This is indented for use internally to avoid otherwise unnecessary memory pressure introduced\n * by _make.\n */\n\nexports.domEach = function(cheerio, fn) {\n  var i = 0, len = cheerio.length;\n  while (i < len && fn.call(cheerio, i, cheerio[i]) !== false) ++i;\n  return cheerio;\n};\n\n/**\n * Create a deep copy of the given DOM structure by first rendering it to a\n * string and then parsing the resultant markup.\n *\n * @argument {Object} dom - The htmlparser2-compliant DOM structure\n * @argument {Object} options - The parsing/rendering options\n */\nexports.cloneDom = function(dom, options) {\n  return parse(render(dom, options), options).children;\n};\n\n/*\n * A simple way to check for HTML strings or ID strings\n */\n\nvar quickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/;\n\n/*\n * Check if string is HTML\n */\nexports.isHtml = function(str) {\n  // Faster than running regex, if str starts with `<` and ends with `>`, assume it's HTML\n  if (str.charAt(0) === '<' && str.charAt(str.length - 1) === '>' && str.length >= 3) return true;\n\n  // Run the regex\n  var match = quickExpr.exec(str);\n  return !!(match && match[1]);\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar comma = ','\nvar space = ' '\nvar empty = ''\n\n// Parse comma-separated tokens to an array.\nfunction parse(value) {\n  var values = []\n  var input = String(value || empty)\n  var index = input.indexOf(comma)\n  var lastIndex = 0\n  var end = false\n  var val\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    val = input.slice(lastIndex, index).trim()\n\n    if (val || !end) {\n      values.push(val)\n    }\n\n    lastIndex = index + 1\n    index = input.indexOf(comma, lastIndex)\n  }\n\n  return values\n}\n\n// Compile an array to comma-separated tokens.\n// `options.padLeft` (default: `true`) pads a space left of each token, and\n// `options.padRight` (default: `false`) pads a space to the right of each token.\nfunction stringify(values, options) {\n  var settings = options || {}\n  var left = settings.padLeft === false ? empty : space\n  var right = settings.padRight ? space : empty\n\n  // Ensure the last empty entry is seen.\n  if (values[values.length - 1] === empty) {\n    values = values.concat(empty)\n  }\n\n  return values.join(right + comma + left).trim()\n}\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n  defineProperty(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n  if (typeof ArrayBuffer == 'function') {\n    var buffer = new ArrayBuffer(8);\n    // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n    if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n  }\n});\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n  var proto = getPrototypeOf(it);\n  if (!isObject(proto)) return;\n  var state = getInternalState(proto);\n  return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n    configurable: true,\n    get: function () {\n      return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n    }\n  });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  getTypedArrayConstructor: getTypedArrayConstructor,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice-simple');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);\nvar getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);\nvar setInternalState = InternalStateModule.set;\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key, getInternalState) {\n  defineBuiltInAccessor(Constructor[PROTOTYPE], key, {\n    configurable: true,\n    get: function () {\n      return getInternalState(this)[key];\n    }\n  });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var store = getInternalDataViewState(view);\n  var intIndex = toIndex(index);\n  var boolIsLittleEndian = !!isLittleEndian;\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = store.bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = arraySlice(bytes, start, start + count);\n  return boolIsLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var store = getInternalDataViewState(view);\n  var intIndex = toIndex(index);\n  var pack = conversion(+value);\n  var boolIsLittleEndian = !!isLittleEndian;\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = store.bytes;\n  var start = intIndex + store.byteOffset;\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, ArrayBufferPrototype);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      type: ARRAY_BUFFER,\n      bytes: fill(Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) {\n      this.byteLength = byteLength;\n      this.detached = false;\n    }\n  };\n\n  ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, DataViewPrototype);\n    anInstance(buffer, ArrayBufferPrototype);\n    var bufferState = getInternalArrayBufferState(buffer);\n    var bufferLength = bufferState.byteLength;\n    var offset = toIntegerOrInfinity(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      type: DATA_VIEW,\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset,\n      bytes: bufferState.bytes\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  DataViewPrototype = $DataView[PROTOTYPE];\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);\n    addGetter($DataView, 'buffer', getInternalDataViewState);\n    addGetter($DataView, 'byteLength', getInternalDataViewState);\n    addGetter($DataView, 'byteOffset', getInternalDataViewState);\n  }\n\n  defineBuiltIns(DataViewPrototype, {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);\n    }\n  });\n} else {\n  var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n  })) {\n    /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, ArrayBufferPrototype);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n\n    $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n    createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf(DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n  var O = toObject(this);\n  var len = lengthOfArrayLike(O);\n  var to = toAbsoluteIndex(target, len);\n  var from = toAbsoluteIndex(start, len);\n  var end = arguments.length > 2 ? arguments[2] : undefined;\n  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n  var inc = 1;\n  if (from < to && to < from + count) {\n    inc = -1;\n    from += count - 1;\n    to += count - 1;\n  }\n  while (count-- > 0) {\n    if (from in O) O[to] = O[from];\n    else deletePropertyOrThrow(O, to);\n    to += inc;\n    from += inc;\n  } return O;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = lengthOfArrayLike(O);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n  var index = 0;\n  var length = lengthOfArrayLike(list);\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_FIND_LAST_INDEX = TYPE === 1;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var index = lengthOfArrayLike(self);\n    var value, result;\n    while (index-- > 0) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (result) switch (TYPE) {\n        case 0: return value; // findLast\n        case 1: return index; // findLastIndex\n      }\n    }\n    return IS_FIND_LAST_INDEX ? -1 : undefined;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.findLast` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLast: createMethod(0),\n  // `Array.prototype.findLastIndex` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLastIndex: createMethod(1)\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE === 1;\n  var IS_FILTER = TYPE === 2;\n  var IS_SOME = TYPE === 3;\n  var IS_EVERY = TYPE === 4;\n  var IS_FIND_INDEX = TYPE === 6;\n  var IS_FILTER_REJECT = TYPE === 7;\n  var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n","'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n  // convert -0 to +0\n  if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n  var O = toIndexedObject(this);\n  var length = lengthOfArrayLike(O);\n  var index = length - 1;\n  if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n  if (index < 0) index = length + index;\n  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n  return -1;\n} : $lastIndexOf;\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw $TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n","'use strict';\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n  var length = lengthOfArrayLike(O);\n  var k = toAbsoluteIndex(start, length);\n  var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n  var result = $Array(max(fin - k, 0));\n  var n = 0;\n  for (; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\n  var i = 1;\n  var element, j;\n\n  while (i < length) {\n    j = i;\n    element = array[i];\n    while (j && comparefn(array[j - 1], element) > 0) {\n      array[j] = array[--j];\n    }\n    if (j !== i++) array[j] = element;\n  } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n  var llength = left.length;\n  var rlength = right.length;\n  var lindex = 0;\n  var rindex = 0;\n\n  while (lindex < llength || rindex < rlength) {\n    array[lindex + rindex] = (lindex < llength && rindex < rlength)\n      ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n      : lindex < llength ? left[lindex++] : right[rindex++];\n  } return array;\n};\n\nmodule.exports = mergeSort;\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? $Array : C;\n};\n","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n  var len = lengthOfArrayLike(O);\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = O[len - k - 1];\n  return A;\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n  var len = lengthOfArrayLike(O);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n  if (actualIndex >= len || actualIndex < 0) throw $RangeError('Incorrect index');\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n  return A;\n};\n","'use strict';\nvar itoc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nvar ctoi = {};\n\nfor (var index = 0; index < 66; index++) ctoi[itoc.charAt(index)] = index;\n\nmodule.exports = {\n  itoc: itoc,\n  ctoi: ctoi\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  try {\n    if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar create = require('../internals/object-create');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        index: create(null),\n        first: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: undefined,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (DESCRIPTORS) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key === key) return entry;\n      }\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ Map, Set }.prototype.clear()` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.clear\n      // https://tc39.es/ecma262/#sec-set.prototype.clear\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\n        if (DESCRIPTORS) state.size = 0;\n        else that.size = 0;\n      },\n      // `{ Map, Set }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.delete\n      // https://tc39.es/ecma262/#sec-set.prototype.delete\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first === entry) state.first = next;\n          if (state.last === entry) state.last = prev;\n          if (DESCRIPTORS) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.foreach\n      // https://tc39.es/ecma262/#sec-set.prototype.foreach\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // `{ Map, Set}.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.has\n      // https://tc39.es/ecma262/#sec-set.prototype.has\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `Map.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.get\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // `Map.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.set\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // `Set.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-set.prototype.add\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (DESCRIPTORS) defineBuiltInAccessor(Prototype, 'size', {\n      configurable: true,\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return Constructor;\n  },\n  setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n    // https://tc39.es/ecma262/#sec-map.prototype.entries\n    // https://tc39.es/ecma262/#sec-map.prototype.keys\n    // https://tc39.es/ecma262/#sec-map.prototype.values\n    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n    // https://tc39.es/ecma262/#sec-set.prototype.entries\n    // https://tc39.es/ecma262/#sec-set.prototype.keys\n    // https://tc39.es/ecma262/#sec-set.prototype.values\n    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n    defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: undefined\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = undefined;\n        return createIterResultObject(undefined, true);\n      }\n      // return step by kind\n      if (kind === 'keys') return createIterResultObject(entry.key, false);\n      if (kind === 'values') return createIterResultObject(entry.value, false);\n      return createIterResultObject([entry.key, entry.value], false);\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // `{ Map, Set }.prototype[@@species]` accessors\n    // https://tc39.es/ecma262/#sec-get-map-@@species\n    // https://tc39.es/ecma262/#sec-get-set-@@species\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar hasOwn = require('../internals/has-own-property');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar splice = uncurryThis([].splice);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (state) {\n  return state.frozen || (state.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n  this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n  return find(store.entries, function (it) {\n    return it[0] === key;\n  });\n};\n\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.entries.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = findIndex(this.entries, function (it) {\n      return it[0] === key;\n    });\n    if (~index) splice(this.entries, index, 1);\n    return !!~index;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        id: id++,\n        frozen: undefined\n      });\n      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var data = getWeakData(anObject(key), true);\n      if (data === true) uncaughtFrozenStore(state).set(key, value);\n      else data[state.id] = value;\n      return that;\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n      // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n      'delete': function (key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n        return data && hasOwn(data, state.id) && delete data[state.id];\n      },\n      // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n      // https://tc39.es/ecma262/#sec-weakset.prototype.has\n      has: function has(key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state).has(key);\n        return data && hasOwn(data, state.id);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `WeakMap.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n      get: function get(key) {\n        var state = getInternalState(this);\n        if (isObject(key)) {\n          var data = getWeakData(key);\n          if (data === true) return uncaughtFrozenStore(state).get(key);\n          return data ? data[state.id] : undefined;\n        }\n      },\n      // `WeakMap.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n      set: function set(key, value) {\n        return define(this, key, value);\n      }\n    } : {\n      // `WeakSet.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-weakset.prototype.add\n      add: function add(value) {\n        return define(this, value, true);\n      }\n    });\n\n    return Constructor;\n  }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var NativeConstructor = global[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n    defineBuiltIn(NativePrototype, KEY,\n      KEY === 'add' ? function add(value) {\n        uncurriedNativeMethod(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY === 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY === 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY === 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  var REPLACE = isForced(\n    CONSTRUCTOR_NAME,\n    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n      new NativeConstructor().entries().next();\n    }))\n  );\n\n  if (REPLACE) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else if (isForced(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) !== instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new -- required for testing\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, NativePrototype);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, constructor: true, forced: Constructor !== NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n  var S = toString(requireObjectCoercible(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar padStart = require('../internals/string-pad').start;\n\nvar $RangeError = RangeError;\nvar $isFinite = isFinite;\nvar abs = Math.abs;\nvar DatePrototype = Date.prototype;\nvar nativeDateToISOString = DatePrototype.toISOString;\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\nvar getUTCDate = uncurryThis(DatePrototype.getUTCDate);\nvar getUTCFullYear = uncurryThis(DatePrototype.getUTCFullYear);\nvar getUTCHours = uncurryThis(DatePrototype.getUTCHours);\nvar getUTCMilliseconds = uncurryThis(DatePrototype.getUTCMilliseconds);\nvar getUTCMinutes = uncurryThis(DatePrototype.getUTCMinutes);\nvar getUTCMonth = uncurryThis(DatePrototype.getUTCMonth);\nvar getUTCSeconds = uncurryThis(DatePrototype.getUTCSeconds);\n\n// `Date.prototype.toISOString` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit fails here:\nmodule.exports = (fails(function () {\n  return nativeDateToISOString.call(new Date(-5e13 - 1)) !== '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n  nativeDateToISOString.call(new Date(NaN));\n})) ? function toISOString() {\n  if (!$isFinite(thisTimeValue(this))) throw $RangeError('Invalid time value');\n  var date = this;\n  var year = getUTCFullYear(date);\n  var milliseconds = getUTCMilliseconds(date);\n  var sign = year < 0 ? '-' : year > 9999 ? '+' : '';\n  return sign + padStart(abs(year), sign ? 6 : 4, 0) +\n    '-' + padStart(getUTCMonth(date) + 1, 2, 0) +\n    '-' + padStart(getUTCDate(date), 2, 0) +\n    'T' + padStart(getUTCHours(date), 2, 0) +\n    ':' + padStart(getUTCMinutes(date), 2, 0) +\n    ':' + padStart(getUTCSeconds(date), 2, 0) +\n    '.' + padStart(milliseconds, 3, 0) +\n    'Z';\n} : nativeDateToISOString;\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\n\nvar $TypeError = TypeError;\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n  anObject(this);\n  if (hint === 'string' || hint === 'default') hint = 'string';\n  else if (hint !== 'number') throw $TypeError('Incorrect hint');\n  return ordinaryToPrimitive(this, hint);\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n  if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n  all: documentAll,\n  IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n","'use strict';\nmodule.exports = {\n  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n","'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","'use strict';\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = !IS_DENO && !IS_NODE\n  && typeof window == 'object'\n  && typeof document == 'object';\n","'use strict';\n/* global Bun -- Deno case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n","'use strict';\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n","'use strict';\nvar UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = function (CONSTRUCTOR) {\n  return global[CONSTRUCTOR].prototype;\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } return stack;\n};\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n  if (ERROR_STACK_INSTALLABLE) {\n    if (captureStackTrace) captureStackTrace(error, C);\n    else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n  }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n  var error = Error('a');\n  if (!('stack' in error)) return true;\n  // eslint-disable-next-line es/no-object-defineproperty -- safe\n  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n  return error.stack !== 7;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar create = require('../internals/object-create');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\n\nvar nativeErrorToString = Error.prototype.toString;\n\nvar INCORRECT_TO_STRING = fails(function () {\n  if (DESCRIPTORS) {\n    // Chrome 32- incorrectly call accessor\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    var object = create(Object.defineProperty({}, 'name', { get: function () {\n      return this === object;\n    } }));\n    if (nativeErrorToString.call(object) !== 'true') return true;\n  }\n  // FF10- does not properly handle non-strings\n  return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1'\n    // IE8 does not properly handle defaults\n    || nativeErrorToString.call({}) !== 'Error';\n});\n\nmodule.exports = INCORRECT_TO_STRING ? function toString() {\n  var O = anObject(this);\n  var name = normalizeStringArgument(O.name, 'Error');\n  var message = normalizeStringArgument(O.message);\n  return !name ? message : !message ? name : name + ': ' + message;\n} : nativeErrorToString;\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) !== 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () {\n      execCalled = true;\n      return null;\n    };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var uncurriedNativeMethod = uncurryThis(nativeMethod);\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n        }\n        return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    defineBuiltIn(String.prototype, KEY, methods[0]);\n    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n  var targetIndex = start;\n  var sourceIndex = 0;\n  var mapFn = mapper ? bind(mapper, thisArg) : false;\n  var element, elementLen;\n\n  while (sourceIndex < sourceLen) {\n    if (sourceIndex in source) {\n      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n      if (depth > 0 && isArray(element)) {\n        elementLen = lengthOfArrayLike(element);\n        targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n      } else {\n        doesNotExceedSafeInteger(targetIndex + 1);\n        target[targetIndex] = element;\n      }\n\n      targetIndex++;\n    }\n    sourceIndex++;\n  }\n  return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!hasOwn(factories, argsLength)) {\n    var list = [];\n    var i = 0;\n    for (; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n  var F = aCallable(this);\n  var Prototype = F.prototype;\n  var partArgs = arraySlice(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = concat(partArgs, arraySlice(arguments));\n    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n  };\n  if (isObject(Prototype)) boundFunction.prototype = Prototype;\n  return boundFunction;\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n  if (isCallable(replacer)) return replacer;\n  if (!isArray(replacer)) return;\n  var rawLength = replacer.length;\n  var keys = [];\n  for (var i = 0; i < rawLength; i++) {\n    var element = replacer[i];\n    if (typeof element == 'string') push(keys, element);\n    else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n  }\n  var keysLength = keys.length;\n  var root = true;\n  return function (key, value) {\n    if (root) {\n      root = false;\n      return value;\n    }\n    if (isArray(this)) return value;\n    for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n  };\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (charAt(ch, 0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return stringSlice(str, 0, position);\n      case \"'\": return stringSlice(str, tailPos);\n      case '<':\n        capture = namedCaptures[stringSlice(ch, 1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n","'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || this || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nmodule.exports = function (a, b) {\n  try {\n    // eslint-disable-next-line no-console -- safe\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n","'use strict';\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar sign = require('../internals/math-sign');\nvar trunc = require('../internals/math-trunc');\n\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar roundToEven = function (number) {\n  var truncated = trunc(number);\n  var delta = abs(number - truncated);\n  if (delta > 0.5 || delta === 0.5 && truncated % 2 !== 0) {\n    return truncated + sign(number);\n  } return truncated;\n};\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = $Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var s = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number !== number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number !== number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    c = pow(2, -exponent);\n    if (number * c < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = roundToEven((number * c - 1) * pow(2, mantissaLength));\n      exponent += eBias;\n    } else {\n      mantissa = roundToEven(number * pow(2, eBias - 1) * pow(2, mantissaLength));\n      exponent = 0;\n    }\n  }\n  while (mantissaLength >= 8) {\n    buffer[index++] = mantissa & 255;\n    mantissa /= 256;\n    mantissaLength -= 8;\n  }\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  while (exponentLength > 0) {\n    buffer[index++] = exponent & 255;\n    exponent /= 256;\n    exponentLength -= 8;\n  }\n  buffer[--index] |= s * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var s = buffer[index--];\n  var exponent = s & 127;\n  var mantissa;\n  s >>= 7;\n  while (nBits > 0) {\n    exponent = exponent * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  while (nBits > 0) {\n    mantissa = mantissa * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : s ? -Infinity : Infinity;\n  } else {\n    mantissa += pow(2, mantissaLength);\n    exponent -= eBias;\n  } return (s ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n  if (isObject(options) && 'cause' in options) {\n    createNonEnumerableProperty(O, 'cause', options.cause);\n  }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + id++, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar enable = function () {\n  meta.enable = function () { /* empty */ };\n  REQUIRED = true;\n  var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n  var splice = uncurryThis([].splice);\n  var test = {};\n  test[METADATA] = 1;\n\n  // prevent exposing of metadata key\n  if (getOwnPropertyNames(test).length) {\n    getOwnPropertyNamesModule.f = function (it) {\n      var result = getOwnPropertyNames(it);\n      for (var i = 0, length = result.length; i < length; i++) {\n        if (result[i] === METADATA) {\n          splice(result, i, 1);\n          break;\n        }\n      } return result;\n    };\n\n    $({ target: 'Object', stat: true, forced: true }, {\n      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n    });\n  }\n};\n\nvar meta = module.exports = {\n  enable: enable,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n  var klass = classof(it);\n  return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\n\nmodule.exports = function (descriptor) {\n  return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_RECORD = !!(options && options.IS_RECORD);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_RECORD) {\n    iterator = iterable.iterator;\n  } else if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = IS_RECORD ? iterable.next : iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    }\n\n    return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-map -- safe\nvar MapPrototype = Map.prototype;\n\nmodule.exports = {\n  // eslint-disable-next-line es/no-map -- safe\n  Map: Map,\n  set: uncurryThis(MapPrototype.set),\n  get: uncurryThis(MapPrototype.get),\n  has: uncurryThis(MapPrototype.has),\n  remove: uncurryThis(MapPrototype['delete']),\n  proto: MapPrototype\n};\n","'use strict';\n// eslint-disable-next-line es/no-math-expm1 -- safe\nvar $expm1 = Math.expm1;\nvar exp = Math.exp;\n\n// `Math.expm1` method implementation\n// https://tc39.es/ecma262/#sec-math.expm1\nmodule.exports = (!$expm1\n  // Old FF bug\n  // eslint-disable-next-line no-loss-of-precision -- required for old engines\n  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n  // Tor Browser bug\n  || $expm1(-2e-17) !== -2e-17\n) ? function expm1(x) {\n  var n = +x;\n  return n === 0 ? n : n > -1e-6 && n < 1e-6 ? n + n * n / 2 : exp(n) - 1;\n} : $expm1;\n","'use strict';\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n  return n + 1 / EPSILON - 1 / EPSILON;\n};\n\n// `Math.fround` method implementation\n// https://tc39.es/ecma262/#sec-math.fround\n// eslint-disable-next-line es/no-math-fround -- safe\nmodule.exports = Math.fround || function fround(x) {\n  var n = +x;\n  var $abs = abs(n);\n  var $sign = sign(n);\n  var a, result;\n  if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n  a = (1 + EPSILON32 / EPSILON) * $abs;\n  result = a - (a - $abs);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (result > MAX32 || result !== result) return $sign * Infinity;\n  return $sign * result;\n};\n","'use strict';\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// eslint-disable-next-line es/no-math-log10 -- safe\nmodule.exports = Math.log10 || function log10(x) {\n  return log(x) * LOG10E;\n};\n","'use strict';\nvar log = Math.log;\n\n// `Math.log1p` method implementation\n// https://tc39.es/ecma262/#sec-math.log1p\n// eslint-disable-next-line es/no-math-log1p -- safe\nmodule.exports = Math.log1p || function log1p(x) {\n  var n = +x;\n  return n > -1e-8 && n < 1e-8 ? n - n * n / 2 : log(1 + n);\n};\n","'use strict';\n// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\n// eslint-disable-next-line es/no-math-sign -- safe\nmodule.exports = Math.sign || function sign(x) {\n  var n = +x;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return n === 0 || n !== n ? n : n < 0 ? -1 : 1;\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar microtask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n  var queue = new Queue();\n\n  var flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (fn = queue.get()) try {\n      fn();\n    } catch (error) {\n      if (queue.head) notify();\n      throw error;\n    }\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessage\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // `webpack` dev server bug on IE global methods - use bind(fn, global)\n    macrotask = bind(macrotask, global);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n\n  microtask = function (fn) {\n    if (!queue.head) notify();\n    queue.add(fn);\n  };\n}\n\nmodule.exports = microtask;\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw $TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","'use strict';\nvar global = require('../internals/global');\n\nvar globalIsFinite = global.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n// eslint-disable-next-line es/no-number-isfinite -- safe\nmodule.exports = Number.isFinite || function isFinite(it) {\n  return typeof it == 'number' && globalIsFinite(it);\n};\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar $parseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(toString(string));\n  var result = $parseFloat(trimmedString);\n  return result === 0 && charAt(trimmedString, 0) === '-' ? -0 : result;\n} : $parseFloat;\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es/no-symbol -- safe\n  var symbol = Symbol('assign detection');\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) === 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n  if (!isObject(it)) return false;\n  if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return false;\n  return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\n// Forced replacement object prototype accessors methods\nmodule.exports = IS_PURE || !fails(function () {\n  // This feature detection crashes old WebKit\n  // https://github.com/zloirock/core-js/issues/232\n  if (WEBKIT && WEBKIT < 535) return;\n  var key = Math.random();\n  // In FF throws only define methods\n  // eslint-disable-next-line no-undef, no-useless-call, es/no-legacy-object-prototype-accessor-methods -- required for testing\n  __defineSetter__.call(null, key, function () { /* empty */ });\n  delete global[key];\n});\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys\n// of `null` prototype objects\nvar IE_BUG = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-create -- safe\n  var O = Object.create(null);\n  O[2] = 2;\n  return !propertyIsEnumerable(O, 2);\n});\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null;\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) {\n        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = global;\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n","'use strict';\nvar global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n    // Detect correctness of subclassing with @@species support\n    var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n    var FakePromise = function (exec) {\n      exec(function () { /* empty */ }, function () { /* empty */ });\n    };\n    var constructor = promise.constructor = {};\n    constructor[SPECIES] = FakePromise;\n    SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n    if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n  SUBCLASSING: SUBCLASSING\n};\n","'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n  key in Target || defineProperty(Target, key, {\n    configurable: true,\n    get: function () { return Source[key]; },\n    set: function (it) { Source[key] = it; }\n  });\n};\n","'use strict';\nvar Queue = function () {\n  this.head = null;\n  this.tail = null;\n};\n\nQueue.prototype = {\n  add: function (item) {\n    var entry = { item: item, next: null };\n    var tail = this.tail;\n    if (tail) tail.next = entry;\n    else this.head = entry;\n    this.tail = entry;\n  },\n  get: function () {\n    var entry = this.head;\n    if (entry) {\n      var next = this.head = entry.next;\n      if (next === null) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw $TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = stringSlice(match.input, charsAdded);\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n  var flags = R.flags;\n  return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n    ? call(regExpFlags, R) : flags;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n  return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') !== null;\n});\n\nmodule.exports = {\n  BROKEN_CARET: BROKEN_CARET,\n  MISSED_STICKY: MISSED_STICKY,\n  UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","'use strict';\n// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENGINE_IS_BUN = require('../internals/engine-is-bun');\nvar USER_AGENT = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n  var version = global.Bun.version.split('.');\n  return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n  var firstParamIndex = hasTimeArg ? 2 : 1;\n  return WRAP ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n    var callback = boundArgs ? function () {\n      apply(fn, this, params);\n    } : fn;\n    return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n  } : scheduler;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n  // eslint-disable-next-line es/no-set -- safe\n  Set: Set,\n  add: uncurryThis(SetPrototype.add),\n  has: uncurryThis(SetPrototype.has),\n  remove: uncurryThis(SetPrototype['delete']),\n  proto: SetPrototype\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineBuiltInAccessor(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.32.2',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.32.2/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    var test = ''[METHOD_NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  });\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","'use strict';\n// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n  return function ($this, maxLength, fillString) {\n    var S = toString(requireObjectCoercible($this));\n    var intMaxLength = toLength(maxLength);\n    var stringLength = S.length;\n    var fillStr = fillString === undefined ? ' ' : toString(fillString);\n    var fillLen, stringFiller;\n    if (intMaxLength <= stringLength || fillStr === '') return S;\n    fillLen = intMaxLength - stringLength;\n    stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n    if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n    return IS_END ? S + stringFiller : stringFiller + S;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.padStart` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padstart\n  start: createMethod(false),\n  // `String.prototype.padEnd` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padend\n  end: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n  while (counter < length) {\n    var value = charCodeAt(string, counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      // It's a high surrogate, and there is a next character.\n      var extra = charCodeAt(string, counter++);\n      if ((extra & 0xFC00) === 0xDC00) { // Low surrogate.\n        push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        // It's an unmatched surrogate; only append this code unit, in case the\n        // next code unit is the high surrogate of a surrogate pair.\n        push(output, value);\n        counter--;\n      }\n    } else {\n      push(output, value);\n    }\n  }\n  return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n  //  0..25 map to ASCII a..z or A..Z\n  // 26..35 map to ASCII 0..9\n  return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n  var k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  while (delta > baseMinusTMin * tMax >> 1) {\n    delta = floor(delta / baseMinusTMin);\n    k += base;\n  }\n  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n  var output = [];\n\n  // Convert the input in UCS-2 to an array of Unicode code points.\n  input = ucs2decode(input);\n\n  // Cache the length.\n  var inputLength = input.length;\n\n  // Initialize the state.\n  var n = initialN;\n  var delta = 0;\n  var bias = initialBias;\n  var i, currentValue;\n\n  // Handle the basic code points.\n  for (i = 0; i < input.length; i++) {\n    currentValue = input[i];\n    if (currentValue < 0x80) {\n      push(output, fromCharCode(currentValue));\n    }\n  }\n\n  var basicLength = output.length; // number of basic code points.\n  var handledCPCount = basicLength; // number of code points that have been handled;\n\n  // Finish the basic string with a delimiter unless it's empty.\n  if (basicLength) {\n    push(output, delimiter);\n  }\n\n  // Main encoding loop:\n  while (handledCPCount < inputLength) {\n    // All non-basic code points < n have been handled already. Find the next larger one:\n    var m = maxInt;\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue >= n && currentValue < m) {\n        m = currentValue;\n      }\n    }\n\n    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n    var handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      throw $RangeError(OVERFLOW_ERROR);\n    }\n\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue < n && ++delta > maxInt) {\n        throw $RangeError(OVERFLOW_ERROR);\n      }\n      if (currentValue === n) {\n        // Represent delta as a generalized variable-length integer.\n        var q = delta;\n        var k = base;\n        while (true) {\n          var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n          if (q < t) break;\n          var qMinusT = q - t;\n          var baseMinusT = base - t;\n          push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n          q = floor(qMinusT / baseMinusT);\n          k += base;\n        }\n\n        push(output, fromCharCode(digitToBasic(q)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n        delta = 0;\n        handledCPCount++;\n      }\n    }\n\n    delta++;\n    n++;\n  }\n  return join(output, '');\n};\n\nmodule.exports = function (input) {\n  var encoded = [];\n  var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n  var i, label;\n  for (i = 0; i < labels.length; i++) {\n    label = labels[i];\n    push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n  }\n  return join(encoded, '.');\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n  var str = toString(requireObjectCoercible(this));\n  var result = '';\n  var n = toIntegerOrInfinity(count);\n  if (n < 0 || n === Infinity) throw $RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n","'use strict';\nvar $trimEnd = require('../internals/string-trim').end;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimEnd, trimRight }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// https://tc39.es/ecma262/#String.prototype.trimright\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\n  return $trimEnd(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimEnd;\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n","'use strict';\nvar $trimStart = require('../internals/string-trim').start;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimStart, trimLeft }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// https://tc39.es/ecma262/#String.prototype.trimleft\nmodule.exports = forcedStringTrimMethod('trimStart') ? function trimStart() {\n  return $trimStart(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimStart;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '$1');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar V8 = require('../internals/engine-v8-version');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar structuredClone = global.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n  // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;\n  var buffer = new ArrayBuffer(8);\n  var clone = structuredClone(buffer, { transfer: [buffer] });\n  return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n  var Symbol = getBuiltIn('Symbol');\n  var SymbolPrototype = Symbol && Symbol.prototype;\n  var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n  var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n  if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n    // `Symbol.prototype[@@toPrimitive]` method\n    // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n    // eslint-disable-next-line no-unused-vars -- required for .length\n    defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n      return call(valueOf, this);\n    }, { arity: 1 });\n  }\n};\n","'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = global.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    global.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n  var prim = toPrimitive(argument, 'number');\n  if (typeof prim == 'number') throw $TypeError(\"Can't convert number to bigint\");\n  // eslint-disable-next-line es/no-bigint -- safe\n  return BigInt(prim);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toIntegerOrInfinity(it);\n  var length = toLength(number);\n  if (number !== length) throw $RangeError('Wrong length or index');\n  return length;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw $RangeError('Wrong offset');\n  return offset;\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n  var result = toIntegerOrInfinity(it);\n  if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n","'use strict';\nvar round = Math.round;\n\nmodule.exports = function (it) {\n  var value = round(it);\n  return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n};\n","'use strict';\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = function (name) {\n  try {\n    // eslint-disable-next-line no-new-func -- safe\n    if (IS_NODE) return Function('return require(\"' + name + '\")')();\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toUint8Clamped = require('../internals/to-uint8-clamped');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n  aTypedArrayConstructor(C);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\nvar addGetter = function (it, key) {\n  defineBuiltInAccessor(it, key, {\n    configurable: true,\n    get: function () {\n      return getInternalState(this)[key];\n    }\n  });\n};\n\nvar isArrayBuffer = function (it) {\n  var klass;\n  return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) === 'ArrayBuffer' || klass === 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n  return isTypedArray(target)\n    && !isSymbol(key)\n    && key in target\n    && isIntegralNumber(+key)\n    && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n  key = toPropertyKey(key);\n  return isTypedArrayIndex(target, key)\n    ? createPropertyDescriptor(2, target[key])\n    : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n  key = toPropertyKey(key);\n  if (isTypedArrayIndex(target, key)\n    && isObject(descriptor)\n    && hasOwn(descriptor, 'value')\n    && !hasOwn(descriptor, 'get')\n    && !hasOwn(descriptor, 'set')\n    // TODO: add validation descriptor w/o calling accessors\n    && !descriptor.configurable\n    && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n    && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n  ) {\n    target[key] = descriptor.value;\n    return target;\n  } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n  if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n    definePropertyModule.f = wrappedDefineProperty;\n    addGetter(TypedArrayPrototype, 'buffer');\n    addGetter(TypedArrayPrototype, 'byteOffset');\n    addGetter(TypedArrayPrototype, 'byteLength');\n    addGetter(TypedArrayPrototype, 'length');\n  }\n\n  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n    defineProperty: wrappedDefineProperty\n  });\n\n  module.exports = function (TYPE, wrapper, CLAMPED) {\n    var BYTES = TYPE.match(/\\d+/)[0] / 8;\n    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + TYPE;\n    var SETTER = 'set' + TYPE;\n    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n    var TypedArrayConstructor = NativeTypedArrayConstructor;\n    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n    var exported = {};\n\n    var getter = function (that, index) {\n      var data = getInternalState(that);\n      return data.view[GETTER](index * BYTES + data.byteOffset, true);\n    };\n\n    var setter = function (that, index, value) {\n      var data = getInternalState(that);\n      data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);\n    };\n\n    var addElement = function (that, index) {\n      nativeDefineProperty(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n\n    if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n        anInstance(that, TypedArrayConstructorPrototype);\n        var index = 0;\n        var byteOffset = 0;\n        var buffer, byteLength, length;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new ArrayBuffer(byteLength);\n        } else if (isArrayBuffer(data)) {\n          buffer = data;\n          byteOffset = toOffset(offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n            byteLength = $len - byteOffset;\n            if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (isTypedArray(data)) {\n          return fromList(TypedArrayConstructor, data);\n        } else {\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }\n        setInternalState(that, {\n          buffer: buffer,\n          byteOffset: byteOffset,\n          byteLength: byteLength,\n          length: length,\n          view: new DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n        anInstance(dummy, TypedArrayConstructorPrototype);\n        return inheritIfRequired(function () {\n          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n          if (isArrayBuffer(data)) return $length !== undefined\n            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n            : typedArrayOffset !== undefined\n              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n              : new NativeTypedArrayConstructor(data);\n          if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }(), dummy, TypedArrayConstructor);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n        if (!(key in TypedArrayConstructor)) {\n          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n        }\n      });\n      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n    }\n\n    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n    }\n\n    enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n    if (TYPED_ARRAY_TAG) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n    }\n\n    var FORCED = TypedArrayConstructor !== NativeTypedArrayConstructor;\n\n    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n    $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    setSpecies(CONSTRUCTOR_NAME);\n  };\n} else module.exports = function () { /* empty */ };\n","'use strict';\n/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n  Int8Array(1);\n}) || !fails(function () {\n  new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n  new Int8Array();\n  new Int8Array(null);\n  new Int8Array(1.5);\n  new Int8Array(iterable);\n}, true) || fails(function () {\n  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","'use strict';\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n  return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\nvar toBigInt = require('../internals/to-big-int');\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n  var C = aConstructor(this);\n  var O = toObject(source);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var i, length, result, thisIsBigIntArray, value, step, iterator, next;\n  if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    O = [];\n    while (!(step = call(next, iterator)).done) {\n      O.push(step.value);\n    }\n  }\n  if (mapping && argumentsLength > 2) {\n    mapfn = bind(mapfn, arguments[2]);\n  }\n  length = lengthOfArrayLike(O);\n  result = new (aTypedArrayConstructor(C))(length);\n  thisIsBigIntArray = isBigIntArray(result);\n  for (i = 0; length > i; i++) {\n    value = mapping ? mapfn(O[i], i) : O[i];\n    // FF30- typed arrays doesn't properly convert objects to typed array values\n    result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\n  }\n  return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n  return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray)));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n  var url = new URL('b?a=1&b=2&c=3', 'http://a');\n  var params = url.searchParams;\n  var params2 = new URLSearchParams('a=1&a=2&b=3');\n  var result = '';\n  url.pathname = 'c%20d';\n  params.forEach(function (value, key) {\n    params['delete']('b');\n    result += key + value;\n  });\n  params2['delete']('a', 2);\n  // `undefined` case is a Chromium 117 bug\n  // https://bugs.chromium.org/p/v8/issues/detail?id=14222\n  params2['delete']('b', undefined);\n  return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n    || (!params.size && (IS_PURE || !DESCRIPTORS))\n    || !params.sort\n    || url.href !== 'http://a/c%20d?a=1&c=3'\n    || params.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !params[ITERATOR]\n    // throws in Edge\n    || new URL('https://a@b').username !== 'a'\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n    // not punycoded in Edge\n    || new URL('http://тест').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('http://a#б').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('http://x', undefined).host !== 'x';\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw $TypeError('Not enough arguments');\n  return passed;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n  var STACK_TRACE_LIMIT = 'stackTraceLimit';\n  var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n  var path = FULL_NAME.split('.');\n  var ERROR_NAME = path[path.length - 1];\n  var OriginalError = getBuiltIn.apply(null, path);\n\n  if (!OriginalError) return;\n\n  var OriginalErrorPrototype = OriginalError.prototype;\n\n  // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n  if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n  if (!FORCED) return OriginalError;\n\n  var BaseError = getBuiltIn('Error');\n\n  var WrappedError = wrapper(function (a, b) {\n    var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n    var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n    if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n    installErrorStack(result, WrappedError, result.stack, 2);\n    if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n    if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n    return result;\n  });\n\n  WrappedError.prototype = OriginalErrorPrototype;\n\n  if (ERROR_NAME !== 'Error') {\n    if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n    else copyConstructorProperties(WrappedError, BaseError, { name: true });\n  } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n    proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n    proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n  }\n\n  copyConstructorProperties(WrappedError, OriginalError);\n\n  if (!IS_PURE) try {\n    // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n    if (OriginalErrorPrototype.name !== ERROR_NAME) {\n      createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n    }\n    OriginalErrorPrototype.constructor = WrappedError;\n  } catch (error) { /* empty */ }\n\n  return WrappedError;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar fails = require('../internals/fails');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar AGGREGATE_ERROR = 'AggregateError';\nvar $AggregateError = getBuiltIn(AGGREGATE_ERROR);\n\nvar FORCED = !fails(function () {\n  return $AggregateError([1]).errors[0] !== 1;\n}) && fails(function () {\n  return $AggregateError([1], AGGREGATE_ERROR, { cause: 7 }).cause !== 7;\n});\n\n// https://tc39.es/ecma262/#sec-aggregate-error\n$({ global: true, constructor: true, arity: 2, forced: FORCED }, {\n  AggregateError: wrapErrorConstructorWithCause(AGGREGATE_ERROR, function (init) {\n    // eslint-disable-next-line no-unused-vars -- required for functions `.length`\n    return function AggregateError(errors, message) { return apply(init, this, arguments); };\n  }, FORCED, true)\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n  var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n  var that;\n  if (setPrototypeOf) {\n    that = setPrototypeOf($Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n  } else {\n    that = isInstance ? this : create(AggregateErrorPrototype);\n    createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n  }\n  if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n  installErrorStack(that, $AggregateError, that.stack, 1);\n  if (arguments.length > 2) installErrorCause(that, arguments[2]);\n  var errorsArray = [];\n  iterate(errors, push, { that: errorsArray });\n  createNonEnumerableProperty(that, 'errors', errorsArray);\n  return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n  constructor: createPropertyDescriptor(1, $AggregateError),\n  message: createPropertyDescriptor(1, ''),\n  name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n  AggregateError: $AggregateError\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.aggregate-error.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","'use strict';\nvar $ = require('../internals/export');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n\n// `ArrayBuffer.isView` method\n// https://tc39.es/ecma262/#sec-arraybuffer.isview\n$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n  isView: ArrayBufferViewCore.isView\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n  return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n  slice: function slice(start, end) {\n    if (nativeArrayBufferSlice && end === undefined) {\n      return nativeArrayBufferSlice(anObject(this), start); // FF fix\n    }\n    var length = anObject(this).byteLength;\n    var first = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n    var viewSource = new DataView(this);\n    var viewTarget = new DataView(result);\n    var index = 0;\n    while (first < fin) {\n      setUint8(viewTarget, index++, getUint8(viewSource, first++));\n    } return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.at` method\n// https://tc39.es/ecma262/#sec-array.prototype.at\n$({ target: 'Array', proto: true }, {\n  at: function at(index) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var relativeIndex = toIntegerOrInfinity(index);\n    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n    return (k < 0 || k >= len) ? undefined : O[k];\n  }\n});\n\naddToUnscopables('at');\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        doesNotExceedSafeInteger(n + len);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        doesNotExceedSafeInteger(n + 1);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar copyWithin = require('../internals/array-copy-within');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n$({ target: 'Array', proto: true }, {\n  copyWithin: copyWithin\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('copyWithin');\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-findindex -- testing\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlastindex\n$({ target: 'Array', proto: true }, {\n  findLastIndex: function findLastIndex(callbackfn /* , that = undefined */) {\n    return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\naddToUnscopables('findLastIndex');\n","'use strict';\nvar $ = require('../internals/export');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlast\n$({ target: 'Array', proto: true }, {\n  findLast: function findLast(callbackfn /* , that = undefined */) {\n    return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\naddToUnscopables('findLast');\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-find -- testing\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n  flatMap: function flatMap(callbackfn /* , thisArg */) {\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A;\n    aCallable(callbackfn);\n    A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return A;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n  flat: function flat(/* depthArg = 1 */) {\n    var depthArg = arguments.length ? arguments[0] : undefined;\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n    return A;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, {\n  forEach: forEach\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n  // eslint-disable-next-line es/no-array-prototype-includes -- detection\n  return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf(this, searchElement, fromIndex) || 0\n      : $indexOf(this, searchElement, fromIndex);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return createIterResultObject(undefined, true);\n  }\n  switch (kind) {\n    case 'keys': return createIterResultObject(index, false);\n    case 'values': return createIterResultObject(target[index], false);\n  } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject !== Object;\nvar FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  join: function join(separator) {\n    return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\n// eslint-disable-next-line es/no-array-prototype-lastindexof -- required for testing\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n  lastIndexOf: lastIndexOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isConstructor = require('../internals/is-constructor');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\n\nvar ISNT_GENERIC = fails(function () {\n  function F() { /* empty */ }\n  // eslint-disable-next-line es/no-array-of -- safe\n  return !($Array.of.call(F) instanceof F);\n});\n\n// `Array.of` method\n// https://tc39.es/ecma262/#sec-array.of\n// WebKit Array.of isn't generic\n$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {\n  of: function of(/* ...args */) {\n    var index = 0;\n    var argumentsLength = arguments.length;\n    var result = new (isConstructor(this) ? this : $Array)(argumentsLength);\n    while (argumentsLength > index) createProperty(result, index, arguments[index++]);\n    result.length = argumentsLength;\n    return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduceRight = require('../internals/array-reduce').right;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduceRight');\n\n// `Array.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduceright\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n    return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return nativeReverse(this);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar nativeSlice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === $Array || Constructor === undefined) {\n        return nativeSlice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = lengthOfArrayLike(items);\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n    return array;\n  }\n});\n","'use strict';\nvar setSpecies = require('../internals/set-species');\n\n// `Array[@@species]` getter\n// https://tc39.es/ecma262/#sec-get-array-@@species\nsetSpecies('Array');\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    setArrayLength(O, len - actualDeleteCount + insertCount);\n    return A;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar $Array = Array;\n\n// `Array.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-array.prototype.toreversed\n$({ target: 'Array', proto: true }, {\n  toReversed: function toReversed() {\n    return arrayToReversed(toIndexedObject(this), $Array);\n  }\n});\n\naddToUnscopables('toReversed');\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar getVirtual = require('../internals/entry-virtual');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar $Array = Array;\nvar sort = uncurryThis(getVirtual('Array').sort);\n\n// `Array.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-array.prototype.tosorted\n$({ target: 'Array', proto: true }, {\n  toSorted: function toSorted(compareFn) {\n    if (compareFn !== undefined) aCallable(compareFn);\n    var O = toIndexedObject(this);\n    var A = arrayFromConstructorAndList($Array, O);\n    return sort(A, compareFn);\n  }\n});\n\naddToUnscopables('toSorted');\n","'use strict';\nvar $ = require('../internals/export');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $Array = Array;\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.toSpliced` method\n// https://tc39.es/ecma262/#sec-array.prototype.tospliced\n$({ target: 'Array', proto: true }, {\n  toSpliced: function toSpliced(start, deleteCount /* , ...items */) {\n    var O = toIndexedObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var k = 0;\n    var insertCount, actualDeleteCount, newLen, A;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    newLen = doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = $Array(newLen);\n\n    for (; k < actualStart; k++) A[k] = O[k];\n    for (; k < actualStart + insertCount; k++) A[k] = arguments[k - actualStart + 2];\n    for (; k < newLen; k++) A[k] = O[k + actualDeleteCount - insertCount];\n\n    return A;\n  }\n});\n\naddToUnscopables('toSpliced');\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\n\n// IE8-\nvar INCORRECT_RESULT = [].unshift(0) !== 1;\n\n// V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).unshift();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_RESULT || !properErrorOnNonWritableLength();\n\n// `Array.prototype.unshift` method\n// https://tc39.es/ecma262/#sec-array.prototype.unshift\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  unshift: function unshift(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    if (argCount) {\n      doesNotExceedSafeInteger(len + argCount);\n      var k = len;\n      while (k--) {\n        var to = k + argCount;\n        if (k in O) O[to] = O[k];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (var j = 0; j < argCount; j++) {\n        O[j] = arguments[j];\n      }\n    } return setArrayLength(O, len + argCount);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar arrayWith = require('../internals/array-with');\nvar toIndexedObject = require('../internals/to-indexed-object');\n\nvar $Array = Array;\n\n// `Array.prototype.with` method\n// https://tc39.es/ecma262/#sec-array.prototype.with\n$({ target: 'Array', proto: true }, {\n  'with': function (index, value) {\n    return arrayWith(toIndexedObject(this), $Array, index, value);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\n\n// `DataView` constructor\n// https://tc39.es/ecma262/#sec-dataview-constructor\n$({ global: true, constructor: true, forced: !NATIVE_ARRAY_BUFFER }, {\n  DataView: ArrayBufferModule.DataView\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.data-view.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\n// IE8- non-standard case\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-date-prototype-getyear-setyear -- detection\n  return new Date(16e11).getYear() !== 120;\n});\n\nvar getFullYear = uncurryThis(Date.prototype.getFullYear);\n\n// `Date.prototype.getYear` method\n// https://tc39.es/ecma262/#sec-date.prototype.getyear\n$({ target: 'Date', proto: true, forced: FORCED }, {\n  getYear: function getYear() {\n    return getFullYear(this) - 1900;\n  }\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Date = Date;\nvar thisTimeValue = uncurryThis($Date.prototype.getTime);\n\n// `Date.now` method\n// https://tc39.es/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n  now: function now() {\n    return thisTimeValue(new $Date());\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar DatePrototype = Date.prototype;\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\nvar setFullYear = uncurryThis(DatePrototype.setFullYear);\n\n// `Date.prototype.setYear` method\n// https://tc39.es/ecma262/#sec-date.prototype.setyear\n$({ target: 'Date', proto: true }, {\n  setYear: function setYear(year) {\n    // validate\n    thisTimeValue(this);\n    var yi = toIntegerOrInfinity(year);\n    var yyyy = yi >= 0 && yi <= 99 ? yi + 1900 : yi;\n    return setFullYear(this, yyyy);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\n\n// `Date.prototype.toGMTString` method\n// https://tc39.es/ecma262/#sec-date.prototype.togmtstring\n$({ target: 'Date', proto: true }, {\n  toGMTString: Date.prototype.toUTCString\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toISOString = require('../internals/date-to-iso-string');\n\n// `Date.prototype.toISOString` method\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit has a broken implementations\n$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {\n  toISOString: toISOString\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar FORCED = fails(function () {\n  return new Date(NaN).toJSON() !== null\n    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n});\n\n// `Date.prototype.toJSON` method\n// https://tc39.es/ecma262/#sec-date.prototype.tojson\n$({ target: 'Date', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  toJSON: function toJSON(key) {\n    var O = toObject(this);\n    var pv = toPrimitive(O, 'number');\n    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n  }\n});\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!hasOwn(DatePrototype, TO_PRIMITIVE)) {\n  defineBuiltIn(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = uncurryThis(DatePrototype[TO_STRING]);\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (String(new Date(NaN)) !== INVALID_DATE) {\n  defineBuiltIn(DatePrototype, TO_STRING, function toString() {\n    var value = thisTimeValue(this);\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return value === value ? nativeDateToString(this) : INVALID_DATE;\n  });\n}\n","'use strict';\n/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  var O = {};\n  O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n  $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  if (WebAssembly && WebAssembly[ERROR_NAME]) {\n    var O = {};\n    O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n    $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n  }\n};\n\n// https://tc39.es/ecma262/#sec-nativeerror\nexportGlobalErrorCauseWrapper('Error', function (init) {\n  return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n  return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n  return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n  return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n  return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n  return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n  return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n  return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n  return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n  return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar errorToString = require('../internals/error-to-string');\n\nvar ErrorPrototype = Error.prototype;\n\n// `Error.prototype.toString` method fix\n// https://tc39.es/ecma262/#sec-error.prototype.tostring\nif (ErrorPrototype.toString !== errorToString) {\n  defineBuiltIn(ErrorPrototype, 'toString', errorToString);\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar exec = uncurryThis(/./.exec);\nvar numberToString = uncurryThis(1.0.toString);\nvar toUpperCase = uncurryThis(''.toUpperCase);\n\nvar raw = /[\\w*+\\-./@]/;\n\nvar hex = function (code, length) {\n  var result = numberToString(code, 16);\n  while (result.length < length) result = '0' + result;\n  return result;\n};\n\n// `escape` method\n// https://tc39.es/ecma262/#sec-escape-string\n$({ global: true }, {\n  escape: function escape(string) {\n    var str = toString(string);\n    var result = '';\n    var length = str.length;\n    var index = 0;\n    var chr, code;\n    while (index < length) {\n      chr = charAt(str, index++);\n      if (exec(raw, chr)) {\n        result += chr;\n      } else {\n        code = charCodeAt(chr, 0);\n        if (code < 256) {\n          result += '%' + hex(code, 2);\n        } else {\n          result += '%u' + toUpperCase(hex(code, 4));\n        }\n      }\n    } return result;\n  }\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar makeBuiltIn = require('../internals/make-built-in');\n\nvar HAS_INSTANCE = wellKnownSymbol('hasInstance');\nvar FunctionPrototype = Function.prototype;\n\n// `Function.prototype[@@hasInstance]` method\n// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance\nif (!(HAS_INSTANCE in FunctionPrototype)) {\n  definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: makeBuiltIn(function (O) {\n    if (!isCallable(this) || !isObject(O)) return false;\n    var P = this.prototype;\n    if (!isObject(P)) return O instanceof this;\n    // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n    while (O = getPrototypeOf(O)) if (P === O) return true;\n    return false;\n  }, HAS_INSTANCE) });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n  defineBuiltInAccessor(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return regExpExec(nameRE, functionToString(this))[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true, forced: global.globalThis !== global }, {\n  globalThis: global\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n  var symbol = getBuiltIn('Symbol')('stringify detection');\n  // MS Edge converts symbol values to JSON as {}\n  return $stringify([symbol]) !== '[null]'\n    // WebKit converts symbol values to JSON as null\n    || $stringify({ a: symbol }) !== '{}'\n    // V8 throws on boxed symbols\n    || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n  var args = arraySlice(arguments);\n  var $replacer = getReplacerFunction(replacer);\n  if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n  args[1] = function (key, value) {\n    // some old implementations (like WebKit) could pass numbers as keys\n    if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n    if (!isSymbol(value)) return value;\n  };\n  return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n  var prev = charAt(string, offset - 1);\n  var next = charAt(string, offset + 1);\n  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n    return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n  } return match;\n};\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n    }\n  });\n}\n","'use strict';\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\n// eslint-disable-next-line es/no-math-acosh -- required for testing\nvar $acosh = Math.acosh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\nvar LN2 = Math.LN2;\n\nvar FORCED = !$acosh\n  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n  || Math.floor($acosh(Number.MAX_VALUE)) !== 710\n  // Tor Browser bug: Math.acosh(Infinity) -> NaN\n  || $acosh(Infinity) !== Infinity;\n\n// `Math.acosh` method\n// https://tc39.es/ecma262/#sec-math.acosh\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  acosh: function acosh(x) {\n    var n = +x;\n    return n < 1 ? NaN : n > 94906265.62425156\n      ? log(n) + LN2\n      : log1p(n - 1 + sqrt(n - 1) * sqrt(n + 1));\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-asinh -- required for testing\nvar $asinh = Math.asinh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\n\nfunction asinh(x) {\n  var n = +x;\n  return !isFinite(n) || n === 0 ? n : n < 0 ? -asinh(-n) : log(n + sqrt(n * n + 1));\n}\n\nvar FORCED = !($asinh && 1 / $asinh(0) > 0);\n\n// `Math.asinh` method\n// https://tc39.es/ecma262/#sec-math.asinh\n// Tor Browser bug: Math.asinh(0) -> -0\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  asinh: asinh\n});\n","'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-atanh -- required for testing\nvar $atanh = Math.atanh;\nvar log = Math.log;\n\nvar FORCED = !($atanh && 1 / $atanh(-0) < 0);\n\n// `Math.atanh` method\n// https://tc39.es/ecma262/#sec-math.atanh\n// Tor Browser bug: Math.atanh(-0) -> 0\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  atanh: function atanh(x) {\n    var n = +x;\n    return n === 0 ? n : log((1 + n) / (1 - n)) / 2;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\n\n// `Math.cbrt` method\n// https://tc39.es/ecma262/#sec-math.cbrt\n$({ target: 'Math', stat: true }, {\n  cbrt: function cbrt(x) {\n    var n = +x;\n    return sign(n) * pow(abs(n), 1 / 3);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\n\nvar floor = Math.floor;\nvar log = Math.log;\nvar LOG2E = Math.LOG2E;\n\n// `Math.clz32` method\n// https://tc39.es/ecma262/#sec-math.clz32\n$({ target: 'Math', stat: true }, {\n  clz32: function clz32(x) {\n    var n = x >>> 0;\n    return n ? 31 - floor(log(n + 0.5) * LOG2E) : 32;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\n// eslint-disable-next-line es/no-math-cosh -- required for testing\nvar $cosh = Math.cosh;\nvar abs = Math.abs;\nvar E = Math.E;\n\nvar FORCED = !$cosh || $cosh(710) === Infinity;\n\n// `Math.cosh` method\n// https://tc39.es/ecma262/#sec-math.cosh\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  cosh: function cosh(x) {\n    var t = expm1(abs(x) - 1) + 1;\n    return (t + 1 / (t * E * E)) * (E / 2);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\n// `Math.expm1` method\n// https://tc39.es/ecma262/#sec-math.expm1\n// eslint-disable-next-line es/no-math-expm1 -- required for testing\n$({ target: 'Math', stat: true, forced: expm1 !== Math.expm1 }, { expm1: expm1 });\n","'use strict';\nvar $ = require('../internals/export');\nvar fround = require('../internals/math-fround');\n\n// `Math.fround` method\n// https://tc39.es/ecma262/#sec-math.fround\n$({ target: 'Math', stat: true }, { fround: fround });\n","'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  hypot: function hypot(value1, value2) {\n    var sum = 0;\n    var i = 0;\n    var aLen = arguments.length;\n    var larg = 0;\n    var arg, div;\n    while (i < aLen) {\n      arg = abs(arguments[i++]);\n      if (larg < arg) {\n        div = larg / arg;\n        sum = sum * div * div + 1;\n        larg = arg;\n      } else if (arg > 0) {\n        div = arg / larg;\n        sum += div * div;\n      } else sum += arg;\n    }\n    return larg === Infinity ? Infinity : larg * sqrt(sum);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-math-imul -- required for testing\nvar $imul = Math.imul;\n\nvar FORCED = fails(function () {\n  return $imul(0xFFFFFFFF, 5) !== -5 || $imul.length !== 2;\n});\n\n// `Math.imul` method\n// https://tc39.es/ecma262/#sec-math.imul\n// some WebKit versions fails with big numbers, some has wrong arity\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  imul: function imul(x, y) {\n    var UINT16 = 0xFFFF;\n    var xn = +x;\n    var yn = +y;\n    var xl = UINT16 & xn;\n    var yl = UINT16 & yn;\n    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar log10 = require('../internals/math-log10');\n\n// `Math.log10` method\n// https://tc39.es/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n  log10: log10\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\n// `Math.log1p` method\n// https://tc39.es/ecma262/#sec-math.log1p\n$({ target: 'Math', stat: true }, { log1p: log1p });\n","'use strict';\nvar $ = require('../internals/export');\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.es/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n  log2: function log2(x) {\n    return log(x) / LN2;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.es/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n  sign: sign\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar expm1 = require('../internals/math-expm1');\n\nvar abs = Math.abs;\nvar exp = Math.exp;\nvar E = Math.E;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-math-sinh -- required for testing\n  return Math.sinh(-2e-17) !== -2e-17;\n});\n\n// `Math.sinh` method\n// https://tc39.es/ecma262/#sec-math.sinh\n// V8 near Chromium 38 has a problem with very small numbers\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  sinh: function sinh(x) {\n    var n = +x;\n    return abs(n) < 1 ? (expm1(n) - expm1(-n)) / 2 : (exp(n - 1) - exp(-n - 1)) * (E / 2);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\nvar exp = Math.exp;\n\n// `Math.tanh` method\n// https://tc39.es/ecma262/#sec-math.tanh\n$({ target: 'Math', stat: true }, {\n  tanh: function tanh(x) {\n    var n = +x;\n    var a = expm1(n);\n    var b = expm1(-n);\n    return a === Infinity ? 1 : b === Infinity ? -1 : (a - b) / (exp(n) + exp(-n));\n  }\n});\n","'use strict';\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","'use strict';\nvar $ = require('../internals/export');\nvar trunc = require('../internals/math-trunc');\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n  trunc: trunc\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar path = require('../internals/path');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar PureNumberNamespace = path[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar stringSlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n  var primValue = toPrimitive(value, 'number');\n  return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, 'number');\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = charCodeAt(it, 0);\n    if (first === 43 || first === 45) {\n      third = charCodeAt(it, 2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (charCodeAt(it, 1)) {\n        // fast equal of /^0b[01]+$/i\n        case 66:\n        case 98:\n          radix = 2;\n          maxCode = 49;\n          break;\n        // fast equal of /^0o[0-7]+$/i\n        case 79:\n        case 111:\n          radix = 8;\n          maxCode = 55;\n          break;\n        default:\n          return +it;\n      }\n      digits = stringSlice(it, 2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = charCodeAt(digits, index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nvar FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'));\n\nvar calledWithNew = function (dummy) {\n  // includes check on 1..constructor(foo) case\n  return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); });\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nvar NumberWrapper = function Number(value) {\n  var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n  return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n;\n};\n\nNumberWrapper.prototype = NumberPrototype;\nif (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper;\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED }, {\n  Number: NumberWrapper\n});\n\n// Use `internal/copy-constructor-properties` helper in `core-js@4`\nvar copyConstructorProperties = function (target, source) {\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n\nif (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace);\nif (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber);\n","'use strict';\nvar $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.es/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  EPSILON: Math.pow(2, -52)\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar numberIsFinite = require('../internals/number-is-finite');\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n","'use strict';\nvar $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n  isInteger: isIntegralNumber\n});\n","'use strict';\nvar $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.es/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n  isNaN: function isNaN(number) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return number !== number;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\nvar abs = Math.abs;\n\n// `Number.isSafeInteger` method\n// https://tc39.es/ecma262/#sec-number.issafeinteger\n$({ target: 'Number', stat: true }, {\n  isSafeInteger: function isSafeInteger(number) {\n    return isIntegralNumber(number) && abs(number) <= 0x1FFFFFFFFFFFFF;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","'use strict';\nvar $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat !== parseFloat }, {\n  parseFloat: parseFloat\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar parseInt = require('../internals/number-parse-int');\n\n// `Number.parseInt` method\n// https://tc39.es/ecma262/#sec-number.parseint\n// eslint-disable-next-line es/no-number-parseint -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseInt !== parseInt }, {\n  parseInt: parseInt\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar log10 = require('../internals/math-log10');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar $isFinite = isFinite;\nvar abs = Math.abs;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar round = Math.round;\nvar nativeToExponential = uncurryThis(1.0.toExponential);\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\n\n// Edge 17-\nvar ROUNDS_PROPERLY = nativeToExponential(-6.9e-11, 4) === '-6.9000e-11'\n  // IE11- && Edge 14-\n  && nativeToExponential(1.255, 2) === '1.25e+0'\n  // FF86-, V8 ~ Chrome 49-50\n  && nativeToExponential(12345, 3) === '1.235e+4'\n  // FF86-, V8 ~ Chrome 49-50\n  && nativeToExponential(25, 0) === '3e+1';\n\n// IE8-\nvar throwsOnInfinityFraction = function () {\n  return fails(function () {\n    nativeToExponential(1, Infinity);\n  }) && fails(function () {\n    nativeToExponential(1, -Infinity);\n  });\n};\n\n// Safari <11 && FF <50\nvar properNonFiniteThisCheck = function () {\n  return !fails(function () {\n    nativeToExponential(Infinity, Infinity);\n    nativeToExponential(NaN, Infinity);\n  });\n};\n\nvar FORCED = !ROUNDS_PROPERLY || !throwsOnInfinityFraction() || !properNonFiniteThisCheck();\n\n// `Number.prototype.toExponential` method\n// https://tc39.es/ecma262/#sec-number.prototype.toexponential\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toExponential: function toExponential(fractionDigits) {\n    var x = thisNumberValue(this);\n    if (fractionDigits === undefined) return nativeToExponential(x);\n    var f = toIntegerOrInfinity(fractionDigits);\n    if (!$isFinite(x)) return String(x);\n    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n    if (f < 0 || f > 20) throw $RangeError('Incorrect fraction digits');\n    if (ROUNDS_PROPERLY) return nativeToExponential(x, f);\n    var s = '';\n    var m = '';\n    var e = 0;\n    var c = '';\n    var d = '';\n    if (x < 0) {\n      s = '-';\n      x = -x;\n    }\n    if (x === 0) {\n      e = 0;\n      m = repeat('0', f + 1);\n    } else {\n      // this block is based on https://gist.github.com/SheetJSDev/1100ad56b9f856c95299ed0e068eea08\n      // TODO: improve accuracy with big fraction digits\n      var l = log10(x);\n      e = floor(l);\n      var n = 0;\n      var w = pow(10, e - f);\n      n = round(x / w);\n      if (2 * x >= (2 * n + 1) * w) {\n        n += 1;\n      }\n      if (n >= pow(10, f + 1)) {\n        n /= 10;\n        e += 1;\n      }\n      m = $String(n);\n    }\n    if (f !== 0) {\n      m = stringSlice(m, 0, 1) + '.' + stringSlice(m, 1);\n    }\n    if (e === 0) {\n      c = '+';\n      d = '0';\n    } else {\n      c = e > 0 ? '+' : '-';\n      d = $String(abs(e));\n    }\n    m += 'e' + c + d;\n    return s + m;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar nativeToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n  var n = 0;\n  var x2 = x;\n  while (x2 >= 4096) {\n    n += 12;\n    x2 /= 4096;\n  }\n  while (x2 >= 2) {\n    n += 1;\n    x2 /= 2;\n  } return n;\n};\n\nvar multiply = function (data, n, c) {\n  var index = -1;\n  var c2 = c;\n  while (++index < 6) {\n    c2 += n * data[index];\n    data[index] = c2 % 1e7;\n    c2 = floor(c2 / 1e7);\n  }\n};\n\nvar divide = function (data, n) {\n  var index = 6;\n  var c = 0;\n  while (--index >= 0) {\n    c += data[index];\n    data[index] = floor(c / n);\n    c = (c % n) * 1e7;\n  }\n};\n\nvar dataToString = function (data) {\n  var index = 6;\n  var s = '';\n  while (--index >= 0) {\n    if (s !== '' || index === 0 || data[index] !== 0) {\n      var t = $String(data[index]);\n      s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n    }\n  } return s;\n};\n\nvar FORCED = fails(function () {\n  return nativeToFixed(0.00008, 3) !== '0.000' ||\n    nativeToFixed(0.9, 0) !== '1' ||\n    nativeToFixed(1.255, 2) !== '1.25' ||\n    nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toFixed: function toFixed(fractionDigits) {\n    var number = thisNumberValue(this);\n    var fractDigits = toIntegerOrInfinity(fractionDigits);\n    var data = [0, 0, 0, 0, 0, 0];\n    var sign = '';\n    var result = '0';\n    var e, z, j, k;\n\n    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n    if (fractDigits < 0 || fractDigits > 20) throw $RangeError('Incorrect fraction digits');\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (number !== number) return 'NaN';\n    if (number <= -1e21 || number >= 1e21) return $String(number);\n    if (number < 0) {\n      sign = '-';\n      number = -number;\n    }\n    if (number > 1e-21) {\n      e = log(number * pow(2, 69, 1)) - 69;\n      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n      z *= 0x10000000000000;\n      e = 52 - e;\n      if (e > 0) {\n        multiply(data, 0, z);\n        j = fractDigits;\n        while (j >= 7) {\n          multiply(data, 1e7, 0);\n          j -= 7;\n        }\n        multiply(data, pow(10, j, 1), 0);\n        j = e - 1;\n        while (j >= 23) {\n          divide(data, 1 << 23);\n          j -= 23;\n        }\n        divide(data, 1 << j);\n        multiply(data, 1, 1);\n        divide(data, 2);\n        result = dataToString(data);\n      } else {\n        multiply(data, 0, z);\n        multiply(data, 1 << -e, 0);\n        result = dataToString(data) + repeat('0', fractDigits);\n      }\n    }\n    if (fractDigits > 0) {\n      k = result.length;\n      result = sign + (k <= fractDigits\n        ? '0.' + repeat('0', fractDigits - k) + result\n        : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n    } else {\n      result = sign + result;\n    } return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar thisNumberValue = require('../internals/this-number-value');\n\nvar nativeToPrecision = uncurryThis(1.0.toPrecision);\n\nvar FORCED = fails(function () {\n  // IE7-\n  return nativeToPrecision(1, undefined) !== '1';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToPrecision({});\n});\n\n// `Number.prototype.toPrecision` method\n// https://tc39.es/ecma262/#sec-number.prototype.toprecision\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toPrecision: function toPrecision(precision) {\n    return precision === undefined\n      ? nativeToPrecision(thisNumberValue(this))\n      : nativeToPrecision(thisNumberValue(this), precision);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __defineGetter__: function __defineGetter__(P, getter) {\n      definePropertyModule.f(toObject(this), P, { get: aCallable(getter), enumerable: true, configurable: true });\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties').f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n  defineProperties: defineProperties\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n  defineProperty: defineProperty\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __defineSetter__: function __defineSetter__(P, setter) {\n      definePropertyModule.f(toObject(this), P, { set: aCallable(setter), enumerable: true, configurable: true });\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  freeze: function freeze(it) {\n    return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n  fromEntries: function fromEntries(iterable) {\n    var obj = {};\n    iterate(iterable, function (k, v) {\n      createProperty(obj, k, v);\n    }, { AS_ENTRIES: true });\n    return obj;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); });\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\n// eslint-disable-next-line es/no-object-getownpropertynames -- required for testing\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  getOwnPropertyNames: getOwnPropertyNames\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n    return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\n\n// `Object.hasOwn` method\n// https://tc39.es/ecma262/#sec-object.hasown\n$({ target: 'Object', stat: true }, {\n  hasOwn: hasOwn\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $isExtensible = require('../internals/object-is-extensible');\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\n// eslint-disable-next-line es/no-object-isextensible -- safe\n$({ target: 'Object', stat: true, forced: Object.isExtensible !== $isExtensible }, {\n  isExtensible: $isExtensible\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isfrozen -- safe\nvar $isFrozen = Object.isFrozen;\n\nvar FORCED = ARRAY_BUFFER_NON_EXTENSIBLE || fails(function () { $isFrozen(1); });\n\n// `Object.isFrozen` method\n// https://tc39.es/ecma262/#sec-object.isfrozen\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  isFrozen: function isFrozen(it) {\n    if (!isObject(it)) return true;\n    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return true;\n    return $isFrozen ? $isFrozen(it) : false;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-issealed -- safe\nvar $isSealed = Object.isSealed;\n\nvar FORCED = ARRAY_BUFFER_NON_EXTENSIBLE || fails(function () { $isSealed(1); });\n\n// `Object.isSealed` method\n// https://tc39.es/ecma262/#sec-object.issealed\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  isSealed: function isSealed(it) {\n    if (!isObject(it)) return true;\n    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return true;\n    return $isSealed ? $isSealed(it) : false;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar is = require('../internals/same-value');\n\n// `Object.is` method\n// https://tc39.es/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n  is: is\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __lookupGetter__: function __lookupGetter__(P) {\n      var O = toObject(this);\n      var key = toPropertyKey(P);\n      var desc;\n      do {\n        if (desc = getOwnPropertyDescriptor(O, key)) return desc.get;\n      } while (O = getPrototypeOf(O));\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __lookupSetter__: function __lookupSetter__(P) {\n      var O = toObject(this);\n      var key = toPropertyKey(P);\n      var desc;\n      do {\n        if (desc = getOwnPropertyDescriptor(O, key)) return desc.set;\n      } while (O = getPrototypeOf(O));\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-preventextensions -- safe\nvar $preventExtensions = Object.preventExtensions;\nvar FAILS_ON_PRIMITIVES = fails(function () { $preventExtensions(1); });\n\n// `Object.preventExtensions` method\n// https://tc39.es/ecma262/#sec-object.preventextensions\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  preventExtensions: function preventExtensions(it) {\n    return $preventExtensions && isObject(it) ? $preventExtensions(onFreeze(it)) : it;\n  }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nvar getPrototypeOf = Object.getPrototypeOf;\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nvar setPrototypeOf = Object.setPrototypeOf;\nvar ObjectPrototype = Object.prototype;\nvar PROTO = '__proto__';\n\n// `Object.prototype.__proto__` accessor\n// https://tc39.es/ecma262/#sec-object.prototype.__proto__\nif (DESCRIPTORS && getPrototypeOf && setPrototypeOf && !(PROTO in ObjectPrototype)) try {\n  defineBuiltInAccessor(ObjectPrototype, PROTO, {\n    configurable: true,\n    get: function __proto__() {\n      return getPrototypeOf(toObject(this));\n    },\n    set: function __proto__(proto) {\n      var O = requireObjectCoercible(this);\n      if (!isObject(proto) && proto !== null || !isObject(O)) return;\n      setPrototypeOf(O, proto);\n    }\n  });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-seal -- safe\nvar $seal = Object.seal;\nvar FAILS_ON_PRIMITIVES = fails(function () { $seal(1); });\n\n// `Object.seal` method\n// https://tc39.es/ecma262/#sec-object.seal\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  seal: function seal(it) {\n    return $seal && isObject(it) ? $seal(onFreeze(it)) : it;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat !== $parseFloat }, {\n  parseFloat: $parseFloat\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt !== $parseInt }, {\n  parseInt: $parseInt\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  allSettled: function allSettled(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'fulfilled', value: value };\n          --remaining || resolve(values);\n        }, function (error) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'rejected', reason: error };\n          --remaining || resolve(values);\n        });\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call($promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  any: function any(iterable) {\n    var C = this;\n    var AggregateError = getBuiltIn('AggregateError');\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var errors = [];\n      var counter = 0;\n      var remaining = 1;\n      var alreadyResolved = false;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyRejected = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyResolved = true;\n          resolve(value);\n        }, function (error) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyRejected = true;\n          errors[index] = error;\n          --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n        });\n      });\n      --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n  'catch': function (onRejected) {\n    return this.then(undefined, onRejected);\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['catch'];\n  if (NativePromisePrototype['catch'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n  }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n  var value = state.value;\n  var ok = state.state === FULFILLED;\n  var handler = ok ? reaction.ok : reaction.fail;\n  var resolve = reaction.resolve;\n  var reject = reaction.reject;\n  var domain = reaction.domain;\n  var result, then, exited;\n  try {\n    if (handler) {\n      if (!ok) {\n        if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n        state.rejection = HANDLED;\n      }\n      if (handler === true) result = value;\n      else {\n        if (domain) domain.enter();\n        result = handler(value); // can throw\n        if (domain) {\n          domain.exit();\n          exited = true;\n        }\n      }\n      if (result === reaction.promise) {\n        reject(TypeError('Promise-chain cycle'));\n      } else if (then = isThenable(result)) {\n        call(then, result, resolve, reject);\n      } else resolve(result);\n    } else reject(value);\n  } catch (error) {\n    if (domain && !exited) domain.exit();\n    reject(error);\n  }\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  microtask(function () {\n    var reactions = state.reactions;\n    var reaction;\n    while (reaction = reactions.get()) {\n      callReaction(reaction, state);\n    }\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalPromiseState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n\n  PromisePrototype = PromiseConstructor.prototype;\n\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: new Queue(),\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n\n  // `Promise.prototype.then` method\n  // https://tc39.es/ecma262/#sec-promise.prototype.then\n  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n    var state = getInternalPromiseState(this);\n    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n    state.parent = true;\n    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n    reaction.fail = isCallable(onRejected) && onRejected;\n    reaction.domain = IS_NODE ? process.domain : undefined;\n    if (state.state === PENDING) state.reactions.add(reaction);\n    else microtask(function () {\n      callReaction(reaction, state);\n    });\n    return reaction.promise;\n  });\n\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalPromiseState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!NATIVE_PROMISE_SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          call(nativeThen, that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n  // eslint-disable-next-line unicorn/no-thenable -- required for testing\n  NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n  'finally': function (onFinally) {\n    var C = speciesConstructor(this, getBuiltIn('Promise'));\n    var isFunction = isCallable(onFinally);\n    return this.then(\n      isFunction ? function (x) {\n        return promiseResolve(C, onFinally()).then(function () { return x; });\n      } : onFinally,\n      isFunction ? function (e) {\n        return promiseResolve(C, onFinally()).then(function () { throw e; });\n      } : onFinally\n    );\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['finally'];\n  if (NativePromisePrototype['finally'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n  }\n}\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        call($promiseResolve, C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  reject: function reject(r) {\n    var capability = newPromiseCapabilityModule.f(this);\n    call(capability.reject, undefined, r);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n  resolve: function resolve(x) {\n    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar functionApply = require('../internals/function-apply');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n  // eslint-disable-next-line es/no-reflect -- required for testing\n  Reflect.apply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n  apply: function apply(target, thisArgument, argumentsList) {\n    return functionApply(aCallable(target), thisArgument, anObject(argumentsList));\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aConstructor(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target === newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      apply(push, $args, args);\n      return new (apply(bind, Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : ObjectPrototype);\n    var result = apply(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar fails = require('../internals/fails');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\nvar ERROR_INSTEAD_OF_FALSE = fails(function () {\n  // eslint-disable-next-line es/no-reflect -- required for testing\n  Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 });\n});\n\n// `Reflect.defineProperty` method\n// https://tc39.es/ecma262/#sec-reflect.defineproperty\n$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {\n  defineProperty: function defineProperty(target, propertyKey, attributes) {\n    anObject(target);\n    var key = toPropertyKey(propertyKey);\n    anObject(attributes);\n    try {\n      definePropertyModule.f(target, key, attributes);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n  deleteProperty: function deleteProperty(target, propertyKey) {\n    var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n    return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\n\n// `Reflect.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor\n$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n    return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(target) {\n    return objectGetPrototypeOf(anObject(target));\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n  var receiver = arguments.length < 3 ? target : arguments[2];\n  var descriptor, prototype;\n  if (anObject(target) === receiver) return target[propertyKey];\n  descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);\n  if (descriptor) return isDataDescriptor(descriptor)\n    ? descriptor.value\n    : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);\n  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n  get: get\n});\n","'use strict';\nvar $ = require('../internals/export');\n\n// `Reflect.has` method\n// https://tc39.es/ecma262/#sec-reflect.has\n$({ target: 'Reflect', stat: true }, {\n  has: function has(target, propertyKey) {\n    return propertyKey in target;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar $isExtensible = require('../internals/object-is-extensible');\n\n// `Reflect.isExtensible` method\n// https://tc39.es/ecma262/#sec-reflect.isextensible\n$({ target: 'Reflect', stat: true }, {\n  isExtensible: function isExtensible(target) {\n    anObject(target);\n    return $isExtensible(target);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar ownKeys = require('../internals/own-keys');\n\n// `Reflect.ownKeys` method\n// https://tc39.es/ecma262/#sec-reflect.ownkeys\n$({ target: 'Reflect', stat: true }, {\n  ownKeys: ownKeys\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar anObject = require('../internals/an-object');\nvar FREEZING = require('../internals/freezing');\n\n// `Reflect.preventExtensions` method\n// https://tc39.es/ecma262/#sec-reflect.preventextensions\n$({ target: 'Reflect', stat: true, sham: !FREEZING }, {\n  preventExtensions: function preventExtensions(target) {\n    anObject(target);\n    try {\n      var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions');\n      if (objectPreventExtensions) objectPreventExtensions(target);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\nvar objectSetPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Reflect.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.setprototypeof\nif (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {\n  setPrototypeOf: function setPrototypeOf(target, proto) {\n    anObject(target);\n    aPossiblePrototype(proto);\n    try {\n      objectSetPrototypeOf(target, proto);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar fails = require('../internals/fails');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\n// `Reflect.set` method\n// https://tc39.es/ecma262/#sec-reflect.set\nfunction set(target, propertyKey, V /* , receiver */) {\n  var receiver = arguments.length < 4 ? target : arguments[3];\n  var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n  var existingDescriptor, prototype, setter;\n  if (!ownDescriptor) {\n    if (isObject(prototype = getPrototypeOf(target))) {\n      return set(prototype, propertyKey, V, receiver);\n    }\n    ownDescriptor = createPropertyDescriptor(0);\n  }\n  if (isDataDescriptor(ownDescriptor)) {\n    if (ownDescriptor.writable === false || !isObject(receiver)) return false;\n    if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {\n      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n      existingDescriptor.value = V;\n      definePropertyModule.f(receiver, propertyKey, existingDescriptor);\n    } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));\n  } else {\n    setter = ownDescriptor.set;\n    if (setter === undefined) return false;\n    call(setter, receiver, V);\n  } return true;\n}\n\n// MS Edge 17-18 Reflect.set allows setting the property to object\n// with non-writable property on the prototype\nvar MS_EDGE_BUG = fails(function () {\n  var Constructor = function () { /* empty */ };\n  var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });\n  // eslint-disable-next-line es/no-reflect -- required for testing\n  return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;\n});\n\n$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {\n  set: set\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only proper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n  (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n    re2[MATCH] = false;\n    // RegExp constructor can alter flags and IsRegExp works correct with @@match\n    return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i';\n  }));\n\nvar handleDotAll = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var brackets = false;\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      result += chr + charAt(string, ++index);\n      continue;\n    }\n    if (!brackets && chr === '.') {\n      result += '[\\\\s\\\\S]';\n    } else {\n      if (chr === '[') {\n        brackets = true;\n      } else if (chr === ']') {\n        brackets = false;\n      } result += chr;\n    }\n  } return result;\n};\n\nvar handleNCG = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var named = [];\n  var names = {};\n  var brackets = false;\n  var ncg = false;\n  var groupid = 0;\n  var groupname = '';\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      chr += charAt(string, ++index);\n    } else if (chr === ']') {\n      brackets = false;\n    } else if (!brackets) switch (true) {\n      case chr === '[':\n        brackets = true;\n        break;\n      case chr === '(':\n        if (exec(IS_NCG, stringSlice(string, index + 1))) {\n          index += 2;\n          ncg = true;\n        }\n        result += chr;\n        groupid++;\n        continue;\n      case chr === '>' && ncg:\n        if (groupname === '' || hasOwn(names, groupname)) {\n          throw new SyntaxError('Invalid capture group name');\n        }\n        names[groupname] = true;\n        named[named.length] = [groupname, groupid];\n        ncg = false;\n        groupname = '';\n        continue;\n    }\n    if (ncg) groupname += chr;\n    else result += chr;\n  } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var groups = [];\n    var rawPattern = pattern;\n    var rawFlags, dotAll, sticky, handled, result, state;\n\n    if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n      return pattern;\n    }\n\n    if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n      pattern = pattern.source;\n      if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n    }\n\n    pattern = pattern === undefined ? '' : toString(pattern);\n    flags = flags === undefined ? '' : toString(flags);\n    rawPattern = pattern;\n\n    if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n      dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n      if (dotAll) flags = replace(flags, /s/g, '');\n    }\n\n    rawFlags = flags;\n\n    if (MISSED_STICKY && 'sticky' in re1) {\n      sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n      if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n    }\n\n    if (UNSUPPORTED_NCG) {\n      handled = handleNCG(pattern);\n      pattern = handled[0];\n      groups = handled[1];\n    }\n\n    result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n    if (dotAll || sticky || groups.length) {\n      state = enforceInternalState(result);\n      if (dotAll) {\n        state.dotAll = true;\n        state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n      }\n      if (sticky) state.sticky = true;\n      if (groups.length) state.groups = groups;\n    }\n\n    if (pattern !== rawPattern) try {\n      // fails in old engines, but we have no alternatives for unsupported regex syntax\n      createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n    } catch (error) { /* empty */ }\n\n    return result;\n  };\n\n  for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n    proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n  }\n\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n  defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\n    configurable: true,\n    get: function dotAll() {\n      if (this === RegExpPrototype) return undefined;\n      // We can't use InternalStateModule.getterFor because\n      // we don't add metadata for regexps created by a literal.\n      if (classof(this) === 'RegExp') {\n        return !!getInternalState(this).dotAll;\n      }\n      throw $TypeError('Incompatible receiver, RegExp required');\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  var INDICES_SUPPORT = true;\n  try {\n    RegExp('.', 'd');\n  } catch (error) {\n    INDICES_SUPPORT = false;\n  }\n\n  var O = {};\n  // modern V8 bug\n  var calls = '';\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n  var addGetter = function (key, chr) {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty(O, key, { get: function () {\n      calls += chr;\n      return true;\n    } });\n  };\n\n  var pairs = {\n    dotAll: 's',\n    global: 'g',\n    ignoreCase: 'i',\n    multiline: 'm',\n    sticky: 'y'\n  };\n\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n  for (var key in pairs) addGetter(key, pairs[key]);\n\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n  return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.sticky` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky\nif (DESCRIPTORS && MISSED_STICKY) {\n  defineBuiltInAccessor(RegExpPrototype, 'sticky', {\n    configurable: true,\n    get: function sticky() {\n      if (this === RegExpPrototype) return;\n      // We can't use InternalStateModule.getterFor because\n      // we don't add metadata for regexps created by a literal.\n      if (classof(this) === 'RegExp') {\n        return !!getInternalState(this).sticky;\n      }\n      throw $TypeError('Incompatible receiver, RegExp required');\n    }\n  });\n}\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar anObject = require('../internals/an-object');\nvar toString = require('../internals/to-string');\n\nvar DELEGATES_TO_EXEC = function () {\n  var execCalled = false;\n  var re = /[ac]/;\n  re.exec = function () {\n    execCalled = true;\n    return /./.exec.apply(this, arguments);\n  };\n  return re.test('abc') === true && execCalled;\n}();\n\nvar nativeTest = /./.test;\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n  test: function (S) {\n    var R = anObject(this);\n    var string = toString(S);\n    var exec = R.exec;\n    if (!isCallable(exec)) return call(nativeTest, R, string);\n    var result = call(exec, R, string);\n    if (result === null) return false;\n    anObject(result);\n    return true;\n  }\n});\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var pattern = $toString(R.source);\n    var flags = $toString(getRegExpFlags(R));\n    return '/' + pattern + '/' + flags;\n  }, { unsafe: true });\n}\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.set.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.anchor` method\n// https://tc39.es/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n  anchor: function anchor(name) {\n    return createHTML(this, 'a', 'name', name);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar charAt = uncurryThis(''.charAt);\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-array-string-prototype-at -- safe\n  return '𠮷'.at(-2) !== '\\uD842';\n});\n\n// `String.prototype.at` method\n// https://tc39.es/ecma262/#sec-string.prototype.at\n$({ target: 'String', proto: true, forced: FORCED }, {\n  at: function at(index) {\n    var S = toString(requireObjectCoercible(this));\n    var len = S.length;\n    var relativeIndex = toIntegerOrInfinity(index);\n    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n    return (k < 0 || k >= len) ? undefined : charAt(S, k);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.big` method\n// https://tc39.es/ecma262/#sec-string.prototype.big\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, {\n  big: function big() {\n    return createHTML(this, 'big', '', '');\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.blink` method\n// https://tc39.es/ecma262/#sec-string.prototype.blink\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, {\n  blink: function blink() {\n    return createHTML(this, 'blink', '', '');\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.bold` method\n// https://tc39.es/ecma262/#sec-string.prototype.bold\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {\n  bold: function bold() {\n    return createHTML(this, 'b', '', '');\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar codeAt = require('../internals/string-multibyte').codeAt;\n\n// `String.prototype.codePointAt` method\n// https://tc39.es/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n  codePointAt: function codePointAt(pos) {\n    return codeAt(this, pos);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar nativeEndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = that.length;\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = toString(searchString);\n    return nativeEndsWith\n      ? nativeEndsWith(that, search, end)\n      : slice(that, end - search.length, end) === search;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n  fixed: function fixed() {\n    return createHTML(this, 'tt', '', '');\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontcolor` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontcolor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, {\n  fontcolor: function fontcolor(color) {\n    return createHTML(this, 'font', 'color', color);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontsize` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontsize\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, {\n  fontsize: function fontsize(size) {\n    return createHTML(this, 'font', 'size', size);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar $RangeError = RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\nvar join = uncurryThis([].join);\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length !== 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  fromCodePoint: function fromCodePoint(x) {\n    var elements = [];\n    var length = arguments.length;\n    var i = 0;\n    var code;\n    while (length > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw $RangeError(code + ' is not a valid code point');\n      elements[i] = code < 0x10000\n        ? fromCharCode(code)\n        : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);\n    } return join(elements, '');\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `String.prototype.isWellFormed` method\n// https://github.com/tc39/proposal-is-usv-string\n$({ target: 'String', proto: true }, {\n  isWellFormed: function isWellFormed() {\n    var S = toString(requireObjectCoercible(this));\n    var length = S.length;\n    for (var i = 0; i < length; i++) {\n      var charCode = charCodeAt(S, i);\n      // single UTF-16 code unit\n      if ((charCode & 0xF800) !== 0xD800) continue;\n      // unpaired surrogate\n      if (charCode >= 0xDC00 || ++i >= length || (charCodeAt(S, i) & 0xFC00) !== 0xDC00) return false;\n    } return true;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n  italics: function italics() {\n    return createHTML(this, 'i', '', '');\n  }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return createIterResultObject(undefined, true);\n  point = charAt(string, index);\n  state.index += point.length;\n  return createIterResultObject(point, false);\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n  link: function link(url) {\n    return createHTML(this, 'a', 'href', url);\n  }\n});\n","'use strict';\n/* eslint-disable es/no-string-prototype-matchall -- safe */\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar classof = require('../internals/classof-raw');\nvar isRegExp = require('../internals/is-regexp');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getMethod = require('../internals/get-method');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar InternalStateModule = require('../internals/internal-state');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MATCH_ALL = wellKnownSymbol('matchAll');\nvar REGEXP_STRING = 'RegExp String';\nvar REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar nativeMatchAll = uncurryThis(''.matchAll);\n\nvar WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {\n  nativeMatchAll('a', /./);\n});\n\nvar $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {\n  setInternalState(this, {\n    type: REGEXP_STRING_ITERATOR,\n    regexp: regexp,\n    string: string,\n    global: $global,\n    unicode: fullUnicode,\n    done: false\n  });\n}, REGEXP_STRING, function next() {\n  var state = getInternalState(this);\n  if (state.done) return createIterResultObject(undefined, true);\n  var R = state.regexp;\n  var S = state.string;\n  var match = regExpExec(R, S);\n  if (match === null) {\n    state.done = true;\n    return createIterResultObject(undefined, true);\n  }\n  if (state.global) {\n    if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);\n    return createIterResultObject(match, false);\n  }\n  state.done = true;\n  return createIterResultObject(match, false);\n});\n\nvar $matchAll = function (string) {\n  var R = anObject(this);\n  var S = toString(string);\n  var C = speciesConstructor(R, RegExp);\n  var flags = toString(getRegExpFlags(R));\n  var matcher, $global, fullUnicode;\n  matcher = new C(C === RegExp ? R.source : R, flags);\n  $global = !!~stringIndexOf(flags, 'g');\n  fullUnicode = !!~stringIndexOf(flags, 'u');\n  matcher.lastIndex = toLength(R.lastIndex);\n  return new $RegExpStringIterator(matcher, S, $global, fullUnicode);\n};\n\n// `String.prototype.matchAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.matchall\n$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {\n  matchAll: function matchAll(regexp) {\n    var O = requireObjectCoercible(this);\n    var flags, S, matcher, rx;\n    if (!isNullOrUndefined(regexp)) {\n      if (isRegExp(regexp)) {\n        flags = toString(requireObjectCoercible(getRegExpFlags(regexp)));\n        if (!~stringIndexOf(flags, 'g')) throw $TypeError('`.matchAll` does not allow non-global regexes');\n      }\n      if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);\n      matcher = getMethod(regexp, MATCH_ALL);\n      if (matcher === undefined && IS_PURE && classof(regexp) === 'RegExp') matcher = $matchAll;\n      if (matcher) return call(matcher, regexp, O);\n    } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);\n    S = toString(O);\n    rx = new RegExp(regexp, 'g');\n    return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);\n  }\n});\n\nIS_PURE || MATCH_ALL in RegExpPrototype || defineBuiltIn(RegExpPrototype, MATCH_ALL, $matchAll);\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $padEnd = require('../internals/string-pad').end;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.padend\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n    return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padStart: function padStart(maxLength /* , fillString = ' ' */) {\n    return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toObject = require('../internals/to-object');\nvar toString = require('../internals/to-string');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar push = uncurryThis([].push);\nvar join = uncurryThis([].join);\n\n// `String.raw` method\n// https://tc39.es/ecma262/#sec-string.raw\n$({ target: 'String', stat: true }, {\n  raw: function raw(template) {\n    var rawTemplate = toIndexedObject(toObject(template).raw);\n    var literalSegments = lengthOfArrayLike(rawTemplate);\n    if (!literalSegments) return '';\n    var argumentsLength = arguments.length;\n    var elements = [];\n    var i = 0;\n    while (true) {\n      push(elements, toString(rawTemplate[i++]));\n      if (i === literalSegments) return join(elements, '');\n      if (i < argumentsLength) push(elements, toString(arguments[i]));\n    }\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n  repeat: repeat\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n  if (fromIndex > string.length) return -1;\n  if (searchValue === '') return fromIndex;\n  return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n  replaceAll: function replaceAll(searchValue, replaceValue) {\n    var O = requireObjectCoercible(this);\n    var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n    var position = 0;\n    var endOfLastMatch = 0;\n    var result = '';\n    if (!isNullOrUndefined(searchValue)) {\n      IS_REG_EXP = isRegExp(searchValue);\n      if (IS_REG_EXP) {\n        flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n        if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes');\n      }\n      replacer = getMethod(searchValue, REPLACE);\n      if (replacer) {\n        return call(replacer, searchValue, O, replaceValue);\n      } else if (IS_PURE && IS_REG_EXP) {\n        return replace(toString(O), searchValue, replaceValue);\n      }\n    }\n    string = toString(O);\n    searchString = toString(searchValue);\n    functionalReplace = isCallable(replaceValue);\n    if (!functionalReplace) replaceValue = toString(replaceValue);\n    searchLength = searchString.length;\n    advanceBy = max(1, searchLength);\n    position = stringIndexOf(string, searchString, 0);\n    while (position !== -1) {\n      replacement = functionalReplace\n        ? toString(replaceValue(searchString, position, string))\n        : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n      result += stringSlice(string, endOfLastMatch, position) + replacement;\n      endOfLastMatch = position + searchLength;\n      position = stringIndexOf(string, searchString, position + advanceBy);\n    }\n    if (endOfLastMatch < string.length) {\n      result += stringSlice(string, endOfLastMatch);\n    }\n    return result;\n  }\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\n      return replacer\n        ? call(replacer, searchValue, O, replaceValue)\n        : call(nativeReplace, toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (\n        typeof replaceValue == 'string' &&\n        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n        stringIndexOf(replaceValue, '$<') === -1\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n\n      var global = rx.global;\n      var fullUnicode;\n      if (global) {\n        fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n\n      var results = [];\n      var result;\n      while (true) {\n        result = regExpExec(rx, S);\n        if (result === null) break;\n\n        push(results, result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        var replacement;\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = concat([matched], captures, position, S);\n          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n          replacement = toString(apply(replaceValue, undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n\n      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.es/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH);\n      return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeSearch, rx, S);\n\n      if (res.done) return res.value;\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n  small: function small() {\n    return createHTML(this, 'small', '', '');\n  }\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice-simple');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] === 'c' ||\n    // eslint-disable-next-line regexp/no-empty-group -- required for testing\n    'test'.split(/(?:)/, -1).length !== 4 ||\n    'ab'.split(/(?:ab)*/).length !== 2 ||\n    '.'.split(/(.?)(.?)/).length !== 4 ||\n    // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = toString(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return call(nativeSplit, string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = call(regexpExec, separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          push(output, stringSlice(string, lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !exec(separatorCopy, '')) push(output, '');\n      } else push(output, stringSlice(string, lastLastIndex));\n      return output.length > lim ? arraySlice(output, 0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n      return splitter\n        ? call(splitter, separator, O, limit)\n        : call(internalSplit, toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n      if (res.done) return res.value;\n\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          push(A, stringSlice(S, p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            push(A, z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      push(A, stringSlice(S, p));\n      return A;\n    }\n  ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar nativeStartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = toString(searchString);\n    return nativeStartsWith\n      ? nativeStartsWith(that, search, index)\n      : stringSlice(that, index, index + search.length) === search;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.strike` method\n// https://tc39.es/ecma262/#sec-string.prototype.strike\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {\n  strike: function strike() {\n    return createHTML(this, 'strike', '', '');\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.sub` method\n// https://tc39.es/ecma262/#sec-string.prototype.sub\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, {\n  sub: function sub() {\n    return createHTML(this, 'sub', '', '');\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\n\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\nvar min = Math.min;\n\n// eslint-disable-next-line unicorn/prefer-string-slice -- required for testing\nvar FORCED = !''.substr || 'ab'.substr(-1) !== 'b';\n\n// `String.prototype.substr` method\n// https://tc39.es/ecma262/#sec-string.prototype.substr\n$({ target: 'String', proto: true, forced: FORCED }, {\n  substr: function substr(start, length) {\n    var that = toString(requireObjectCoercible(this));\n    var size = that.length;\n    var intStart = toIntegerOrInfinity(start);\n    var intLength, intEnd;\n    if (intStart === Infinity) intStart = 0;\n    if (intStart < 0) intStart = max(size + intStart, 0);\n    intLength = length === undefined ? size : toIntegerOrInfinity(length);\n    if (intLength <= 0 || intLength === Infinity) return '';\n    intEnd = min(intStart + intLength, size);\n    return intStart >= intEnd ? '' : stringSlice(that, intStart, intEnd);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.sup` method\n// https://tc39.es/ecma262/#sec-string.prototype.sup\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, {\n  sup: function sup() {\n    return createHTML(this, 'sup', '', '');\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar $Array = Array;\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\n// eslint-disable-next-line es/no-string-prototype-iswellformed-towellformed -- safe\nvar $toWellFormed = ''.toWellFormed;\nvar REPLACEMENT_CHARACTER = '\\uFFFD';\n\n// Safari bug\nvar TO_STRING_CONVERSION_BUG = $toWellFormed && fails(function () {\n  return call($toWellFormed, 1) !== '1';\n});\n\n// `String.prototype.toWellFormed` method\n// https://github.com/tc39/proposal-is-usv-string\n$({ target: 'String', proto: true, forced: TO_STRING_CONVERSION_BUG }, {\n  toWellFormed: function toWellFormed() {\n    var S = toString(requireObjectCoercible(this));\n    if (TO_STRING_CONVERSION_BUG) return call($toWellFormed, S);\n    var length = S.length;\n    var result = $Array(length);\n    for (var i = 0; i < length; i++) {\n      var charCode = charCodeAt(S, i);\n      // single UTF-16 code unit\n      if ((charCode & 0xF800) !== 0xD800) result[i] = charAt(S, i);\n      // unpaired surrogate\n      else if (charCode >= 0xDC00 || i + 1 >= length || (charCodeAt(S, i + 1) & 0xFC00) !== 0xDC00) result[i] = REPLACEMENT_CHARACTER;\n      // surrogate pair\n      else {\n        result[i] = charAt(S, i);\n        result[++i] = charAt(S, i);\n      }\n    } return join(result, '');\n  }\n});\n","'use strict';\n// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-right');\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\n  trimEnd: trimEnd\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimLeft` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimleft\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimLeft !== trimStart }, {\n  trimLeft: trimStart\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimRight` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\n  trimRight: trimEnd\n});\n","'use strict';\n// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-left');\nvar $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimStart !== trimStart }, {\n  trimStart: trimStart\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a !== 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  definePropertiesModule.f = $defineProperties;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    defineBuiltInAccessor(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n    var result = isPrototypeOf(SymbolPrototype, this)\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  SymbolWrapper.prototype = SymbolPrototype;\n  SymbolPrototype.constructor = SymbolWrapper;\n\n  var NATIVE_SYMBOL = String(NativeSymbol('description detection')) === 'Symbol(description detection)';\n  var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\n  var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  var replace = uncurryThis(''.replace);\n  var stringSlice = uncurryThis(''.slice);\n\n  defineBuiltInAccessor(SymbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = thisSymbolValue(this);\n      if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n      var string = symbolDescriptiveString(symbol);\n      var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, constructor: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  'for': function (key) {\n    var string = toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = getBuiltIn('Symbol')(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  }\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  }\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at\nexportTypedArrayMethod('at', function at(index) {\n  var O = aTypedArray(this);\n  var len = lengthOfArrayLike(O);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n  return (k < 0 || k >= len) ? undefined : O[k];\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n  return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\nvar toBigInt = require('../internals/to-big-int');\nvar classof = require('../internals/classof');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n  var count = 0;\n  // eslint-disable-next-line es/no-typed-arrays -- safe\n  new Int8Array(2).fill({ valueOf: function () { return count++; } });\n  return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n  var length = arguments.length;\n  aTypedArray(this);\n  var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n  return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  return fromSpeciesAndList(this, list);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n  return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n  return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float32', function (init) {\n  return function Float32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float64Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float64', function (init) {\n  return function Float64Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;\nvar typedArrayFrom = require('../internals/typed-array-from');\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int16', function (init) {\n  return function Int16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n  return function Int32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n  return function Int8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n  TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n  && TypedArrayPrototype.values\n  && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n  && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n  return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n  return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n  return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n  return $join(aTypedArray(this), separator);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n  var length = arguments.length;\n  return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n    return new (typedArraySpeciesConstructor(O))(length);\n  });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;\n\n// `%TypedArray%.of` method\n// https://tc39.es/ecma262/#sec-%typedarray%.of\nexportTypedArrayStaticMethod('of', function of(/* ...items */) {\n  var index = 0;\n  var length = arguments.length;\n  var result = new (aTypedArrayConstructor(this))(length);\n  while (length > index) result[index] = arguments[index++];\n  return result;\n}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n  var that = this;\n  var length = aTypedArray(that).length;\n  var middle = floor(length / 2);\n  var index = 0;\n  var value;\n  while (index < middle) {\n    value = that[index];\n    that[index++] = that[--length];\n    that[length] = value;\n  } return that;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  var array = new Uint8ClampedArray(2);\n  call($set, array, { length: 1, 0: 3 }, 1);\n  return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n  var array = new Int8Array(2);\n  array.set(1);\n  array.set('2', 1);\n  return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var src = toIndexedObject(arrayLike);\n  if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n  var length = this.length;\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = arraySlice(aTypedArray(this), start, end);\n  var C = typedArraySpeciesConstructor(this);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n  nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n  nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 74;\n  if (FF) return FF < 67;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 602;\n\n  var array = new Uint16Array(516);\n  var expected = Array(516);\n  var index, mod;\n\n  for (index = 0; index < 516; index++) {\n    mod = index % 4;\n    array[index] = 515 - index;\n    expected[index] = index - 2 * mod + 3;\n  }\n\n  nativeSort(array, function (a, b) {\n    return (a / 4 | 0) - (b / 4 | 0);\n  });\n\n  for (index = 0; index < 516; index++) {\n    if (array[index] !== expected[index]) return true;\n  }\n});\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (y !== y) return -1;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (x !== x) return 1;\n    if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n    return x > y;\n  };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n  if (comparefn !== undefined) aCallable(comparefn);\n  if (STABLE_SORT) return nativeSort(this, comparefn);\n\n  return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n  var O = aTypedArray(this);\n  var length = O.length;\n  var beginIndex = toAbsoluteIndex(begin, length);\n  var C = typedArraySpeciesConstructor(O);\n  return new C(\n    O.buffer,\n    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n  );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n  $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n  return [1, 2].toLocaleString() !== new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n  Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n  return apply(\n    $toLocaleString,\n    TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n    arraySlice(arguments)\n  );\n}, FORCED);\n","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n  return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n  if (compareFn !== undefined) aCallable(compareFn);\n  var O = aTypedArray(this);\n  var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n  return sort(A, compareFn);\n});\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n  arrayToString = function toString() {\n    return join(this);\n  };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString !== arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n  return function Uint16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n  return function Uint32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8ClampedArray(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n}, true);\n","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n  try {\n    // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n    new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n  } catch (error) {\n    // some early implementations, like WebKit, does not follow the final semantic\n    // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n    return error === 8;\n  }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n  var O = aTypedArray(this);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n  return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\n\nvar fromCharCode = String.fromCharCode;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar stringSlice = uncurryThis(''.slice);\n\nvar hex2 = /^[\\da-f]{2}$/i;\nvar hex4 = /^[\\da-f]{4}$/i;\n\n// `unescape` method\n// https://tc39.es/ecma262/#sec-unescape-string\n$({ global: true }, {\n  unescape: function unescape(string) {\n    var str = toString(string);\n    var result = '';\n    var length = str.length;\n    var index = 0;\n    var chr, part;\n    while (index < length) {\n      chr = charAt(str, index++);\n      if (chr === '%') {\n        if (charAt(str, index) === 'u') {\n          part = stringSlice(str, index + 1, index + 5);\n          if (exec(hex4, part)) {\n            result += fromCharCode(parseInt(part, 16));\n            index += 5;\n            continue;\n          }\n        } else {\n          part = stringSlice(str, index, index + 2);\n          if (exec(hex2, part)) {\n            result += fromCharCode(parseInt(part, 16));\n            index += 2;\n            continue;\n          }\n        }\n      }\n      result += chr;\n    } return result;\n  }\n});\n","'use strict';\nvar FREEZING = require('../internals/freezing');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar fails = require('../internals/fails');\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\n\nvar $Object = Object;\n// eslint-disable-next-line es/no-array-isarray -- safe\nvar isArray = Array.isArray;\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = $Object.isExtensible;\n// eslint-disable-next-line es/no-object-isfrozen -- safe\nvar isFrozen = $Object.isFrozen;\n// eslint-disable-next-line es/no-object-issealed -- safe\nvar isSealed = $Object.isSealed;\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar freeze = $Object.freeze;\n// eslint-disable-next-line es/no-object-seal -- safe\nvar seal = $Object.seal;\n\nvar FROZEN = {};\nvar SEALED = {};\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n  return function WeakMap() {\n    return init(this, arguments.length ? arguments[0] : undefined);\n  };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\nvar WeakMapPrototype = $WeakMap.prototype;\nvar nativeSet = uncurryThis(WeakMapPrototype.set);\n\n// Chakra Edge bug: adding frozen arrays to WeakMap unfreeze them\nvar hasMSEdgeFreezingBug = function () {\n  return FREEZING && fails(function () {\n    var frozenArray = freeze([]);\n    nativeSet(new $WeakMap(), frozenArray, 1);\n    return !isFrozen(frozenArray);\n  });\n};\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP) if (IS_IE11) {\n  InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n  InternalMetadataModule.enable();\n  var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n  var nativeHas = uncurryThis(WeakMapPrototype.has);\n  var nativeGet = uncurryThis(WeakMapPrototype.get);\n  defineBuiltIns(WeakMapPrototype, {\n    'delete': function (key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeDelete(this, key) || state.frozen['delete'](key);\n      } return nativeDelete(this, key);\n    },\n    has: function has(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas(this, key) || state.frozen.has(key);\n      } return nativeHas(this, key);\n    },\n    get: function get(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\n      } return nativeGet(this, key);\n    },\n    set: function set(key, value) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\n      } else nativeSet(this, key, value);\n      return this;\n    }\n  });\n// Chakra Edge frozen keys fix\n} else if (hasMSEdgeFreezingBug()) {\n  defineBuiltIns(WeakMapPrototype, {\n    set: function set(key, value) {\n      var arrayIntegrityLevel;\n      if (isArray(key)) {\n        if (isFrozen(key)) arrayIntegrityLevel = FROZEN;\n        else if (isSealed(key)) arrayIntegrityLevel = SEALED;\n      }\n      nativeSet(this, key, value);\n      if (arrayIntegrityLevel === FROZEN) freeze(key);\n      if (arrayIntegrityLevel === SEALED) seal(key);\n      return this;\n    }\n  });\n}\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.weak-map.constructor');\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\n\n// `WeakSet` constructor\n// https://tc39.es/ecma262/#sec-weakset-constructor\ncollection('WeakSet', function (init) {\n  return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionWeak);\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.weak-set.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar toString = require('../internals/to-string');\nvar hasOwn = require('../internals/has-own-property');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar ctoi = require('../internals/base64-map').ctoi;\n\nvar disallowed = /[^\\d+/a-z]/i;\nvar whitespaces = /[\\t\\n\\f\\r ]+/g;\nvar finalEq = /[=]{1,2}$/;\n\nvar $atob = getBuiltIn('atob');\nvar fromCharCode = String.fromCharCode;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar exec = uncurryThis(disallowed.exec);\n\nvar NO_SPACES_IGNORE = fails(function () {\n  return $atob(' ') !== '';\n});\n\nvar NO_ENCODING_CHECK = !fails(function () {\n  $atob('a');\n});\n\nvar NO_ARG_RECEIVING_CHECK = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && !fails(function () {\n  $atob();\n});\n\nvar WRONG_ARITY = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && $atob.length !== 1;\n\n// `atob` method\n// https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob\n$({ global: true, bind: true, enumerable: true, forced: NO_SPACES_IGNORE || NO_ENCODING_CHECK || NO_ARG_RECEIVING_CHECK || WRONG_ARITY }, {\n  atob: function atob(data) {\n    validateArgumentsLength(arguments.length, 1);\n    // `webpack` dev server bug on IE global methods - use call(fn, global, ...)\n    if (NO_ARG_RECEIVING_CHECK || WRONG_ARITY) return call($atob, global, data);\n    var string = replace(toString(data), whitespaces, '');\n    var output = '';\n    var position = 0;\n    var bc = 0;\n    var chr, bs;\n    if (string.length % 4 === 0) {\n      string = replace(string, finalEq, '');\n    }\n    if (string.length % 4 === 1 || exec(disallowed, string)) {\n      throw new (getBuiltIn('DOMException'))('The string is not correctly encoded', 'InvalidCharacterError');\n    }\n    while (chr = charAt(string, position++)) {\n      if (hasOwn(ctoi, chr)) {\n        bs = bc % 4 ? bs * 64 + ctoi[chr] : ctoi[chr];\n        if (bc++ % 4) output += fromCharCode(255 & bs >> (-2 * bc & 6));\n      }\n    } return output;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar itoc = require('../internals/base64-map').itoc;\n\nvar $btoa = getBuiltIn('btoa');\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\nvar NO_ARG_RECEIVING_CHECK = !!$btoa && !fails(function () {\n  $btoa();\n});\n\nvar WRONG_ARG_CONVERSION = !!$btoa && fails(function () {\n  return $btoa(null) !== 'bnVsbA==';\n});\n\nvar WRONG_ARITY = !!$btoa && $btoa.length !== 1;\n\n// `btoa` method\n// https://html.spec.whatwg.org/multipage/webappapis.html#dom-btoa\n$({ global: true, bind: true, enumerable: true, forced: NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY }, {\n  btoa: function btoa(data) {\n    validateArgumentsLength(arguments.length, 1);\n    // `webpack` dev server bug on IE global methods - use call(fn, global, ...)\n    if (NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY) return call($btoa, global, toString(data));\n    var string = toString(data);\n    var output = '';\n    var position = 0;\n    var map = itoc;\n    var block, charCode;\n    while (charAt(string, position) || (map = '=', position % 1)) {\n      charCode = charCodeAt(string, position += 3 / 4);\n      if (charCode > 0xFF) {\n        throw new (getBuiltIn('DOMException'))('The string contains characters outside of the Latin1 range', 'InvalidCharacterError');\n      }\n      block = block << 8 | charCode;\n      output += charAt(map, 63 & block >> 8 - position % 1 * 8);\n    } return output;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n  clearImmediate: clearImmediate\n});\n","'use strict';\nvar global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  if (DOMIterables[COLLECTION_NAME]) {\n    handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n  }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","'use strict';\nvar global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","'use strict';\nvar $ = require('../internals/export');\nvar tryNodeRequire = require('../internals/try-node-require');\nvar getBuiltIn = require('../internals/get-built-in');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar errorToString = require('../internals/error-to-string');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar InternalStateModule = require('../internals/internal-state');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar DATA_CLONE_ERR = 'DATA_CLONE_ERR';\nvar Error = getBuiltIn('Error');\n// NodeJS < 17.0 does not expose `DOMException` to global\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () {\n  try {\n    // NodeJS < 15.0 does not expose `MessageChannel` to global\n    var MessageChannel = getBuiltIn('MessageChannel') || tryNodeRequire('worker_threads').MessageChannel;\n    // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe\n    new MessageChannel().port1.postMessage(new WeakMap());\n  } catch (error) {\n    if (error.name === DATA_CLONE_ERR && error.code === 25) return error.constructor;\n  }\n})();\nvar NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype;\nvar ErrorPrototype = Error.prototype;\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION);\nvar HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\n\nvar codeFor = function (name) {\n  return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0;\n};\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var code = codeFor(name);\n  setInternalState(this, {\n    type: DOM_EXCEPTION,\n    name: name,\n    message: message,\n    code: code\n  });\n  if (!DESCRIPTORS) {\n    this.name = name;\n    this.message = message;\n    this.code = code;\n  }\n  if (HAS_STACK) {\n    var error = Error(message);\n    error.name = DOM_EXCEPTION;\n    defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  }\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype);\n\nvar createGetterDescriptor = function (get) {\n  return { enumerable: true, configurable: true, get: get };\n};\n\nvar getterFor = function (key) {\n  return createGetterDescriptor(function () {\n    return getInternalState(this)[key];\n  });\n};\n\nif (DESCRIPTORS) {\n  // `DOMException.prototype.code` getter\n  defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code'));\n  // `DOMException.prototype.message` getter\n  defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message'));\n  // `DOMException.prototype.name` getter\n  defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name'));\n}\n\ndefineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException));\n\n// FF36- DOMException is a function, but can't be constructed\nvar INCORRECT_CONSTRUCTOR = fails(function () {\n  return !(new NativeDOMException() instanceof Error);\n});\n\n// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs\nvar INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () {\n  return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1';\n});\n\n// Deno 1.6.3- DOMException.prototype.code just missed\nvar INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () {\n  return new NativeDOMException(1, 'DataCloneError').code !== 25;\n});\n\n// Deno 1.6.3- DOMException constants just missed\nvar MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR\n  || NativeDOMException[DATA_CLONE_ERR] !== 25\n  || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25;\n\nvar FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR;\n\n// `DOMException` constructor\n// https://webidl.spec.whatwg.org/#idl-DOMException\n$({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {\n  defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString);\n}\n\nif (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {\n  defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {\n    return codeFor(anObject(this).name);\n  }));\n}\n\n// `DOMException` constants\nfor (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n  var constant = DOMExceptionConstants[key];\n  var constantName = constant.s;\n  var descriptor = createPropertyDescriptor(6, constant.c);\n  if (!hasOwn(PolyfilledDOMException, constantName)) {\n    defineProperty(PolyfilledDOMException, constantName, descriptor);\n  }\n  if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) {\n    defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor);\n  }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var that = new NativeDOMException(message, name);\n  var error = Error(message);\n  error.name = DOM_EXCEPTION;\n  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  inheritIfRequired(that, this, $DOMException);\n  return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n  if (!IS_PURE) {\n    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n  }\n\n  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n    var constant = DOMExceptionConstants[key];\n    var constantName = constant.s;\n    if (!hasOwn(PolyfilledDOMException, constantName)) {\n      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n    }\n  }\n}\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\nvar DOM_EXCEPTION = 'DOMException';\n\n// `DOMException.prototype[@@toStringTag]` property\nsetToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION);\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar microtask = require('../internals/microtask');\nvar aCallable = require('../internals/a-callable');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar process = global.process;\n\n// `queueMicrotask` method\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask\n$({ global: true, enumerable: true, dontCallGetSet: true }, {\n  queueMicrotask: function queueMicrotask(fn) {\n    validateArgumentsLength(arguments.length, 1);\n    aCallable(fn);\n    var domain = IS_NODE && process.domain;\n    microtask(domain ? domain.bind(fn) : fn);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar INCORRECT_VALUE = global.self !== global;\n\n// `self` getter\n// https://html.spec.whatwg.org/multipage/window-object.html#dom-self\ntry {\n  if (DESCRIPTORS) {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    var descriptor = Object.getOwnPropertyDescriptor(global, 'self');\n    // some engines have `self`, but with incorrect descriptor\n    // https://github.com/denoland/deno/issues/15765\n    if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {\n      defineBuiltInAccessor(global, 'self', {\n        get: function self() {\n          return global;\n        },\n        set: function self(value) {\n          if (this !== global) throw $TypeError('Illegal invocation');\n          defineProperty(global, 'self', {\n            value: value,\n            writable: true,\n            configurable: true,\n            enumerable: true\n          });\n        },\n        configurable: true,\n        enumerable: true\n      });\n    }\n  } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {\n    self: global\n  });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = global.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n  setImmediate: setImmediate\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar schedulersFix = require('../internals/schedulers-fix');\n\nvar setInterval = schedulersFix(global.setInterval, true);\n\n// Bun / IE9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: global.setInterval !== setInterval }, {\n  setInterval: setInterval\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar schedulersFix = require('../internals/schedulers-fix');\n\nvar setTimeout = schedulersFix(global.setTimeout, true);\n\n// Bun / IE9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {\n  setTimeout: setTimeout\n});\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltin = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar uid = require('../internals/uid');\nvar isCallable = require('../internals/is-callable');\nvar isConstructor = require('../internals/is-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar iterate = require('../internals/iterate');\nvar anObject = require('../internals/an-object');\nvar classof = require('../internals/classof');\nvar hasOwn = require('../internals/has-own-property');\nvar createProperty = require('../internals/create-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar MapHelpers = require('../internals/map-helpers');\nvar SetHelpers = require('../internals/set-helpers');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\nvar PROPER_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar Object = global.Object;\nvar Array = global.Array;\nvar Date = global.Date;\nvar Error = global.Error;\nvar EvalError = global.EvalError;\nvar RangeError = global.RangeError;\nvar ReferenceError = global.ReferenceError;\nvar SyntaxError = global.SyntaxError;\nvar TypeError = global.TypeError;\nvar URIError = global.URIError;\nvar PerformanceMark = global.PerformanceMark;\nvar WebAssembly = global.WebAssembly;\nvar CompileError = WebAssembly && WebAssembly.CompileError || Error;\nvar LinkError = WebAssembly && WebAssembly.LinkError || Error;\nvar RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error;\nvar DOMException = getBuiltin('DOMException');\nvar Map = MapHelpers.Map;\nvar mapHas = MapHelpers.has;\nvar mapGet = MapHelpers.get;\nvar mapSet = MapHelpers.set;\nvar Set = SetHelpers.Set;\nvar setAdd = SetHelpers.add;\nvar objectKeys = getBuiltin('Object', 'keys');\nvar push = uncurryThis([].push);\nvar thisBooleanValue = uncurryThis(true.valueOf);\nvar thisNumberValue = uncurryThis(1.0.valueOf);\nvar thisStringValue = uncurryThis(''.valueOf);\nvar thisTimeValue = uncurryThis(Date.prototype.getTime);\nvar PERFORMANCE_MARK = uid('structuredClone');\nvar DATA_CLONE_ERROR = 'DataCloneError';\nvar TRANSFERRING = 'Transferring';\n\nvar checkBasicSemantic = function (structuredCloneImplementation) {\n  return !fails(function () {\n    var set1 = new global.Set([7]);\n    var set2 = structuredCloneImplementation(set1);\n    var number = structuredCloneImplementation(Object(7));\n    return set2 === set1 || !set2.has(7) || typeof number != 'object' || +number !== 7;\n  }) && structuredCloneImplementation;\n};\n\nvar checkErrorsCloning = function (structuredCloneImplementation, $Error) {\n  return !fails(function () {\n    var error = new $Error();\n    var test = structuredCloneImplementation({ a: error, b: error });\n    return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack);\n  });\n};\n\n// https://github.com/whatwg/html/pull/5749\nvar checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {\n  return !fails(function () {\n    var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));\n    return test.name !== 'AggregateError' || test.errors[0] !== 1 || test.message !== PERFORMANCE_MARK || test.cause !== 3;\n  });\n};\n\n// FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+\n// FF<103 and Safari implementations can't clone errors\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\n// FF103 can clone errors, but `.stack` of clone is an empty string\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1778762\n// FF104+ fixed it on usual errors, but not on DOMExceptions\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1777321\n// Chrome <102 returns `null` if cloned object contains multiple references to one error\n// https://bugs.chromium.org/p/v8/issues/detail?id=12542\n// NodeJS implementation can't clone DOMExceptions\n// https://github.com/nodejs/node/issues/41038\n// only FF103+ supports new (html/5749) error cloning semantic\nvar nativeStructuredClone = global.structuredClone;\n\nvar FORCED_REPLACEMENT = IS_PURE\n  || !checkErrorsCloning(nativeStructuredClone, Error)\n  || !checkErrorsCloning(nativeStructuredClone, DOMException)\n  || !checkNewErrorsCloningSemantic(nativeStructuredClone);\n\n// Chrome 82+, Safari 14.1+, Deno 1.11+\n// Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException`\n// Chrome returns `null` if cloned object contains multiple references to one error\n// Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround\n// Safari implementation can't clone errors\n// Deno 1.2-1.10 implementations too naive\n// NodeJS 16.0+ does not have `PerformanceMark` constructor\n// NodeJS <17.2 structured cloning implementation from `performance.mark` is too naive\n// and can't clone, for example, `RegExp` or some boxed primitives\n// https://github.com/nodejs/node/issues/40840\n// no one of those implementations supports new (html/5749) error cloning semantic\nvar structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {\n  return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;\n});\n\nvar nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;\n\nvar throwUncloneable = function (type) {\n  throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR);\n};\n\nvar throwUnpolyfillable = function (type, action) {\n  throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR);\n};\n\nvar tryNativeRestrictedStructuredClone = function (value, type) {\n  if (!nativeRestrictedStructuredClone) throwUnpolyfillable(type);\n  return nativeRestrictedStructuredClone(value);\n};\n\nvar createDataTransfer = function () {\n  var dataTransfer;\n  try {\n    dataTransfer = new global.DataTransfer();\n  } catch (error) {\n    try {\n      dataTransfer = new global.ClipboardEvent('').clipboardData;\n    } catch (error2) { /* empty */ }\n  }\n  return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;\n};\n\nvar cloneBuffer = function (value, map, $type) {\n  if (mapHas(map, value)) return mapGet(map, value);\n\n  var type = $type || classof(value);\n  var clone, length, options, source, target, i;\n\n  if (type === 'SharedArrayBuffer') {\n    if (nativeRestrictedStructuredClone) clone = nativeRestrictedStructuredClone(value);\n    // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original\n    else clone = value;\n  } else {\n    var DataView = global.DataView;\n\n    // `ArrayBuffer#slice` is not available in IE10\n    // `ArrayBuffer#slice` and `DataView` are not available in old FF\n    if (!DataView && typeof value.slice != 'function') throwUnpolyfillable('ArrayBuffer');\n    // detached buffers throws in `DataView` and `.slice`\n    try {\n      if (typeof value.slice == 'function' && !value.resizable) {\n        clone = value.slice(0);\n      } else {\n        length = value.byteLength;\n        options = 'maxByteLength' in value ? { maxByteLength: value.maxByteLength } : undefined;\n        clone = new ArrayBuffer(length, options);\n        source = new DataView(value);\n        target = new DataView(clone);\n        for (i = 0; i < length; i++) {\n          target.setUint8(i, source.getUint8(i));\n        }\n      }\n    } catch (error) {\n      throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR);\n    }\n  }\n\n  mapSet(map, value, clone);\n\n  return clone;\n};\n\nvar cloneView = function (value, type, offset, length, map) {\n  var C = global[type];\n  // in some old engines like Safari 9, typeof C is 'object'\n  // on Uint8ClampedArray or some other constructors\n  if (!isObject(C)) throwUnpolyfillable(type);\n  return new C(cloneBuffer(value.buffer, map), offset, length);\n};\n\nvar Placeholder = function (object, type, metadata) {\n  this.object = object;\n  this.type = type;\n  this.metadata = metadata;\n};\n\nvar structuredCloneInternal = function (value, map, transferredBuffers) {\n  if (isSymbol(value)) throwUncloneable('Symbol');\n  if (!isObject(value)) return value;\n  // effectively preserves circular references\n  if (map) {\n    if (mapHas(map, value)) return mapGet(map, value);\n  } else map = new Map();\n\n  var type = classof(value);\n  var C, name, cloned, dataTransfer, i, length, keys, key;\n\n  switch (type) {\n    case 'Array':\n      cloned = Array(lengthOfArrayLike(value));\n      break;\n    case 'Object':\n      cloned = {};\n      break;\n    case 'Map':\n      cloned = new Map();\n      break;\n    case 'Set':\n      cloned = new Set();\n      break;\n    case 'RegExp':\n      // in this block because of a Safari 14.1 bug\n      // old FF does not clone regexes passed to the constructor, so get the source and flags directly\n      cloned = new RegExp(value.source, getRegExpFlags(value));\n      break;\n    case 'Error':\n      name = value.name;\n      switch (name) {\n        case 'AggregateError':\n          cloned = getBuiltin('AggregateError')([]);\n          break;\n        case 'EvalError':\n          cloned = EvalError();\n          break;\n        case 'RangeError':\n          cloned = RangeError();\n          break;\n        case 'ReferenceError':\n          cloned = ReferenceError();\n          break;\n        case 'SyntaxError':\n          cloned = SyntaxError();\n          break;\n        case 'TypeError':\n          cloned = TypeError();\n          break;\n        case 'URIError':\n          cloned = URIError();\n          break;\n        case 'CompileError':\n          cloned = CompileError();\n          break;\n        case 'LinkError':\n          cloned = LinkError();\n          break;\n        case 'RuntimeError':\n          cloned = RuntimeError();\n          break;\n        default:\n          cloned = Error();\n      }\n      break;\n    case 'DOMException':\n      cloned = new DOMException(value.message, value.name);\n      break;\n    case 'ArrayBuffer':\n    case 'SharedArrayBuffer':\n      cloned = transferredBuffers\n        ? new Placeholder(value, type)\n        : cloneBuffer(value, map, type);\n      break;\n    case 'DataView':\n    case 'Int8Array':\n    case 'Uint8Array':\n    case 'Uint8ClampedArray':\n    case 'Int16Array':\n    case 'Uint16Array':\n    case 'Int32Array':\n    case 'Uint32Array':\n    case 'Float16Array':\n    case 'Float32Array':\n    case 'Float64Array':\n    case 'BigInt64Array':\n    case 'BigUint64Array':\n      length = type === 'DataView' ? value.byteLength : value.length;\n      cloned = transferredBuffers\n        ? new Placeholder(value, type, { offset: value.byteOffset, length: length })\n        : cloneView(value, type, value.byteOffset, length, map);\n      break;\n    case 'DOMQuad':\n      try {\n        cloned = new DOMQuad(\n          structuredCloneInternal(value.p1, map, transferredBuffers),\n          structuredCloneInternal(value.p2, map, transferredBuffers),\n          structuredCloneInternal(value.p3, map, transferredBuffers),\n          structuredCloneInternal(value.p4, map, transferredBuffers)\n        );\n      } catch (error) {\n        cloned = tryNativeRestrictedStructuredClone(value, type);\n      }\n      break;\n    case 'File':\n      if (nativeRestrictedStructuredClone) try {\n        cloned = nativeRestrictedStructuredClone(value);\n        // NodeJS 20.0.0 bug, https://github.com/nodejs/node/issues/47612\n        if (classof(cloned) !== type) cloned = undefined;\n      } catch (error) { /* empty */ }\n      if (!cloned) try {\n        cloned = new File([value], value.name, value);\n      } catch (error) { /* empty */ }\n      if (!cloned) throwUnpolyfillable(type);\n      break;\n    case 'FileList':\n      dataTransfer = createDataTransfer();\n      if (dataTransfer) {\n        for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {\n          dataTransfer.items.add(structuredCloneInternal(value[i], map, transferredBuffers));\n        }\n        cloned = dataTransfer.files;\n      } else cloned = tryNativeRestrictedStructuredClone(value, type);\n      break;\n    case 'ImageData':\n      // Safari 9 ImageData is a constructor, but typeof ImageData is 'object'\n      try {\n        cloned = new ImageData(\n          structuredCloneInternal(value.data, map, transferredBuffers),\n          value.width,\n          value.height,\n          { colorSpace: value.colorSpace }\n        );\n      } catch (error) {\n        cloned = tryNativeRestrictedStructuredClone(value, type);\n      } break;\n    default:\n      if (nativeRestrictedStructuredClone) {\n        cloned = nativeRestrictedStructuredClone(value);\n      } else switch (type) {\n        case 'BigInt':\n          // can be a 3rd party polyfill\n          cloned = Object(value.valueOf());\n          break;\n        case 'Boolean':\n          cloned = Object(thisBooleanValue(value));\n          break;\n        case 'Number':\n          cloned = Object(thisNumberValue(value));\n          break;\n        case 'String':\n          cloned = Object(thisStringValue(value));\n          break;\n        case 'Date':\n          cloned = new Date(thisTimeValue(value));\n          break;\n        case 'Blob':\n          try {\n            cloned = value.slice(0, value.size, value.type);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMPoint':\n        case 'DOMPointReadOnly':\n          C = global[type];\n          try {\n            cloned = C.fromPoint\n              ? C.fromPoint(value)\n              : new C(value.x, value.y, value.z, value.w);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMRect':\n        case 'DOMRectReadOnly':\n          C = global[type];\n          try {\n            cloned = C.fromRect\n              ? C.fromRect(value)\n              : new C(value.x, value.y, value.width, value.height);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMMatrix':\n        case 'DOMMatrixReadOnly':\n          C = global[type];\n          try {\n            cloned = C.fromMatrix\n              ? C.fromMatrix(value)\n              : new C(value);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'AudioData':\n        case 'VideoFrame':\n          if (!isCallable(value.clone)) throwUnpolyfillable(type);\n          try {\n            cloned = value.clone();\n          } catch (error) {\n            throwUncloneable(type);\n          } break;\n        case 'CropTarget':\n        case 'CryptoKey':\n        case 'FileSystemDirectoryHandle':\n        case 'FileSystemFileHandle':\n        case 'FileSystemHandle':\n        case 'GPUCompilationInfo':\n        case 'GPUCompilationMessage':\n        case 'ImageBitmap':\n        case 'RTCCertificate':\n        case 'WebAssembly.Module':\n          throwUnpolyfillable(type);\n          // break omitted\n        default:\n          throwUncloneable(type);\n      }\n  }\n\n  mapSet(map, value, cloned);\n\n  switch (type) {\n    case 'Array':\n    case 'Object':\n      keys = objectKeys(value);\n      for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n        key = keys[i];\n        createProperty(cloned, key, structuredCloneInternal(value[key], map, transferredBuffers));\n      } break;\n    case 'Map':\n      value.forEach(function (v, k) {\n        mapSet(cloned, structuredCloneInternal(k, map, transferredBuffers), structuredCloneInternal(v, map, transferredBuffers));\n      });\n      break;\n    case 'Set':\n      value.forEach(function (v) {\n        setAdd(cloned, structuredCloneInternal(v, map, transferredBuffers));\n      });\n      break;\n    case 'Error':\n      createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map, transferredBuffers));\n      if (hasOwn(value, 'cause')) {\n        createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map, transferredBuffers));\n      }\n      if (name === 'AggregateError') {\n        cloned.errors = structuredCloneInternal(value.errors, map, transferredBuffers);\n      } // break omitted\n    case 'DOMException':\n      if (ERROR_STACK_INSTALLABLE) {\n        createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map, transferredBuffers));\n      }\n  }\n\n  return cloned;\n};\n\nvar replacePlaceholders = function (value, map) {\n  if (!isObject(value)) return value;\n  if (mapHas(map, value)) return mapGet(map, value);\n\n  var type, object, metadata, i, length, keys, key, replacement;\n\n  if (value instanceof Placeholder) {\n    type = value.type;\n    object = value.object;\n\n    switch (type) {\n      case 'ArrayBuffer':\n      case 'SharedArrayBuffer':\n        replacement = cloneBuffer(object, map, type);\n        break;\n      case 'DataView':\n      case 'Int8Array':\n      case 'Uint8Array':\n      case 'Uint8ClampedArray':\n      case 'Int16Array':\n      case 'Uint16Array':\n      case 'Int32Array':\n      case 'Uint32Array':\n      case 'Float16Array':\n      case 'Float32Array':\n      case 'Float64Array':\n      case 'BigInt64Array':\n      case 'BigUint64Array':\n        metadata = value.metadata;\n        replacement = cloneView(object, type, metadata.offset, metadata.length, map);\n    }\n  } else switch (classof(value)) {\n    case 'Array':\n    case 'Object':\n      keys = objectKeys(value);\n      for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n        key = keys[i];\n        value[key] = replacePlaceholders(value[key], map);\n      } break;\n    case 'Map':\n      replacement = new Map();\n      value.forEach(function (v, k) {\n        mapSet(replacement, replacePlaceholders(k, map), replacePlaceholders(v, map));\n      });\n      break;\n    case 'Set':\n      replacement = new Set();\n      value.forEach(function (v) {\n        setAdd(replacement, replacePlaceholders(v, map));\n      });\n      break;\n    case 'Error':\n      value.message = replacePlaceholders(value.message, map);\n      if (hasOwn(value, 'cause')) {\n        value.cause = replacePlaceholders(value.cause, map);\n      }\n      if (value.name === 'AggregateError') {\n        value.errors = replacePlaceholders(value.errors, map);\n      } // break omitted\n    case 'DOMException':\n      if (ERROR_STACK_INSTALLABLE) {\n        value.stack = replacePlaceholders(value.stack, map);\n      }\n  }\n\n  mapSet(map, value, replacement || value);\n\n  return replacement || value;\n};\n\nvar tryToTransfer = function (rawTransfer, map) {\n  if (!isObject(rawTransfer)) throw TypeError('Transfer option cannot be converted to a sequence');\n\n  var transfer = [];\n\n  iterate(rawTransfer, function (value) {\n    push(transfer, anObject(value));\n  });\n\n  var i = 0;\n  var length = lengthOfArrayLike(transfer);\n  var buffers = [];\n  var value, type, C, transferred, canvas, context;\n\n  while (i < length) {\n    value = transfer[i++];\n\n    type = classof(value);\n\n    if (type === 'ArrayBuffer') {\n      push(buffers, value);\n      continue;\n    }\n\n    if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n\n    if (PROPER_TRANSFER) {\n      transferred = nativeStructuredClone(value, { transfer: [value] });\n    } else switch (type) {\n      case 'ImageBitmap':\n        C = global.OffscreenCanvas;\n        if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);\n        try {\n          canvas = new C(value.width, value.height);\n          context = canvas.getContext('bitmaprenderer');\n          context.transferFromImageBitmap(value);\n          transferred = canvas.transferToImageBitmap();\n        } catch (error) { /* empty */ }\n        break;\n      case 'AudioData':\n      case 'VideoFrame':\n        if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING);\n        try {\n          transferred = value.clone();\n          value.close();\n        } catch (error) { /* empty */ }\n        break;\n      case 'MediaSourceHandle':\n      case 'MessagePort':\n      case 'OffscreenCanvas':\n      case 'ReadableStream':\n      case 'TransformStream':\n      case 'WritableStream':\n        throwUnpolyfillable(type, TRANSFERRING);\n    }\n\n    if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR);\n\n    mapSet(map, value, transferred);\n  }\n\n  return buffers;\n};\n\nvar tryToTransferBuffers = function (transfer, map) {\n  var i = 0;\n  var length = lengthOfArrayLike(transfer);\n  var value, transferred;\n\n  while (i < length) {\n    value = transfer[i++];\n\n    if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n\n    if (PROPER_TRANSFER) {\n      transferred = nativeStructuredClone(value, { transfer: [value] });\n    } else {\n      if (!isCallable(value.transfer)) throwUnpolyfillable('ArrayBuffer', TRANSFERRING);\n      transferred = value.transfer();\n    }\n\n    mapSet(map, value, transferred);\n  }\n};\n\n// `structuredClone` method\n// https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone\n$({ global: true, enumerable: true, sham: !PROPER_TRANSFER, forced: FORCED_REPLACEMENT }, {\n  structuredClone: function structuredClone(value /* , { transfer } */) {\n    var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;\n    var transfer = options ? options.transfer : undefined;\n    var transferredBuffers = false;\n    var map, buffers;\n\n    if (transfer !== undefined) {\n      map = new Map();\n      buffers = tryToTransfer(transfer, map);\n      transferredBuffers = !!lengthOfArrayLike(buffers);\n    }\n\n    var clone = structuredCloneInternal(value, map, transferredBuffers);\n\n    // since of an issue with cloning views of transferred buffers, we a forced to transfer / clone them in 2 steps\n    // https://github.com/zloirock/core-js/issues/1265\n    if (transferredBuffers) {\n      map = new Map();\n      tryToTransferBuffers(transfer, map);\n      clone = replacePlaceholders(clone, map);\n    }\n\n    return clone;\n  }\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.set-interval');\nrequire('../modules/web.set-timeout');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n  if (!DESCRIPTORS) return global[name];\n  var descriptor = getOwnPropertyDescriptor(global, name);\n  return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n  try {\n    return decodeURIComponent(sequence);\n  } catch (error) {\n    return sequence;\n  }\n};\n\nvar deserialize = function (it) {\n  var result = replace(it, plus, ' ');\n  var bytes = 4;\n  try {\n    return decodeURIComponent(result);\n  } catch (error) {\n    while (bytes) {\n      result = replace(result, percentSequence(bytes--), percentDecode);\n    }\n    return result;\n  }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+'\n};\n\nvar replacer = function (match) {\n  return replacements[match];\n};\n\nvar serialize = function (it) {\n  return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n  setInternalState(this, {\n    type: URL_SEARCH_PARAMS_ITERATOR,\n    iterator: getIterator(getInternalParamsState(params).entries),\n    kind: kind\n  });\n}, 'Iterator', function next() {\n  var state = getInternalIteratorState(this);\n  var kind = state.kind;\n  var step = state.iterator.next();\n  var entry = step.value;\n  if (!step.done) {\n    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n  } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n  this.entries = [];\n  this.url = null;\n\n  if (init !== undefined) {\n    if (isObject(init)) this.parseObject(init);\n    else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n  }\n};\n\nURLSearchParamsState.prototype = {\n  type: URL_SEARCH_PARAMS,\n  bindURL: function (url) {\n    this.url = url;\n    this.update();\n  },\n  parseObject: function (object) {\n    var iteratorMethod = getIteratorMethod(object);\n    var iterator, next, step, entryIterator, entryNext, first, second;\n\n    if (iteratorMethod) {\n      iterator = getIterator(object, iteratorMethod);\n      next = iterator.next;\n      while (!(step = call(next, iterator)).done) {\n        entryIterator = getIterator(anObject(step.value));\n        entryNext = entryIterator.next;\n        if (\n          (first = call(entryNext, entryIterator)).done ||\n          (second = call(entryNext, entryIterator)).done ||\n          !call(entryNext, entryIterator).done\n        ) throw TypeError('Expected sequence with length 2');\n        push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n      }\n    } else for (var key in object) if (hasOwn(object, key)) {\n      push(this.entries, { key: key, value: $toString(object[key]) });\n    }\n  },\n  parseQuery: function (query) {\n    if (query) {\n      var attributes = split(query, '&');\n      var index = 0;\n      var attribute, entry;\n      while (index < attributes.length) {\n        attribute = attributes[index++];\n        if (attribute.length) {\n          entry = split(attribute, '=');\n          push(this.entries, {\n            key: deserialize(shift(entry)),\n            value: deserialize(join(entry, '='))\n          });\n        }\n      }\n    }\n  },\n  serialize: function () {\n    var entries = this.entries;\n    var result = [];\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      push(result, serialize(entry.key) + '=' + serialize(entry.value));\n    } return join(result, '&');\n  },\n  update: function () {\n    this.entries.length = 0;\n    this.parseQuery(this.url.query);\n  },\n  updateURL: function () {\n    if (this.url) this.url.update();\n  }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n  anInstance(this, URLSearchParamsPrototype);\n  var init = arguments.length > 0 ? arguments[0] : undefined;\n  var state = setInternalState(this, new URLSearchParamsState(init));\n  if (!DESCRIPTORS) this.size = state.entries.length;\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.append` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    var state = getInternalParamsState(this);\n    validateArgumentsLength(arguments.length, 2);\n    push(state.entries, { key: $toString(name), value: $toString(value) });\n    if (!DESCRIPTORS) this.length++;\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name /* , value */) {\n    var state = getInternalParamsState(this);\n    var length = validateArgumentsLength(arguments.length, 1);\n    var entries = state.entries;\n    var key = $toString(name);\n    var $value = length < 2 ? undefined : arguments[1];\n    var value = $value === undefined ? $value : $toString($value);\n    var index = 0;\n    while (index < entries.length) {\n      var entry = entries[index];\n      if (entry.key === key && (value === undefined || entry.value === value)) {\n        splice(entries, index, 1);\n        if (value !== undefined) break;\n      } else index++;\n    }\n    if (!DESCRIPTORS) this.size = entries.length;\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    var entries = getInternalParamsState(this).entries;\n    validateArgumentsLength(arguments.length, 1);\n    var key = $toString(name);\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) return entries[index].value;\n    }\n    return null;\n  },\n  // `URLSearchParams.prototype.getAll` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n  getAll: function getAll(name) {\n    var entries = getInternalParamsState(this).entries;\n    validateArgumentsLength(arguments.length, 1);\n    var key = $toString(name);\n    var result = [];\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) push(result, entries[index].value);\n    }\n    return result;\n  },\n  // `URLSearchParams.prototype.has` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n  has: function has(name /* , value */) {\n    var entries = getInternalParamsState(this).entries;\n    var length = validateArgumentsLength(arguments.length, 1);\n    var key = $toString(name);\n    var $value = length < 2 ? undefined : arguments[1];\n    var value = $value === undefined ? $value : $toString($value);\n    var index = 0;\n    while (index < entries.length) {\n      var entry = entries[index++];\n      if (entry.key === key && (value === undefined || entry.value === value)) return true;\n    }\n    return false;\n  },\n  // `URLSearchParams.prototype.set` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n  set: function set(name, value) {\n    var state = getInternalParamsState(this);\n    validateArgumentsLength(arguments.length, 1);\n    var entries = state.entries;\n    var found = false;\n    var key = $toString(name);\n    var val = $toString(value);\n    var index = 0;\n    var entry;\n    for (; index < entries.length; index++) {\n      entry = entries[index];\n      if (entry.key === key) {\n        if (found) splice(entries, index--, 1);\n        else {\n          found = true;\n          entry.value = val;\n        }\n      }\n    }\n    if (!found) push(entries, { key: key, value: val });\n    if (!DESCRIPTORS) this.size = entries.length;\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.sort` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n  sort: function sort() {\n    var state = getInternalParamsState(this);\n    arraySort(state.entries, function (a, b) {\n      return a.key > b.key ? 1 : -1;\n    });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.forEach` method\n  forEach: function forEach(callback /* , thisArg */) {\n    var entries = getInternalParamsState(this).entries;\n    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      boundFunction(entry.value, entry.key, this);\n    }\n  },\n  // `URLSearchParams.prototype.keys` method\n  keys: function keys() {\n    return new URLSearchParamsIterator(this, 'keys');\n  },\n  // `URLSearchParams.prototype.values` method\n  values: function values() {\n    return new URLSearchParamsIterator(this, 'values');\n  },\n  // `URLSearchParams.prototype.entries` method\n  entries: function entries() {\n    return new URLSearchParamsIterator(this, 'entries');\n  }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n  return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n  get: function size() {\n    return getInternalParamsState(this).entries.length;\n  },\n  configurable: true,\n  enumerable: true\n});\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n  URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n  var headersHas = uncurryThis(HeadersPrototype.has);\n  var headersSet = uncurryThis(HeadersPrototype.set);\n\n  var wrapRequestOptions = function (init) {\n    if (isObject(init)) {\n      var body = init.body;\n      var headers;\n      if (classof(body) === URL_SEARCH_PARAMS) {\n        headers = init.headers ? new Headers(init.headers) : new Headers();\n        if (!headersHas(headers, 'content-type')) {\n          headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n        return create(init, {\n          body: createPropertyDescriptor(0, $toString(body)),\n          headers: createPropertyDescriptor(0, headers)\n        });\n      }\n    } return init;\n  };\n\n  if (isCallable(nativeFetch)) {\n    $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n      fetch: function fetch(input /* , init */) {\n        return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n      }\n    });\n  }\n\n  if (isCallable(NativeRequest)) {\n    var RequestConstructor = function Request(input /* , init */) {\n      anInstance(this, RequestPrototype);\n      return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n    };\n\n    RequestPrototype.constructor = RequestConstructor;\n    RequestConstructor.prototype = RequestPrototype;\n\n    $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n      Request: RequestConstructor\n    });\n  }\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n    var length = arguments.length;\n    var $value = length < 2 ? undefined : arguments[1];\n    if (length && $value === undefined) return $delete(this, name);\n    var entries = [];\n    forEach(this, function (v, k) { // also validates `this`\n      push(entries, { key: k, value: v });\n    });\n    validateArgumentsLength(length, 1);\n    var key = toString(name);\n    var value = toString($value);\n    var index = 0;\n    var dindex = 0;\n    var found = false;\n    var entriesLength = entries.length;\n    var entry;\n    while (index < entriesLength) {\n      entry = entries[index++];\n      if (found || entry.key === key) {\n        found = true;\n        $delete(this, entry.key);\n      } else dindex++;\n    }\n    while (dindex < entriesLength) {\n      entry = entries[dindex++];\n      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n    }\n  }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n    var length = arguments.length;\n    var $value = length < 2 ? undefined : arguments[1];\n    if (length && $value === undefined) return $has(this, name);\n    var values = getAll(this, name); // also validates `this`\n    validateArgumentsLength(length, 1);\n    var value = toString($value);\n    var index = 0;\n    while (index < values.length) {\n      if (values[index++] === value) return true;\n    } return false;\n  }, { enumerable: true, unsafe: true });\n}\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n    get: function size() {\n      var count = 0;\n      forEach(this, function () { count++; });\n      return count;\n    },\n    configurable: true,\n    enumerable: true\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar fails = require('../internals/fails');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar toString = require('../internals/to-string');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\n\nvar URL = getBuiltIn('URL');\n\n// https://github.com/nodejs/node/issues/47505\n// https://github.com/denoland/deno/issues/18893\nvar THROWS_WITHOUT_ARGUMENTS = USE_NATIVE_URL && fails(function () {\n  URL.canParse();\n});\n\n// `URL.canParse` method\n// https://url.spec.whatwg.org/#dom-url-canparse\n$({ target: 'URL', stat: true, forced: !THROWS_WITHOUT_ARGUMENTS }, {\n  canParse: function canParse(url) {\n    var length = validateArgumentsLength(arguments.length, 1);\n    var urlString = toString(url);\n    var base = length < 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n    try {\n      return !!new URL(urlString, base);\n    } catch (error) {\n      return false;\n    }\n  }\n});\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice-simple');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+/;\nvar TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n  var parts = split(input, '.');\n  var partsLength, numbers, index, part, radix, number, ipv4;\n  if (parts.length && parts[parts.length - 1] === '') {\n    parts.length--;\n  }\n  partsLength = parts.length;\n  if (partsLength > 4) return input;\n  numbers = [];\n  for (index = 0; index < partsLength; index++) {\n    part = parts[index];\n    if (part === '') return input;\n    radix = 10;\n    if (part.length > 1 && charAt(part, 0) === '0') {\n      radix = exec(HEX_START, part) ? 16 : 8;\n      part = stringSlice(part, radix === 8 ? 1 : 2);\n    }\n    if (part === '') {\n      number = 0;\n    } else {\n      if (!exec(radix === 10 ? DEC : radix === 8 ? OCT : HEX, part)) return input;\n      number = parseInt(part, radix);\n    }\n    push(numbers, number);\n  }\n  for (index = 0; index < partsLength; index++) {\n    number = numbers[index];\n    if (index === partsLength - 1) {\n      if (number >= pow(256, 5 - partsLength)) return null;\n    } else if (number > 255) return null;\n  }\n  ipv4 = pop(numbers);\n  for (index = 0; index < numbers.length; index++) {\n    ipv4 += numbers[index] * pow(256, 3 - index);\n  }\n  return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n  var address = [0, 0, 0, 0, 0, 0, 0, 0];\n  var pieceIndex = 0;\n  var compress = null;\n  var pointer = 0;\n  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n  var chr = function () {\n    return charAt(input, pointer);\n  };\n\n  if (chr() === ':') {\n    if (charAt(input, 1) !== ':') return;\n    pointer += 2;\n    pieceIndex++;\n    compress = pieceIndex;\n  }\n  while (chr()) {\n    if (pieceIndex === 8) return;\n    if (chr() === ':') {\n      if (compress !== null) return;\n      pointer++;\n      pieceIndex++;\n      compress = pieceIndex;\n      continue;\n    }\n    value = length = 0;\n    while (length < 4 && exec(HEX, chr())) {\n      value = value * 16 + parseInt(chr(), 16);\n      pointer++;\n      length++;\n    }\n    if (chr() === '.') {\n      if (length === 0) return;\n      pointer -= length;\n      if (pieceIndex > 6) return;\n      numbersSeen = 0;\n      while (chr()) {\n        ipv4Piece = null;\n        if (numbersSeen > 0) {\n          if (chr() === '.' && numbersSeen < 4) pointer++;\n          else return;\n        }\n        if (!exec(DIGIT, chr())) return;\n        while (exec(DIGIT, chr())) {\n          number = parseInt(chr(), 10);\n          if (ipv4Piece === null) ipv4Piece = number;\n          else if (ipv4Piece === 0) return;\n          else ipv4Piece = ipv4Piece * 10 + number;\n          if (ipv4Piece > 255) return;\n          pointer++;\n        }\n        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n        numbersSeen++;\n        if (numbersSeen === 2 || numbersSeen === 4) pieceIndex++;\n      }\n      if (numbersSeen !== 4) return;\n      break;\n    } else if (chr() === ':') {\n      pointer++;\n      if (!chr()) return;\n    } else if (chr()) return;\n    address[pieceIndex++] = value;\n  }\n  if (compress !== null) {\n    swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex !== 0 && swaps > 0) {\n      swap = address[pieceIndex];\n      address[pieceIndex--] = address[compress + swaps - 1];\n      address[compress + --swaps] = swap;\n    }\n  } else if (pieceIndex !== 8) return;\n  return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n  var maxIndex = null;\n  var maxLength = 1;\n  var currStart = null;\n  var currLength = 0;\n  var index = 0;\n  for (; index < 8; index++) {\n    if (ipv6[index] !== 0) {\n      if (currLength > maxLength) {\n        maxIndex = currStart;\n        maxLength = currLength;\n      }\n      currStart = null;\n      currLength = 0;\n    } else {\n      if (currStart === null) currStart = index;\n      ++currLength;\n    }\n  }\n  if (currLength > maxLength) {\n    maxIndex = currStart;\n    maxLength = currLength;\n  }\n  return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\n  // ipv4\n  if (typeof host == 'number') {\n    result = [];\n    for (index = 0; index < 4; index++) {\n      unshift(result, host % 256);\n      host = floor(host / 256);\n    } return join(result, '.');\n  // ipv6\n  } else if (typeof host == 'object') {\n    result = '';\n    compress = findLongestZeroSequence(host);\n    for (index = 0; index < 8; index++) {\n      if (ignore0 && host[index] === 0) continue;\n      if (ignore0) ignore0 = false;\n      if (compress === index) {\n        result += index ? ':' : '::';\n        ignore0 = true;\n      } else {\n        result += numberToString(host[index], 16);\n        if (index < 7) result += ':';\n      }\n    }\n    return '[' + result + ']';\n  } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n  ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n  '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n  var code = codeAt(chr, 0);\n  return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n  var second;\n  return string.length === 2 && exec(ALPHA, charAt(string, 0))\n    && ((second = charAt(string, 1)) === ':' || (!normalized && second === '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n  var third;\n  return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n    string.length === 2 ||\n    ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n  );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n  return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n  segment = toLowerCase(segment);\n  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n  var urlString = $toString(url);\n  var baseState, failure, searchParams;\n  if (isBase) {\n    failure = this.parse(urlString);\n    if (failure) throw TypeError(failure);\n    this.searchParams = null;\n  } else {\n    if (base !== undefined) baseState = new URLState(base, true);\n    failure = this.parse(urlString, null, baseState);\n    if (failure) throw TypeError(failure);\n    searchParams = getInternalSearchParamsState(new URLSearchParams());\n    searchParams.bindURL(this);\n    this.searchParams = searchParams;\n  }\n};\n\nURLState.prototype = {\n  type: 'URL',\n  // https://url.spec.whatwg.org/#url-parsing\n  // eslint-disable-next-line max-statements -- TODO\n  parse: function (input, stateOverride, base) {\n    var url = this;\n    var state = stateOverride || SCHEME_START;\n    var pointer = 0;\n    var buffer = '';\n    var seenAt = false;\n    var seenBracket = false;\n    var seenPasswordToken = false;\n    var codePoints, chr, bufferCodePoints, failure;\n\n    input = $toString(input);\n\n    if (!stateOverride) {\n      url.scheme = '';\n      url.username = '';\n      url.password = '';\n      url.host = null;\n      url.port = null;\n      url.path = [];\n      url.query = null;\n      url.fragment = null;\n      url.cannotBeABaseURL = false;\n      input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');\n      input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');\n    }\n\n    input = replace(input, TAB_AND_NEW_LINE, '');\n\n    codePoints = arrayFrom(input);\n\n    while (pointer <= codePoints.length) {\n      chr = codePoints[pointer];\n      switch (state) {\n        case SCHEME_START:\n          if (chr && exec(ALPHA, chr)) {\n            buffer += toLowerCase(chr);\n            state = SCHEME;\n          } else if (!stateOverride) {\n            state = NO_SCHEME;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case SCHEME:\n          if (chr && (exec(ALPHANUMERIC, chr) || chr === '+' || chr === '-' || chr === '.')) {\n            buffer += toLowerCase(chr);\n          } else if (chr === ':') {\n            if (stateOverride && (\n              (url.isSpecial() !== hasOwn(specialSchemes, buffer)) ||\n              (buffer === 'file' && (url.includesCredentials() || url.port !== null)) ||\n              (url.scheme === 'file' && !url.host)\n            )) return;\n            url.scheme = buffer;\n            if (stateOverride) {\n              if (url.isSpecial() && specialSchemes[url.scheme] === url.port) url.port = null;\n              return;\n            }\n            buffer = '';\n            if (url.scheme === 'file') {\n              state = FILE;\n            } else if (url.isSpecial() && base && base.scheme === url.scheme) {\n              state = SPECIAL_RELATIVE_OR_AUTHORITY;\n            } else if (url.isSpecial()) {\n              state = SPECIAL_AUTHORITY_SLASHES;\n            } else if (codePoints[pointer + 1] === '/') {\n              state = PATH_OR_AUTHORITY;\n              pointer++;\n            } else {\n              url.cannotBeABaseURL = true;\n              push(url.path, '');\n              state = CANNOT_BE_A_BASE_URL_PATH;\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            state = NO_SCHEME;\n            pointer = 0;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case NO_SCHEME:\n          if (!base || (base.cannotBeABaseURL && chr !== '#')) return INVALID_SCHEME;\n          if (base.cannotBeABaseURL && chr === '#') {\n            url.scheme = base.scheme;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            url.cannotBeABaseURL = true;\n            state = FRAGMENT;\n            break;\n          }\n          state = base.scheme === 'file' ? FILE : RELATIVE;\n          continue;\n\n        case SPECIAL_RELATIVE_OR_AUTHORITY:\n          if (chr === '/' && codePoints[pointer + 1] === '/') {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n            pointer++;\n          } else {\n            state = RELATIVE;\n            continue;\n          } break;\n\n        case PATH_OR_AUTHORITY:\n          if (chr === '/') {\n            state = AUTHORITY;\n            break;\n          } else {\n            state = PATH;\n            continue;\n          }\n\n        case RELATIVE:\n          url.scheme = base.scheme;\n          if (chr === EOF) {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n          } else if (chr === '/' || (chr === '\\\\' && url.isSpecial())) {\n            state = RELATIVE_SLASH;\n          } else if (chr === '?') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = '';\n            state = QUERY;\n          } else if (chr === '#') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            state = FRAGMENT;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.path.length--;\n            state = PATH;\n            continue;\n          } break;\n\n        case RELATIVE_SLASH:\n          if (url.isSpecial() && (chr === '/' || chr === '\\\\')) {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          } else if (chr === '/') {\n            state = AUTHORITY;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            state = PATH;\n            continue;\n          } break;\n\n        case SPECIAL_AUTHORITY_SLASHES:\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          if (chr !== '/' || charAt(buffer, pointer + 1) !== '/') continue;\n          pointer++;\n          break;\n\n        case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n          if (chr !== '/' && chr !== '\\\\') {\n            state = AUTHORITY;\n            continue;\n          } break;\n\n        case AUTHORITY:\n          if (chr === '@') {\n            if (seenAt) buffer = '%40' + buffer;\n            seenAt = true;\n            bufferCodePoints = arrayFrom(buffer);\n            for (var i = 0; i < bufferCodePoints.length; i++) {\n              var codePoint = bufferCodePoints[i];\n              if (codePoint === ':' && !seenPasswordToken) {\n                seenPasswordToken = true;\n                continue;\n              }\n              var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n              if (seenPasswordToken) url.password += encodedCodePoints;\n              else url.username += encodedCodePoints;\n            }\n            buffer = '';\n          } else if (\n            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n            (chr === '\\\\' && url.isSpecial())\n          ) {\n            if (seenAt && buffer === '') return INVALID_AUTHORITY;\n            pointer -= arrayFrom(buffer).length + 1;\n            buffer = '';\n            state = HOST;\n          } else buffer += chr;\n          break;\n\n        case HOST:\n        case HOSTNAME:\n          if (stateOverride && url.scheme === 'file') {\n            state = FILE_HOST;\n            continue;\n          } else if (chr === ':' && !seenBracket) {\n            if (buffer === '') return INVALID_HOST;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PORT;\n            if (stateOverride === HOSTNAME) return;\n          } else if (\n            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n            (chr === '\\\\' && url.isSpecial())\n          ) {\n            if (url.isSpecial() && buffer === '') return INVALID_HOST;\n            if (stateOverride && buffer === '' && (url.includesCredentials() || url.port !== null)) return;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PATH_START;\n            if (stateOverride) return;\n            continue;\n          } else {\n            if (chr === '[') seenBracket = true;\n            else if (chr === ']') seenBracket = false;\n            buffer += chr;\n          } break;\n\n        case PORT:\n          if (exec(DIGIT, chr)) {\n            buffer += chr;\n          } else if (\n            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n            (chr === '\\\\' && url.isSpecial()) ||\n            stateOverride\n          ) {\n            if (buffer !== '') {\n              var port = parseInt(buffer, 10);\n              if (port > 0xFFFF) return INVALID_PORT;\n              url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n              buffer = '';\n            }\n            if (stateOverride) return;\n            state = PATH_START;\n            continue;\n          } else return INVALID_PORT;\n          break;\n\n        case FILE:\n          url.scheme = 'file';\n          if (chr === '/' || chr === '\\\\') state = FILE_SLASH;\n          else if (base && base.scheme === 'file') {\n            switch (chr) {\n              case EOF:\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.query = base.query;\n                break;\n              case '?':\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.query = '';\n                state = QUERY;\n                break;\n              case '#':\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.query = base.query;\n                url.fragment = '';\n                state = FRAGMENT;\n                break;\n              default:\n                if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n                  url.host = base.host;\n                  url.path = arraySlice(base.path);\n                  url.shortenPath();\n                }\n                state = PATH;\n                continue;\n            }\n          } else {\n            state = PATH;\n            continue;\n          } break;\n\n        case FILE_SLASH:\n          if (chr === '/' || chr === '\\\\') {\n            state = FILE_HOST;\n            break;\n          }\n          if (base && base.scheme === 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n            if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n            else url.host = base.host;\n          }\n          state = PATH;\n          continue;\n\n        case FILE_HOST:\n          if (chr === EOF || chr === '/' || chr === '\\\\' || chr === '?' || chr === '#') {\n            if (!stateOverride && isWindowsDriveLetter(buffer)) {\n              state = PATH;\n            } else if (buffer === '') {\n              url.host = '';\n              if (stateOverride) return;\n              state = PATH_START;\n            } else {\n              failure = url.parseHost(buffer);\n              if (failure) return failure;\n              if (url.host === 'localhost') url.host = '';\n              if (stateOverride) return;\n              buffer = '';\n              state = PATH_START;\n            } continue;\n          } else buffer += chr;\n          break;\n\n        case PATH_START:\n          if (url.isSpecial()) {\n            state = PATH;\n            if (chr !== '/' && chr !== '\\\\') continue;\n          } else if (!stateOverride && chr === '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (!stateOverride && chr === '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr !== EOF) {\n            state = PATH;\n            if (chr !== '/') continue;\n          } break;\n\n        case PATH:\n          if (\n            chr === EOF || chr === '/' ||\n            (chr === '\\\\' && url.isSpecial()) ||\n            (!stateOverride && (chr === '?' || chr === '#'))\n          ) {\n            if (isDoubleDot(buffer)) {\n              url.shortenPath();\n              if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else if (isSingleDot(buffer)) {\n              if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else {\n              if (url.scheme === 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n                if (url.host) url.host = '';\n                buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n              }\n              push(url.path, buffer);\n            }\n            buffer = '';\n            if (url.scheme === 'file' && (chr === EOF || chr === '?' || chr === '#')) {\n              while (url.path.length > 1 && url.path[0] === '') {\n                shift(url.path);\n              }\n            }\n            if (chr === '?') {\n              url.query = '';\n              state = QUERY;\n            } else if (chr === '#') {\n              url.fragment = '';\n              state = FRAGMENT;\n            }\n          } else {\n            buffer += percentEncode(chr, pathPercentEncodeSet);\n          } break;\n\n        case CANNOT_BE_A_BASE_URL_PATH:\n          if (chr === '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (chr === '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr !== EOF) {\n            url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case QUERY:\n          if (!stateOverride && chr === '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr !== EOF) {\n            if (chr === \"'\" && url.isSpecial()) url.query += '%27';\n            else if (chr === '#') url.query += '%23';\n            else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case FRAGMENT:\n          if (chr !== EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n          break;\n      }\n\n      pointer++;\n    }\n  },\n  // https://url.spec.whatwg.org/#host-parsing\n  parseHost: function (input) {\n    var result, codePoints, index;\n    if (charAt(input, 0) === '[') {\n      if (charAt(input, input.length - 1) !== ']') return INVALID_HOST;\n      result = parseIPv6(stringSlice(input, 1, -1));\n      if (!result) return INVALID_HOST;\n      this.host = result;\n    // opaque host\n    } else if (!this.isSpecial()) {\n      if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n      result = '';\n      codePoints = arrayFrom(input);\n      for (index = 0; index < codePoints.length; index++) {\n        result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n      }\n      this.host = result;\n    } else {\n      input = toASCII(input);\n      if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n      result = parseIPv4(input);\n      if (result === null) return INVALID_HOST;\n      this.host = result;\n    }\n  },\n  // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n  cannotHaveUsernamePasswordPort: function () {\n    return !this.host || this.cannotBeABaseURL || this.scheme === 'file';\n  },\n  // https://url.spec.whatwg.org/#include-credentials\n  includesCredentials: function () {\n    return this.username !== '' || this.password !== '';\n  },\n  // https://url.spec.whatwg.org/#is-special\n  isSpecial: function () {\n    return hasOwn(specialSchemes, this.scheme);\n  },\n  // https://url.spec.whatwg.org/#shorten-a-urls-path\n  shortenPath: function () {\n    var path = this.path;\n    var pathSize = path.length;\n    if (pathSize && (this.scheme !== 'file' || pathSize !== 1 || !isWindowsDriveLetter(path[0], true))) {\n      path.length--;\n    }\n  },\n  // https://url.spec.whatwg.org/#concept-url-serializer\n  serialize: function () {\n    var url = this;\n    var scheme = url.scheme;\n    var username = url.username;\n    var password = url.password;\n    var host = url.host;\n    var port = url.port;\n    var path = url.path;\n    var query = url.query;\n    var fragment = url.fragment;\n    var output = scheme + ':';\n    if (host !== null) {\n      output += '//';\n      if (url.includesCredentials()) {\n        output += username + (password ? ':' + password : '') + '@';\n      }\n      output += serializeHost(host);\n      if (port !== null) output += ':' + port;\n    } else if (scheme === 'file') output += '//';\n    output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n    if (query !== null) output += '?' + query;\n    if (fragment !== null) output += '#' + fragment;\n    return output;\n  },\n  // https://url.spec.whatwg.org/#dom-url-href\n  setHref: function (href) {\n    var failure = this.parse(href);\n    if (failure) throw TypeError(failure);\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-origin\n  getOrigin: function () {\n    var scheme = this.scheme;\n    var port = this.port;\n    if (scheme === 'blob') try {\n      return new URLConstructor(scheme.path[0]).origin;\n    } catch (error) {\n      return 'null';\n    }\n    if (scheme === 'file' || !this.isSpecial()) return 'null';\n    return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n  },\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  getProtocol: function () {\n    return this.scheme + ':';\n  },\n  setProtocol: function (protocol) {\n    this.parse($toString(protocol) + ':', SCHEME_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-username\n  getUsername: function () {\n    return this.username;\n  },\n  setUsername: function (username) {\n    var codePoints = arrayFrom($toString(username));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.username = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-password\n  getPassword: function () {\n    return this.password;\n  },\n  setPassword: function (password) {\n    var codePoints = arrayFrom($toString(password));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.password = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-host\n  getHost: function () {\n    var host = this.host;\n    var port = this.port;\n    return host === null ? ''\n      : port === null ? serializeHost(host)\n      : serializeHost(host) + ':' + port;\n  },\n  setHost: function (host) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(host, HOST);\n  },\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  getHostname: function () {\n    var host = this.host;\n    return host === null ? '' : serializeHost(host);\n  },\n  setHostname: function (hostname) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(hostname, HOSTNAME);\n  },\n  // https://url.spec.whatwg.org/#dom-url-port\n  getPort: function () {\n    var port = this.port;\n    return port === null ? '' : $toString(port);\n  },\n  setPort: function (port) {\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    port = $toString(port);\n    if (port === '') this.port = null;\n    else this.parse(port, PORT);\n  },\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  getPathname: function () {\n    var path = this.path;\n    return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n  },\n  setPathname: function (pathname) {\n    if (this.cannotBeABaseURL) return;\n    this.path = [];\n    this.parse(pathname, PATH_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-search\n  getSearch: function () {\n    var query = this.query;\n    return query ? '?' + query : '';\n  },\n  setSearch: function (search) {\n    search = $toString(search);\n    if (search === '') {\n      this.query = null;\n    } else {\n      if (charAt(search, 0) === '?') search = stringSlice(search, 1);\n      this.query = '';\n      this.parse(search, QUERY);\n    }\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  getSearchParams: function () {\n    return this.searchParams.facade;\n  },\n  // https://url.spec.whatwg.org/#dom-url-hash\n  getHash: function () {\n    var fragment = this.fragment;\n    return fragment ? '#' + fragment : '';\n  },\n  setHash: function (hash) {\n    hash = $toString(hash);\n    if (hash === '') {\n      this.fragment = null;\n      return;\n    }\n    if (charAt(hash, 0) === '#') hash = stringSlice(hash, 1);\n    this.fragment = '';\n    this.parse(hash, FRAGMENT);\n  },\n  update: function () {\n    this.query = this.searchParams.serialize() || null;\n  }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n  var that = anInstance(this, URLPrototype);\n  var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n  var state = setInternalState(that, new URLState(url, false, base));\n  if (!DESCRIPTORS) {\n    that.href = state.serialize();\n    that.origin = state.getOrigin();\n    that.protocol = state.getProtocol();\n    that.username = state.getUsername();\n    that.password = state.getPassword();\n    that.host = state.getHost();\n    that.hostname = state.getHostname();\n    that.port = state.getPort();\n    that.pathname = state.getPathname();\n    that.search = state.getSearch();\n    that.searchParams = state.getSearchParams();\n    that.hash = state.getHash();\n  }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n  return {\n    get: function () {\n      return getInternalURLState(this)[getter]();\n    },\n    set: setter && function (value) {\n      return getInternalURLState(this)[setter](value);\n    },\n    configurable: true,\n    enumerable: true\n  };\n};\n\nif (DESCRIPTORS) {\n  // `URL.prototype.href` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-href\n  defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n  // `URL.prototype.origin` getter\n  // https://url.spec.whatwg.org/#dom-url-origin\n  defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n  // `URL.prototype.protocol` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n  // `URL.prototype.username` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-username\n  defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n  // `URL.prototype.password` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-password\n  defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n  // `URL.prototype.host` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-host\n  defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n  // `URL.prototype.hostname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n  // `URL.prototype.port` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-port\n  defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n  // `URL.prototype.pathname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n  // `URL.prototype.search` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-search\n  defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n  // `URL.prototype.searchParams` getter\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n  // `URL.prototype.hash` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hash\n  defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n  var nativeCreateObjectURL = NativeURL.createObjectURL;\n  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n  // `URL.createObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n  if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n  toJSON: function toJSON() {\n    return call(URL.prototype.toString, this);\n  }\n});\n","'use strict';\nrequire('../modules/es.symbol');\nrequire('../modules/es.symbol.description');\nrequire('../modules/es.symbol.async-iterator');\nrequire('../modules/es.symbol.has-instance');\nrequire('../modules/es.symbol.is-concat-spreadable');\nrequire('../modules/es.symbol.iterator');\nrequire('../modules/es.symbol.match');\nrequire('../modules/es.symbol.match-all');\nrequire('../modules/es.symbol.replace');\nrequire('../modules/es.symbol.search');\nrequire('../modules/es.symbol.species');\nrequire('../modules/es.symbol.split');\nrequire('../modules/es.symbol.to-primitive');\nrequire('../modules/es.symbol.to-string-tag');\nrequire('../modules/es.symbol.unscopables');\nrequire('../modules/es.error.cause');\nrequire('../modules/es.error.to-string');\nrequire('../modules/es.aggregate-error');\nrequire('../modules/es.aggregate-error.cause');\nrequire('../modules/es.array.at');\nrequire('../modules/es.array.concat');\nrequire('../modules/es.array.copy-within');\nrequire('../modules/es.array.every');\nrequire('../modules/es.array.fill');\nrequire('../modules/es.array.filter');\nrequire('../modules/es.array.find');\nrequire('../modules/es.array.find-index');\nrequire('../modules/es.array.find-last');\nrequire('../modules/es.array.find-last-index');\nrequire('../modules/es.array.flat');\nrequire('../modules/es.array.flat-map');\nrequire('../modules/es.array.for-each');\nrequire('../modules/es.array.from');\nrequire('../modules/es.array.includes');\nrequire('../modules/es.array.index-of');\nrequire('../modules/es.array.is-array');\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.array.join');\nrequire('../modules/es.array.last-index-of');\nrequire('../modules/es.array.map');\nrequire('../modules/es.array.of');\nrequire('../modules/es.array.push');\nrequire('../modules/es.array.reduce');\nrequire('../modules/es.array.reduce-right');\nrequire('../modules/es.array.reverse');\nrequire('../modules/es.array.slice');\nrequire('../modules/es.array.some');\nrequire('../modules/es.array.sort');\nrequire('../modules/es.array.species');\nrequire('../modules/es.array.splice');\nrequire('../modules/es.array.to-reversed');\nrequire('../modules/es.array.to-sorted');\nrequire('../modules/es.array.to-spliced');\nrequire('../modules/es.array.unscopables.flat');\nrequire('../modules/es.array.unscopables.flat-map');\nrequire('../modules/es.array.unshift');\nrequire('../modules/es.array.with');\nrequire('../modules/es.array-buffer.constructor');\nrequire('../modules/es.array-buffer.is-view');\nrequire('../modules/es.array-buffer.slice');\nrequire('../modules/es.data-view');\nrequire('../modules/es.date.get-year');\nrequire('../modules/es.date.now');\nrequire('../modules/es.date.set-year');\nrequire('../modules/es.date.to-gmt-string');\nrequire('../modules/es.date.to-iso-string');\nrequire('../modules/es.date.to-json');\nrequire('../modules/es.date.to-primitive');\nrequire('../modules/es.date.to-string');\nrequire('../modules/es.escape');\nrequire('../modules/es.function.bind');\nrequire('../modules/es.function.has-instance');\nrequire('../modules/es.function.name');\nrequire('../modules/es.global-this');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.json.to-string-tag');\nrequire('../modules/es.map');\nrequire('../modules/es.math.acosh');\nrequire('../modules/es.math.asinh');\nrequire('../modules/es.math.atanh');\nrequire('../modules/es.math.cbrt');\nrequire('../modules/es.math.clz32');\nrequire('../modules/es.math.cosh');\nrequire('../modules/es.math.expm1');\nrequire('../modules/es.math.fround');\nrequire('../modules/es.math.hypot');\nrequire('../modules/es.math.imul');\nrequire('../modules/es.math.log10');\nrequire('../modules/es.math.log1p');\nrequire('../modules/es.math.log2');\nrequire('../modules/es.math.sign');\nrequire('../modules/es.math.sinh');\nrequire('../modules/es.math.tanh');\nrequire('../modules/es.math.to-string-tag');\nrequire('../modules/es.math.trunc');\nrequire('../modules/es.number.constructor');\nrequire('../modules/es.number.epsilon');\nrequire('../modules/es.number.is-finite');\nrequire('../modules/es.number.is-integer');\nrequire('../modules/es.number.is-nan');\nrequire('../modules/es.number.is-safe-integer');\nrequire('../modules/es.number.max-safe-integer');\nrequire('../modules/es.number.min-safe-integer');\nrequire('../modules/es.number.parse-float');\nrequire('../modules/es.number.parse-int');\nrequire('../modules/es.number.to-exponential');\nrequire('../modules/es.number.to-fixed');\nrequire('../modules/es.number.to-precision');\nrequire('../modules/es.object.assign');\nrequire('../modules/es.object.create');\nrequire('../modules/es.object.define-getter');\nrequire('../modules/es.object.define-properties');\nrequire('../modules/es.object.define-property');\nrequire('../modules/es.object.define-setter');\nrequire('../modules/es.object.entries');\nrequire('../modules/es.object.freeze');\nrequire('../modules/es.object.from-entries');\nrequire('../modules/es.object.get-own-property-descriptor');\nrequire('../modules/es.object.get-own-property-descriptors');\nrequire('../modules/es.object.get-own-property-names');\nrequire('../modules/es.object.get-prototype-of');\nrequire('../modules/es.object.has-own');\nrequire('../modules/es.object.is');\nrequire('../modules/es.object.is-extensible');\nrequire('../modules/es.object.is-frozen');\nrequire('../modules/es.object.is-sealed');\nrequire('../modules/es.object.keys');\nrequire('../modules/es.object.lookup-getter');\nrequire('../modules/es.object.lookup-setter');\nrequire('../modules/es.object.prevent-extensions');\nrequire('../modules/es.object.proto');\nrequire('../modules/es.object.seal');\nrequire('../modules/es.object.set-prototype-of');\nrequire('../modules/es.object.to-string');\nrequire('../modules/es.object.values');\nrequire('../modules/es.parse-float');\nrequire('../modules/es.parse-int');\nrequire('../modules/es.promise');\nrequire('../modules/es.promise.all-settled');\nrequire('../modules/es.promise.any');\nrequire('../modules/es.promise.finally');\nrequire('../modules/es.reflect.apply');\nrequire('../modules/es.reflect.construct');\nrequire('../modules/es.reflect.define-property');\nrequire('../modules/es.reflect.delete-property');\nrequire('../modules/es.reflect.get');\nrequire('../modules/es.reflect.get-own-property-descriptor');\nrequire('../modules/es.reflect.get-prototype-of');\nrequire('../modules/es.reflect.has');\nrequire('../modules/es.reflect.is-extensible');\nrequire('../modules/es.reflect.own-keys');\nrequire('../modules/es.reflect.prevent-extensions');\nrequire('../modules/es.reflect.set');\nrequire('../modules/es.reflect.set-prototype-of');\nrequire('../modules/es.reflect.to-string-tag');\nrequire('../modules/es.regexp.constructor');\nrequire('../modules/es.regexp.dot-all');\nrequire('../modules/es.regexp.exec');\nrequire('../modules/es.regexp.flags');\nrequire('../modules/es.regexp.sticky');\nrequire('../modules/es.regexp.test');\nrequire('../modules/es.regexp.to-string');\nrequire('../modules/es.set');\nrequire('../modules/es.string.at-alternative');\nrequire('../modules/es.string.code-point-at');\nrequire('../modules/es.string.ends-with');\nrequire('../modules/es.string.from-code-point');\nrequire('../modules/es.string.includes');\nrequire('../modules/es.string.is-well-formed');\nrequire('../modules/es.string.iterator');\nrequire('../modules/es.string.match');\nrequire('../modules/es.string.match-all');\nrequire('../modules/es.string.pad-end');\nrequire('../modules/es.string.pad-start');\nrequire('../modules/es.string.raw');\nrequire('../modules/es.string.repeat');\nrequire('../modules/es.string.replace');\nrequire('../modules/es.string.replace-all');\nrequire('../modules/es.string.search');\nrequire('../modules/es.string.split');\nrequire('../modules/es.string.starts-with');\nrequire('../modules/es.string.substr');\nrequire('../modules/es.string.to-well-formed');\nrequire('../modules/es.string.trim');\nrequire('../modules/es.string.trim-end');\nrequire('../modules/es.string.trim-start');\nrequire('../modules/es.string.anchor');\nrequire('../modules/es.string.big');\nrequire('../modules/es.string.blink');\nrequire('../modules/es.string.bold');\nrequire('../modules/es.string.fixed');\nrequire('../modules/es.string.fontcolor');\nrequire('../modules/es.string.fontsize');\nrequire('../modules/es.string.italics');\nrequire('../modules/es.string.link');\nrequire('../modules/es.string.small');\nrequire('../modules/es.string.strike');\nrequire('../modules/es.string.sub');\nrequire('../modules/es.string.sup');\nrequire('../modules/es.typed-array.float32-array');\nrequire('../modules/es.typed-array.float64-array');\nrequire('../modules/es.typed-array.int8-array');\nrequire('../modules/es.typed-array.int16-array');\nrequire('../modules/es.typed-array.int32-array');\nrequire('../modules/es.typed-array.uint8-array');\nrequire('../modules/es.typed-array.uint8-clamped-array');\nrequire('../modules/es.typed-array.uint16-array');\nrequire('../modules/es.typed-array.uint32-array');\nrequire('../modules/es.typed-array.at');\nrequire('../modules/es.typed-array.copy-within');\nrequire('../modules/es.typed-array.every');\nrequire('../modules/es.typed-array.fill');\nrequire('../modules/es.typed-array.filter');\nrequire('../modules/es.typed-array.find');\nrequire('../modules/es.typed-array.find-index');\nrequire('../modules/es.typed-array.find-last');\nrequire('../modules/es.typed-array.find-last-index');\nrequire('../modules/es.typed-array.for-each');\nrequire('../modules/es.typed-array.from');\nrequire('../modules/es.typed-array.includes');\nrequire('../modules/es.typed-array.index-of');\nrequire('../modules/es.typed-array.iterator');\nrequire('../modules/es.typed-array.join');\nrequire('../modules/es.typed-array.last-index-of');\nrequire('../modules/es.typed-array.map');\nrequire('../modules/es.typed-array.of');\nrequire('../modules/es.typed-array.reduce');\nrequire('../modules/es.typed-array.reduce-right');\nrequire('../modules/es.typed-array.reverse');\nrequire('../modules/es.typed-array.set');\nrequire('../modules/es.typed-array.slice');\nrequire('../modules/es.typed-array.some');\nrequire('../modules/es.typed-array.sort');\nrequire('../modules/es.typed-array.subarray');\nrequire('../modules/es.typed-array.to-locale-string');\nrequire('../modules/es.typed-array.to-reversed');\nrequire('../modules/es.typed-array.to-sorted');\nrequire('../modules/es.typed-array.to-string');\nrequire('../modules/es.typed-array.with');\nrequire('../modules/es.unescape');\nrequire('../modules/es.weak-map');\nrequire('../modules/es.weak-set');\nrequire('../modules/web.atob');\nrequire('../modules/web.btoa');\nrequire('../modules/web.dom-collections.for-each');\nrequire('../modules/web.dom-collections.iterator');\nrequire('../modules/web.dom-exception.constructor');\nrequire('../modules/web.dom-exception.stack');\nrequire('../modules/web.dom-exception.to-string-tag');\nrequire('../modules/web.immediate');\nrequire('../modules/web.queue-microtask');\nrequire('../modules/web.self');\nrequire('../modules/web.structured-clone');\nrequire('../modules/web.timers');\nrequire('../modules/web.url');\nrequire('../modules/web.url.can-parse');\nrequire('../modules/web.url.to-json');\nrequire('../modules/web.url-search-params');\nrequire('../modules/web.url-search-params.delete');\nrequire('../modules/web.url-search-params.has');\nrequire('../modules/web.url-search-params.size');\n\nmodule.exports = require('../internals/path');\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".ReactCrop {\\n  position: relative;\\n  display: inline-block;\\n  cursor: crosshair;\\n  overflow: hidden;\\n  max-width: 100%;\\n}\\n.ReactCrop:focus {\\n  outline: none;\\n}\\n.ReactCrop--disabled, .ReactCrop--locked {\\n  cursor: inherit;\\n}\\n.ReactCrop__image {\\n  display: block;\\n  max-width: 100%;\\n  touch-action: none;\\n}\\n.ReactCrop__crop-selection {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  transform: translate3d(0, 0, 0);\\n  box-sizing: border-box;\\n  cursor: move;\\n  box-shadow: 0 0 0 9999em rgba(0, 0, 0, 0.5);\\n  touch-action: none;\\n  border: 1px solid;\\n  border-image-source: url(\\\"data:image/gif;base64,R0lGODlhCgAKAJECAAAAAP///////wAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OEI5RDc5MTFDNkE2MTFFM0JCMDZEODI2QTI4MzJBOTIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OEI5RDc5MTBDNkE2MTFFM0JCMDZEODI2QTI4MzJBOTIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuZGlkOjAyODAxMTc0MDcyMDY4MTE4MDgzQzNDMjA5MzREQ0ZDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAyODAxMTc0MDcyMDY4MTE4MDgzQzNDMjA5MzREQ0ZDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoAAgAsAAAAAAoACgAAAhWEERkn7W3ei7KlagMWF/dKgYeyGAUAIfkEBQoAAgAsAAAAAAoACgAAAg+UYwLJ7RnQm7QmsCyVKhUAIfkEBQoAAgAsAAAAAAoACgAAAhCUYgLJHdiinNSAVfOEKoUCACH5BAUKAAIALAAAAAAKAAoAAAIRVISAdusPo3RAzYtjaMIaUQAAIfkEBQoAAgAsAAAAAAoACgAAAg+MDiem7Q8bSLFaG5il6xQAIfkEBQoAAgAsAAAAAAoACgAAAg+UYRLJ7QnQm7SmsCyVKhUAIfkEBQoAAgAsAAAAAAoACgAAAhCUYBLJDdiinNSEVfOEKoECACH5BAUKAAIALAAAAAAKAAoAAAIRFISBdusPo3RBzYsjaMIaUQAAOw==\\\");\\n  border-image-slice: 1;\\n  border-image-repeat: repeat;\\n}\\n.ReactCrop--disabled .ReactCrop__crop-selection {\\n  cursor: inherit;\\n}\\n.ReactCrop--circular-crop .ReactCrop__crop-selection {\\n  border-radius: 50%;\\n  box-shadow: 0px 0px 1px 1px white, 0 0 0 9999em rgba(0, 0, 0, 0.5);\\n}\\n.ReactCrop--invisible-crop .ReactCrop__crop-selection {\\n  display: none;\\n}\\n.ReactCrop__rule-of-thirds-vt::before, .ReactCrop__rule-of-thirds-vt::after, .ReactCrop__rule-of-thirds-hz::before, .ReactCrop__rule-of-thirds-hz::after {\\n  content: \\\"\\\";\\n  display: block;\\n  position: absolute;\\n  background-color: rgba(255, 255, 255, 0.4);\\n}\\n.ReactCrop__rule-of-thirds-vt::before, .ReactCrop__rule-of-thirds-vt::after {\\n  width: 1px;\\n  height: 100%;\\n}\\n.ReactCrop__rule-of-thirds-vt::before {\\n  left: 33.3333%;\\n  left: calc(100% / 3);\\n}\\n.ReactCrop__rule-of-thirds-vt::after {\\n  left: 66.6666%;\\n  left: calc(100% / 3 * 2);\\n}\\n.ReactCrop__rule-of-thirds-hz::before, .ReactCrop__rule-of-thirds-hz::after {\\n  width: 100%;\\n  height: 1px;\\n}\\n.ReactCrop__rule-of-thirds-hz::before {\\n  top: 33.3333%;\\n  top: calc(100% / 3);\\n}\\n.ReactCrop__rule-of-thirds-hz::after {\\n  top: 66.6666%;\\n  top: calc(100% / 3 * 2);\\n}\\n.ReactCrop__drag-handle {\\n  position: absolute;\\n}\\n.ReactCrop__drag-handle::after {\\n  position: absolute;\\n  content: \\\"\\\";\\n  display: block;\\n  width: 10px;\\n  height: 10px;\\n  background-color: rgba(0, 0, 0, 0.2);\\n  border: 1px solid rgba(255, 255, 255, 0.7);\\n  box-sizing: border-box;\\n  outline: 1px solid transparent;\\n}\\n.ReactCrop .ord-nw {\\n  top: 0;\\n  left: 0;\\n  margin-top: -5px;\\n  margin-left: -5px;\\n  cursor: nw-resize;\\n}\\n.ReactCrop .ord-nw::after {\\n  top: 0;\\n  left: 0;\\n}\\n.ReactCrop .ord-n {\\n  top: 0;\\n  left: 50%;\\n  margin-top: -5px;\\n  margin-left: -5px;\\n  cursor: n-resize;\\n}\\n.ReactCrop .ord-n::after {\\n  top: 0;\\n}\\n.ReactCrop .ord-ne {\\n  top: 0;\\n  right: 0;\\n  margin-top: -5px;\\n  margin-right: -5px;\\n  cursor: ne-resize;\\n}\\n.ReactCrop .ord-ne::after {\\n  top: 0;\\n  right: 0;\\n}\\n.ReactCrop .ord-e {\\n  top: 50%;\\n  right: 0;\\n  margin-top: -5px;\\n  margin-right: -5px;\\n  cursor: e-resize;\\n}\\n.ReactCrop .ord-e::after {\\n  right: 0;\\n}\\n.ReactCrop .ord-se {\\n  bottom: 0;\\n  right: 0;\\n  margin-bottom: -5px;\\n  margin-right: -5px;\\n  cursor: se-resize;\\n}\\n.ReactCrop .ord-se::after {\\n  bottom: 0;\\n  right: 0;\\n}\\n.ReactCrop .ord-s {\\n  bottom: 0;\\n  left: 50%;\\n  margin-bottom: -5px;\\n  margin-left: -5px;\\n  cursor: s-resize;\\n}\\n.ReactCrop .ord-s::after {\\n  bottom: 0;\\n}\\n.ReactCrop .ord-sw {\\n  bottom: 0;\\n  left: 0;\\n  margin-bottom: -5px;\\n  margin-left: -5px;\\n  cursor: sw-resize;\\n}\\n.ReactCrop .ord-sw::after {\\n  bottom: 0;\\n  left: 0;\\n}\\n.ReactCrop .ord-w {\\n  top: 50%;\\n  left: 0;\\n  margin-top: -5px;\\n  margin-left: -5px;\\n  cursor: w-resize;\\n}\\n.ReactCrop .ord-w::after {\\n  left: 0;\\n}\\n.ReactCrop__disabled .ReactCrop__drag-handle {\\n  cursor: inherit;\\n}\\n.ReactCrop__drag-bar {\\n  position: absolute;\\n}\\n.ReactCrop__drag-bar.ord-n {\\n  top: 0;\\n  left: 0;\\n  width: 100%;\\n  height: 6px;\\n  margin-top: -3px;\\n}\\n.ReactCrop__drag-bar.ord-e {\\n  right: 0;\\n  top: 0;\\n  width: 6px;\\n  height: 100%;\\n  margin-right: -3px;\\n}\\n.ReactCrop__drag-bar.ord-s {\\n  bottom: 0;\\n  left: 0;\\n  width: 100%;\\n  height: 6px;\\n  margin-bottom: -3px;\\n}\\n.ReactCrop__drag-bar.ord-w {\\n  top: 0;\\n  left: 0;\\n  width: 6px;\\n  height: 100%;\\n  margin-left: -3px;\\n}\\n.ReactCrop--new-crop .ReactCrop__drag-bar, .ReactCrop--new-crop .ReactCrop__drag-handle, .ReactCrop--fixed-aspect .ReactCrop__drag-bar {\\n  display: none;\\n}\\n.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-n, .ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-e, .ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-s, .ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-w {\\n  display: none;\\n}\\n@media (pointer: coarse) {\\n  .ReactCrop .ord-n,\\n.ReactCrop .ord-e,\\n.ReactCrop .ord-s,\\n.ReactCrop .ord-w {\\n    display: none;\\n  }\\n  .ReactCrop__drag-handle {\\n    width: 24px;\\n    height: 24px;\\n  }\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","\"use strict\";\n\nmodule.exports = CSSselect;\n\nvar Pseudos       = require(\"./lib/pseudos.js\"),\n    DomUtils      = require(\"domutils\"),\n    findOne       = DomUtils.findOne,\n    findAll       = DomUtils.findAll,\n    getChildren   = DomUtils.getChildren,\n    removeSubsets = DomUtils.removeSubsets,\n    falseFunc     = require(\"boolbase\").falseFunc,\n    compile       = require(\"./lib/compile.js\"),\n    compileUnsafe = compile.compileUnsafe,\n    compileToken  = compile.compileToken;\n\nfunction getSelectorFunc(searchFunc){\n\treturn function select(query, elems, options){\n        if(typeof query !== \"function\") query = compileUnsafe(query, options, elems);\n        if(!Array.isArray(elems)) elems = getChildren(elems);\n\t\telse elems = removeSubsets(elems);\n\t\treturn searchFunc(query, elems);\n\t};\n}\n\nvar selectAll = getSelectorFunc(function selectAll(query, elems){\n\treturn (query === falseFunc || !elems || elems.length === 0) ? [] : findAll(query, elems);\n});\n\nvar selectOne = getSelectorFunc(function selectOne(query, elems){\n\treturn (query === falseFunc || !elems || elems.length === 0) ? null : findOne(query, elems);\n});\n\nfunction is(elem, query, options){\n\treturn (typeof query === \"function\" ? query : compile(query, options))(elem);\n}\n\n/*\n\tthe exported interface\n*/\nfunction CSSselect(query, elems, options){\n\treturn selectAll(query, elems, options);\n}\n\nCSSselect.compile = compile;\nCSSselect.filters = Pseudos.filters;\nCSSselect.pseudos = Pseudos.pseudos;\n\nCSSselect.selectAll = selectAll;\nCSSselect.selectOne = selectOne;\n\nCSSselect.is = is;\n\n//legacy methods (might be removed)\nCSSselect.parse = compile;\nCSSselect.iterate = selectAll;\n\n//hooks\nCSSselect._compileUnsafe = compileUnsafe;\nCSSselect._compileToken = compileToken;\n","var DomUtils  = require(\"domutils\"),\n    hasAttrib = DomUtils.hasAttrib,\n    getAttributeValue = DomUtils.getAttributeValue,\n    falseFunc = require(\"boolbase\").falseFunc;\n\n//https://github.com/slevithan/XRegExp/blob/master/src/xregexp.js#L469\nvar reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\n\n/*\n\tattribute selectors\n*/\n\nvar attributeRules = {\n\t__proto__: null,\n\tequals: function(next, data){\n\t\tvar name  = data.name,\n\t\t    value = data.value;\n\n\t\tif(data.ignoreCase){\n\t\t\tvalue = value.toLowerCase();\n\n\t\t\treturn function equalsIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null && attr.toLowerCase() === value && next(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function equals(elem){\n\t\t\treturn getAttributeValue(elem, name) === value && next(elem);\n\t\t};\n\t},\n\thyphen: function(next, data){\n\t\tvar name  = data.name,\n\t\t    value = data.value,\n\t\t    len = value.length;\n\n\t\tif(data.ignoreCase){\n\t\t\tvalue = value.toLowerCase();\n\n\t\t\treturn function hyphenIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null &&\n\t\t\t\t\t\t(attr.length === len || attr.charAt(len) === \"-\") &&\n\t\t\t\t\t\tattr.substr(0, len).toLowerCase() === value &&\n\t\t\t\t\t\tnext(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function hyphen(elem){\n\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\treturn attr != null &&\n\t\t\t\t\tattr.substr(0, len) === value &&\n\t\t\t\t\t(attr.length === len || attr.charAt(len) === \"-\") &&\n\t\t\t\t\tnext(elem);\n\t\t};\n\t},\n\telement: function(next, data){\n\t\tvar name = data.name,\n\t\t    value = data.value;\n\n\t\tif(/\\s/.test(value)){\n\t\t\treturn falseFunc;\n\t\t}\n\n\t\tvalue = value.replace(reChars, \"\\\\$&\");\n\n\t\tvar pattern = \"(?:^|\\\\s)\" + value + \"(?:$|\\\\s)\",\n\t\t    flags = data.ignoreCase ? \"i\" : \"\",\n\t\t    regex = new RegExp(pattern, flags);\n\n\t\treturn function element(elem){\n\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\treturn attr != null && regex.test(attr) && next(elem);\n\t\t};\n\t},\n\texists: function(next, data){\n\t\tvar name = data.name;\n\t\treturn function exists(elem){\n\t\t\treturn hasAttrib(elem, name) && next(elem);\n\t\t};\n\t},\n\tstart: function(next, data){\n\t\tvar name  = data.name,\n\t\t    value = data.value,\n\t\t    len = value.length;\n\n\t\tif(len === 0){\n\t\t\treturn falseFunc;\n\t\t}\n\t\t\n\t\tif(data.ignoreCase){\n\t\t\tvalue = value.toLowerCase();\n\n\t\t\treturn function startIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null && attr.substr(0, len).toLowerCase() === value && next(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function start(elem){\n\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\treturn attr != null && attr.substr(0, len) === value && next(elem);\n\t\t};\n\t},\n\tend: function(next, data){\n\t\tvar name  = data.name,\n\t\t    value = data.value,\n\t\t    len   = -value.length;\n\n\t\tif(len === 0){\n\t\t\treturn falseFunc;\n\t\t}\n\n\t\tif(data.ignoreCase){\n\t\t\tvalue = value.toLowerCase();\n\n\t\t\treturn function endIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null && attr.substr(len).toLowerCase() === value && next(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function end(elem){\n\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\treturn attr != null && attr.substr(len) === value && next(elem);\n\t\t};\n\t},\n\tany: function(next, data){\n\t\tvar name  = data.name,\n\t\t    value = data.value;\n\n\t\tif(value === \"\"){\n\t\t\treturn falseFunc;\n\t\t}\n\n\t\tif(data.ignoreCase){\n\t\t\tvar regex = new RegExp(value.replace(reChars, \"\\\\$&\"), \"i\");\n\n\t\t\treturn function anyIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null && regex.test(attr) && next(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function any(elem){\n\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\treturn attr != null && attr.indexOf(value) >= 0 && next(elem);\n\t\t};\n\t},\n\tnot: function(next, data){\n\t\tvar name  = data.name,\n\t\t    value = data.value;\n\n\t\tif(value === \"\"){\n\t\t\treturn function notEmpty(elem){\n\t\t\t\treturn !!getAttributeValue(elem, name) && next(elem);\n\t\t\t};\n\t\t} else if(data.ignoreCase){\n\t\t\tvalue = value.toLowerCase();\n\n\t\t\treturn function notIC(elem){\n\t\t\t\tvar attr = getAttributeValue(elem, name);\n\t\t\t\treturn attr != null && attr.toLowerCase() !== value && next(elem);\n\t\t\t};\n\t\t}\n\n\t\treturn function not(elem){\n\t\t\treturn getAttributeValue(elem, name) !== value && next(elem);\n\t\t};\n\t}\n};\n\nmodule.exports = {\n\tcompile: function(next, data, options){\n\t\tif(options && options.strict && (\n\t\t\tdata.ignoreCase || data.action === \"not\"\n\t\t)) throw SyntaxError(\"Unsupported attribute selector\");\n\t\treturn attributeRules[data.action](next, data);\n\t},\n\trules: attributeRules\n};\n","/*\n\tcompiles a selector to an executable function\n*/\n\nmodule.exports = compile;\nmodule.exports.compileUnsafe = compileUnsafe;\nmodule.exports.compileToken = compileToken;\n\nvar parse       = require(\"css-what\"),\n    DomUtils    = require(\"domutils\"),\n    isTag       = DomUtils.isTag,\n    Rules       = require(\"./general.js\"),\n    sortRules   = require(\"./sort.js\"),\n    BaseFuncs   = require(\"boolbase\"),\n    trueFunc    = BaseFuncs.trueFunc,\n    falseFunc   = BaseFuncs.falseFunc,\n    procedure   = require(\"./procedure.json\");\n\nfunction compile(selector, options, context){\n\tvar next = compileUnsafe(selector, options, context);\n\treturn wrap(next);\n}\n\nfunction wrap(next){\n\treturn function base(elem){\n\t\treturn isTag(elem) && next(elem);\n\t};\n}\n\nfunction compileUnsafe(selector, options, context){\n\tvar token = parse(selector, options);\n\treturn compileToken(token, options, context);\n}\n\nfunction includesScopePseudo(t){\n    return t.type === \"pseudo\" && (\n        t.name === \"scope\" || (\n            Array.isArray(t.data) &&\n            t.data.some(function(data){\n                return data.some(includesScopePseudo);\n            })\n        )\n    );\n}\n\nvar DESCENDANT_TOKEN = {type: \"descendant\"},\n    SCOPE_TOKEN = {type: \"pseudo\", name: \"scope\"},\n    PLACEHOLDER_ELEMENT = {},\n    getParent = DomUtils.getParent;\n\n//CSS 4 Spec (Draft): 3.3.1. Absolutizing a Scope-relative Selector\n//http://www.w3.org/TR/selectors4/#absolutizing\nfunction absolutize(token, context){\n    //TODO better check if context is document\n    var hasContext = !!context && !!context.length && context.every(function(e){\n        return e === PLACEHOLDER_ELEMENT || !!getParent(e);\n    });\n\n\n    token.forEach(function(t){\n        if(t.length > 0 && isTraversal(t[0]) && t[0].type !== \"descendant\"){\n            //don't return in else branch\n        } else if(hasContext && !includesScopePseudo(t)){\n            t.unshift(DESCENDANT_TOKEN);\n        } else {\n            return;\n        }\n\n        t.unshift(SCOPE_TOKEN);\n    });\n}\n\nfunction compileToken(token, options, context){\n    token = token.filter(function(t){ return t.length > 0; });\n\n\ttoken.forEach(sortRules);\n\n\tvar isArrayContext = Array.isArray(context);\n\n    context = (options && options.context) || context;\n\n    if(context && !isArrayContext) context = [context];\n\n    absolutize(token, context);\n\n\treturn token\n\t\t.map(function(rules){ return compileRules(rules, options, context, isArrayContext); })\n\t\t.reduce(reduceRules, falseFunc);\n}\n\nfunction isTraversal(t){\n\treturn procedure[t.type] < 0;\n}\n\nfunction compileRules(rules, options, context, isArrayContext){\n\tvar acceptSelf = (isArrayContext && rules[0].name === \"scope\" && rules[1].type === \"descendant\");\n\treturn rules.reduce(function(func, rule, index){\n\t\tif(func === falseFunc) return func;\n\t\treturn Rules[rule.type](func, rule, options, context, acceptSelf && index === 1);\n\t}, options && options.rootFunc || trueFunc);\n}\n\nfunction reduceRules(a, b){\n\tif(b === falseFunc || a === trueFunc){\n\t\treturn a;\n\t}\n\tif(a === falseFunc || b === trueFunc){\n\t\treturn b;\n\t}\n\n\treturn function combine(elem){\n\t\treturn a(elem) || b(elem);\n\t};\n}\n\n//:not, :has and :matches have to compile selectors\n//doing this in lib/pseudos.js would lead to circular dependencies,\n//so we add them here\n\nvar Pseudos     = require(\"./pseudos.js\"),\n    filters     = Pseudos.filters,\n    existsOne   = DomUtils.existsOne,\n    isTag       = DomUtils.isTag,\n    getChildren = DomUtils.getChildren;\n\n\nfunction containsTraversal(t){\n\treturn t.some(isTraversal);\n}\n\nfilters.not = function(next, token, options, context){\n\tvar opts = {\n\t    \txmlMode: !!(options && options.xmlMode),\n\t    \tstrict: !!(options && options.strict)\n\t    };\n\n\tif(opts.strict){\n\t\tif(token.length > 1 || token.some(containsTraversal)){\n\t\t\tthrow new SyntaxError(\"complex selectors in :not aren't allowed in strict mode\");\n\t\t}\n\t}\n\n    var func = compileToken(token, opts, context);\n\n\tif(func === falseFunc) return next;\n\tif(func === trueFunc)  return falseFunc;\n\n\treturn function(elem){\n\t\treturn !func(elem) && next(elem);\n\t};\n};\n\nfilters.has = function(next, token, options){\n\tvar opts = {\n\t\txmlMode: !!(options && options.xmlMode),\n\t\tstrict: !!(options && options.strict)\n\t};\n\n    //FIXME: Uses an array as a pointer to the current element (side effects)\n    var context = token.some(containsTraversal) ? [PLACEHOLDER_ELEMENT] : null;\n\n\tvar func = compileToken(token, opts, context);\n\n\tif(func === falseFunc) return falseFunc;\n\tif(func === trueFunc)  return function(elem){\n\t\t\treturn getChildren(elem).some(isTag) && next(elem);\n\t\t};\n\n\tfunc = wrap(func);\n\n    if(context){\n        return function has(elem){\n\t\treturn next(elem) && (\n                (context[0] = elem), existsOne(func, getChildren(elem))\n            );\n\t};\n    }\n\n    return function has(elem){\n\t\treturn next(elem) && existsOne(func, getChildren(elem));\n\t};\n};\n\nfilters.matches = function(next, token, options, context){\n\tvar opts = {\n\t\txmlMode: !!(options && options.xmlMode),\n\t\tstrict: !!(options && options.strict),\n\t\trootFunc: next\n\t};\n\n\treturn compileToken(token, opts, context);\n};\n","var DomUtils    = require(\"domutils\"),\n    isTag       = DomUtils.isTag,\n    getParent   = DomUtils.getParent,\n    getChildren = DomUtils.getChildren,\n    getSiblings = DomUtils.getSiblings,\n    getName     = DomUtils.getName;\n\n/*\n\tall available rules\n*/\nmodule.exports = {\n\t__proto__: null,\n\n\tattribute: require(\"./attributes.js\").compile,\n\tpseudo: require(\"./pseudos.js\").compile,\n\n\t//tags\n\ttag: function(next, data){\n\t\tvar name = data.name;\n\t\treturn function tag(elem){\n\t\t\treturn getName(elem) === name && next(elem);\n\t\t};\n\t},\n\n\t//traversal\n\tdescendant: function(next, rule, options, context, acceptSelf){\n\t\treturn function descendant(elem){\n\n\t\t\tif (acceptSelf && next(elem)) return true;\n\n\t\t\tvar found = false;\n\n\t\t\twhile(!found && (elem = getParent(elem))){\n\t\t\t\tfound = next(elem);\n\t\t\t}\n\n\t\t\treturn found;\n\t\t};\n\t},\n\tparent: function(next, data, options){\n\t\tif(options && options.strict) throw SyntaxError(\"Parent selector isn't part of CSS3\");\n\n\t\treturn function parent(elem){\n\t\t\treturn getChildren(elem).some(test);\n\t\t};\n\n\t\tfunction test(elem){\n\t\t\treturn isTag(elem) && next(elem);\n\t\t}\n\t},\n\tchild: function(next){\n\t\treturn function child(elem){\n\t\t\tvar parent = getParent(elem);\n\t\t\treturn !!parent && next(parent);\n\t\t};\n\t},\n\tsibling: function(next){\n\t\treturn function sibling(elem){\n\t\t\tvar siblings = getSiblings(elem);\n\n\t\t\tfor(var i = 0; i < siblings.length; i++){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\tif(next(siblings[i])) return true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t};\n\t},\n\tadjacent: function(next){\n\t\treturn function adjacent(elem){\n\t\t\tvar siblings = getSiblings(elem),\n\t\t\t    lastElement;\n\n\t\t\tfor(var i = 0; i < siblings.length; i++){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\tlastElement = siblings[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn !!lastElement && next(lastElement);\n\t\t};\n\t},\n\tuniversal: function(next){\n\t\treturn next;\n\t}\n};","/*\n\tpseudo selectors\n\n\t---\n\n\tthey are available in two forms:\n\t* filters called when the selector\n\t  is compiled and return a function\n\t  that needs to return next()\n\t* pseudos get called on execution\n\t  they need to return a boolean\n*/\n\nvar DomUtils    = require(\"domutils\"),\n    isTag       = DomUtils.isTag,\n    getText     = DomUtils.getText,\n    getParent   = DomUtils.getParent,\n    getChildren = DomUtils.getChildren,\n    getSiblings = DomUtils.getSiblings,\n    hasAttrib   = DomUtils.hasAttrib,\n    getName     = DomUtils.getName,\n    getAttribute= DomUtils.getAttributeValue,\n    getNCheck   = require(\"nth-check\"),\n    checkAttrib = require(\"./attributes.js\").rules.equals,\n    BaseFuncs   = require(\"boolbase\"),\n    trueFunc    = BaseFuncs.trueFunc,\n    falseFunc   = BaseFuncs.falseFunc;\n\n//helper methods\nfunction getFirstElement(elems){\n\tfor(var i = 0; elems && i < elems.length; i++){\n\t\tif(isTag(elems[i])) return elems[i];\n\t}\n}\n\nfunction getAttribFunc(name, value){\n\tvar data = {name: name, value: value};\n\treturn function attribFunc(next){\n\t\treturn checkAttrib(next, data);\n\t};\n}\n\nfunction getChildFunc(next){\n\treturn function(elem){\n\t\treturn !!getParent(elem) && next(elem);\n\t};\n}\n\nvar filters = {\n\tcontains: function(next, text){\n\t\treturn function contains(elem){\n\t\t\treturn next(elem) && getText(elem).indexOf(text) >= 0;\n\t\t};\n\t},\n\ticontains: function(next, text){\n\t\tvar itext = text.toLowerCase();\n\t\treturn function icontains(elem){\n\t\t\treturn next(elem) &&\n\t\t\t\tgetText(elem).toLowerCase().indexOf(itext) >= 0;\n\t\t};\n\t},\n\n\t//location specific methods\n\t\"nth-child\": function(next, rule){\n\t\tvar func = getNCheck(rule);\n\n\t\tif(func === falseFunc) return func;\n\t\tif(func === trueFunc)  return getChildFunc(next);\n\n\t\treturn function nthChild(elem){\n\t\t\tvar siblings = getSiblings(elem);\n\n\t\t\tfor(var i = 0, pos = 0; i < siblings.length; i++){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\telse pos++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn func(pos) && next(elem);\n\t\t};\n\t},\n\t\"nth-last-child\": function(next, rule){\n\t\tvar func = getNCheck(rule);\n\n\t\tif(func === falseFunc) return func;\n\t\tif(func === trueFunc)  return getChildFunc(next);\n\n\t\treturn function nthLastChild(elem){\n\t\t\tvar siblings = getSiblings(elem);\n\n\t\t\tfor(var pos = 0, i = siblings.length - 1; i >= 0; i--){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\telse pos++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn func(pos) && next(elem);\n\t\t};\n\t},\n\t\"nth-of-type\": function(next, rule){\n\t\tvar func = getNCheck(rule);\n\n\t\tif(func === falseFunc) return func;\n\t\tif(func === trueFunc)  return getChildFunc(next);\n\n\t\treturn function nthOfType(elem){\n\t\t\tvar siblings = getSiblings(elem);\n\n\t\t\tfor(var pos = 0, i = 0; i < siblings.length; i++){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\tif(getName(siblings[i]) === getName(elem)) pos++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn func(pos) && next(elem);\n\t\t};\n\t},\n\t\"nth-last-of-type\": function(next, rule){\n\t\tvar func = getNCheck(rule);\n\n\t\tif(func === falseFunc) return func;\n\t\tif(func === trueFunc)  return getChildFunc(next);\n\n\t\treturn function nthLastOfType(elem){\n\t\t\tvar siblings = getSiblings(elem);\n\n\t\t\tfor(var pos = 0, i = siblings.length - 1; i >= 0; i--){\n\t\t\t\tif(isTag(siblings[i])){\n\t\t\t\t\tif(siblings[i] === elem) break;\n\t\t\t\t\tif(getName(siblings[i]) === getName(elem)) pos++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn func(pos) && next(elem);\n\t\t};\n\t},\n\n    //TODO determine the actual root element\n    root: function(next){\n        return function(elem){\n            return !getParent(elem) && next(elem);\n        };\n    },\n\n    scope: function(next, rule, options, context){\n        if(!context || context.length === 0){\n            //equivalent to :root\n            return filters.root(next);\n        }\n\n        if(context.length === 1){\n            //NOTE: can't be unpacked, as :has uses this for side-effects\n            return function(elem){\n                return context[0] === elem && next(elem);\n            };\n        }\n\n        return function(elem){\n            return context.indexOf(elem) >= 0 && next(elem);\n        };\n    },\n\n\t//jQuery extensions (others follow as pseudos)\n\tcheckbox: getAttribFunc(\"type\", \"checkbox\"),\n\tfile: getAttribFunc(\"type\", \"file\"),\n\tpassword: getAttribFunc(\"type\", \"password\"),\n\tradio: getAttribFunc(\"type\", \"radio\"),\n\treset: getAttribFunc(\"type\", \"reset\"),\n\timage: getAttribFunc(\"type\", \"image\"),\n\tsubmit: getAttribFunc(\"type\", \"submit\")\n};\n\n//while filters are precompiled, pseudos get called when they are needed\nvar pseudos = {\n\tempty: function(elem){\n\t\treturn !getChildren(elem).some(function(elem){\n\t\t\treturn isTag(elem) || elem.type === \"text\";\n\t\t});\n\t},\n\n\t\"first-child\": function(elem){\n\t\treturn getFirstElement(getSiblings(elem)) === elem;\n\t},\n\t\"last-child\": function(elem){\n\t\tvar siblings = getSiblings(elem);\n\n\t\tfor(var i = siblings.length - 1; i >= 0; i--){\n\t\t\tif(siblings[i] === elem) return true;\n\t\t\tif(isTag(siblings[i])) break;\n\t\t}\n\n\t\treturn false;\n\t},\n\t\"first-of-type\": function(elem){\n\t\tvar siblings = getSiblings(elem);\n\n\t\tfor(var i = 0; i < siblings.length; i++){\n\t\t\tif(isTag(siblings[i])){\n\t\t\t\tif(siblings[i] === elem) return true;\n\t\t\t\tif(getName(siblings[i]) === getName(elem)) break;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\t\"last-of-type\": function(elem){\n\t\tvar siblings = getSiblings(elem);\n\n\t\tfor(var i = siblings.length-1; i >= 0; i--){\n\t\t\tif(isTag(siblings[i])){\n\t\t\t\tif(siblings[i] === elem) return true;\n\t\t\t\tif(getName(siblings[i]) === getName(elem)) break;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\t\"only-of-type\": function(elem){\n\t\tvar siblings = getSiblings(elem);\n\n\t\tfor(var i = 0, j = siblings.length; i < j; i++){\n\t\t\tif(isTag(siblings[i])){\n\t\t\t\tif(siblings[i] === elem) continue;\n\t\t\t\tif(getName(siblings[i]) === getName(elem)) return false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\t\"only-child\": function(elem){\n\t\tvar siblings = getSiblings(elem);\n\n\t\tfor(var i = 0; i < siblings.length; i++){\n\t\t\tif(isTag(siblings[i]) && siblings[i] !== elem) return false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t//:matches(a, area, link)[href]\n\tlink: function(elem){\n\t\treturn hasAttrib(elem, \"href\");\n\t},\n\tvisited: falseFunc, //seems to be a valid implementation\n\t//TODO: :any-link once the name is finalized (as an alias of :link)\n\n\t//forms\n\t//to consider: :target\n\n\t//:matches([selected], select:not([multiple]):not(> option[selected]) > option:first-of-type)\n\tselected: function(elem){\n\t\tif(hasAttrib(elem, \"selected\")) return true;\n\t\telse if(getName(elem) !== \"option\") return false;\n\n\t\t//the first <option> in a <select> is also selected\n\t\tvar parent = getParent(elem);\n\n\t\tif(\n\t\t\t!parent ||\n\t\t\tgetName(parent) !== \"select\" ||\n\t\t\thasAttrib(parent, \"multiple\")\n\t\t) return false;\n\n\t\tvar siblings = getChildren(parent),\n\t\t\tsawElem  = false;\n\n\t\tfor(var i = 0; i < siblings.length; i++){\n\t\t\tif(isTag(siblings[i])){\n\t\t\t\tif(siblings[i] === elem){\n\t\t\t\t\tsawElem = true;\n\t\t\t\t} else if(!sawElem){\n\t\t\t\t\treturn false;\n\t\t\t\t} else if(hasAttrib(siblings[i], \"selected\")){\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn sawElem;\n\t},\n\t//https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n\t//:matches(\n\t//  :matches(button, input, select, textarea, menuitem, optgroup, option)[disabled],\n\t//  optgroup[disabled] > option),\n\t// fieldset[disabled] * //TODO not child of first <legend>\n\t//)\n\tdisabled: function(elem){\n\t\treturn hasAttrib(elem, \"disabled\");\n\t},\n\tenabled: function(elem){\n\t\treturn !hasAttrib(elem, \"disabled\");\n\t},\n\t//:matches(:matches(:radio, :checkbox)[checked], :selected) (TODO menuitem)\n\tchecked: function(elem){\n\t\treturn hasAttrib(elem, \"checked\") || pseudos.selected(elem);\n\t},\n\t//:matches(input, select, textarea)[required]\n\trequired: function(elem){\n\t\treturn hasAttrib(elem, \"required\");\n\t},\n\t//:matches(input, select, textarea):not([required])\n\toptional: function(elem){\n\t\treturn !hasAttrib(elem, \"required\");\n\t},\n\n\t//jQuery extensions\n\n\t//:not(:empty)\n\tparent: function(elem){\n\t\treturn !pseudos.empty(elem);\n\t},\n\t//:matches(h1, h2, h3, h4, h5, h6)\n\theader: function(elem){\n\t\tvar name = getName(elem);\n\t\treturn name === \"h1\" ||\n\t\t       name === \"h2\" ||\n\t\t       name === \"h3\" ||\n\t\t       name === \"h4\" ||\n\t\t       name === \"h5\" ||\n\t\t       name === \"h6\";\n\t},\n\n\t//:matches(button, input[type=button])\n\tbutton: function(elem){\n\t\tvar name = getName(elem);\n\t\treturn name === \"button\" ||\n\t\t       name === \"input\" &&\n\t\t       getAttribute(elem, \"type\") === \"button\";\n\t},\n\t//:matches(input, textarea, select, button)\n\tinput: function(elem){\n\t\tvar name = getName(elem);\n\t\treturn name === \"input\" ||\n\t\t       name === \"textarea\" ||\n\t\t       name === \"select\" ||\n\t\t       name === \"button\";\n\t},\n\t//input:matches(:not([type!='']), [type='text' i])\n\ttext: function(elem){\n\t\tvar attr;\n\t\treturn getName(elem) === \"input\" && (\n\t\t\t!(attr = getAttribute(elem, \"type\")) ||\n\t\t\tattr.toLowerCase() === \"text\"\n\t\t);\n\t}\n};\n\nfunction verifyArgs(func, name, subselect){\n\tif(subselect === null){\n\t\tif(func.length > 1 && name !== \"scope\"){\n\t\t\tthrow new SyntaxError(\"pseudo-selector :\" + name + \" requires an argument\");\n\t\t}\n\t} else {\n\t\tif(func.length === 1){\n\t\t\tthrow new SyntaxError(\"pseudo-selector :\" + name + \" doesn't have any arguments\");\n\t\t}\n\t}\n}\n\n//FIXME this feels hacky\nvar re_CSS3 = /^(?:(?:nth|last|first|only)-(?:child|of-type)|root|empty|(?:en|dis)abled|checked|not)$/;\n\nmodule.exports = {\n\tcompile: function(next, data, options, context){\n\t\tvar name = data.name,\n\t\t\tsubselect = data.data;\n\n\t\tif(options && options.strict && !re_CSS3.test(name)){\n\t\t\tthrow SyntaxError(\":\" + name + \" isn't part of CSS3\");\n\t\t}\n\n\t\tif(typeof filters[name] === \"function\"){\n\t\t\tverifyArgs(filters[name], name,  subselect);\n\t\t\treturn filters[name](next, subselect, options, context);\n\t\t} else if(typeof pseudos[name] === \"function\"){\n\t\t\tvar func = pseudos[name];\n\t\t\tverifyArgs(func, name, subselect);\n\n\t\t\tif(next === trueFunc) return func;\n\n\t\t\treturn function pseudoArgs(elem){\n\t\t\t\treturn func(elem, subselect) && next(elem);\n\t\t\t};\n\t\t} else {\n\t\t\tthrow new SyntaxError(\"unmatched pseudo-class :\" + name);\n\t\t}\n\t},\n\tfilters: filters,\n\tpseudos: pseudos\n};\n","module.exports = sortByProcedure;\n\n/*\n\tsort the parts of the passed selector,\n\tas there is potential for optimization\n\t(some types of selectors are faster than others)\n*/\n\nvar procedure = require(\"./procedure.json\");\n\nvar attributes = {\n\t__proto__: null,\n\texists: 10,\n\tequals: 8,\n\tnot: 7,\n\tstart: 6,\n\tend: 6,\n\tany: 5,\n\thyphen: 4,\n\telement: 4\n};\n\nfunction sortByProcedure(arr){\n\tvar procs = arr.map(getProcedure);\n\tfor(var i = 1; i < arr.length; i++){\n\t\tvar procNew = procs[i];\n\n\t\tif(procNew < 0) continue;\n\n\t\tfor(var j = i - 1; j >= 0 && procNew < procs[j]; j--){\n\t\t\tvar token = arr[j + 1];\n\t\t\tarr[j + 1] = arr[j];\n\t\t\tarr[j] = token;\n\t\t\tprocs[j + 1] = procs[j];\n\t\t\tprocs[j] = procNew;\n\t\t}\n\t}\n}\n\nfunction getProcedure(token){\n\tvar proc = procedure[token.type];\n\n\tif(proc === procedure.attribute){\n\t\tproc = attributes[token.action];\n\n\t\tif(proc === attributes.equals && token.name === \"id\"){\n\t\t\t//prefer ID selectors (eg. #ID)\n\t\t\tproc = 9;\n\t\t}\n\n\t\tif(token.ignoreCase){\n\t\t\t//ignoreCase adds some overhead, prefer \"normal\" token\n\t\t\t//this is a binary operation, to ensure it's still an int\n\t\t\tproc >>= 1;\n\t\t}\n\t} else if(proc === procedure.pseudo){\n\t\tif(!token.data){\n\t\t\tproc = 3;\n\t\t} else if(token.name === \"has\" || token.name === \"contains\"){\n\t\t\tproc = 0; //expensive in any case\n\t\t} else if(token.name === \"matches\" || token.name === \"not\"){\n\t\t\tproc = 0;\n\t\t\tfor(var i = 0; i < token.data.length; i++){\n\t\t\t\t//TODO better handling of complex selectors\n\t\t\t\tif(token.data[i].length !== 1) continue;\n\t\t\t\tvar cur = getProcedure(token.data[i][0]);\n\t\t\t\t//avoid executing :has or :contains\n\t\t\t\tif(cur === 0){\n\t\t\t\t\tproc = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(cur > proc) proc = cur;\n\t\t\t}\n\t\t\tif(token.data.length > 1 && proc > 0) proc -= 1;\n\t\t} else {\n\t\t\tproc = 1;\n\t\t}\n\t}\n\treturn proc;\n}\n","\"use strict\";\n\nmodule.exports = parse;\n\nvar re_name = /^(?:\\\\.|[\\w\\-\\u00b0-\\uFFFF])+/,\n    re_escape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/ig,\n    //modified version of https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L87\n    re_attr = /^\\s*((?:\\\\.|[\\w\\u00b0-\\uFFFF\\-])+)\\s*(?:(\\S?)=\\s*(?:(['\"])([^]*?)\\3|(#?(?:\\\\.|[\\w\\u00b0-\\uFFFF\\-])*)|)|)\\s*(i)?\\]/;\n\nvar actionTypes = {\n\t__proto__: null,\n\t\"undefined\": \"exists\",\n\t\"\":  \"equals\",\n\t\"~\": \"element\",\n\t\"^\": \"start\",\n\t\"$\": \"end\",\n\t\"*\": \"any\",\n\t\"!\": \"not\",\n\t\"|\": \"hyphen\"\n};\n\nvar simpleSelectors = {\n\t__proto__: null,\n\t\">\": \"child\",\n\t\"<\": \"parent\",\n\t\"~\": \"sibling\",\n\t\"+\": \"adjacent\"\n};\n\nvar attribSelectors = {\n\t__proto__: null,\n\t\"#\": [\"id\", \"equals\"],\n\t\".\": [\"class\", \"element\"]\n};\n\n//pseudos, whose data-property is parsed as well\nvar unpackPseudos = {\n\t__proto__: null,\n\t\"has\": true,\n\t\"not\": true,\n\t\"matches\": true\n};\n\nvar stripQuotesFromPseudos = {\n\t__proto__: null,\n\t\"contains\": true,\n\t\"icontains\": true\n};\n\nvar quotes = {\n\t__proto__: null,\n\t\"\\\"\": true,\n\t\"'\": true\n};\n\n//unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L139\nfunction funescape( _, escaped, escapedWhitespace ) {\n\tvar high = \"0x\" + escaped - 0x10000;\n\t// NaN means non-codepoint\n\t// Support: Firefox\n\t// Workaround erroneous numeric interpretation of +\"0x\"\n\treturn high !== high || escapedWhitespace ?\n\t\tescaped :\n\t\t// BMP codepoint\n\t\thigh < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n}\n\nfunction unescapeCSS(str){\n\treturn str.replace(re_escape, funescape);\n}\n\nfunction isWhitespace(c){\n\treturn c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n\nfunction parse(selector, options){\n\tvar subselects = [];\n\n\tselector = parseSelector(subselects, selector + \"\", options);\n\n\tif(selector !== \"\"){\n\t\tthrow new SyntaxError(\"Unmatched selector: \" + selector);\n\t}\n\n\treturn subselects;\n}\n\nfunction parseSelector(subselects, selector, options){\n\tvar tokens = [],\n\t\tsawWS = false,\n\t\tdata, firstChar, name, quot;\n\n\tfunction getName(){\n\t\tvar sub = selector.match(re_name)[0];\n\t\tselector = selector.substr(sub.length);\n\t\treturn unescapeCSS(sub);\n\t}\n\n\tfunction stripWhitespace(start){\n\t\twhile(isWhitespace(selector.charAt(start))) start++;\n\t\tselector = selector.substr(start);\n\t}\n\n\tfunction isEscaped(pos) {\n\t\tvar slashCount = 0;\n\n\t\twhile (selector.charAt(--pos) === \"\\\\\") slashCount++;\n\t\treturn (slashCount & 1) === 1;\n\t}\n\n\tstripWhitespace(0);\n\n\twhile(selector !== \"\"){\n\t\tfirstChar = selector.charAt(0);\n\n\t\tif(isWhitespace(firstChar)){\n\t\t\tsawWS = true;\n\t\t\tstripWhitespace(1);\n\t\t} else if(firstChar in simpleSelectors){\n\t\t\ttokens.push({type: simpleSelectors[firstChar]});\n\t\t\tsawWS = false;\n\n\t\t\tstripWhitespace(1);\n\t\t} else if(firstChar === \",\"){\n\t\t\tif(tokens.length === 0){\n\t\t\t\tthrow new SyntaxError(\"empty sub-selector\");\n\t\t\t}\n\t\t\tsubselects.push(tokens);\n\t\t\ttokens = [];\n\t\t\tsawWS = false;\n\t\t\tstripWhitespace(1);\n\t\t} else {\n\t\t\tif(sawWS){\n\t\t\t\tif(tokens.length > 0){\n\t\t\t\t\ttokens.push({type: \"descendant\"});\n\t\t\t\t}\n\t\t\t\tsawWS = false;\n\t\t\t}\n\n\t\t\tif(firstChar === \"*\"){\n\t\t\t\tselector = selector.substr(1);\n\t\t\t\ttokens.push({type: \"universal\"});\n\t\t\t} else if(firstChar in attribSelectors){\n\t\t\t\tselector = selector.substr(1);\n\t\t\t\ttokens.push({\n\t\t\t\t\ttype: \"attribute\",\n\t\t\t\t\tname: attribSelectors[firstChar][0],\n\t\t\t\t\taction: attribSelectors[firstChar][1],\n\t\t\t\t\tvalue: getName(),\n\t\t\t\t\tignoreCase: false\n\t\t\t\t});\n\t\t\t} else if(firstChar === \"[\"){\n\t\t\t\tselector = selector.substr(1);\n\t\t\t\tdata = selector.match(re_attr);\n\t\t\t\tif(!data){\n\t\t\t\t\tthrow new SyntaxError(\"Malformed attribute selector: \" + selector);\n\t\t\t\t}\n\t\t\t\tselector = selector.substr(data[0].length);\n\t\t\t\tname = unescapeCSS(data[1]);\n\n\t\t\t\tif(\n\t\t\t\t\t!options || (\n\t\t\t\t\t\t\"lowerCaseAttributeNames\" in options ?\n\t\t\t\t\t\t\toptions.lowerCaseAttributeNames :\n\t\t\t\t\t\t\t!options.xmlMode\n\t\t\t\t\t)\n\t\t\t\t){\n\t\t\t\t\tname = name.toLowerCase();\n\t\t\t\t}\n\n\t\t\t\ttokens.push({\n\t\t\t\t\ttype: \"attribute\",\n\t\t\t\t\tname: name,\n\t\t\t\t\taction: actionTypes[data[2]],\n\t\t\t\t\tvalue: unescapeCSS(data[4] || data[5] || \"\"),\n\t\t\t\t\tignoreCase: !!data[6]\n\t\t\t\t});\n\n\t\t\t} else if(firstChar === \":\"){\n\t\t\t\tif(selector.charAt(1) === \":\"){\n\t\t\t\t\tselector = selector.substr(2);\n\t\t\t\t\ttokens.push({type: \"pseudo-element\", name: getName().toLowerCase()});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.substr(1);\n\n\t\t\t\tname = getName().toLowerCase();\n\t\t\t\tdata = null;\n\n\t\t\t\tif(selector.charAt(0) === \"(\"){\n\t\t\t\t\tif(name in unpackPseudos){\n\t\t\t\t\t\tquot = selector.charAt(1);\n\t\t\t\t\t\tvar quoted = quot in quotes;\n\n\t\t\t\t\t\tselector = selector.substr(quoted + 1);\n\n\t\t\t\t\t\tdata = [];\n\t\t\t\t\t\tselector = parseSelector(data, selector, options);\n\n\t\t\t\t\t\tif(quoted){\n\t\t\t\t\t\t\tif(selector.charAt(0) !== quot){\n\t\t\t\t\t\t\t\tthrow new SyntaxError(\"unmatched quotes in :\" + name);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tselector = selector.substr(1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(selector.charAt(0) !== \")\"){\n\t\t\t\t\t\t\tthrow new SyntaxError(\"missing closing parenthesis in :\" + name + \" \" + selector);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tselector = selector.substr(1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar pos = 1, counter = 1;\n\n\t\t\t\t\t\tfor(; counter > 0 && pos < selector.length; pos++){\n\t\t\t\t\t\t\tif(selector.charAt(pos) === \"(\" && !isEscaped(pos)) counter++;\n\t\t\t\t\t\t\telse if(selector.charAt(pos) === \")\" && !isEscaped(pos)) counter--;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(counter){\n\t\t\t\t\t\t\tthrow new SyntaxError(\"parenthesis not matched\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata = selector.substr(1, pos - 2);\n\t\t\t\t\t\tselector = selector.substr(pos);\n\n\t\t\t\t\t\tif(name in stripQuotesFromPseudos){\n\t\t\t\t\t\t\tquot = data.charAt(0);\n\n\t\t\t\t\t\t\tif(quot === data.slice(-1) && quot in quotes){\n\t\t\t\t\t\t\t\tdata = data.slice(1, -1);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdata = unescapeCSS(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttokens.push({type: \"pseudo\", name: name, data: data});\n\t\t\t} else if(re_name.test(selector)){\n\t\t\t\tname = getName();\n\n\t\t\t\tif(!options || (\"lowerCaseTags\" in options ? options.lowerCaseTags : !options.xmlMode)){\n\t\t\t\t\tname = name.toLowerCase();\n\t\t\t\t}\n\n\t\t\t\ttokens.push({type: \"tag\", name: name});\n\t\t\t} else {\n\t\t\t\tif(tokens.length && tokens[tokens.length - 1].type === \"descendant\"){\n\t\t\t\t\ttokens.pop();\n\t\t\t\t}\n\t\t\t\taddToken(subselects, tokens);\n\t\t\t\treturn selector;\n\t\t\t}\n\t\t}\n\t}\n\n\taddToken(subselects, tokens);\n\n\treturn selector;\n}\n\nfunction addToken(subselects, tokens){\n\tif(subselects.length > 0 && tokens.length === 0){\n\t\tthrow new SyntaxError(\"empty sub-selector\");\n\t}\n\n\tsubselects.push(tokens);\n}\n","'use strict'\n\nmodule.exports = direction\n\nvar RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nvar LTR =\n  'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n  '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n  '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\nvar rtl = new RegExp('^[^' + LTR + ']*[' + RTL + ']')\nvar ltr = new RegExp('^[^' + RTL + ']*[' + LTR + ']')\n\nfunction direction(value) {\n  value = String(value || '')\n\n  if (rtl.test(value)) {\n    return 'rtl'\n  }\n\n  if (ltr.test(value)) {\n    return 'ltr'\n  }\n\n  return 'neutral'\n}\n","/*\n  Module dependencies\n*/\nvar ElementType = require('domelementtype');\nvar entities = require('entities');\n\nvar unencodedElements = {\n  __proto__: null,\n  style: true,\n  script: true,\n  xmp: true,\n  iframe: true,\n  noembed: true,\n  noframes: true,\n  plaintext: true,\n  noscript: true\n};\n\n/*\n  Format attributes\n*/\nfunction formatAttrs(attributes, opts) {\n  if (!attributes) return;\n\n  var output = '',\n      value;\n\n  // Loop through the attributes\n  for (var key in attributes) {\n    value = attributes[key];\n    if (output) {\n      output += ' ';\n    }\n\n    output += key;\n    if ((value !== null && value !== '') || opts.xmlMode) {\n        output += '=\"' + (opts.decodeEntities ? entities.encodeXML(value) : value) + '\"';\n    }\n  }\n\n  return output;\n}\n\n/*\n  Self-enclosing tags (stolen from node-htmlparser)\n*/\nvar singleTag = {\n  __proto__: null,\n  area: true,\n  base: true,\n  basefont: true,\n  br: true,\n  col: true,\n  command: true,\n  embed: true,\n  frame: true,\n  hr: true,\n  img: true,\n  input: true,\n  isindex: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true,\n};\n\n\nvar render = module.exports = function(dom, opts) {\n  if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];\n  opts = opts || {};\n\n  var output = '';\n\n  for(var i = 0; i < dom.length; i++){\n    var elem = dom[i];\n\n    if (elem.type === 'root')\n      output += render(elem.children, opts);\n    else if (ElementType.isTag(elem))\n      output += renderTag(elem, opts);\n    else if (elem.type === ElementType.Directive)\n      output += renderDirective(elem);\n    else if (elem.type === ElementType.Comment)\n      output += renderComment(elem);\n    else if (elem.type === ElementType.CDATA)\n      output += renderCdata(elem);\n    else\n      output += renderText(elem, opts);\n  }\n\n  return output;\n};\n\nfunction renderTag(elem, opts) {\n  // Handle SVG\n  if (elem.name === \"svg\") opts = {decodeEntities: opts.decodeEntities, xmlMode: true};\n\n  var tag = '<' + elem.name,\n      attribs = formatAttrs(elem.attribs, opts);\n\n  if (attribs) {\n    tag += ' ' + attribs;\n  }\n\n  if (\n    opts.xmlMode\n    && (!elem.children || elem.children.length === 0)\n  ) {\n    tag += '/>';\n  } else {\n    tag += '>';\n    if (elem.children) {\n      tag += render(elem.children, opts);\n    }\n\n    if (!singleTag[elem.name] || opts.xmlMode) {\n      tag += '</' + elem.name + '>';\n    }\n  }\n\n  return tag;\n}\n\nfunction renderDirective(elem) {\n  return '<' + elem.data + '>';\n}\n\nfunction renderText(elem, opts) {\n  var data = elem.data || '';\n\n  // if entities weren't decoded, no need to encode them back\n  if (opts.decodeEntities && !(elem.parent && elem.parent.name in unencodedElements)) {\n    data = entities.encodeXML(data);\n  }\n\n  return data;\n}\n\nfunction renderCdata(elem) {\n  return '<![CDATA[' + elem.children[0].data + ']]>';\n}\n\nfunction renderComment(elem) {\n  return '<!--' + elem.data + '-->';\n}\n","//Types of elements found in the DOM\nmodule.exports = {\n\tText: \"text\", //Text\n\tDirective: \"directive\", //<? ... ?>\n\tComment: \"comment\", //<!-- ... -->\n\tScript: \"script\", //<script> tags\n\tStyle: \"style\", //<style> tags\n\tTag: \"tag\", //Any tag\n\tCDATA: \"cdata\", //<![CDATA[ ... ]]>\n\tDoctype: \"doctype\",\n\n\tisTag: function(elem){\n\t\treturn elem.type === \"tag\" || elem.type === \"script\" || elem.type === \"style\";\n\t}\n};\n","var ElementType = require(\"domelementtype\");\n\nvar re_whitespace = /\\s+/g;\nvar NodePrototype = require(\"./lib/node\");\nvar ElementPrototype = require(\"./lib/element\");\n\nfunction DomHandler(callback, options, elementCB){\n\tif(typeof callback === \"object\"){\n\t\telementCB = options;\n\t\toptions = callback;\n\t\tcallback = null;\n\t} else if(typeof options === \"function\"){\n\t\telementCB = options;\n\t\toptions = defaultOpts;\n\t}\n\tthis._callback = callback;\n\tthis._options = options || defaultOpts;\n\tthis._elementCB = elementCB;\n\tthis.dom = [];\n\tthis._done = false;\n\tthis._tagStack = [];\n\tthis._parser = this._parser || null;\n}\n\n//default options\nvar defaultOpts = {\n\tnormalizeWhitespace: false, //Replace all whitespace with single spaces\n\twithStartIndices: false, //Add startIndex properties to nodes\n\twithEndIndices: false, //Add endIndex properties to nodes\n};\n\nDomHandler.prototype.onparserinit = function(parser){\n\tthis._parser = parser;\n};\n\n//Resets the handler back to starting state\nDomHandler.prototype.onreset = function(){\n\tDomHandler.call(this, this._callback, this._options, this._elementCB);\n};\n\n//Signals the handler that parsing is done\nDomHandler.prototype.onend = function(){\n\tif(this._done) return;\n\tthis._done = true;\n\tthis._parser = null;\n\tthis._handleCallback(null);\n};\n\nDomHandler.prototype._handleCallback =\nDomHandler.prototype.onerror = function(error){\n\tif(typeof this._callback === \"function\"){\n\t\tthis._callback(error, this.dom);\n\t} else {\n\t\tif(error) throw error;\n\t}\n};\n\nDomHandler.prototype.onclosetag = function(){\n\t//if(this._tagStack.pop().name !== name) this._handleCallback(Error(\"Tagname didn't match!\"));\n\t\n\tvar elem = this._tagStack.pop();\n\n\tif(this._options.withEndIndices && elem){\n\t\telem.endIndex = this._parser.endIndex;\n\t}\n\n\tif(this._elementCB) this._elementCB(elem);\n};\n\nDomHandler.prototype._createDomElement = function(properties){\n\tif (!this._options.withDomLvl1) return properties;\n\n\tvar element;\n\tif (properties.type === \"tag\") {\n\t\telement = Object.create(ElementPrototype);\n\t} else {\n\t\telement = Object.create(NodePrototype);\n\t}\n\n\tfor (var key in properties) {\n\t\tif (properties.hasOwnProperty(key)) {\n\t\t\telement[key] = properties[key];\n\t\t}\n\t}\n\n\treturn element;\n};\n\nDomHandler.prototype._addDomElement = function(element){\n\tvar parent = this._tagStack[this._tagStack.length - 1];\n\tvar siblings = parent ? parent.children : this.dom;\n\tvar previousSibling = siblings[siblings.length - 1];\n\n\telement.next = null;\n\n\tif(this._options.withStartIndices){\n\t\telement.startIndex = this._parser.startIndex;\n\t}\n\tif(this._options.withEndIndices){\n\t\telement.endIndex = this._parser.endIndex;\n\t}\n\n\tif(previousSibling){\n\t\telement.prev = previousSibling;\n\t\tpreviousSibling.next = element;\n\t} else {\n\t\telement.prev = null;\n\t}\n\n\tsiblings.push(element);\n\telement.parent = parent || null;\n};\n\nDomHandler.prototype.onopentag = function(name, attribs){\n\tvar properties = {\n\t\ttype: name === \"script\" ? ElementType.Script : name === \"style\" ? ElementType.Style : ElementType.Tag,\n\t\tname: name,\n\t\tattribs: attribs,\n\t\tchildren: []\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.ontext = function(data){\n\t//the ignoreWhitespace is officially dropped, but for now,\n\t//it's an alias for normalizeWhitespace\n\tvar normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;\n\n\tvar lastTag;\n\n\tif(!this._tagStack.length && this.dom.length && (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){\n\t\tif(normalize){\n\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t} else {\n\t\t\tlastTag.data += data;\n\t\t}\n\t} else {\n\t\tif(\n\t\t\tthis._tagStack.length &&\n\t\t\t(lastTag = this._tagStack[this._tagStack.length - 1]) &&\n\t\t\t(lastTag = lastTag.children[lastTag.children.length - 1]) &&\n\t\t\tlastTag.type === ElementType.Text\n\t\t){\n\t\t\tif(normalize){\n\t\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t\t} else {\n\t\t\t\tlastTag.data += data;\n\t\t\t}\n\t\t} else {\n\t\t\tif(normalize){\n\t\t\t\tdata = data.replace(re_whitespace, \" \");\n\t\t\t}\n\n\t\t\tvar element = this._createDomElement({\n\t\t\t\tdata: data,\n\t\t\t\ttype: ElementType.Text\n\t\t\t});\n\n\t\t\tthis._addDomElement(element);\n\t\t}\n\t}\n};\n\nDomHandler.prototype.oncomment = function(data){\n\tvar lastTag = this._tagStack[this._tagStack.length - 1];\n\n\tif(lastTag && lastTag.type === ElementType.Comment){\n\t\tlastTag.data += data;\n\t\treturn;\n\t}\n\n\tvar properties = {\n\t\tdata: data,\n\t\ttype: ElementType.Comment\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncdatastart = function(){\n\tvar properties = {\n\t\tchildren: [{\n\t\t\tdata: \"\",\n\t\t\ttype: ElementType.Text\n\t\t}],\n\t\ttype: ElementType.CDATA\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){\n\tthis._tagStack.pop();\n};\n\nDomHandler.prototype.onprocessinginstruction = function(name, data){\n\tvar element = this._createDomElement({\n\t\tname: name,\n\t\tdata: data,\n\t\ttype: ElementType.Directive\n\t});\n\n\tthis._addDomElement(element);\n};\n\nmodule.exports = DomHandler;\n","// DOM-Level-1-compliant structure\nvar NodePrototype = require('./node');\nvar ElementPrototype = module.exports = Object.create(NodePrototype);\n\nvar domLvl1 = {\n\ttagName: \"name\"\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(ElementPrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","// This object will be used as the prototype for Nodes when creating a\n// DOM-Level-1-compliant structure.\nvar NodePrototype = module.exports = {\n\tget firstChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[0] || null;\n\t},\n\tget lastChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[children.length - 1] || null;\n\t},\n\tget nodeType() {\n\t\treturn nodeTypes[this.type] || nodeTypes.element;\n\t}\n};\n\nvar domLvl1 = {\n\ttagName: \"name\",\n\tchildNodes: \"children\",\n\tparentNode: \"parent\",\n\tpreviousSibling: \"prev\",\n\tnextSibling: \"next\",\n\tnodeValue: \"data\"\n};\n\nvar nodeTypes = {\n\telement: 1,\n\ttext: 3,\n\tcdata: 4,\n\tcomment: 8\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(NodePrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","var DomUtils = module.exports;\n\n[\n\trequire(\"./lib/stringify\"),\n\trequire(\"./lib/traversal\"),\n\trequire(\"./lib/manipulation\"),\n\trequire(\"./lib/querying\"),\n\trequire(\"./lib/legacy\"),\n\trequire(\"./lib/helpers\")\n].forEach(function(ext){\n\tObject.keys(ext).forEach(function(key){\n\t\tDomUtils[key] = ext[key].bind(DomUtils);\n\t});\n});\n","// removeSubsets\n// Given an array of nodes, remove any member that is contained by another.\nexports.removeSubsets = function(nodes) {\n\tvar idx = nodes.length, node, ancestor, replace;\n\n\t// Check if each node (or one of its ancestors) is already contained in the\n\t// array.\n\twhile (--idx > -1) {\n\t\tnode = ancestor = nodes[idx];\n\n\t\t// Temporarily remove the node under consideration\n\t\tnodes[idx] = null;\n\t\treplace = true;\n\n\t\twhile (ancestor) {\n\t\t\tif (nodes.indexOf(ancestor) > -1) {\n\t\t\t\treplace = false;\n\t\t\t\tnodes.splice(idx, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tancestor = ancestor.parent;\n\t\t}\n\n\t\t// If the node has been found to be unique, re-insert it.\n\t\tif (replace) {\n\t\t\tnodes[idx] = node;\n\t\t}\n\t}\n\n\treturn nodes;\n};\n\n// Source: http://dom.spec.whatwg.org/#dom-node-comparedocumentposition\nvar POSITION = {\n\tDISCONNECTED: 1,\n\tPRECEDING: 2,\n\tFOLLOWING: 4,\n\tCONTAINS: 8,\n\tCONTAINED_BY: 16\n};\n\n// Compare the position of one node against another node in any other document.\n// The return value is a bitmask with the following values:\n//\n// document order:\n// > There is an ordering, document order, defined on all the nodes in the\n// > document corresponding to the order in which the first character of the\n// > XML representation of each node occurs in the XML representation of the\n// > document after expansion of general entities. Thus, the document element\n// > node will be the first node. Element nodes occur before their children.\n// > Thus, document order orders element nodes in order of the occurrence of\n// > their start-tag in the XML (after expansion of entities). The attribute\n// > nodes of an element occur after the element and before its children. The\n// > relative order of attribute nodes is implementation-dependent./\n// Source:\n// http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n//\n// @argument {Node} nodaA The first node to use in the comparison\n// @argument {Node} nodeB The second node to use in the comparison\n//\n// @return {Number} A bitmask describing the input nodes' relative position.\n//         See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n//         a description of these values.\nvar comparePos = exports.compareDocumentPosition = function(nodeA, nodeB) {\n\tvar aParents = [];\n\tvar bParents = [];\n\tvar current, sharedParent, siblings, aSibling, bSibling, idx;\n\n\tif (nodeA === nodeB) {\n\t\treturn 0;\n\t}\n\n\tcurrent = nodeA;\n\twhile (current) {\n\t\taParents.unshift(current);\n\t\tcurrent = current.parent;\n\t}\n\tcurrent = nodeB;\n\twhile (current) {\n\t\tbParents.unshift(current);\n\t\tcurrent = current.parent;\n\t}\n\n\tidx = 0;\n\twhile (aParents[idx] === bParents[idx]) {\n\t\tidx++;\n\t}\n\n\tif (idx === 0) {\n\t\treturn POSITION.DISCONNECTED;\n\t}\n\n\tsharedParent = aParents[idx - 1];\n\tsiblings = sharedParent.children;\n\taSibling = aParents[idx];\n\tbSibling = bParents[idx];\n\n\tif (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n\t\tif (sharedParent === nodeB) {\n\t\t\treturn POSITION.FOLLOWING | POSITION.CONTAINED_BY;\n\t\t}\n\t\treturn POSITION.FOLLOWING;\n\t} else {\n\t\tif (sharedParent === nodeA) {\n\t\t\treturn POSITION.PRECEDING | POSITION.CONTAINS;\n\t\t}\n\t\treturn POSITION.PRECEDING;\n\t}\n};\n\n// Sort an array of nodes based on their relative position in the document and\n// remove any duplicate nodes. If the array contains nodes that do not belong\n// to the same document, sort order is unspecified.\n//\n// @argument {Array} nodes Array of DOM nodes\n//\n// @returns {Array} collection of unique nodes, sorted in document order\nexports.uniqueSort = function(nodes) {\n\tvar idx = nodes.length, node, position;\n\n\tnodes = nodes.slice();\n\n\twhile (--idx > -1) {\n\t\tnode = nodes[idx];\n\t\tposition = nodes.indexOf(node);\n\t\tif (position > -1 && position < idx) {\n\t\t\tnodes.splice(idx, 1);\n\t\t}\n\t}\n\tnodes.sort(function(a, b) {\n\t\tvar relative = comparePos(a, b);\n\t\tif (relative & POSITION.PRECEDING) {\n\t\t\treturn -1;\n\t\t} else if (relative & POSITION.FOLLOWING) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n\n\treturn nodes;\n};\n","var ElementType = require(\"domelementtype\");\nvar isTag = exports.isTag = ElementType.isTag;\n\nexports.testElement = function(options, element){\n\tfor(var key in options){\n\t\tif(!options.hasOwnProperty(key));\n\t\telse if(key === \"tag_name\"){\n\t\t\tif(!isTag(element) || !options.tag_name(element.name)){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if(key === \"tag_type\"){\n\t\t\tif(!options.tag_type(element.type)) return false;\n\t\t} else if(key === \"tag_contains\"){\n\t\t\tif(isTag(element) || !options.tag_contains(element.data)){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if(!element.attribs || !options[key](element.attribs[key])){\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\n\nvar Checks = {\n\ttag_name: function(name){\n\t\tif(typeof name === \"function\"){\n\t\t\treturn function(elem){ return isTag(elem) && name(elem.name); };\n\t\t} else if(name === \"*\"){\n\t\t\treturn isTag;\n\t\t} else {\n\t\t\treturn function(elem){ return isTag(elem) && elem.name === name; };\n\t\t}\n\t},\n\ttag_type: function(type){\n\t\tif(typeof type === \"function\"){\n\t\t\treturn function(elem){ return type(elem.type); };\n\t\t} else {\n\t\t\treturn function(elem){ return elem.type === type; };\n\t\t}\n\t},\n\ttag_contains: function(data){\n\t\tif(typeof data === \"function\"){\n\t\t\treturn function(elem){ return !isTag(elem) && data(elem.data); };\n\t\t} else {\n\t\t\treturn function(elem){ return !isTag(elem) && elem.data === data; };\n\t\t}\n\t}\n};\n\nfunction getAttribCheck(attrib, value){\n\tif(typeof value === \"function\"){\n\t\treturn function(elem){ return elem.attribs && value(elem.attribs[attrib]); };\n\t} else {\n\t\treturn function(elem){ return elem.attribs && elem.attribs[attrib] === value; };\n\t}\n}\n\nfunction combineFuncs(a, b){\n\treturn function(elem){\n\t\treturn a(elem) || b(elem);\n\t};\n}\n\nexports.getElements = function(options, element, recurse, limit){\n\tvar funcs = Object.keys(options).map(function(key){\n\t\tvar value = options[key];\n\t\treturn key in Checks ? Checks[key](value) : getAttribCheck(key, value);\n\t});\n\n\treturn funcs.length === 0 ? [] : this.filter(\n\t\tfuncs.reduce(combineFuncs),\n\t\telement, recurse, limit\n\t);\n};\n\nexports.getElementById = function(id, element, recurse){\n\tif(!Array.isArray(element)) element = [element];\n\treturn this.findOne(getAttribCheck(\"id\", id), element, recurse !== false);\n};\n\nexports.getElementsByTagName = function(name, element, recurse, limit){\n\treturn this.filter(Checks.tag_name(name), element, recurse, limit);\n};\n\nexports.getElementsByTagType = function(type, element, recurse, limit){\n\treturn this.filter(Checks.tag_type(type), element, recurse, limit);\n};\n","exports.removeElement = function(elem){\n\tif(elem.prev) elem.prev.next = elem.next;\n\tif(elem.next) elem.next.prev = elem.prev;\n\n\tif(elem.parent){\n\t\tvar childs = elem.parent.children;\n\t\tchilds.splice(childs.lastIndexOf(elem), 1);\n\t}\n};\n\nexports.replaceElement = function(elem, replacement){\n\tvar prev = replacement.prev = elem.prev;\n\tif(prev){\n\t\tprev.next = replacement;\n\t}\n\n\tvar next = replacement.next = elem.next;\n\tif(next){\n\t\tnext.prev = replacement;\n\t}\n\n\tvar parent = replacement.parent = elem.parent;\n\tif(parent){\n\t\tvar childs = parent.children;\n\t\tchilds[childs.lastIndexOf(elem)] = replacement;\n\t}\n};\n\nexports.appendChild = function(elem, child){\n\tchild.parent = elem;\n\n\tif(elem.children.push(child) !== 1){\n\t\tvar sibling = elem.children[elem.children.length - 2];\n\t\tsibling.next = child;\n\t\tchild.prev = sibling;\n\t\tchild.next = null;\n\t}\n};\n\nexports.append = function(elem, next){\n\tvar parent = elem.parent,\n\t\tcurrNext = elem.next;\n\n\tnext.next = currNext;\n\tnext.prev = elem;\n\telem.next = next;\n\tnext.parent = parent;\n\n\tif(currNext){\n\t\tcurrNext.prev = next;\n\t\tif(parent){\n\t\t\tvar childs = parent.children;\n\t\t\tchilds.splice(childs.lastIndexOf(currNext), 0, next);\n\t\t}\n\t} else if(parent){\n\t\tparent.children.push(next);\n\t}\n};\n\nexports.prepend = function(elem, prev){\n\tvar parent = elem.parent;\n\tif(parent){\n\t\tvar childs = parent.children;\n\t\tchilds.splice(childs.lastIndexOf(elem), 0, prev);\n\t}\n\n\tif(elem.prev){\n\t\telem.prev.next = prev;\n\t}\n\t\n\tprev.parent = parent;\n\tprev.prev = elem.prev;\n\tprev.next = elem;\n\telem.prev = prev;\n};\n\n\n","var isTag = require(\"domelementtype\").isTag;\n\nmodule.exports = {\n\tfilter: filter,\n\tfind: find,\n\tfindOneChild: findOneChild,\n\tfindOne: findOne,\n\texistsOne: existsOne,\n\tfindAll: findAll\n};\n\nfunction filter(test, element, recurse, limit){\n\tif(!Array.isArray(element)) element = [element];\n\n\tif(typeof limit !== \"number\" || !isFinite(limit)){\n\t\tlimit = Infinity;\n\t}\n\treturn find(test, element, recurse !== false, limit);\n}\n\nfunction find(test, elems, recurse, limit){\n\tvar result = [], childs;\n\n\tfor(var i = 0, j = elems.length; i < j; i++){\n\t\tif(test(elems[i])){\n\t\t\tresult.push(elems[i]);\n\t\t\tif(--limit <= 0) break;\n\t\t}\n\n\t\tchilds = elems[i].children;\n\t\tif(recurse && childs && childs.length > 0){\n\t\t\tchilds = find(test, childs, recurse, limit);\n\t\t\tresult = result.concat(childs);\n\t\t\tlimit -= childs.length;\n\t\t\tif(limit <= 0) break;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction findOneChild(test, elems){\n\tfor(var i = 0, l = elems.length; i < l; i++){\n\t\tif(test(elems[i])) return elems[i];\n\t}\n\n\treturn null;\n}\n\nfunction findOne(test, elems){\n\tvar elem = null;\n\n\tfor(var i = 0, l = elems.length; i < l && !elem; i++){\n\t\tif(!isTag(elems[i])){\n\t\t\tcontinue;\n\t\t} else if(test(elems[i])){\n\t\t\telem = elems[i];\n\t\t} else if(elems[i].children.length > 0){\n\t\t\telem = findOne(test, elems[i].children);\n\t\t}\n\t}\n\n\treturn elem;\n}\n\nfunction existsOne(test, elems){\n\tfor(var i = 0, l = elems.length; i < l; i++){\n\t\tif(\n\t\t\tisTag(elems[i]) && (\n\t\t\t\ttest(elems[i]) || (\n\t\t\t\t\telems[i].children.length > 0 &&\n\t\t\t\t\texistsOne(test, elems[i].children)\n\t\t\t\t)\n\t\t\t)\n\t\t){\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findAll(test, elems){\n\tvar result = [];\n\tfor(var i = 0, j = elems.length; i < j; i++){\n\t\tif(!isTag(elems[i])) continue;\n\t\tif(test(elems[i])) result.push(elems[i]);\n\n\t\tif(elems[i].children.length > 0){\n\t\t\tresult = result.concat(findAll(test, elems[i].children));\n\t\t}\n\t}\n\treturn result;\n}\n","var ElementType = require(\"domelementtype\"),\n    getOuterHTML = require(\"dom-serializer\"),\n    isTag = ElementType.isTag;\n\nmodule.exports = {\n\tgetInnerHTML: getInnerHTML,\n\tgetOuterHTML: getOuterHTML,\n\tgetText: getText\n};\n\nfunction getInnerHTML(elem, opts){\n\treturn elem.children ? elem.children.map(function(elem){\n\t\treturn getOuterHTML(elem, opts);\n\t}).join(\"\") : \"\";\n}\n\nfunction getText(elem){\n\tif(Array.isArray(elem)) return elem.map(getText).join(\"\");\n\tif(isTag(elem) || elem.type === ElementType.CDATA) return getText(elem.children);\n\tif(elem.type === ElementType.Text) return elem.data;\n\treturn \"\";\n}\n","var getChildren = exports.getChildren = function(elem){\n\treturn elem.children;\n};\n\nvar getParent = exports.getParent = function(elem){\n\treturn elem.parent;\n};\n\nexports.getSiblings = function(elem){\n\tvar parent = getParent(elem);\n\treturn parent ? getChildren(parent) : [elem];\n};\n\nexports.getAttributeValue = function(elem, name){\n\treturn elem.attribs && elem.attribs[name];\n};\n\nexports.hasAttrib = function(elem, name){\n\treturn !!elem.attribs && hasOwnProperty.call(elem.attribs, name);\n};\n\nexports.getName = function(elem){\n\treturn elem.name;\n};\n","var encode = require(\"./lib/encode.js\"),\n    decode = require(\"./lib/decode.js\");\n\nexports.decode = function(data, level) {\n    return (!level || level <= 0 ? decode.XML : decode.HTML)(data);\n};\n\nexports.decodeStrict = function(data, level) {\n    return (!level || level <= 0 ? decode.XML : decode.HTMLStrict)(data);\n};\n\nexports.encode = function(data, level) {\n    return (!level || level <= 0 ? encode.XML : encode.HTML)(data);\n};\n\nexports.encodeXML = encode.XML;\n\nexports.encodeHTML4 = exports.encodeHTML5 = exports.encodeHTML = encode.HTML;\n\nexports.decodeXML = exports.decodeXMLStrict = decode.XML;\n\nexports.decodeHTML4 = exports.decodeHTML5 = exports.decodeHTML = decode.HTML;\n\nexports.decodeHTML4Strict = exports.decodeHTML5Strict = exports.decodeHTMLStrict = decode.HTMLStrict;\n\nexports.escape = encode.escape;\n","var entityMap = require(\"../maps/entities.json\"),\n    legacyMap = require(\"../maps/legacy.json\"),\n    xmlMap = require(\"../maps/xml.json\"),\n    decodeCodePoint = require(\"./decode_codepoint.js\");\n\nvar decodeXMLStrict = getStrictDecoder(xmlMap),\n    decodeHTMLStrict = getStrictDecoder(entityMap);\n\nfunction getStrictDecoder(map) {\n    var keys = Object.keys(map).join(\"|\"),\n        replace = getReplacer(map);\n\n    keys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n\n    var re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n\n    return function(str) {\n        return String(str).replace(re, replace);\n    };\n}\n\nvar decodeHTML = (function() {\n    var legacy = Object.keys(legacyMap).sort(sorter);\n\n    var keys = Object.keys(entityMap).sort(sorter);\n\n    for (var i = 0, j = 0; i < keys.length; i++) {\n        if (legacy[j] === keys[i]) {\n            keys[i] += \";?\";\n            j++;\n        } else {\n            keys[i] += \";\";\n        }\n    }\n\n    var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\"),\n        replace = getReplacer(entityMap);\n\n    function replacer(str) {\n        if (str.substr(-1) !== \";\") str += \";\";\n        return replace(str);\n    }\n\n    //TODO consider creating a merged map\n    return function(str) {\n        return String(str).replace(re, replacer);\n    };\n})();\n\nfunction sorter(a, b) {\n    return a < b ? 1 : -1;\n}\n\nfunction getReplacer(map) {\n    return function replace(str) {\n        if (str.charAt(1) === \"#\") {\n            if (str.charAt(2) === \"X\" || str.charAt(2) === \"x\") {\n                return decodeCodePoint(parseInt(str.substr(3), 16));\n            }\n            return decodeCodePoint(parseInt(str.substr(2), 10));\n        }\n        return map[str.slice(1, -1)];\n    };\n}\n\nmodule.exports = {\n    XML: decodeXMLStrict,\n    HTML: decodeHTML,\n    HTMLStrict: decodeHTMLStrict\n};\n","var decodeMap = require(\"../maps/decode.json\");\n\nmodule.exports = decodeCodePoint;\n\n// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nfunction decodeCodePoint(codePoint) {\n    if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n        return \"\\uFFFD\";\n    }\n\n    if (codePoint in decodeMap) {\n        codePoint = decodeMap[codePoint];\n    }\n\n    var output = \"\";\n\n    if (codePoint > 0xffff) {\n        codePoint -= 0x10000;\n        output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n        codePoint = 0xdc00 | (codePoint & 0x3ff);\n    }\n\n    output += String.fromCharCode(codePoint);\n    return output;\n}\n","var inverseXML = getInverseObj(require(\"../maps/xml.json\")),\n    xmlReplacer = getInverseReplacer(inverseXML);\n\nexports.XML = getInverse(inverseXML, xmlReplacer);\n\nvar inverseHTML = getInverseObj(require(\"../maps/entities.json\")),\n    htmlReplacer = getInverseReplacer(inverseHTML);\n\nexports.HTML = getInverse(inverseHTML, htmlReplacer);\n\nfunction getInverseObj(obj) {\n    return Object.keys(obj)\n        .sort()\n        .reduce(function(inverse, name) {\n            inverse[obj[name]] = \"&\" + name + \";\";\n            return inverse;\n        }, {});\n}\n\nfunction getInverseReplacer(inverse) {\n    var single = [],\n        multiple = [];\n\n    Object.keys(inverse).forEach(function(k) {\n        if (k.length === 1) {\n            single.push(\"\\\\\" + k);\n        } else {\n            multiple.push(k);\n        }\n    });\n\n    //TODO add ranges\n    multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n\n    return new RegExp(multiple.join(\"|\"), \"g\");\n}\n\nvar re_nonASCII = /[^\\0-\\x7F]/g,\n    re_astralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction singleCharReplacer(c) {\n    return (\n        \"&#x\" +\n        c\n            .charCodeAt(0)\n            .toString(16)\n            .toUpperCase() +\n        \";\"\n    );\n}\n\nfunction astralReplacer(c) {\n    // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n    var high = c.charCodeAt(0);\n    var low = c.charCodeAt(1);\n    var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000;\n    return \"&#x\" + codePoint.toString(16).toUpperCase() + \";\";\n}\n\nfunction getInverse(inverse, re) {\n    function func(name) {\n        return inverse[name];\n    }\n\n    return function(data) {\n        return data\n            .replace(re, func)\n            .replace(re_astralSymbols, astralReplacer)\n            .replace(re_nonASCII, singleCharReplacer);\n    };\n}\n\nvar re_xmlChars = getInverseReplacer(inverseXML);\n\nfunction escapeXML(data) {\n    return data\n        .replace(re_xmlChars, singleCharReplacer)\n        .replace(re_astralSymbols, astralReplacer)\n        .replace(re_nonASCII, singleCharReplacer);\n}\n\nexports.escape = escapeXML;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\ntry {\n\tnull.error; // eslint-disable-line no-unused-expressions\n} catch (e) {\n\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\tvar errorProto = getProto(getProto(e));\n\tINTRINSICS['%Error.prototype%'] = errorProto;\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","module.exports = CollectingHandler;\n\nfunction CollectingHandler(cbs) {\n    this._cbs = cbs || {};\n    this.events = [];\n}\n\nvar EVENTS = require(\"./\").EVENTS;\nObject.keys(EVENTS).forEach(function(name) {\n    if (EVENTS[name] === 0) {\n        name = \"on\" + name;\n        CollectingHandler.prototype[name] = function() {\n            this.events.push([name]);\n            if (this._cbs[name]) this._cbs[name]();\n        };\n    } else if (EVENTS[name] === 1) {\n        name = \"on\" + name;\n        CollectingHandler.prototype[name] = function(a) {\n            this.events.push([name, a]);\n            if (this._cbs[name]) this._cbs[name](a);\n        };\n    } else if (EVENTS[name] === 2) {\n        name = \"on\" + name;\n        CollectingHandler.prototype[name] = function(a, b) {\n            this.events.push([name, a, b]);\n            if (this._cbs[name]) this._cbs[name](a, b);\n        };\n    } else {\n        throw Error(\"wrong number of arguments\");\n    }\n});\n\nCollectingHandler.prototype.onreset = function() {\n    this.events = [];\n    if (this._cbs.onreset) this._cbs.onreset();\n};\n\nCollectingHandler.prototype.restart = function() {\n    if (this._cbs.onreset) this._cbs.onreset();\n\n    for (var i = 0, len = this.events.length; i < len; i++) {\n        if (this._cbs[this.events[i][0]]) {\n            var num = this.events[i].length;\n\n            if (num === 1) {\n                this._cbs[this.events[i][0]]();\n            } else if (num === 2) {\n                this._cbs[this.events[i][0]](this.events[i][1]);\n            } else {\n                this._cbs[this.events[i][0]](\n                    this.events[i][1],\n                    this.events[i][2]\n                );\n            }\n        }\n    }\n};\n","var DomHandler = require(\"domhandler\");\nvar DomUtils = require(\"domutils\");\n\n//TODO: make this a streamable handler\nfunction FeedHandler(callback, options) {\n    this.init(callback, options);\n}\n\nrequire(\"inherits\")(FeedHandler, DomHandler);\n\nFeedHandler.prototype.init = DomHandler;\n\nfunction getElements(what, where) {\n    return DomUtils.getElementsByTagName(what, where, true);\n}\nfunction getOneElement(what, where) {\n    return DomUtils.getElementsByTagName(what, where, true, 1)[0];\n}\nfunction fetch(what, where, recurse) {\n    return DomUtils.getText(\n        DomUtils.getElementsByTagName(what, where, recurse, 1)\n    ).trim();\n}\n\nfunction addConditionally(obj, prop, what, where, recurse) {\n    var tmp = fetch(what, where, recurse);\n    if (tmp) obj[prop] = tmp;\n}\n\nvar isValidFeed = function(value) {\n    return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n};\n\nFeedHandler.prototype.onend = function() {\n    var feed = {},\n        feedRoot = getOneElement(isValidFeed, this.dom),\n        tmp,\n        childs;\n\n    if (feedRoot) {\n        if (feedRoot.name === \"feed\") {\n            childs = feedRoot.children;\n\n            feed.type = \"atom\";\n            addConditionally(feed, \"id\", \"id\", childs);\n            addConditionally(feed, \"title\", \"title\", childs);\n            if (\n                (tmp = getOneElement(\"link\", childs)) &&\n                (tmp = tmp.attribs) &&\n                (tmp = tmp.href)\n            )\n                feed.link = tmp;\n            addConditionally(feed, \"description\", \"subtitle\", childs);\n            if ((tmp = fetch(\"updated\", childs))) feed.updated = new Date(tmp);\n            addConditionally(feed, \"author\", \"email\", childs, true);\n\n            feed.items = getElements(\"entry\", childs).map(function(item) {\n                var entry = {},\n                    tmp;\n\n                item = item.children;\n\n                addConditionally(entry, \"id\", \"id\", item);\n                addConditionally(entry, \"title\", \"title\", item);\n                if (\n                    (tmp = getOneElement(\"link\", item)) &&\n                    (tmp = tmp.attribs) &&\n                    (tmp = tmp.href)\n                )\n                    entry.link = tmp;\n                if ((tmp = fetch(\"summary\", item) || fetch(\"content\", item)))\n                    entry.description = tmp;\n                if ((tmp = fetch(\"updated\", item)))\n                    entry.pubDate = new Date(tmp);\n                return entry;\n            });\n        } else {\n            childs = getOneElement(\"channel\", feedRoot.children).children;\n\n            feed.type = feedRoot.name.substr(0, 3);\n            feed.id = \"\";\n            addConditionally(feed, \"title\", \"title\", childs);\n            addConditionally(feed, \"link\", \"link\", childs);\n            addConditionally(feed, \"description\", \"description\", childs);\n            if ((tmp = fetch(\"lastBuildDate\", childs)))\n                feed.updated = new Date(tmp);\n            addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n\n            feed.items = getElements(\"item\", feedRoot.children).map(function(\n                item\n            ) {\n                var entry = {},\n                    tmp;\n\n                item = item.children;\n\n                addConditionally(entry, \"id\", \"guid\", item);\n                addConditionally(entry, \"title\", \"title\", item);\n                addConditionally(entry, \"link\", \"link\", item);\n                addConditionally(entry, \"description\", \"description\", item);\n                if ((tmp = fetch(\"pubDate\", item)))\n                    entry.pubDate = new Date(tmp);\n                return entry;\n            });\n        }\n    }\n    this.dom = feed;\n    DomHandler.prototype._handleCallback.call(\n        this,\n        feedRoot ? null : Error(\"couldn't find root of feed\")\n    );\n};\n\nmodule.exports = FeedHandler;\n","var Tokenizer = require(\"./Tokenizer.js\");\n\n/*\n\tOptions:\n\n\txmlMode: Disables the special behavior for script/style tags (false by default)\n\tlowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)\n\tlowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)\n*/\n\n/*\n\tCallbacks:\n\n\toncdataend,\n\toncdatastart,\n\tonclosetag,\n\toncomment,\n\toncommentend,\n\tonerror,\n\tonopentag,\n\tonprocessinginstruction,\n\tonreset,\n\tontext\n*/\n\nvar formTags = {\n    input: true,\n    option: true,\n    optgroup: true,\n    select: true,\n    button: true,\n    datalist: true,\n    textarea: true\n};\n\nvar openImpliesClose = {\n    tr: { tr: true, th: true, td: true },\n    th: { th: true },\n    td: { thead: true, th: true, td: true },\n    body: { head: true, link: true, script: true },\n    li: { li: true },\n    p: { p: true },\n    h1: { p: true },\n    h2: { p: true },\n    h3: { p: true },\n    h4: { p: true },\n    h5: { p: true },\n    h6: { p: true },\n    select: formTags,\n    input: formTags,\n    output: formTags,\n    button: formTags,\n    datalist: formTags,\n    textarea: formTags,\n    option: { option: true },\n    optgroup: { optgroup: true }\n};\n\nvar voidElements = {\n    __proto__: null,\n    area: true,\n    base: true,\n    basefont: true,\n    br: true,\n    col: true,\n    command: true,\n    embed: true,\n    frame: true,\n    hr: true,\n    img: true,\n    input: true,\n    isindex: true,\n    keygen: true,\n    link: true,\n    meta: true,\n    param: true,\n    source: true,\n    track: true,\n    wbr: true\n};\n\nvar foreignContextElements = {\n    __proto__: null,\n    math: true,\n    svg: true\n};\nvar htmlIntegrationElements = {\n    __proto__: null,\n    mi: true,\n    mo: true,\n    mn: true,\n    ms: true,\n    mtext: true,\n    \"annotation-xml\": true,\n    foreignObject: true,\n    desc: true,\n    title: true\n};\n\nvar re_nameEnd = /\\s|\\//;\n\nfunction Parser(cbs, options) {\n    this._options = options || {};\n    this._cbs = cbs || {};\n\n    this._tagname = \"\";\n    this._attribname = \"\";\n    this._attribvalue = \"\";\n    this._attribs = null;\n    this._stack = [];\n    this._foreignContext = [];\n\n    this.startIndex = 0;\n    this.endIndex = null;\n\n    this._lowerCaseTagNames =\n        \"lowerCaseTags\" in this._options\n            ? !!this._options.lowerCaseTags\n            : !this._options.xmlMode;\n    this._lowerCaseAttributeNames =\n        \"lowerCaseAttributeNames\" in this._options\n            ? !!this._options.lowerCaseAttributeNames\n            : !this._options.xmlMode;\n\n    if (this._options.Tokenizer) {\n        Tokenizer = this._options.Tokenizer;\n    }\n    this._tokenizer = new Tokenizer(this._options, this);\n\n    if (this._cbs.onparserinit) this._cbs.onparserinit(this);\n}\n\nrequire(\"inherits\")(Parser, require(\"events\").EventEmitter);\n\nParser.prototype._updatePosition = function(initialOffset) {\n    if (this.endIndex === null) {\n        if (this._tokenizer._sectionStart <= initialOffset) {\n            this.startIndex = 0;\n        } else {\n            this.startIndex = this._tokenizer._sectionStart - initialOffset;\n        }\n    } else this.startIndex = this.endIndex + 1;\n    this.endIndex = this._tokenizer.getAbsoluteIndex();\n};\n\n//Tokenizer event handlers\nParser.prototype.ontext = function(data) {\n    this._updatePosition(1);\n    this.endIndex--;\n\n    if (this._cbs.ontext) this._cbs.ontext(data);\n};\n\nParser.prototype.onopentagname = function(name) {\n    if (this._lowerCaseTagNames) {\n        name = name.toLowerCase();\n    }\n\n    this._tagname = name;\n\n    if (!this._options.xmlMode && name in openImpliesClose) {\n        for (\n            var el;\n            (el = this._stack[this._stack.length - 1]) in\n            openImpliesClose[name];\n            this.onclosetag(el)\n        );\n    }\n\n    if (this._options.xmlMode || !(name in voidElements)) {\n        this._stack.push(name);\n        if (name in foreignContextElements) this._foreignContext.push(true);\n        else if (name in htmlIntegrationElements)\n            this._foreignContext.push(false);\n    }\n\n    if (this._cbs.onopentagname) this._cbs.onopentagname(name);\n    if (this._cbs.onopentag) this._attribs = {};\n};\n\nParser.prototype.onopentagend = function() {\n    this._updatePosition(1);\n\n    if (this._attribs) {\n        if (this._cbs.onopentag)\n            this._cbs.onopentag(this._tagname, this._attribs);\n        this._attribs = null;\n    }\n\n    if (\n        !this._options.xmlMode &&\n        this._cbs.onclosetag &&\n        this._tagname in voidElements\n    ) {\n        this._cbs.onclosetag(this._tagname);\n    }\n\n    this._tagname = \"\";\n};\n\nParser.prototype.onclosetag = function(name) {\n    this._updatePosition(1);\n\n    if (this._lowerCaseTagNames) {\n        name = name.toLowerCase();\n    }\n    \n    if (name in foreignContextElements || name in htmlIntegrationElements) {\n        this._foreignContext.pop();\n    }\n\n    if (\n        this._stack.length &&\n        (!(name in voidElements) || this._options.xmlMode)\n    ) {\n        var pos = this._stack.lastIndexOf(name);\n        if (pos !== -1) {\n            if (this._cbs.onclosetag) {\n                pos = this._stack.length - pos;\n                while (pos--) this._cbs.onclosetag(this._stack.pop());\n            } else this._stack.length = pos;\n        } else if (name === \"p\" && !this._options.xmlMode) {\n            this.onopentagname(name);\n            this._closeCurrentTag();\n        }\n    } else if (!this._options.xmlMode && (name === \"br\" || name === \"p\")) {\n        this.onopentagname(name);\n        this._closeCurrentTag();\n    }\n};\n\nParser.prototype.onselfclosingtag = function() {\n    if (\n        this._options.xmlMode ||\n        this._options.recognizeSelfClosing ||\n        this._foreignContext[this._foreignContext.length - 1]\n    ) {\n        this._closeCurrentTag();\n    } else {\n        this.onopentagend();\n    }\n};\n\nParser.prototype._closeCurrentTag = function() {\n    var name = this._tagname;\n\n    this.onopentagend();\n\n    //self-closing tags will be on the top of the stack\n    //(cheaper check than in onclosetag)\n    if (this._stack[this._stack.length - 1] === name) {\n        if (this._cbs.onclosetag) {\n            this._cbs.onclosetag(name);\n        }\n        this._stack.pop();\n        \n    }\n};\n\nParser.prototype.onattribname = function(name) {\n    if (this._lowerCaseAttributeNames) {\n        name = name.toLowerCase();\n    }\n    this._attribname = name;\n};\n\nParser.prototype.onattribdata = function(value) {\n    this._attribvalue += value;\n};\n\nParser.prototype.onattribend = function() {\n    if (this._cbs.onattribute)\n        this._cbs.onattribute(this._attribname, this._attribvalue);\n    if (\n        this._attribs &&\n        !Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)\n    ) {\n        this._attribs[this._attribname] = this._attribvalue;\n    }\n    this._attribname = \"\";\n    this._attribvalue = \"\";\n};\n\nParser.prototype._getInstructionName = function(value) {\n    var idx = value.search(re_nameEnd),\n        name = idx < 0 ? value : value.substr(0, idx);\n\n    if (this._lowerCaseTagNames) {\n        name = name.toLowerCase();\n    }\n\n    return name;\n};\n\nParser.prototype.ondeclaration = function(value) {\n    if (this._cbs.onprocessinginstruction) {\n        var name = this._getInstructionName(value);\n        this._cbs.onprocessinginstruction(\"!\" + name, \"!\" + value);\n    }\n};\n\nParser.prototype.onprocessinginstruction = function(value) {\n    if (this._cbs.onprocessinginstruction) {\n        var name = this._getInstructionName(value);\n        this._cbs.onprocessinginstruction(\"?\" + name, \"?\" + value);\n    }\n};\n\nParser.prototype.oncomment = function(value) {\n    this._updatePosition(4);\n\n    if (this._cbs.oncomment) this._cbs.oncomment(value);\n    if (this._cbs.oncommentend) this._cbs.oncommentend();\n};\n\nParser.prototype.oncdata = function(value) {\n    this._updatePosition(1);\n\n    if (this._options.xmlMode || this._options.recognizeCDATA) {\n        if (this._cbs.oncdatastart) this._cbs.oncdatastart();\n        if (this._cbs.ontext) this._cbs.ontext(value);\n        if (this._cbs.oncdataend) this._cbs.oncdataend();\n    } else {\n        this.oncomment(\"[CDATA[\" + value + \"]]\");\n    }\n};\n\nParser.prototype.onerror = function(err) {\n    if (this._cbs.onerror) this._cbs.onerror(err);\n};\n\nParser.prototype.onend = function() {\n    if (this._cbs.onclosetag) {\n        for (\n            var i = this._stack.length;\n            i > 0;\n            this._cbs.onclosetag(this._stack[--i])\n        );\n    }\n    if (this._cbs.onend) this._cbs.onend();\n};\n\n//Resets the parser to a blank state, ready to parse a new HTML document\nParser.prototype.reset = function() {\n    if (this._cbs.onreset) this._cbs.onreset();\n    this._tokenizer.reset();\n\n    this._tagname = \"\";\n    this._attribname = \"\";\n    this._attribs = null;\n    this._stack = [];\n\n    if (this._cbs.onparserinit) this._cbs.onparserinit(this);\n};\n\n//Parses a complete HTML document and pushes it to the handler\nParser.prototype.parseComplete = function(data) {\n    this.reset();\n    this.end(data);\n};\n\nParser.prototype.write = function(chunk) {\n    this._tokenizer.write(chunk);\n};\n\nParser.prototype.end = function(chunk) {\n    this._tokenizer.end(chunk);\n};\n\nParser.prototype.pause = function() {\n    this._tokenizer.pause();\n};\n\nParser.prototype.resume = function() {\n    this._tokenizer.resume();\n};\n\n//alias for backwards compat\nParser.prototype.parseChunk = Parser.prototype.write;\nParser.prototype.done = Parser.prototype.end;\n\nmodule.exports = Parser;\n","module.exports = ProxyHandler;\n\nfunction ProxyHandler(cbs) {\n    this._cbs = cbs || {};\n}\n\nvar EVENTS = require(\"./\").EVENTS;\nObject.keys(EVENTS).forEach(function(name) {\n    if (EVENTS[name] === 0) {\n        name = \"on\" + name;\n        ProxyHandler.prototype[name] = function() {\n            if (this._cbs[name]) this._cbs[name]();\n        };\n    } else if (EVENTS[name] === 1) {\n        name = \"on\" + name;\n        ProxyHandler.prototype[name] = function(a) {\n            if (this._cbs[name]) this._cbs[name](a);\n        };\n    } else if (EVENTS[name] === 2) {\n        name = \"on\" + name;\n        ProxyHandler.prototype[name] = function(a, b) {\n            if (this._cbs[name]) this._cbs[name](a, b);\n        };\n    } else {\n        throw Error(\"wrong number of arguments\");\n    }\n});\n","module.exports = Stream;\n\nvar Parser = require(\"./WritableStream.js\");\n\nfunction Stream(options) {\n    Parser.call(this, new Cbs(this), options);\n}\n\nrequire(\"inherits\")(Stream, Parser);\n\nStream.prototype.readable = true;\n\nfunction Cbs(scope) {\n    this.scope = scope;\n}\n\nvar EVENTS = require(\"../\").EVENTS;\n\nObject.keys(EVENTS).forEach(function(name) {\n    if (EVENTS[name] === 0) {\n        Cbs.prototype[\"on\" + name] = function() {\n            this.scope.emit(name);\n        };\n    } else if (EVENTS[name] === 1) {\n        Cbs.prototype[\"on\" + name] = function(a) {\n            this.scope.emit(name, a);\n        };\n    } else if (EVENTS[name] === 2) {\n        Cbs.prototype[\"on\" + name] = function(a, b) {\n            this.scope.emit(name, a, b);\n        };\n    } else {\n        throw Error(\"wrong number of arguments!\");\n    }\n});\n","module.exports = Tokenizer;\n\nvar decodeCodePoint = require(\"entities/lib/decode_codepoint.js\");\nvar entityMap = require(\"entities/maps/entities.json\");\nvar legacyMap = require(\"entities/maps/legacy.json\");\nvar xmlMap = require(\"entities/maps/xml.json\");\n\nvar i = 0;\n\nvar TEXT = i++;\nvar BEFORE_TAG_NAME = i++; //after <\nvar IN_TAG_NAME = i++;\nvar IN_SELF_CLOSING_TAG = i++;\nvar BEFORE_CLOSING_TAG_NAME = i++;\nvar IN_CLOSING_TAG_NAME = i++;\nvar AFTER_CLOSING_TAG_NAME = i++;\n\n//attributes\nvar BEFORE_ATTRIBUTE_NAME = i++;\nvar IN_ATTRIBUTE_NAME = i++;\nvar AFTER_ATTRIBUTE_NAME = i++;\nvar BEFORE_ATTRIBUTE_VALUE = i++;\nvar IN_ATTRIBUTE_VALUE_DQ = i++; // \"\nvar IN_ATTRIBUTE_VALUE_SQ = i++; // '\nvar IN_ATTRIBUTE_VALUE_NQ = i++;\n\n//declarations\nvar BEFORE_DECLARATION = i++; // !\nvar IN_DECLARATION = i++;\n\n//processing instructions\nvar IN_PROCESSING_INSTRUCTION = i++; // ?\n\n//comments\nvar BEFORE_COMMENT = i++;\nvar IN_COMMENT = i++;\nvar AFTER_COMMENT_1 = i++;\nvar AFTER_COMMENT_2 = i++;\n\n//cdata\nvar BEFORE_CDATA_1 = i++; // [\nvar BEFORE_CDATA_2 = i++; // C\nvar BEFORE_CDATA_3 = i++; // D\nvar BEFORE_CDATA_4 = i++; // A\nvar BEFORE_CDATA_5 = i++; // T\nvar BEFORE_CDATA_6 = i++; // A\nvar IN_CDATA = i++; // [\nvar AFTER_CDATA_1 = i++; // ]\nvar AFTER_CDATA_2 = i++; // ]\n\n//special tags\nvar BEFORE_SPECIAL = i++; //S\nvar BEFORE_SPECIAL_END = i++; //S\n\nvar BEFORE_SCRIPT_1 = i++; //C\nvar BEFORE_SCRIPT_2 = i++; //R\nvar BEFORE_SCRIPT_3 = i++; //I\nvar BEFORE_SCRIPT_4 = i++; //P\nvar BEFORE_SCRIPT_5 = i++; //T\nvar AFTER_SCRIPT_1 = i++; //C\nvar AFTER_SCRIPT_2 = i++; //R\nvar AFTER_SCRIPT_3 = i++; //I\nvar AFTER_SCRIPT_4 = i++; //P\nvar AFTER_SCRIPT_5 = i++; //T\n\nvar BEFORE_STYLE_1 = i++; //T\nvar BEFORE_STYLE_2 = i++; //Y\nvar BEFORE_STYLE_3 = i++; //L\nvar BEFORE_STYLE_4 = i++; //E\nvar AFTER_STYLE_1 = i++; //T\nvar AFTER_STYLE_2 = i++; //Y\nvar AFTER_STYLE_3 = i++; //L\nvar AFTER_STYLE_4 = i++; //E\n\nvar BEFORE_ENTITY = i++; //&\nvar BEFORE_NUMERIC_ENTITY = i++; //#\nvar IN_NAMED_ENTITY = i++;\nvar IN_NUMERIC_ENTITY = i++;\nvar IN_HEX_ENTITY = i++; //X\n\nvar j = 0;\n\nvar SPECIAL_NONE = j++;\nvar SPECIAL_SCRIPT = j++;\nvar SPECIAL_STYLE = j++;\n\nfunction whitespace(c) {\n    return c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n\nfunction ifElseState(upper, SUCCESS, FAILURE) {\n    var lower = upper.toLowerCase();\n\n    if (upper === lower) {\n        return function(c) {\n            if (c === lower) {\n                this._state = SUCCESS;\n            } else {\n                this._state = FAILURE;\n                this._index--;\n            }\n        };\n    } else {\n        return function(c) {\n            if (c === lower || c === upper) {\n                this._state = SUCCESS;\n            } else {\n                this._state = FAILURE;\n                this._index--;\n            }\n        };\n    }\n}\n\nfunction consumeSpecialNameChar(upper, NEXT_STATE) {\n    var lower = upper.toLowerCase();\n\n    return function(c) {\n        if (c === lower || c === upper) {\n            this._state = NEXT_STATE;\n        } else {\n            this._state = IN_TAG_NAME;\n            this._index--; //consume the token again\n        }\n    };\n}\n\nfunction Tokenizer(options, cbs) {\n    this._state = TEXT;\n    this._buffer = \"\";\n    this._sectionStart = 0;\n    this._index = 0;\n    this._bufferOffset = 0; //chars removed from _buffer\n    this._baseState = TEXT;\n    this._special = SPECIAL_NONE;\n    this._cbs = cbs;\n    this._running = true;\n    this._ended = false;\n    this._xmlMode = !!(options && options.xmlMode);\n    this._decodeEntities = !!(options && options.decodeEntities);\n}\n\nTokenizer.prototype._stateText = function(c) {\n    if (c === \"<\") {\n        if (this._index > this._sectionStart) {\n            this._cbs.ontext(this._getSection());\n        }\n        this._state = BEFORE_TAG_NAME;\n        this._sectionStart = this._index;\n    } else if (\n        this._decodeEntities &&\n        this._special === SPECIAL_NONE &&\n        c === \"&\"\n    ) {\n        if (this._index > this._sectionStart) {\n            this._cbs.ontext(this._getSection());\n        }\n        this._baseState = TEXT;\n        this._state = BEFORE_ENTITY;\n        this._sectionStart = this._index;\n    }\n};\n\nTokenizer.prototype._stateBeforeTagName = function(c) {\n    if (c === \"/\") {\n        this._state = BEFORE_CLOSING_TAG_NAME;\n    } else if (c === \"<\") {\n        this._cbs.ontext(this._getSection());\n        this._sectionStart = this._index;\n    } else if (c === \">\" || this._special !== SPECIAL_NONE || whitespace(c)) {\n        this._state = TEXT;\n    } else if (c === \"!\") {\n        this._state = BEFORE_DECLARATION;\n        this._sectionStart = this._index + 1;\n    } else if (c === \"?\") {\n        this._state = IN_PROCESSING_INSTRUCTION;\n        this._sectionStart = this._index + 1;\n    } else {\n        this._state =\n            !this._xmlMode && (c === \"s\" || c === \"S\")\n                ? BEFORE_SPECIAL\n                : IN_TAG_NAME;\n        this._sectionStart = this._index;\n    }\n};\n\nTokenizer.prototype._stateInTagName = function(c) {\n    if (c === \"/\" || c === \">\" || whitespace(c)) {\n        this._emitToken(\"onopentagname\");\n        this._state = BEFORE_ATTRIBUTE_NAME;\n        this._index--;\n    }\n};\n\nTokenizer.prototype._stateBeforeCloseingTagName = function(c) {\n    if (whitespace(c));\n    else if (c === \">\") {\n        this._state = TEXT;\n    } else if (this._special !== SPECIAL_NONE) {\n        if (c === \"s\" || c === \"S\") {\n            this._state = BEFORE_SPECIAL_END;\n        } else {\n            this._state = TEXT;\n            this._index--;\n        }\n    } else {\n        this._state = IN_CLOSING_TAG_NAME;\n        this._sectionStart = this._index;\n    }\n};\n\nTokenizer.prototype._stateInCloseingTagName = function(c) {\n    if (c === \">\" || whitespace(c)) {\n        this._emitToken(\"onclosetag\");\n        this._state = AFTER_CLOSING_TAG_NAME;\n        this._index--;\n    }\n};\n\nTokenizer.prototype._stateAfterCloseingTagName = function(c) {\n    //skip everything until \">\"\n    if (c === \">\") {\n        this._state = TEXT;\n        this._sectionStart = this._index + 1;\n    }\n};\n\nTokenizer.prototype._stateBeforeAttributeName = function(c) {\n    if (c === \">\") {\n        this._cbs.onopentagend();\n        this._state = TEXT;\n        this._sectionStart = this._index + 1;\n    } else if (c === \"/\") {\n        this._state = IN_SELF_CLOSING_TAG;\n    } else if (!whitespace(c)) {\n        this._state = IN_ATTRIBUTE_NAME;\n        this._sectionStart = this._index;\n    }\n};\n\nTokenizer.prototype._stateInSelfClosingTag = function(c) {\n    if (c === \">\") {\n        this._cbs.onselfclosingtag();\n        this._state = TEXT;\n        this._sectionStart = this._index + 1;\n    } else if (!whitespace(c)) {\n        this._state = BEFORE_ATTRIBUTE_NAME;\n        this._index--;\n    }\n};\n\nTokenizer.prototype._stateInAttributeName = function(c) {\n    if (c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)) {\n        this._cbs.onattribname(this._getSection());\n        this._sectionStart = -1;\n        this._state = AFTER_ATTRIBUTE_NAME;\n        this._index--;\n    }\n};\n\nTokenizer.prototype._stateAfterAttributeName = function(c) {\n    if (c === \"=\") {\n        this._state = BEFORE_ATTRIBUTE_VALUE;\n    } else if (c === \"/\" || c === \">\") {\n        this._cbs.onattribend();\n        this._state = BEFORE_ATTRIBUTE_NAME;\n        this._index--;\n    } else if (!whitespace(c)) {\n        this._cbs.onattribend();\n        this._state = IN_ATTRIBUTE_NAME;\n        this._sectionStart = this._index;\n    }\n};\n\nTokenizer.prototype._stateBeforeAttributeValue = function(c) {\n    if (c === '\"') {\n        this._state = IN_ATTRIBUTE_VALUE_DQ;\n        this._sectionStart = this._index + 1;\n    } else if (c === \"'\") {\n        this._state = IN_ATTRIBUTE_VALUE_SQ;\n        this._sectionStart = this._index + 1;\n    } else if (!whitespace(c)) {\n        this._state = IN_ATTRIBUTE_VALUE_NQ;\n        this._sectionStart = this._index;\n        this._index--; //reconsume token\n    }\n};\n\nTokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c) {\n    if (c === '\"') {\n        this._emitToken(\"onattribdata\");\n        this._cbs.onattribend();\n        this._state = BEFORE_ATTRIBUTE_NAME;\n    } else if (this._decodeEntities && c === \"&\") {\n        this._emitToken(\"onattribdata\");\n        this._baseState = this._state;\n        this._state = BEFORE_ENTITY;\n        this._sectionStart = this._index;\n    }\n};\n\nTokenizer.prototype._stateInAttributeValueSingleQuotes = function(c) {\n    if (c === \"'\") {\n        this._emitToken(\"onattribdata\");\n        this._cbs.onattribend();\n        this._state = BEFORE_ATTRIBUTE_NAME;\n    } else if (this._decodeEntities && c === \"&\") {\n        this._emitToken(\"onattribdata\");\n        this._baseState = this._state;\n        this._state = BEFORE_ENTITY;\n        this._sectionStart = this._index;\n    }\n};\n\nTokenizer.prototype._stateInAttributeValueNoQuotes = function(c) {\n    if (whitespace(c) || c === \">\") {\n        this._emitToken(\"onattribdata\");\n        this._cbs.onattribend();\n        this._state = BEFORE_ATTRIBUTE_NAME;\n        this._index--;\n    } else if (this._decodeEntities && c === \"&\") {\n        this._emitToken(\"onattribdata\");\n        this._baseState = this._state;\n        this._state = BEFORE_ENTITY;\n        this._sectionStart = this._index;\n    }\n};\n\nTokenizer.prototype._stateBeforeDeclaration = function(c) {\n    this._state =\n        c === \"[\"\n            ? BEFORE_CDATA_1\n            : c === \"-\"\n                ? BEFORE_COMMENT\n                : IN_DECLARATION;\n};\n\nTokenizer.prototype._stateInDeclaration = function(c) {\n    if (c === \">\") {\n        this._cbs.ondeclaration(this._getSection());\n        this._state = TEXT;\n        this._sectionStart = this._index + 1;\n    }\n};\n\nTokenizer.prototype._stateInProcessingInstruction = function(c) {\n    if (c === \">\") {\n        this._cbs.onprocessinginstruction(this._getSection());\n        this._state = TEXT;\n        this._sectionStart = this._index + 1;\n    }\n};\n\nTokenizer.prototype._stateBeforeComment = function(c) {\n    if (c === \"-\") {\n        this._state = IN_COMMENT;\n        this._sectionStart = this._index + 1;\n    } else {\n        this._state = IN_DECLARATION;\n    }\n};\n\nTokenizer.prototype._stateInComment = function(c) {\n    if (c === \"-\") this._state = AFTER_COMMENT_1;\n};\n\nTokenizer.prototype._stateAfterComment1 = function(c) {\n    if (c === \"-\") {\n        this._state = AFTER_COMMENT_2;\n    } else {\n        this._state = IN_COMMENT;\n    }\n};\n\nTokenizer.prototype._stateAfterComment2 = function(c) {\n    if (c === \">\") {\n        //remove 2 trailing chars\n        this._cbs.oncomment(\n            this._buffer.substring(this._sectionStart, this._index - 2)\n        );\n        this._state = TEXT;\n        this._sectionStart = this._index + 1;\n    } else if (c !== \"-\") {\n        this._state = IN_COMMENT;\n    }\n    // else: stay in AFTER_COMMENT_2 (`--->`)\n};\n\nTokenizer.prototype._stateBeforeCdata1 = ifElseState(\n    \"C\",\n    BEFORE_CDATA_2,\n    IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata2 = ifElseState(\n    \"D\",\n    BEFORE_CDATA_3,\n    IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata3 = ifElseState(\n    \"A\",\n    BEFORE_CDATA_4,\n    IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata4 = ifElseState(\n    \"T\",\n    BEFORE_CDATA_5,\n    IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata5 = ifElseState(\n    \"A\",\n    BEFORE_CDATA_6,\n    IN_DECLARATION\n);\n\nTokenizer.prototype._stateBeforeCdata6 = function(c) {\n    if (c === \"[\") {\n        this._state = IN_CDATA;\n        this._sectionStart = this._index + 1;\n    } else {\n        this._state = IN_DECLARATION;\n        this._index--;\n    }\n};\n\nTokenizer.prototype._stateInCdata = function(c) {\n    if (c === \"]\") this._state = AFTER_CDATA_1;\n};\n\nTokenizer.prototype._stateAfterCdata1 = function(c) {\n    if (c === \"]\") this._state = AFTER_CDATA_2;\n    else this._state = IN_CDATA;\n};\n\nTokenizer.prototype._stateAfterCdata2 = function(c) {\n    if (c === \">\") {\n        //remove 2 trailing chars\n        this._cbs.oncdata(\n            this._buffer.substring(this._sectionStart, this._index - 2)\n        );\n        this._state = TEXT;\n        this._sectionStart = this._index + 1;\n    } else if (c !== \"]\") {\n        this._state = IN_CDATA;\n    }\n    //else: stay in AFTER_CDATA_2 (`]]]>`)\n};\n\nTokenizer.prototype._stateBeforeSpecial = function(c) {\n    if (c === \"c\" || c === \"C\") {\n        this._state = BEFORE_SCRIPT_1;\n    } else if (c === \"t\" || c === \"T\") {\n        this._state = BEFORE_STYLE_1;\n    } else {\n        this._state = IN_TAG_NAME;\n        this._index--; //consume the token again\n    }\n};\n\nTokenizer.prototype._stateBeforeSpecialEnd = function(c) {\n    if (this._special === SPECIAL_SCRIPT && (c === \"c\" || c === \"C\")) {\n        this._state = AFTER_SCRIPT_1;\n    } else if (this._special === SPECIAL_STYLE && (c === \"t\" || c === \"T\")) {\n        this._state = AFTER_STYLE_1;\n    } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar(\n    \"R\",\n    BEFORE_SCRIPT_2\n);\nTokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar(\n    \"I\",\n    BEFORE_SCRIPT_3\n);\nTokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar(\n    \"P\",\n    BEFORE_SCRIPT_4\n);\nTokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar(\n    \"T\",\n    BEFORE_SCRIPT_5\n);\n\nTokenizer.prototype._stateBeforeScript5 = function(c) {\n    if (c === \"/\" || c === \">\" || whitespace(c)) {\n        this._special = SPECIAL_SCRIPT;\n    }\n    this._state = IN_TAG_NAME;\n    this._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterScript1 = ifElseState(\"R\", AFTER_SCRIPT_2, TEXT);\nTokenizer.prototype._stateAfterScript2 = ifElseState(\"I\", AFTER_SCRIPT_3, TEXT);\nTokenizer.prototype._stateAfterScript3 = ifElseState(\"P\", AFTER_SCRIPT_4, TEXT);\nTokenizer.prototype._stateAfterScript4 = ifElseState(\"T\", AFTER_SCRIPT_5, TEXT);\n\nTokenizer.prototype._stateAfterScript5 = function(c) {\n    if (c === \">\" || whitespace(c)) {\n        this._special = SPECIAL_NONE;\n        this._state = IN_CLOSING_TAG_NAME;\n        this._sectionStart = this._index - 6;\n        this._index--; //reconsume the token\n    } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar(\n    \"Y\",\n    BEFORE_STYLE_2\n);\nTokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar(\n    \"L\",\n    BEFORE_STYLE_3\n);\nTokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar(\n    \"E\",\n    BEFORE_STYLE_4\n);\n\nTokenizer.prototype._stateBeforeStyle4 = function(c) {\n    if (c === \"/\" || c === \">\" || whitespace(c)) {\n        this._special = SPECIAL_STYLE;\n    }\n    this._state = IN_TAG_NAME;\n    this._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterStyle1 = ifElseState(\"Y\", AFTER_STYLE_2, TEXT);\nTokenizer.prototype._stateAfterStyle2 = ifElseState(\"L\", AFTER_STYLE_3, TEXT);\nTokenizer.prototype._stateAfterStyle3 = ifElseState(\"E\", AFTER_STYLE_4, TEXT);\n\nTokenizer.prototype._stateAfterStyle4 = function(c) {\n    if (c === \">\" || whitespace(c)) {\n        this._special = SPECIAL_NONE;\n        this._state = IN_CLOSING_TAG_NAME;\n        this._sectionStart = this._index - 5;\n        this._index--; //reconsume the token\n    } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeEntity = ifElseState(\n    \"#\",\n    BEFORE_NUMERIC_ENTITY,\n    IN_NAMED_ENTITY\n);\nTokenizer.prototype._stateBeforeNumericEntity = ifElseState(\n    \"X\",\n    IN_HEX_ENTITY,\n    IN_NUMERIC_ENTITY\n);\n\n//for entities terminated with a semicolon\nTokenizer.prototype._parseNamedEntityStrict = function() {\n    //offset = 1\n    if (this._sectionStart + 1 < this._index) {\n        var entity = this._buffer.substring(\n                this._sectionStart + 1,\n                this._index\n            ),\n            map = this._xmlMode ? xmlMap : entityMap;\n\n        if (map.hasOwnProperty(entity)) {\n            this._emitPartial(map[entity]);\n            this._sectionStart = this._index + 1;\n        }\n    }\n};\n\n//parses legacy entities (without trailing semicolon)\nTokenizer.prototype._parseLegacyEntity = function() {\n    var start = this._sectionStart + 1,\n        limit = this._index - start;\n\n    if (limit > 6) limit = 6; //the max length of legacy entities is 6\n\n    while (limit >= 2) {\n        //the min length of legacy entities is 2\n        var entity = this._buffer.substr(start, limit);\n\n        if (legacyMap.hasOwnProperty(entity)) {\n            this._emitPartial(legacyMap[entity]);\n            this._sectionStart += limit + 1;\n            return;\n        } else {\n            limit--;\n        }\n    }\n};\n\nTokenizer.prototype._stateInNamedEntity = function(c) {\n    if (c === \";\") {\n        this._parseNamedEntityStrict();\n        if (this._sectionStart + 1 < this._index && !this._xmlMode) {\n            this._parseLegacyEntity();\n        }\n        this._state = this._baseState;\n    } else if (\n        (c < \"a\" || c > \"z\") &&\n        (c < \"A\" || c > \"Z\") &&\n        (c < \"0\" || c > \"9\")\n    ) {\n        if (this._xmlMode);\n        else if (this._sectionStart + 1 === this._index);\n        else if (this._baseState !== TEXT) {\n            if (c !== \"=\") {\n                this._parseNamedEntityStrict();\n            }\n        } else {\n            this._parseLegacyEntity();\n        }\n\n        this._state = this._baseState;\n        this._index--;\n    }\n};\n\nTokenizer.prototype._decodeNumericEntity = function(offset, base) {\n    var sectionStart = this._sectionStart + offset;\n\n    if (sectionStart !== this._index) {\n        //parse entity\n        var entity = this._buffer.substring(sectionStart, this._index);\n        var parsed = parseInt(entity, base);\n\n        this._emitPartial(decodeCodePoint(parsed));\n        this._sectionStart = this._index;\n    } else {\n        this._sectionStart--;\n    }\n\n    this._state = this._baseState;\n};\n\nTokenizer.prototype._stateInNumericEntity = function(c) {\n    if (c === \";\") {\n        this._decodeNumericEntity(2, 10);\n        this._sectionStart++;\n    } else if (c < \"0\" || c > \"9\") {\n        if (!this._xmlMode) {\n            this._decodeNumericEntity(2, 10);\n        } else {\n            this._state = this._baseState;\n        }\n        this._index--;\n    }\n};\n\nTokenizer.prototype._stateInHexEntity = function(c) {\n    if (c === \";\") {\n        this._decodeNumericEntity(3, 16);\n        this._sectionStart++;\n    } else if (\n        (c < \"a\" || c > \"f\") &&\n        (c < \"A\" || c > \"F\") &&\n        (c < \"0\" || c > \"9\")\n    ) {\n        if (!this._xmlMode) {\n            this._decodeNumericEntity(3, 16);\n        } else {\n            this._state = this._baseState;\n        }\n        this._index--;\n    }\n};\n\nTokenizer.prototype._cleanup = function() {\n    if (this._sectionStart < 0) {\n        this._buffer = \"\";\n        this._bufferOffset += this._index;\n        this._index = 0;\n    } else if (this._running) {\n        if (this._state === TEXT) {\n            if (this._sectionStart !== this._index) {\n                this._cbs.ontext(this._buffer.substr(this._sectionStart));\n            }\n            this._buffer = \"\";\n            this._bufferOffset += this._index;\n            this._index = 0;\n        } else if (this._sectionStart === this._index) {\n            //the section just started\n            this._buffer = \"\";\n            this._bufferOffset += this._index;\n            this._index = 0;\n        } else {\n            //remove everything unnecessary\n            this._buffer = this._buffer.substr(this._sectionStart);\n            this._index -= this._sectionStart;\n            this._bufferOffset += this._sectionStart;\n        }\n\n        this._sectionStart = 0;\n    }\n};\n\n//TODO make events conditional\nTokenizer.prototype.write = function(chunk) {\n    if (this._ended) this._cbs.onerror(Error(\".write() after done!\"));\n\n    this._buffer += chunk;\n    this._parse();\n};\n\nTokenizer.prototype._parse = function() {\n    while (this._index < this._buffer.length && this._running) {\n        var c = this._buffer.charAt(this._index);\n        if (this._state === TEXT) {\n            this._stateText(c);\n        } else if (this._state === BEFORE_TAG_NAME) {\n            this._stateBeforeTagName(c);\n        } else if (this._state === IN_TAG_NAME) {\n            this._stateInTagName(c);\n        } else if (this._state === BEFORE_CLOSING_TAG_NAME) {\n            this._stateBeforeCloseingTagName(c);\n        } else if (this._state === IN_CLOSING_TAG_NAME) {\n            this._stateInCloseingTagName(c);\n        } else if (this._state === AFTER_CLOSING_TAG_NAME) {\n            this._stateAfterCloseingTagName(c);\n        } else if (this._state === IN_SELF_CLOSING_TAG) {\n            this._stateInSelfClosingTag(c);\n        } else if (this._state === BEFORE_ATTRIBUTE_NAME) {\n\n        /*\n\t\t*\tattributes\n\t\t*/\n            this._stateBeforeAttributeName(c);\n        } else if (this._state === IN_ATTRIBUTE_NAME) {\n            this._stateInAttributeName(c);\n        } else if (this._state === AFTER_ATTRIBUTE_NAME) {\n            this._stateAfterAttributeName(c);\n        } else if (this._state === BEFORE_ATTRIBUTE_VALUE) {\n            this._stateBeforeAttributeValue(c);\n        } else if (this._state === IN_ATTRIBUTE_VALUE_DQ) {\n            this._stateInAttributeValueDoubleQuotes(c);\n        } else if (this._state === IN_ATTRIBUTE_VALUE_SQ) {\n            this._stateInAttributeValueSingleQuotes(c);\n        } else if (this._state === IN_ATTRIBUTE_VALUE_NQ) {\n            this._stateInAttributeValueNoQuotes(c);\n        } else if (this._state === BEFORE_DECLARATION) {\n\n        /*\n\t\t*\tdeclarations\n\t\t*/\n            this._stateBeforeDeclaration(c);\n        } else if (this._state === IN_DECLARATION) {\n            this._stateInDeclaration(c);\n        } else if (this._state === IN_PROCESSING_INSTRUCTION) {\n\n        /*\n\t\t*\tprocessing instructions\n\t\t*/\n            this._stateInProcessingInstruction(c);\n        } else if (this._state === BEFORE_COMMENT) {\n\n        /*\n\t\t*\tcomments\n\t\t*/\n            this._stateBeforeComment(c);\n        } else if (this._state === IN_COMMENT) {\n            this._stateInComment(c);\n        } else if (this._state === AFTER_COMMENT_1) {\n            this._stateAfterComment1(c);\n        } else if (this._state === AFTER_COMMENT_2) {\n            this._stateAfterComment2(c);\n        } else if (this._state === BEFORE_CDATA_1) {\n\n        /*\n\t\t*\tcdata\n\t\t*/\n            this._stateBeforeCdata1(c);\n        } else if (this._state === BEFORE_CDATA_2) {\n            this._stateBeforeCdata2(c);\n        } else if (this._state === BEFORE_CDATA_3) {\n            this._stateBeforeCdata3(c);\n        } else if (this._state === BEFORE_CDATA_4) {\n            this._stateBeforeCdata4(c);\n        } else if (this._state === BEFORE_CDATA_5) {\n            this._stateBeforeCdata5(c);\n        } else if (this._state === BEFORE_CDATA_6) {\n            this._stateBeforeCdata6(c);\n        } else if (this._state === IN_CDATA) {\n            this._stateInCdata(c);\n        } else if (this._state === AFTER_CDATA_1) {\n            this._stateAfterCdata1(c);\n        } else if (this._state === AFTER_CDATA_2) {\n            this._stateAfterCdata2(c);\n        } else if (this._state === BEFORE_SPECIAL) {\n\n        /*\n\t\t* special tags\n\t\t*/\n            this._stateBeforeSpecial(c);\n        } else if (this._state === BEFORE_SPECIAL_END) {\n            this._stateBeforeSpecialEnd(c);\n        } else if (this._state === BEFORE_SCRIPT_1) {\n\n        /*\n\t\t* script\n\t\t*/\n            this._stateBeforeScript1(c);\n        } else if (this._state === BEFORE_SCRIPT_2) {\n            this._stateBeforeScript2(c);\n        } else if (this._state === BEFORE_SCRIPT_3) {\n            this._stateBeforeScript3(c);\n        } else if (this._state === BEFORE_SCRIPT_4) {\n            this._stateBeforeScript4(c);\n        } else if (this._state === BEFORE_SCRIPT_5) {\n            this._stateBeforeScript5(c);\n        } else if (this._state === AFTER_SCRIPT_1) {\n            this._stateAfterScript1(c);\n        } else if (this._state === AFTER_SCRIPT_2) {\n            this._stateAfterScript2(c);\n        } else if (this._state === AFTER_SCRIPT_3) {\n            this._stateAfterScript3(c);\n        } else if (this._state === AFTER_SCRIPT_4) {\n            this._stateAfterScript4(c);\n        } else if (this._state === AFTER_SCRIPT_5) {\n            this._stateAfterScript5(c);\n        } else if (this._state === BEFORE_STYLE_1) {\n\n        /*\n\t\t* style\n\t\t*/\n            this._stateBeforeStyle1(c);\n        } else if (this._state === BEFORE_STYLE_2) {\n            this._stateBeforeStyle2(c);\n        } else if (this._state === BEFORE_STYLE_3) {\n            this._stateBeforeStyle3(c);\n        } else if (this._state === BEFORE_STYLE_4) {\n            this._stateBeforeStyle4(c);\n        } else if (this._state === AFTER_STYLE_1) {\n            this._stateAfterStyle1(c);\n        } else if (this._state === AFTER_STYLE_2) {\n            this._stateAfterStyle2(c);\n        } else if (this._state === AFTER_STYLE_3) {\n            this._stateAfterStyle3(c);\n        } else if (this._state === AFTER_STYLE_4) {\n            this._stateAfterStyle4(c);\n        } else if (this._state === BEFORE_ENTITY) {\n\n        /*\n\t\t* entities\n\t\t*/\n            this._stateBeforeEntity(c);\n        } else if (this._state === BEFORE_NUMERIC_ENTITY) {\n            this._stateBeforeNumericEntity(c);\n        } else if (this._state === IN_NAMED_ENTITY) {\n            this._stateInNamedEntity(c);\n        } else if (this._state === IN_NUMERIC_ENTITY) {\n            this._stateInNumericEntity(c);\n        } else if (this._state === IN_HEX_ENTITY) {\n            this._stateInHexEntity(c);\n        } else {\n            this._cbs.onerror(Error(\"unknown _state\"), this._state);\n        }\n\n        this._index++;\n    }\n\n    this._cleanup();\n};\n\nTokenizer.prototype.pause = function() {\n    this._running = false;\n};\nTokenizer.prototype.resume = function() {\n    this._running = true;\n\n    if (this._index < this._buffer.length) {\n        this._parse();\n    }\n    if (this._ended) {\n        this._finish();\n    }\n};\n\nTokenizer.prototype.end = function(chunk) {\n    if (this._ended) this._cbs.onerror(Error(\".end() after done!\"));\n    if (chunk) this.write(chunk);\n\n    this._ended = true;\n\n    if (this._running) this._finish();\n};\n\nTokenizer.prototype._finish = function() {\n    //if there is remaining data, emit it in a reasonable way\n    if (this._sectionStart < this._index) {\n        this._handleTrailingData();\n    }\n\n    this._cbs.onend();\n};\n\nTokenizer.prototype._handleTrailingData = function() {\n    var data = this._buffer.substr(this._sectionStart);\n\n    if (\n        this._state === IN_CDATA ||\n        this._state === AFTER_CDATA_1 ||\n        this._state === AFTER_CDATA_2\n    ) {\n        this._cbs.oncdata(data);\n    } else if (\n        this._state === IN_COMMENT ||\n        this._state === AFTER_COMMENT_1 ||\n        this._state === AFTER_COMMENT_2\n    ) {\n        this._cbs.oncomment(data);\n    } else if (this._state === IN_NAMED_ENTITY && !this._xmlMode) {\n        this._parseLegacyEntity();\n        if (this._sectionStart < this._index) {\n            this._state = this._baseState;\n            this._handleTrailingData();\n        }\n    } else if (this._state === IN_NUMERIC_ENTITY && !this._xmlMode) {\n        this._decodeNumericEntity(2, 10);\n        if (this._sectionStart < this._index) {\n            this._state = this._baseState;\n            this._handleTrailingData();\n        }\n    } else if (this._state === IN_HEX_ENTITY && !this._xmlMode) {\n        this._decodeNumericEntity(3, 16);\n        if (this._sectionStart < this._index) {\n            this._state = this._baseState;\n            this._handleTrailingData();\n        }\n    } else if (\n        this._state !== IN_TAG_NAME &&\n        this._state !== BEFORE_ATTRIBUTE_NAME &&\n        this._state !== BEFORE_ATTRIBUTE_VALUE &&\n        this._state !== AFTER_ATTRIBUTE_NAME &&\n        this._state !== IN_ATTRIBUTE_NAME &&\n        this._state !== IN_ATTRIBUTE_VALUE_SQ &&\n        this._state !== IN_ATTRIBUTE_VALUE_DQ &&\n        this._state !== IN_ATTRIBUTE_VALUE_NQ &&\n        this._state !== IN_CLOSING_TAG_NAME\n    ) {\n        this._cbs.ontext(data);\n    }\n    //else, ignore remaining data\n    //TODO add a way to remove current tag\n};\n\nTokenizer.prototype.reset = function() {\n    Tokenizer.call(\n        this,\n        { xmlMode: this._xmlMode, decodeEntities: this._decodeEntities },\n        this._cbs\n    );\n};\n\nTokenizer.prototype.getAbsoluteIndex = function() {\n    return this._bufferOffset + this._index;\n};\n\nTokenizer.prototype._getSection = function() {\n    return this._buffer.substring(this._sectionStart, this._index);\n};\n\nTokenizer.prototype._emitToken = function(name) {\n    this._cbs[name](this._getSection());\n    this._sectionStart = -1;\n};\n\nTokenizer.prototype._emitPartial = function(value) {\n    if (this._baseState !== TEXT) {\n        this._cbs.onattribdata(value); //TODO implement the new event\n    } else {\n        this._cbs.ontext(value);\n    }\n};\n","module.exports = Stream;\n\nvar Parser = require(\"./Parser.js\");\nvar WritableStream = require(\"readable-stream\").Writable;\nvar StringDecoder = require(\"string_decoder\").StringDecoder;\nvar Buffer = require(\"buffer\").Buffer;\n\nfunction Stream(cbs, options) {\n    var parser = (this._parser = new Parser(cbs, options));\n    var decoder = (this._decoder = new StringDecoder());\n\n    WritableStream.call(this, { decodeStrings: false });\n\n    this.once(\"finish\", function() {\n        parser.end(decoder.end());\n    });\n}\n\nrequire(\"inherits\")(Stream, WritableStream);\n\nStream.prototype._write = function(chunk, encoding, cb) {\n    if (chunk instanceof Buffer) chunk = this._decoder.write(chunk);\n    this._parser.write(chunk);\n    cb();\n};\n","var Parser = require(\"./Parser.js\");\nvar DomHandler = require(\"domhandler\");\n\nfunction defineProp(name, value) {\n    delete module.exports[name];\n    module.exports[name] = value;\n    return value;\n}\n\nmodule.exports = {\n    Parser: Parser,\n    Tokenizer: require(\"./Tokenizer.js\"),\n    ElementType: require(\"domelementtype\"),\n    DomHandler: DomHandler,\n    get FeedHandler() {\n        return defineProp(\"FeedHandler\", require(\"./FeedHandler.js\"));\n    },\n    get Stream() {\n        return defineProp(\"Stream\", require(\"./Stream.js\"));\n    },\n    get WritableStream() {\n        return defineProp(\"WritableStream\", require(\"./WritableStream.js\"));\n    },\n    get ProxyHandler() {\n        return defineProp(\"ProxyHandler\", require(\"./ProxyHandler.js\"));\n    },\n    get DomUtils() {\n        return defineProp(\"DomUtils\", require(\"domutils\"));\n    },\n    get CollectingHandler() {\n        return defineProp(\n            \"CollectingHandler\",\n            require(\"./CollectingHandler.js\")\n        );\n    },\n    // For legacy support\n    DefaultHandler: DomHandler,\n    get RssHandler() {\n        return defineProp(\"RssHandler\", this.FeedHandler);\n    },\n    //helper methods\n    parseDOM: function(data, options) {\n        var handler = new DomHandler(options);\n        new Parser(handler, options).end(data);\n        return handler.dom;\n    },\n    parseFeed: function(feed, options) {\n        var handler = new module.exports.FeedHandler(options);\n        new Parser(handler, options).end(feed);\n        return handler.dom;\n    },\n    createDomStream: function(cb, options, elementCb) {\n        var handler = new DomHandler(cb, options, elementCb);\n        return new Parser(handler, options);\n    },\n    // List of all events that the parser emits\n    EVENTS: {\n        /* Format: eventname: number of arguments */\n        attribute: 2,\n        cdatastart: 0,\n        cdataend: 0,\n        text: 1,\n        processinginstruction: 2,\n        comment: 1,\n        commentend: 0,\n        closetag: 1,\n        opentag: 2,\n        opentagname: 1,\n        error: 1,\n        end: 0\n    }\n};\n","// HumanizeDuration.js - https://git.io/j0HgmQ\n\n/* global define, module */\n\n(function () {\n  // This has to be defined separately because of a bug: we want to alias\n  // `gr` and `el` for backwards-compatiblity. In a breaking change, we can\n  // remove `gr` entirely.\n  // See https://github.com/EvanHahn/HumanizeDuration.js/issues/143 for more.\n  var greek = {\n    y: function (c) {\n      return c === 1 ? \"χρόνος\" : \"χρόνια\";\n    },\n    mo: function (c) {\n      return c === 1 ? \"μήνας\" : \"μήνες\";\n    },\n    w: function (c) {\n      return c === 1 ? \"εβδομάδα\" : \"εβδομάδες\";\n    },\n    d: function (c) {\n      return c === 1 ? \"μέρα\" : \"μέρες\";\n    },\n    h: function (c) {\n      return c === 1 ? \"ώρα\" : \"ώρες\";\n    },\n    m: function (c) {\n      return c === 1 ? \"λεπτό\" : \"λεπτά\";\n    },\n    s: function (c) {\n      return c === 1 ? \"δευτερόλεπτο\" : \"δευτερόλεπτα\";\n    },\n    ms: function (c) {\n      return (c === 1 ? \"χιλιοστό\" : \"χιλιοστά\") + \" του δευτερολέπτου\";\n    },\n    decimal: \",\"\n  };\n\n  var ARABIC_DIGITS = [\"۰\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"];\n\n  var LANGUAGES = {\n    af: {\n      y: \"jaar\",\n      mo: function (c) {\n        return \"maand\" + (c === 1 ? \"\" : \"e\");\n      },\n      w: function (c) {\n        return c === 1 ? \"week\" : \"weke\";\n      },\n      d: function (c) {\n        return c === 1 ? \"dag\" : \"dae\";\n      },\n      h: function (c) {\n        return c === 1 ? \"uur\" : \"ure\";\n      },\n      m: function (c) {\n        return c === 1 ? \"minuut\" : \"minute\";\n      },\n      s: function (c) {\n        return \"sekonde\" + (c === 1 ? \"\" : \"s\");\n      },\n      ms: function (c) {\n        return \"millisekonde\" + (c === 1 ? \"\" : \"s\");\n      },\n      decimal: \",\"\n    },\n    ar: {\n      y: function (c) {\n        return [\"سنة\", \"سنتان\", \"سنوات\"][getArabicForm(c)];\n      },\n      mo: function (c) {\n        return [\"شهر\", \"شهران\", \"أشهر\"][getArabicForm(c)];\n      },\n      w: function (c) {\n        return [\"أسبوع\", \"أسبوعين\", \"أسابيع\"][getArabicForm(c)];\n      },\n      d: function (c) {\n        return [\"يوم\", \"يومين\", \"أيام\"][getArabicForm(c)];\n      },\n      h: function (c) {\n        return [\"ساعة\", \"ساعتين\", \"ساعات\"][getArabicForm(c)];\n      },\n      m: function (c) {\n        return [\"دقيقة\", \"دقيقتان\", \"دقائق\"][getArabicForm(c)];\n      },\n      s: function (c) {\n        return [\"ثانية\", \"ثانيتان\", \"ثواني\"][getArabicForm(c)];\n      },\n      ms: function (c) {\n        return [\"جزء من الثانية\", \"جزآن من الثانية\", \"أجزاء من الثانية\"][\n          getArabicForm(c)\n        ];\n      },\n      decimal: \",\",\n      delimiter: \" و \",\n      _formatCount: function (count, decimal) {\n        var replacements = assign(ARABIC_DIGITS, { \".\": decimal });\n        var characters = count.toString().split(\"\");\n        for (var i = 0; i < characters.length; i++) {\n          var character = characters[i];\n          if (has(replacements, character)) {\n            characters[i] = replacements[character];\n          }\n        }\n        return characters.join(\"\");\n      }\n    },\n    bg: {\n      y: function (c) {\n        return [\"години\", \"година\", \"години\"][getSlavicForm(c)];\n      },\n      mo: function (c) {\n        return [\"месеца\", \"месец\", \"месеца\"][getSlavicForm(c)];\n      },\n      w: function (c) {\n        return [\"седмици\", \"седмица\", \"седмици\"][getSlavicForm(c)];\n      },\n      d: function (c) {\n        return [\"дни\", \"ден\", \"дни\"][getSlavicForm(c)];\n      },\n      h: function (c) {\n        return [\"часа\", \"час\", \"часа\"][getSlavicForm(c)];\n      },\n      m: function (c) {\n        return [\"минути\", \"минута\", \"минути\"][getSlavicForm(c)];\n      },\n      s: function (c) {\n        return [\"секунди\", \"секунда\", \"секунди\"][getSlavicForm(c)];\n      },\n      ms: function (c) {\n        return [\"милисекунди\", \"милисекунда\", \"милисекунди\"][getSlavicForm(c)];\n      },\n      decimal: \",\"\n    },\n    bn: {\n      y: \"বছর\",\n      mo: \"মাস\",\n      w: \"সপ্তাহ\",\n      d: \"দিন\",\n      h: \"ঘন্টা\",\n      m: \"মিনিট\",\n      s: \"সেকেন্ড\",\n      ms: \"মিলিসেকেন্ড\"\n    },\n    ca: {\n      y: function (c) {\n        return \"any\" + (c === 1 ? \"\" : \"s\");\n      },\n      mo: function (c) {\n        return \"mes\" + (c === 1 ? \"\" : \"os\");\n      },\n      w: function (c) {\n        return \"setman\" + (c === 1 ? \"a\" : \"es\");\n      },\n      d: function (c) {\n        return \"di\" + (c === 1 ? \"a\" : \"es\");\n      },\n      h: function (c) {\n        return \"hor\" + (c === 1 ? \"a\" : \"es\");\n      },\n      m: function (c) {\n        return \"minut\" + (c === 1 ? \"\" : \"s\");\n      },\n      s: function (c) {\n        return \"segon\" + (c === 1 ? \"\" : \"s\");\n      },\n      ms: function (c) {\n        return \"milisegon\" + (c === 1 ? \"\" : \"s\");\n      },\n      decimal: \",\"\n    },\n    cs: {\n      y: function (c) {\n        return [\"rok\", \"roku\", \"roky\", \"let\"][getCzechOrSlovakForm(c)];\n      },\n      mo: function (c) {\n        return [\"měsíc\", \"měsíce\", \"měsíce\", \"měsíců\"][getCzechOrSlovakForm(c)];\n      },\n      w: function (c) {\n        return [\"týden\", \"týdne\", \"týdny\", \"týdnů\"][getCzechOrSlovakForm(c)];\n      },\n      d: function (c) {\n        return [\"den\", \"dne\", \"dny\", \"dní\"][getCzechOrSlovakForm(c)];\n      },\n      h: function (c) {\n        return [\"hodina\", \"hodiny\", \"hodiny\", \"hodin\"][getCzechOrSlovakForm(c)];\n      },\n      m: function (c) {\n        return [\"minuta\", \"minuty\", \"minuty\", \"minut\"][getCzechOrSlovakForm(c)];\n      },\n      s: function (c) {\n        return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekund\"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      ms: function (c) {\n        return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekund\"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      decimal: \",\"\n    },\n    cy: {\n      y: \"flwyddyn\",\n      mo: \"mis\",\n      w: \"wythnos\",\n      d: \"diwrnod\",\n      h: \"awr\",\n      m: \"munud\",\n      s: \"eiliad\",\n      ms: \"milieiliad\"\n    },\n    da: {\n      y: \"år\",\n      mo: function (c) {\n        return \"måned\" + (c === 1 ? \"\" : \"er\");\n      },\n      w: function (c) {\n        return \"uge\" + (c === 1 ? \"\" : \"r\");\n      },\n      d: function (c) {\n        return \"dag\" + (c === 1 ? \"\" : \"e\");\n      },\n      h: function (c) {\n        return \"time\" + (c === 1 ? \"\" : \"r\");\n      },\n      m: function (c) {\n        return \"minut\" + (c === 1 ? \"\" : \"ter\");\n      },\n      s: function (c) {\n        return \"sekund\" + (c === 1 ? \"\" : \"er\");\n      },\n      ms: function (c) {\n        return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n      },\n      decimal: \",\"\n    },\n    de: {\n      y: function (c) {\n        return \"Jahr\" + (c === 1 ? \"\" : \"e\");\n      },\n      mo: function (c) {\n        return \"Monat\" + (c === 1 ? \"\" : \"e\");\n      },\n      w: function (c) {\n        return \"Woche\" + (c === 1 ? \"\" : \"n\");\n      },\n      d: function (c) {\n        return \"Tag\" + (c === 1 ? \"\" : \"e\");\n      },\n      h: function (c) {\n        return \"Stunde\" + (c === 1 ? \"\" : \"n\");\n      },\n      m: function (c) {\n        return \"Minute\" + (c === 1 ? \"\" : \"n\");\n      },\n      s: function (c) {\n        return \"Sekunde\" + (c === 1 ? \"\" : \"n\");\n      },\n      ms: function (c) {\n        return \"Millisekunde\" + (c === 1 ? \"\" : \"n\");\n      },\n      decimal: \",\"\n    },\n    el: greek,\n    en: {\n      y: function (c) {\n        return \"year\" + (c === 1 ? \"\" : \"s\");\n      },\n      mo: function (c) {\n        return \"month\" + (c === 1 ? \"\" : \"s\");\n      },\n      w: function (c) {\n        return \"week\" + (c === 1 ? \"\" : \"s\");\n      },\n      d: function (c) {\n        return \"day\" + (c === 1 ? \"\" : \"s\");\n      },\n      h: function (c) {\n        return \"hour\" + (c === 1 ? \"\" : \"s\");\n      },\n      m: function (c) {\n        return \"minute\" + (c === 1 ? \"\" : \"s\");\n      },\n      s: function (c) {\n        return \"second\" + (c === 1 ? \"\" : \"s\");\n      },\n      ms: function (c) {\n        return \"millisecond\" + (c === 1 ? \"\" : \"s\");\n      },\n      decimal: \".\"\n    },\n    eo: {\n      y: function (c) {\n        return \"jaro\" + (c === 1 ? \"\" : \"j\");\n      },\n      mo: function (c) {\n        return \"monato\" + (c === 1 ? \"\" : \"j\");\n      },\n      w: function (c) {\n        return \"semajno\" + (c === 1 ? \"\" : \"j\");\n      },\n      d: function (c) {\n        return \"tago\" + (c === 1 ? \"\" : \"j\");\n      },\n      h: function (c) {\n        return \"horo\" + (c === 1 ? \"\" : \"j\");\n      },\n      m: function (c) {\n        return \"minuto\" + (c === 1 ? \"\" : \"j\");\n      },\n      s: function (c) {\n        return \"sekundo\" + (c === 1 ? \"\" : \"j\");\n      },\n      ms: function (c) {\n        return \"milisekundo\" + (c === 1 ? \"\" : \"j\");\n      },\n      decimal: \",\"\n    },\n    es: {\n      y: function (c) {\n        return \"año\" + (c === 1 ? \"\" : \"s\");\n      },\n      mo: function (c) {\n        return \"mes\" + (c === 1 ? \"\" : \"es\");\n      },\n      w: function (c) {\n        return \"semana\" + (c === 1 ? \"\" : \"s\");\n      },\n      d: function (c) {\n        return \"día\" + (c === 1 ? \"\" : \"s\");\n      },\n      h: function (c) {\n        return \"hora\" + (c === 1 ? \"\" : \"s\");\n      },\n      m: function (c) {\n        return \"minuto\" + (c === 1 ? \"\" : \"s\");\n      },\n      s: function (c) {\n        return \"segundo\" + (c === 1 ? \"\" : \"s\");\n      },\n      ms: function (c) {\n        return \"milisegundo\" + (c === 1 ? \"\" : \"s\");\n      },\n      decimal: \",\"\n    },\n    et: {\n      y: function (c) {\n        return \"aasta\" + (c === 1 ? \"\" : \"t\");\n      },\n      mo: function (c) {\n        return \"kuu\" + (c === 1 ? \"\" : \"d\");\n      },\n      w: function (c) {\n        return \"nädal\" + (c === 1 ? \"\" : \"at\");\n      },\n      d: function (c) {\n        return \"päev\" + (c === 1 ? \"\" : \"a\");\n      },\n      h: function (c) {\n        return \"tund\" + (c === 1 ? \"\" : \"i\");\n      },\n      m: function (c) {\n        return \"minut\" + (c === 1 ? \"\" : \"it\");\n      },\n      s: function (c) {\n        return \"sekund\" + (c === 1 ? \"\" : \"it\");\n      },\n      ms: function (c) {\n        return \"millisekund\" + (c === 1 ? \"\" : \"it\");\n      },\n      decimal: \",\"\n    },\n    eu: {\n      y: \"urte\",\n      mo: \"hilabete\",\n      w: \"aste\",\n      d: \"egun\",\n      h: \"ordu\",\n      m: \"minutu\",\n      s: \"segundo\",\n      ms: \"milisegundo\",\n      decimal: \",\"\n    },\n    fa: {\n      y: \"سال\",\n      mo: \"ماه\",\n      w: \"هفته\",\n      d: \"روز\",\n      h: \"ساعت\",\n      m: \"دقیقه\",\n      s: \"ثانیه\",\n      ms: \"میلی ثانیه\",\n      decimal: \".\"\n    },\n    fi: {\n      y: function (c) {\n        return c === 1 ? \"vuosi\" : \"vuotta\";\n      },\n      mo: function (c) {\n        return c === 1 ? \"kuukausi\" : \"kuukautta\";\n      },\n      w: function (c) {\n        return \"viikko\" + (c === 1 ? \"\" : \"a\");\n      },\n      d: function (c) {\n        return \"päivä\" + (c === 1 ? \"\" : \"ä\");\n      },\n      h: function (c) {\n        return \"tunti\" + (c === 1 ? \"\" : \"a\");\n      },\n      m: function (c) {\n        return \"minuutti\" + (c === 1 ? \"\" : \"a\");\n      },\n      s: function (c) {\n        return \"sekunti\" + (c === 1 ? \"\" : \"a\");\n      },\n      ms: function (c) {\n        return \"millisekunti\" + (c === 1 ? \"\" : \"a\");\n      },\n      decimal: \",\"\n    },\n    fo: {\n      y: \"ár\",\n      mo: function (c) {\n        return c === 1 ? \"mánaður\" : \"mánaðir\";\n      },\n      w: function (c) {\n        return c === 1 ? \"vika\" : \"vikur\";\n      },\n      d: function (c) {\n        return c === 1 ? \"dagur\" : \"dagar\";\n      },\n      h: function (c) {\n        return c === 1 ? \"tími\" : \"tímar\";\n      },\n      m: function (c) {\n        return c === 1 ? \"minuttur\" : \"minuttir\";\n      },\n      s: \"sekund\",\n      ms: \"millisekund\",\n      decimal: \",\"\n    },\n    fr: {\n      y: function (c) {\n        return \"an\" + (c >= 2 ? \"s\" : \"\");\n      },\n      mo: \"mois\",\n      w: function (c) {\n        return \"semaine\" + (c >= 2 ? \"s\" : \"\");\n      },\n      d: function (c) {\n        return \"jour\" + (c >= 2 ? \"s\" : \"\");\n      },\n      h: function (c) {\n        return \"heure\" + (c >= 2 ? \"s\" : \"\");\n      },\n      m: function (c) {\n        return \"minute\" + (c >= 2 ? \"s\" : \"\");\n      },\n      s: function (c) {\n        return \"seconde\" + (c >= 2 ? \"s\" : \"\");\n      },\n      ms: function (c) {\n        return \"milliseconde\" + (c >= 2 ? \"s\" : \"\");\n      },\n      decimal: \",\"\n    },\n    gr: greek,\n    he: {\n      y: function (c) {\n        return c === 1 ? \"שנה\" : \"שנים\";\n      },\n      mo: function (c) {\n        return c === 1 ? \"חודש\" : \"חודשים\";\n      },\n      w: function (c) {\n        return c === 1 ? \"שבוע\" : \"שבועות\";\n      },\n      d: function (c) {\n        return c === 1 ? \"יום\" : \"ימים\";\n      },\n      h: function (c) {\n        return c === 1 ? \"שעה\" : \"שעות\";\n      },\n      m: function (c) {\n        return c === 1 ? \"דקה\" : \"דקות\";\n      },\n      s: function (c) {\n        return c === 1 ? \"שניה\" : \"שניות\";\n      },\n      ms: function (c) {\n        return c === 1 ? \"מילישנייה\" : \"מילישניות\";\n      },\n      decimal: \".\"\n    },\n    hr: {\n      y: function (c) {\n        if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {\n          return \"godine\";\n        }\n        return \"godina\";\n      },\n      mo: function (c) {\n        if (c === 1) {\n          return \"mjesec\";\n        } else if (c === 2 || c === 3 || c === 4) {\n          return \"mjeseca\";\n        }\n        return \"mjeseci\";\n      },\n      w: function (c) {\n        if (c % 10 === 1 && c !== 11) {\n          return \"tjedan\";\n        }\n        return \"tjedna\";\n      },\n      d: function (c) {\n        return c === 1 ? \"dan\" : \"dana\";\n      },\n      h: function (c) {\n        if (c === 1) {\n          return \"sat\";\n        } else if (c === 2 || c === 3 || c === 4) {\n          return \"sata\";\n        }\n        return \"sati\";\n      },\n      m: function (c) {\n        var mod10 = c % 10;\n        if ((mod10 === 2 || mod10 === 3 || mod10 === 4) && (c < 10 || c > 14)) {\n          return \"minute\";\n        }\n        return \"minuta\";\n      },\n      s: function (c) {\n        var mod10 = c % 10;\n        if (mod10 === 5 || (Math.floor(c) === c && c >= 10 && c <= 19)) {\n          return \"sekundi\";\n        } else if (mod10 === 1) {\n          return \"sekunda\";\n        } else if (mod10 === 2 || mod10 === 3 || mod10 === 4) {\n          return \"sekunde\";\n        }\n        return \"sekundi\";\n      },\n      ms: function (c) {\n        if (c === 1) {\n          return \"milisekunda\";\n        } else if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {\n          return \"milisekunde\";\n        }\n        return \"milisekundi\";\n      },\n      decimal: \",\"\n    },\n    hi: {\n      y: \"साल\",\n      mo: function (c) {\n        return c === 1 ? \"महीना\" : \"महीने\";\n      },\n      w: function (c) {\n        return c === 1 ? \"हफ़्ता\" : \"हफ्ते\";\n      },\n      d: \"दिन\",\n      h: function (c) {\n        return c === 1 ? \"घंटा\" : \"घंटे\";\n      },\n      m: \"मिनट\",\n      s: \"सेकंड\",\n      ms: \"मिलीसेकंड\",\n      decimal: \".\"\n    },\n    hu: {\n      y: \"év\",\n      mo: \"hónap\",\n      w: \"hét\",\n      d: \"nap\",\n      h: \"óra\",\n      m: \"perc\",\n      s: \"másodperc\",\n      ms: \"ezredmásodperc\",\n      decimal: \",\"\n    },\n    id: {\n      y: \"tahun\",\n      mo: \"bulan\",\n      w: \"minggu\",\n      d: \"hari\",\n      h: \"jam\",\n      m: \"menit\",\n      s: \"detik\",\n      ms: \"milidetik\",\n      decimal: \".\"\n    },\n    is: {\n      y: \"ár\",\n      mo: function (c) {\n        return \"mánuð\" + (c === 1 ? \"ur\" : \"ir\");\n      },\n      w: function (c) {\n        return \"vik\" + (c === 1 ? \"a\" : \"ur\");\n      },\n      d: function (c) {\n        return \"dag\" + (c === 1 ? \"ur\" : \"ar\");\n      },\n      h: function (c) {\n        return \"klukkutím\" + (c === 1 ? \"i\" : \"ar\");\n      },\n      m: function (c) {\n        return \"mínút\" + (c === 1 ? \"a\" : \"ur\");\n      },\n      s: function (c) {\n        return \"sekúnd\" + (c === 1 ? \"a\" : \"ur\");\n      },\n      ms: function (c) {\n        return \"millisekúnd\" + (c === 1 ? \"a\" : \"ur\");\n      },\n      decimal: \".\"\n    },\n    it: {\n      y: function (c) {\n        return \"ann\" + (c === 1 ? \"o\" : \"i\");\n      },\n      mo: function (c) {\n        return \"mes\" + (c === 1 ? \"e\" : \"i\");\n      },\n      w: function (c) {\n        return \"settiman\" + (c === 1 ? \"a\" : \"e\");\n      },\n      d: function (c) {\n        return \"giorn\" + (c === 1 ? \"o\" : \"i\");\n      },\n      h: function (c) {\n        return \"or\" + (c === 1 ? \"a\" : \"e\");\n      },\n      m: function (c) {\n        return \"minut\" + (c === 1 ? \"o\" : \"i\");\n      },\n      s: function (c) {\n        return \"second\" + (c === 1 ? \"o\" : \"i\");\n      },\n      ms: function (c) {\n        return \"millisecond\" + (c === 1 ? \"o\" : \"i\");\n      },\n      decimal: \",\"\n    },\n    ja: {\n      y: \"年\",\n      mo: \"ヶ月\",\n      w: \"週\",\n      d: \"日\",\n      h: \"時間\",\n      m: \"分\",\n      s: \"秒\",\n      ms: \"ミリ秒\",\n      decimal: \".\"\n    },\n    km: {\n      y: \"ឆ្នាំ\",\n      mo: \"ខែ\",\n      w: \"សប្តាហ៍\",\n      d: \"ថ្ងៃ\",\n      h: \"ម៉ោង\",\n      m: \"នាទី\",\n      s: \"វិនាទី\",\n      ms: \"មិល្លីវិនាទី\"\n    },\n    kn: {\n      y: function (c) {\n        return c === 1 ? \"ವರ್ಷ\" : \"ವರ್ಷಗಳು\";\n      },\n      mo: function (c) {\n        return c === 1 ? \"ತಿಂಗಳು\" : \"ತಿಂಗಳುಗಳು\";\n      },\n      w: function (c) {\n        return c === 1 ? \"ವಾರ\" : \"ವಾರಗಳು\";\n      },\n      d: function (c) {\n        return c === 1 ? \"ದಿನ\" : \"ದಿನಗಳು\";\n      },\n      h: function (c) {\n        return c === 1 ? \"ಗಂಟೆ\" : \"ಗಂಟೆಗಳು\";\n      },\n      m: function (c) {\n        return c === 1 ? \"ನಿಮಿಷ\" : \"ನಿಮಿಷಗಳು\";\n      },\n      s: function (c) {\n        return c === 1 ? \"ಸೆಕೆಂಡ್\" : \"ಸೆಕೆಂಡುಗಳು\";\n      },\n      ms: function (c) {\n        return c === 1 ? \"ಮಿಲಿಸೆಕೆಂಡ್\" : \"ಮಿಲಿಸೆಕೆಂಡುಗಳು\";\n      }\n    },\n    ko: {\n      y: \"년\",\n      mo: \"개월\",\n      w: \"주일\",\n      d: \"일\",\n      h: \"시간\",\n      m: \"분\",\n      s: \"초\",\n      ms: \"밀리 초\",\n      decimal: \".\"\n    },\n    ku: {\n      y: \"sal\",\n      mo: \"meh\",\n      w: \"hefte\",\n      d: \"roj\",\n      h: \"seet\",\n      m: \"deqe\",\n      s: \"saniye\",\n      ms: \"mîlîçirk\",\n      decimal: \",\"\n    },\n    lo: {\n      y: \"ປີ\",\n      mo: \"ເດືອນ\",\n      w: \"ອາທິດ\",\n      d: \"ມື້\",\n      h: \"ຊົ່ວໂມງ\",\n      m: \"ນາທີ\",\n      s: \"ວິນາທີ\",\n      ms: \"ມິນລິວິນາທີ\",\n      decimal: \",\"\n    },\n    lt: {\n      y: function (c) {\n        return c % 10 === 0 || (c % 100 >= 10 && c % 100 <= 20)\n          ? \"metų\"\n          : \"metai\";\n      },\n      mo: function (c) {\n        return [\"mėnuo\", \"mėnesiai\", \"mėnesių\"][getLithuanianForm(c)];\n      },\n      w: function (c) {\n        return [\"savaitė\", \"savaitės\", \"savaičių\"][getLithuanianForm(c)];\n      },\n      d: function (c) {\n        return [\"diena\", \"dienos\", \"dienų\"][getLithuanianForm(c)];\n      },\n      h: function (c) {\n        return [\"valanda\", \"valandos\", \"valandų\"][getLithuanianForm(c)];\n      },\n      m: function (c) {\n        return [\"minutė\", \"minutės\", \"minučių\"][getLithuanianForm(c)];\n      },\n      s: function (c) {\n        return [\"sekundė\", \"sekundės\", \"sekundžių\"][getLithuanianForm(c)];\n      },\n      ms: function (c) {\n        return [\"milisekundė\", \"milisekundės\", \"milisekundžių\"][\n          getLithuanianForm(c)\n        ];\n      },\n      decimal: \",\"\n    },\n    lv: {\n      y: function (c) {\n        return getLatvianForm(c) ? \"gads\" : \"gadi\";\n      },\n      mo: function (c) {\n        return getLatvianForm(c) ? \"mēnesis\" : \"mēneši\";\n      },\n      w: function (c) {\n        return getLatvianForm(c) ? \"nedēļa\" : \"nedēļas\";\n      },\n      d: function (c) {\n        return getLatvianForm(c) ? \"diena\" : \"dienas\";\n      },\n      h: function (c) {\n        return getLatvianForm(c) ? \"stunda\" : \"stundas\";\n      },\n      m: function (c) {\n        return getLatvianForm(c) ? \"minūte\" : \"minūtes\";\n      },\n      s: function (c) {\n        return getLatvianForm(c) ? \"sekunde\" : \"sekundes\";\n      },\n      ms: function (c) {\n        return getLatvianForm(c) ? \"milisekunde\" : \"milisekundes\";\n      },\n      decimal: \",\"\n    },\n    mk: {\n      y: function (c) {\n        return c === 1 ? \"година\" : \"години\";\n      },\n      mo: function (c) {\n        return c === 1 ? \"месец\" : \"месеци\";\n      },\n      w: function (c) {\n        return c === 1 ? \"недела\" : \"недели\";\n      },\n      d: function (c) {\n        return c === 1 ? \"ден\" : \"дена\";\n      },\n      h: function (c) {\n        return c === 1 ? \"час\" : \"часа\";\n      },\n      m: function (c) {\n        return c === 1 ? \"минута\" : \"минути\";\n      },\n      s: function (c) {\n        return c === 1 ? \"секунда\" : \"секунди\";\n      },\n      ms: function (c) {\n        return c === 1 ? \"милисекунда\" : \"милисекунди\";\n      },\n      decimal: \",\"\n    },\n    mn: {\n      y: \"жил\",\n      mo: \"сар\",\n      w: \"долоо хоног\",\n      d: \"өдөр\",\n      h: \"цаг\",\n      m: \"минут\",\n      s: \"секунд\",\n      ms: \"миллисекунд\",\n      decimal: \".\"\n    },\n    mr: {\n      y: function (c) {\n        return c === 1 ? \"वर्ष\" : \"वर्षे\";\n      },\n      mo: function (c) {\n        return c === 1 ? \"महिना\" : \"महिने\";\n      },\n      w: function (c) {\n        return c === 1 ? \"आठवडा\" : \"आठवडे\";\n      },\n      d: \"दिवस\",\n      h: \"तास\",\n      m: function (c) {\n        return c === 1 ? \"मिनिट\" : \"मिनिटे\";\n      },\n      s: \"सेकंद\",\n      ms: \"मिलिसेकंद\"\n    },\n    ms: {\n      y: \"tahun\",\n      mo: \"bulan\",\n      w: \"minggu\",\n      d: \"hari\",\n      h: \"jam\",\n      m: \"minit\",\n      s: \"saat\",\n      ms: \"milisaat\",\n      decimal: \".\"\n    },\n    nl: {\n      y: \"jaar\",\n      mo: function (c) {\n        return c === 1 ? \"maand\" : \"maanden\";\n      },\n      w: function (c) {\n        return c === 1 ? \"week\" : \"weken\";\n      },\n      d: function (c) {\n        return c === 1 ? \"dag\" : \"dagen\";\n      },\n      h: \"uur\",\n      m: function (c) {\n        return c === 1 ? \"minuut\" : \"minuten\";\n      },\n      s: function (c) {\n        return c === 1 ? \"seconde\" : \"seconden\";\n      },\n      ms: function (c) {\n        return c === 1 ? \"milliseconde\" : \"milliseconden\";\n      },\n      decimal: \",\"\n    },\n    no: {\n      y: \"år\",\n      mo: function (c) {\n        return \"måned\" + (c === 1 ? \"\" : \"er\");\n      },\n      w: function (c) {\n        return \"uke\" + (c === 1 ? \"\" : \"r\");\n      },\n      d: function (c) {\n        return \"dag\" + (c === 1 ? \"\" : \"er\");\n      },\n      h: function (c) {\n        return \"time\" + (c === 1 ? \"\" : \"r\");\n      },\n      m: function (c) {\n        return \"minutt\" + (c === 1 ? \"\" : \"er\");\n      },\n      s: function (c) {\n        return \"sekund\" + (c === 1 ? \"\" : \"er\");\n      },\n      ms: function (c) {\n        return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n      },\n      decimal: \",\"\n    },\n    pl: {\n      y: function (c) {\n        return [\"rok\", \"roku\", \"lata\", \"lat\"][getPolishForm(c)];\n      },\n      mo: function (c) {\n        return [\"miesiąc\", \"miesiąca\", \"miesiące\", \"miesięcy\"][\n          getPolishForm(c)\n        ];\n      },\n      w: function (c) {\n        return [\"tydzień\", \"tygodnia\", \"tygodnie\", \"tygodni\"][getPolishForm(c)];\n      },\n      d: function (c) {\n        return [\"dzień\", \"dnia\", \"dni\", \"dni\"][getPolishForm(c)];\n      },\n      h: function (c) {\n        return [\"godzina\", \"godziny\", \"godziny\", \"godzin\"][getPolishForm(c)];\n      },\n      m: function (c) {\n        return [\"minuta\", \"minuty\", \"minuty\", \"minut\"][getPolishForm(c)];\n      },\n      s: function (c) {\n        return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekund\"][getPolishForm(c)];\n      },\n      ms: function (c) {\n        return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekund\"][\n          getPolishForm(c)\n        ];\n      },\n      decimal: \",\"\n    },\n    pt: {\n      y: function (c) {\n        return \"ano\" + (c === 1 ? \"\" : \"s\");\n      },\n      mo: function (c) {\n        return c === 1 ? \"mês\" : \"meses\";\n      },\n      w: function (c) {\n        return \"semana\" + (c === 1 ? \"\" : \"s\");\n      },\n      d: function (c) {\n        return \"dia\" + (c === 1 ? \"\" : \"s\");\n      },\n      h: function (c) {\n        return \"hora\" + (c === 1 ? \"\" : \"s\");\n      },\n      m: function (c) {\n        return \"minuto\" + (c === 1 ? \"\" : \"s\");\n      },\n      s: function (c) {\n        return \"segundo\" + (c === 1 ? \"\" : \"s\");\n      },\n      ms: function (c) {\n        return \"milissegundo\" + (c === 1 ? \"\" : \"s\");\n      },\n      decimal: \",\"\n    },\n    ro: {\n      y: function (c) {\n        return c === 1 ? \"an\" : \"ani\";\n      },\n      mo: function (c) {\n        return c === 1 ? \"lună\" : \"luni\";\n      },\n      w: function (c) {\n        return c === 1 ? \"săptămână\" : \"săptămâni\";\n      },\n      d: function (c) {\n        return c === 1 ? \"zi\" : \"zile\";\n      },\n      h: function (c) {\n        return c === 1 ? \"oră\" : \"ore\";\n      },\n      m: function (c) {\n        return c === 1 ? \"minut\" : \"minute\";\n      },\n      s: function (c) {\n        return c === 1 ? \"secundă\" : \"secunde\";\n      },\n      ms: function (c) {\n        return c === 1 ? \"milisecundă\" : \"milisecunde\";\n      },\n      decimal: \",\"\n    },\n    ru: {\n      y: function (c) {\n        return [\"лет\", \"год\", \"года\"][getSlavicForm(c)];\n      },\n      mo: function (c) {\n        return [\"месяцев\", \"месяц\", \"месяца\"][getSlavicForm(c)];\n      },\n      w: function (c) {\n        return [\"недель\", \"неделя\", \"недели\"][getSlavicForm(c)];\n      },\n      d: function (c) {\n        return [\"дней\", \"день\", \"дня\"][getSlavicForm(c)];\n      },\n      h: function (c) {\n        return [\"часов\", \"час\", \"часа\"][getSlavicForm(c)];\n      },\n      m: function (c) {\n        return [\"минут\", \"минута\", \"минуты\"][getSlavicForm(c)];\n      },\n      s: function (c) {\n        return [\"секунд\", \"секунда\", \"секунды\"][getSlavicForm(c)];\n      },\n      ms: function (c) {\n        return [\"миллисекунд\", \"миллисекунда\", \"миллисекунды\"][\n          getSlavicForm(c)\n        ];\n      },\n      decimal: \",\"\n    },\n    sq: {\n      y: function (c) {\n        return c === 1 ? \"vit\" : \"vjet\";\n      },\n      mo: \"muaj\",\n      w: \"javë\",\n      d: \"ditë\",\n      h: \"orë\",\n      m: function (c) {\n        return \"minut\" + (c === 1 ? \"ë\" : \"a\");\n      },\n      s: function (c) {\n        return \"sekond\" + (c === 1 ? \"ë\" : \"a\");\n      },\n      ms: function (c) {\n        return \"milisekond\" + (c === 1 ? \"ë\" : \"a\");\n      },\n      decimal: \",\"\n    },\n    sr: {\n      y: function (c) {\n        return [\"години\", \"година\", \"године\"][getSlavicForm(c)];\n      },\n      mo: function (c) {\n        return [\"месеци\", \"месец\", \"месеца\"][getSlavicForm(c)];\n      },\n      w: function (c) {\n        return [\"недељи\", \"недеља\", \"недеље\"][getSlavicForm(c)];\n      },\n      d: function (c) {\n        return [\"дани\", \"дан\", \"дана\"][getSlavicForm(c)];\n      },\n      h: function (c) {\n        return [\"сати\", \"сат\", \"сата\"][getSlavicForm(c)];\n      },\n      m: function (c) {\n        return [\"минута\", \"минут\", \"минута\"][getSlavicForm(c)];\n      },\n      s: function (c) {\n        return [\"секунди\", \"секунда\", \"секунде\"][getSlavicForm(c)];\n      },\n      ms: function (c) {\n        return [\"милисекунди\", \"милисекунда\", \"милисекунде\"][getSlavicForm(c)];\n      },\n      decimal: \",\"\n    },\n    ta: {\n      y: function (c) {\n        return c === 1 ? \"வருடம்\" : \"ஆண்டுகள்\";\n      },\n      mo: function (c) {\n        return c === 1 ? \"மாதம்\" : \"மாதங்கள்\";\n      },\n      w: function (c) {\n        return c === 1 ? \"வாரம்\" : \"வாரங்கள்\";\n      },\n      d: function (c) {\n        return c === 1 ? \"நாள்\" : \"நாட்கள்\";\n      },\n      h: function (c) {\n        return c === 1 ? \"மணி\" : \"மணிநேரம்\";\n      },\n      m: function (c) {\n        return \"நிமிட\" + (c === 1 ? \"ம்\" : \"ங்கள்\");\n      },\n      s: function (c) {\n        return \"வினாடி\" + (c === 1 ? \"\" : \"கள்\");\n      },\n      ms: function (c) {\n        return \"மில்லி விநாடி\" + (c === 1 ? \"\" : \"கள்\");\n      }\n    },\n    te: {\n      y: function (c) {\n        return \"సంవత్స\" + (c === 1 ? \"రం\" : \"రాల\");\n      },\n      mo: function (c) {\n        return \"నెల\" + (c === 1 ? \"\" : \"ల\");\n      },\n      w: function (c) {\n        return c === 1 ? \"వారం\" : \"వారాలు\";\n      },\n      d: function (c) {\n        return \"రోజు\" + (c === 1 ? \"\" : \"లు\");\n      },\n      h: function (c) {\n        return \"గంట\" + (c === 1 ? \"\" : \"లు\");\n      },\n      m: function (c) {\n        return c === 1 ? \"నిమిషం\" : \"నిమిషాలు\";\n      },\n      s: function (c) {\n        return c === 1 ? \"సెకను\" : \"సెకన్లు\";\n      },\n      ms: function (c) {\n        return c === 1 ? \"మిల్లీసెకన్\" : \"మిల్లీసెకన్లు\";\n      }\n    },\n    uk: {\n      y: function (c) {\n        return [\"років\", \"рік\", \"роки\"][getSlavicForm(c)];\n      },\n      mo: function (c) {\n        return [\"місяців\", \"місяць\", \"місяці\"][getSlavicForm(c)];\n      },\n      w: function (c) {\n        return [\"тижнів\", \"тиждень\", \"тижні\"][getSlavicForm(c)];\n      },\n      d: function (c) {\n        return [\"днів\", \"день\", \"дні\"][getSlavicForm(c)];\n      },\n      h: function (c) {\n        return [\"годин\", \"година\", \"години\"][getSlavicForm(c)];\n      },\n      m: function (c) {\n        return [\"хвилин\", \"хвилина\", \"хвилини\"][getSlavicForm(c)];\n      },\n      s: function (c) {\n        return [\"секунд\", \"секунда\", \"секунди\"][getSlavicForm(c)];\n      },\n      ms: function (c) {\n        return [\"мілісекунд\", \"мілісекунда\", \"мілісекунди\"][getSlavicForm(c)];\n      },\n      decimal: \",\"\n    },\n    ur: {\n      y: \"سال\",\n      mo: function (c) {\n        return c === 1 ? \"مہینہ\" : \"مہینے\";\n      },\n      w: function (c) {\n        return c === 1 ? \"ہفتہ\" : \"ہفتے\";\n      },\n      d: \"دن\",\n      h: function (c) {\n        return c === 1 ? \"گھنٹہ\" : \"گھنٹے\";\n      },\n      m: \"منٹ\",\n      s: \"سیکنڈ\",\n      ms: \"ملی سیکنڈ\",\n      decimal: \".\"\n    },\n    sk: {\n      y: function (c) {\n        return [\"rok\", \"roky\", \"roky\", \"rokov\"][getCzechOrSlovakForm(c)];\n      },\n      mo: function (c) {\n        return [\"mesiac\", \"mesiace\", \"mesiace\", \"mesiacov\"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      w: function (c) {\n        return [\"týždeň\", \"týždne\", \"týždne\", \"týždňov\"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      d: function (c) {\n        return [\"deň\", \"dni\", \"dni\", \"dní\"][getCzechOrSlovakForm(c)];\n      },\n      h: function (c) {\n        return [\"hodina\", \"hodiny\", \"hodiny\", \"hodín\"][getCzechOrSlovakForm(c)];\n      },\n      m: function (c) {\n        return [\"minúta\", \"minúty\", \"minúty\", \"minút\"][getCzechOrSlovakForm(c)];\n      },\n      s: function (c) {\n        return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekúnd\"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      ms: function (c) {\n        return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekúnd\"][\n          getCzechOrSlovakForm(c)\n        ];\n      },\n      decimal: \",\"\n    },\n    sl: {\n      y: function (c) {\n        if (c % 10 === 1) {\n          return \"leto\";\n        } else if (c % 100 === 2) {\n          return \"leti\";\n        } else if (\n          c % 100 === 3 ||\n          c % 100 === 4 ||\n          (Math.floor(c) !== c && c % 100 <= 5)\n        ) {\n          return \"leta\";\n        } else {\n          return \"let\";\n        }\n      },\n      mo: function (c) {\n        if (c % 10 === 1) {\n          return \"mesec\";\n        } else if (c % 100 === 2 || (Math.floor(c) !== c && c % 100 <= 5)) {\n          return \"meseca\";\n        } else if (c % 10 === 3 || c % 10 === 4) {\n          return \"mesece\";\n        } else {\n          return \"mesecev\";\n        }\n      },\n      w: function (c) {\n        if (c % 10 === 1) {\n          return \"teden\";\n        } else if (c % 10 === 2 || (Math.floor(c) !== c && c % 100 <= 4)) {\n          return \"tedna\";\n        } else if (c % 10 === 3 || c % 10 === 4) {\n          return \"tedne\";\n        } else {\n          return \"tednov\";\n        }\n      },\n      d: function (c) {\n        return c % 100 === 1 ? \"dan\" : \"dni\";\n      },\n      h: function (c) {\n        if (c % 10 === 1) {\n          return \"ura\";\n        } else if (c % 100 === 2) {\n          return \"uri\";\n        } else if (c % 10 === 3 || c % 10 === 4 || Math.floor(c) !== c) {\n          return \"ure\";\n        } else {\n          return \"ur\";\n        }\n      },\n      m: function (c) {\n        if (c % 10 === 1) {\n          return \"minuta\";\n        } else if (c % 10 === 2) {\n          return \"minuti\";\n        } else if (\n          c % 10 === 3 ||\n          c % 10 === 4 ||\n          (Math.floor(c) !== c && c % 100 <= 4)\n        ) {\n          return \"minute\";\n        } else {\n          return \"minut\";\n        }\n      },\n      s: function (c) {\n        if (c % 10 === 1) {\n          return \"sekunda\";\n        } else if (c % 100 === 2) {\n          return \"sekundi\";\n        } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {\n          return \"sekunde\";\n        } else {\n          return \"sekund\";\n        }\n      },\n      ms: function (c) {\n        if (c % 10 === 1) {\n          return \"milisekunda\";\n        } else if (c % 100 === 2) {\n          return \"milisekundi\";\n        } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {\n          return \"milisekunde\";\n        } else {\n          return \"milisekund\";\n        }\n      },\n      decimal: \",\"\n    },\n    sv: {\n      y: \"år\",\n      mo: function (c) {\n        return \"månad\" + (c === 1 ? \"\" : \"er\");\n      },\n      w: function (c) {\n        return \"veck\" + (c === 1 ? \"a\" : \"or\");\n      },\n      d: function (c) {\n        return \"dag\" + (c === 1 ? \"\" : \"ar\");\n      },\n      h: function (c) {\n        return \"timm\" + (c === 1 ? \"e\" : \"ar\");\n      },\n      m: function (c) {\n        return \"minut\" + (c === 1 ? \"\" : \"er\");\n      },\n      s: function (c) {\n        return \"sekund\" + (c === 1 ? \"\" : \"er\");\n      },\n      ms: function (c) {\n        return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n      },\n      decimal: \",\"\n    },\n    sw: {\n      y: function (c) {\n        return c === 1 ? \"mwaka\" : \"miaka\";\n      },\n      mo: function (c) {\n        return c === 1 ? \"mwezi\" : \"miezi\";\n      },\n      w: \"wiki\",\n      d: function (c) {\n        return c === 1 ? \"siku\" : \"masiku\";\n      },\n      h: function (c) {\n        return c === 1 ? \"saa\" : \"masaa\";\n      },\n      m: \"dakika\",\n      s: \"sekunde\",\n      ms: \"milisekunde\",\n      decimal: \".\",\n      _numberFirst: true\n    },\n    tr: {\n      y: \"yıl\",\n      mo: \"ay\",\n      w: \"hafta\",\n      d: \"gün\",\n      h: \"saat\",\n      m: \"dakika\",\n      s: \"saniye\",\n      ms: \"milisaniye\",\n      decimal: \",\"\n    },\n    th: {\n      y: \"ปี\",\n      mo: \"เดือน\",\n      w: \"สัปดาห์\",\n      d: \"วัน\",\n      h: \"ชั่วโมง\",\n      m: \"นาที\",\n      s: \"วินาที\",\n      ms: \"มิลลิวินาที\",\n      decimal: \".\"\n    },\n    vi: {\n      y: \"năm\",\n      mo: \"tháng\",\n      w: \"tuần\",\n      d: \"ngày\",\n      h: \"giờ\",\n      m: \"phút\",\n      s: \"giây\",\n      ms: \"mili giây\",\n      decimal: \",\"\n    },\n    zh_CN: {\n      y: \"年\",\n      mo: \"个月\",\n      w: \"周\",\n      d: \"天\",\n      h: \"小时\",\n      m: \"分钟\",\n      s: \"秒\",\n      ms: \"毫秒\",\n      decimal: \".\"\n    },\n    zh_TW: {\n      y: \"年\",\n      mo: \"個月\",\n      w: \"周\",\n      d: \"天\",\n      h: \"小時\",\n      m: \"分鐘\",\n      s: \"秒\",\n      ms: \"毫秒\",\n      decimal: \".\"\n    }\n  };\n\n  // You can create a humanizer, which returns a function with default\n  // parameters.\n  function humanizer(passedOptions) {\n    var result = function humanizer(ms, humanizerOptions) {\n      var options = assign({}, result, humanizerOptions || {});\n      return doHumanization(ms, options);\n    };\n\n    return assign(\n      result,\n      {\n        language: \"en\",\n        spacer: \" \",\n        conjunction: \"\",\n        serialComma: true,\n        units: [\"y\", \"mo\", \"w\", \"d\", \"h\", \"m\", \"s\"],\n        languages: {},\n        round: false,\n        unitMeasures: {\n          y: 31557600000,\n          mo: 2629800000,\n          w: 604800000,\n          d: 86400000,\n          h: 3600000,\n          m: 60000,\n          s: 1000,\n          ms: 1\n        }\n      },\n      passedOptions\n    );\n  }\n\n  // The main function is just a wrapper around a default humanizer.\n  var humanizeDuration = humanizer({});\n\n  // Build dictionary from options\n  function getDictionary(options) {\n    var languagesFromOptions = [options.language];\n\n    if (has(options, \"fallbacks\")) {\n      if (isArray(options.fallbacks) && options.fallbacks.length) {\n        languagesFromOptions = languagesFromOptions.concat(options.fallbacks);\n      } else {\n        throw new Error(\"fallbacks must be an array with at least one element\");\n      }\n    }\n\n    for (var i = 0; i < languagesFromOptions.length; i++) {\n      var languageToTry = languagesFromOptions[i];\n      if (has(options.languages, languageToTry)) {\n        return options.languages[languageToTry];\n      } else if (has(LANGUAGES, languageToTry)) {\n        return LANGUAGES[languageToTry];\n      }\n    }\n\n    throw new Error(\"No language found.\");\n  }\n\n  // doHumanization does the bulk of the work.\n  function doHumanization(ms, options) {\n    var i, len, piece;\n\n    // Make sure we have a positive number.\n    // Has the nice sideffect of turning Number objects into primitives.\n    ms = Math.abs(ms);\n\n    var dictionary = getDictionary(options);\n    var pieces = [];\n\n    // Start at the top and keep removing units, bit by bit.\n    var unitName, unitMS, unitCount;\n    for (i = 0, len = options.units.length; i < len; i++) {\n      unitName = options.units[i];\n      unitMS = options.unitMeasures[unitName];\n\n      // What's the number of full units we can fit?\n      if (i + 1 === len) {\n        if (has(options, \"maxDecimalPoints\")) {\n          // We need to use this expValue to avoid rounding functionality of toFixed call\n          var expValue = Math.pow(10, options.maxDecimalPoints);\n          var unitCountFloat = ms / unitMS;\n          unitCount = parseFloat(\n            (Math.floor(expValue * unitCountFloat) / expValue).toFixed(\n              options.maxDecimalPoints\n            )\n          );\n        } else {\n          unitCount = ms / unitMS;\n        }\n      } else {\n        unitCount = Math.floor(ms / unitMS);\n      }\n\n      // Add the string.\n      pieces.push({\n        unitCount: unitCount,\n        unitName: unitName\n      });\n\n      // Remove what we just figured out.\n      ms -= unitCount * unitMS;\n    }\n\n    var firstOccupiedUnitIndex = 0;\n    for (i = 0; i < pieces.length; i++) {\n      if (pieces[i].unitCount) {\n        firstOccupiedUnitIndex = i;\n        break;\n      }\n    }\n\n    if (options.round) {\n      var ratioToLargerUnit, previousPiece;\n      for (i = pieces.length - 1; i >= 0; i--) {\n        piece = pieces[i];\n        piece.unitCount = Math.round(piece.unitCount);\n\n        if (i === 0) {\n          break;\n        }\n\n        previousPiece = pieces[i - 1];\n\n        ratioToLargerUnit =\n          options.unitMeasures[previousPiece.unitName] /\n          options.unitMeasures[piece.unitName];\n        if (\n          piece.unitCount % ratioToLargerUnit === 0 ||\n          (options.largest && options.largest - 1 < i - firstOccupiedUnitIndex)\n        ) {\n          previousPiece.unitCount += piece.unitCount / ratioToLargerUnit;\n          piece.unitCount = 0;\n        }\n      }\n    }\n\n    var result = [];\n    for (i = 0, pieces.length; i < len; i++) {\n      piece = pieces[i];\n      if (piece.unitCount) {\n        result.push(\n          render(piece.unitCount, piece.unitName, dictionary, options)\n        );\n      }\n\n      if (result.length === options.largest) {\n        break;\n      }\n    }\n\n    if (result.length) {\n      var delimiter;\n      if (has(options, \"delimiter\")) {\n        delimiter = options.delimiter;\n      } else if (has(dictionary, \"delimiter\")) {\n        delimiter = dictionary.delimiter;\n      } else {\n        delimiter = \", \";\n      }\n\n      if (!options.conjunction || result.length === 1) {\n        return result.join(delimiter);\n      } else if (result.length === 2) {\n        return result.join(options.conjunction);\n      } else if (result.length > 2) {\n        return (\n          result.slice(0, -1).join(delimiter) +\n          (options.serialComma ? \",\" : \"\") +\n          options.conjunction +\n          result.slice(-1)\n        );\n      }\n    } else {\n      return render(\n        0,\n        options.units[options.units.length - 1],\n        dictionary,\n        options\n      );\n    }\n  }\n\n  function render(count, type, dictionary, options) {\n    var decimal;\n    if (has(options, \"decimal\")) {\n      decimal = options.decimal;\n    } else if (has(dictionary, \"decimal\")) {\n      decimal = dictionary.decimal;\n    } else {\n      decimal = \".\";\n    }\n\n    var countStr;\n    if (typeof dictionary._formatCount === \"function\") {\n      countStr = dictionary._formatCount(count, decimal);\n    } else {\n      countStr = count.toString().replace(\".\", decimal);\n    }\n\n    var dictionaryValue = dictionary[type];\n    var word;\n    if (typeof dictionaryValue === \"function\") {\n      word = dictionaryValue(count);\n    } else {\n      word = dictionaryValue;\n    }\n\n    if (dictionary._numberFirst) {\n      return word + options.spacer + countStr;\n    }\n    return countStr + options.spacer + word;\n  }\n\n  function assign(destination) {\n    var source;\n    for (var i = 1; i < arguments.length; i++) {\n      source = arguments[i];\n      for (var prop in source) {\n        if (has(source, prop)) {\n          destination[prop] = source[prop];\n        }\n      }\n    }\n    return destination;\n  }\n\n  function getArabicForm(c) {\n    if (c === 1) {\n      return 0;\n    }\n    if (c === 2) {\n      return 1;\n    }\n    if (c > 2 && c < 11) {\n      return 2;\n    }\n    return 0;\n  }\n\n  function getPolishForm(c) {\n    if (c === 1) {\n      return 0;\n    } else if (Math.floor(c) !== c) {\n      return 1;\n    } else if (c % 10 >= 2 && c % 10 <= 4 && !(c % 100 > 10 && c % 100 < 20)) {\n      return 2;\n    } else {\n      return 3;\n    }\n  }\n\n  function getSlavicForm(c) {\n    if (Math.floor(c) !== c) {\n      return 2;\n    } else if (\n      (c % 100 >= 5 && c % 100 <= 20) ||\n      (c % 10 >= 5 && c % 10 <= 9) ||\n      c % 10 === 0\n    ) {\n      return 0;\n    } else if (c % 10 === 1) {\n      return 1;\n    } else if (c > 1) {\n      return 2;\n    } else {\n      return 0;\n    }\n  }\n\n  function getCzechOrSlovakForm(c) {\n    if (c === 1) {\n      return 0;\n    } else if (Math.floor(c) !== c) {\n      return 1;\n    } else if (c % 10 >= 2 && c % 10 <= 4 && c % 100 < 10) {\n      return 2;\n    } else {\n      return 3;\n    }\n  }\n\n  function getLithuanianForm(c) {\n    if (c === 1 || (c % 10 === 1 && c % 100 > 20)) {\n      return 0;\n    } else if (\n      Math.floor(c) !== c ||\n      (c % 10 >= 2 && c % 100 > 20) ||\n      (c % 10 >= 2 && c % 100 < 10)\n    ) {\n      return 1;\n    } else {\n      return 2;\n    }\n  }\n\n  function getLatvianForm(c) {\n    return c % 10 === 1 && c % 100 !== 11;\n  }\n\n  // We need to make sure we support browsers that don't have\n  // `Array.isArray`, so we define a fallback here.\n  var isArray =\n    Array.isArray ||\n    function (arg) {\n      return Object.prototype.toString.call(arg) === \"[object Array]\";\n    };\n\n  function has(obj, key) {\n    return Object.prototype.hasOwnProperty.call(obj, key);\n  }\n\n  humanizeDuration.getSupportedLanguages = function getSupportedLanguages() {\n    var result = [];\n    for (var language in LANGUAGES) {\n      if (has(LANGUAGES, language) && language !== \"gr\") {\n        result.push(language);\n      }\n    }\n    return result;\n  };\n\n  humanizeDuration.humanizer = humanizer;\n\n  if (typeof define === \"function\" && define.amd) {\n    define(function () {\n      return humanizeDuration;\n    });\n  } else if (typeof module !== \"undefined\" && module.exports) {\n    module.exports = humanizeDuration;\n  } else {\n    this.humanizeDuration = humanizeDuration;\n  }\n})();\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n  if (typeof style !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (!style) return [];\n\n  options = options || {};\n\n  /**\n   * Positional.\n   */\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   *\n   * @param {String} str\n   */\n  function updatePosition(str) {\n    var lines = str.match(NEWLINE_REGEX);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(NEWLINE);\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   *\n   * @return {Function}\n   */\n  function position() {\n    var start = { line: lineno, column: column };\n    return function(node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node.\n   *\n   * @constructor\n   * @property {Object} start\n   * @property {Object} end\n   * @property {undefined|String} source\n   */\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string.\n   */\n  Position.prototype.content = style;\n\n  var errorsList = [];\n\n  /**\n   * Error `msg`.\n   *\n   * @param {String} msg\n   * @throws {Error}\n   */\n  function error(msg) {\n    var err = new Error(\n      options.source + ':' + lineno + ':' + column + ': ' + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = style;\n\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n\n  /**\n   * Match `re` and return captures.\n   *\n   * @param {RegExp} re\n   * @return {undefined|Array}\n   */\n  function match(re) {\n    var m = re.exec(style);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    style = style.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n  function whitespace() {\n    match(WHITESPACE_REGEX);\n  }\n\n  /**\n   * Parse comments.\n   *\n   * @param {Object[]} [rules]\n   * @return {Object[]}\n   */\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function comment() {\n    var pos = position();\n    if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n    var i = 2;\n    while (\n      EMPTY_STRING != style.charAt(i) &&\n      (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n    ) {\n      ++i;\n    }\n    i += 2;\n\n    if (EMPTY_STRING === style.charAt(i - 1)) {\n      return error('End of comment missing');\n    }\n\n    var str = style.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    style = style.slice(i);\n    column += 2;\n\n    return pos({\n      type: TYPE_COMMENT,\n      comment: str\n    });\n  }\n\n  /**\n   * Parse declaration.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(PROPERTY_REGEX);\n    if (!prop) return;\n    comment();\n\n    // :\n    if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(VALUE_REGEX);\n\n    var ret = pos({\n      type: TYPE_DECLARATION,\n      property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n      value: val\n        ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n        : EMPTY_STRING\n    });\n\n    // ;\n    match(SEMICOLON_REGEX);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   *\n   * @return {Object[]}\n   */\n  function declarations() {\n    var decls = [];\n\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    return decls;\n  }\n\n  whitespace();\n  return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n  return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n  alt: 'altKey',\n  control: 'ctrlKey',\n  meta: 'metaKey',\n  shift: 'shiftKey'\n};\n\nvar ALIASES = {\n  add: '+',\n  break: 'pause',\n  cmd: 'meta',\n  command: 'meta',\n  ctl: 'control',\n  ctrl: 'control',\n  del: 'delete',\n  down: 'arrowdown',\n  esc: 'escape',\n  ins: 'insert',\n  left: 'arrowleft',\n  mod: IS_MAC ? 'meta' : 'control',\n  opt: 'alt',\n  option: 'alt',\n  return: 'enter',\n  right: 'arrowright',\n  space: ' ',\n  spacebar: ' ',\n  up: 'arrowup',\n  win: 'meta',\n  windows: 'meta'\n};\n\nvar CODES = {\n  backspace: 8,\n  tab: 9,\n  enter: 13,\n  shift: 16,\n  control: 17,\n  alt: 18,\n  pause: 19,\n  capslock: 20,\n  escape: 27,\n  ' ': 32,\n  pageup: 33,\n  pagedown: 34,\n  end: 35,\n  home: 36,\n  arrowleft: 37,\n  arrowup: 38,\n  arrowright: 39,\n  arrowdown: 40,\n  insert: 45,\n  delete: 46,\n  meta: 91,\n  numlock: 144,\n  scrolllock: 145,\n  ';': 186,\n  '=': 187,\n  ',': 188,\n  '-': 189,\n  '.': 190,\n  '/': 191,\n  '`': 192,\n  '[': 219,\n  '\\\\': 220,\n  ']': 221,\n  '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n  CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n  if (options && !('byKey' in options)) {\n    event = options;\n    options = null;\n  }\n\n  if (!Array.isArray(hotkey)) {\n    hotkey = [hotkey];\n  }\n\n  var array = hotkey.map(function (string) {\n    return parseHotkey(string, options);\n  });\n  var check = function check(e) {\n    return array.some(function (object) {\n      return compareHotkey(object, e);\n    });\n  };\n  var ret = event == null ? check : check(event);\n  return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n  return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n  return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n  var byKey = options && options.byKey;\n  var ret = {};\n\n  // Special case to handle the `+` key since we use it as a separator.\n  hotkey = hotkey.replace('++', '+add');\n  var values = hotkey.split('+');\n  var length = values.length;\n\n  // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n  for (var k in MODIFIERS) {\n    ret[MODIFIERS[k]] = false;\n  }\n\n  var _iteratorNormalCompletion = true;\n  var _didIteratorError = false;\n  var _iteratorError = undefined;\n\n  try {\n    for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n      var value = _step.value;\n\n      var optional = value.endsWith('?') && value.length > 1;\n\n      if (optional) {\n        value = value.slice(0, -1);\n      }\n\n      var name = toKeyName(value);\n      var modifier = MODIFIERS[name];\n\n      if (length === 1 || !modifier) {\n        if (byKey) {\n          ret.key = name;\n        } else {\n          ret.which = toKeyCode(value);\n        }\n      }\n\n      if (modifier) {\n        ret[modifier] = optional ? null : true;\n      }\n    }\n  } catch (err) {\n    _didIteratorError = true;\n    _iteratorError = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion && _iterator.return) {\n        _iterator.return();\n      }\n    } finally {\n      if (_didIteratorError) {\n        throw _iteratorError;\n      }\n    }\n  }\n\n  return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n  for (var key in object) {\n    var expected = object[key];\n    var actual = void 0;\n\n    if (expected == null) {\n      continue;\n    }\n\n    if (key === 'key' && event.key != null) {\n      actual = event.key.toLowerCase();\n    } else if (key === 'which') {\n      actual = expected === 91 && event.which === 93 ? 91 : event.which;\n    } else {\n      actual = event[key];\n    }\n\n    if (actual == null && expected === false) {\n      continue;\n    }\n\n    if (actual !== expected) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n  name = toKeyName(name);\n  var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n  return code;\n}\n\nfunction toKeyName(name) {\n  name = name.toLowerCase();\n  name = ALIASES[name] || name;\n  return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","'use strict';\n\nmodule.exports = value => {\n\tif (Object.prototype.toString.call(value) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype;\n};\n","/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2013 Klaus Hartl\n * Released under the MIT license\n */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// CommonJS\n\t\tfactory(require('jquery'));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction encode(s) {\n\t\treturn config.raw ? s : encodeURIComponent(s);\n\t}\n\n\tfunction decode(s) {\n\t\treturn config.raw ? s : decodeURIComponent(s);\n\t}\n\n\tfunction stringifyCookieValue(value) {\n\t\treturn encode(config.json ? JSON.stringify(value) : String(value));\n\t}\n\n\tfunction parseCookieValue(s) {\n\t\tif (s.indexOf('\"') === 0) {\n\t\t\t// This is a quoted cookie as according to RFC2068, unescape...\n\t\t\ts = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n\t\t}\n\n\t\ttry {\n\t\t\t// Replace server-side written pluses with spaces.\n\t\t\t// If we can't decode the cookie, ignore it, it's unusable.\n\t\t\t// If we can't parse the cookie, ignore it, it's unusable.\n\t\t\ts = decodeURIComponent(s.replace(pluses, ' '));\n\t\t\treturn config.json ? JSON.parse(s) : s;\n\t\t} catch(e) {}\n\t}\n\n\tfunction read(s, converter) {\n\t\tvar value = config.raw ? s : parseCookieValue(s);\n\t\treturn $.isFunction(converter) ? converter(value) : value;\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// Write\n\n\t\tif (value !== undefined && !$.isFunction(value)) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setTime(+t + days * 864e+5);\n\t\t\t}\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tencode(key), '=', stringifyCookieValue(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path    ? '; path=' + options.path : '',\n\t\t\t\toptions.domain  ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure  ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// Read\n\n\t\tvar result = key ? undefined : {};\n\n\t\t// To prevent the for loop in the first place assign an empty array\n\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t// calling $.cookie().\n\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('=');\n\t\t\tvar name = decode(parts.shift());\n\t\t\tvar cookie = parts.join('=');\n\n\t\t\tif (key && key === name) {\n\t\t\t\t// If second argument (value) is a function it's a converter...\n\t\t\t\tresult = read(cookie, value);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Prevent storing a cookie that we couldn't decode.\n\t\t\tif (!key && (cookie = read(cookie)) !== undefined) {\n\t\t\t\tresult[name] = cookie;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\tif ($.cookie(key) === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Must not alter options, thus extending a fresh object...\n\t\t$.cookie(key, '', $.extend({}, options, { expires: -1 }));\n\t\treturn !$.cookie(key);\n\t};\n\n}));\n","/*!\n * jQuery.scrollTo\n * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler\n * Licensed under MIT\n * https://github.com/flesler/jquery.scrollTo\n * @projectDescription Lightweight, cross-browser and highly customizable animated scrolling with jQuery\n * @author Ariel Flesler\n * @version 2.1.3\n */\n;(function(factory) {\n\t'use strict';\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\t// CommonJS\n\t\tmodule.exports = factory(require('jquery'));\n\t} else {\n\t\t// Global\n\t\tfactory(jQuery);\n\t}\n})(function($) {\n\t'use strict';\n\n\tvar $scrollTo = $.scrollTo = function(target, duration, settings) {\n\t\treturn $(window).scrollTo(target, duration, settings);\n\t};\n\n\t$scrollTo.defaults = {\n\t\taxis:'xy',\n\t\tduration: 0,\n\t\tlimit:true\n\t};\n\n\tfunction isWin(elem) {\n\t\treturn !elem.nodeName ||\n\t\t\t$.inArray(elem.nodeName.toLowerCase(), ['iframe','#document','html','body']) !== -1;\n\t}\n\n\tfunction isFunction(obj) {\n\t\t// Brought from jQuery since it's deprecated\n\t\treturn typeof obj === 'function'\n\t}\n\n\t$.fn.scrollTo = function(target, duration, settings) {\n\t\tif (typeof duration === 'object') {\n\t\t\tsettings = duration;\n\t\t\tduration = 0;\n\t\t}\n\t\tif (typeof settings === 'function') {\n\t\t\tsettings = { onAfter:settings };\n\t\t}\n\t\tif (target === 'max') {\n\t\t\ttarget = 9e9;\n\t\t}\n\n\t\tsettings = $.extend({}, $scrollTo.defaults, settings);\n\t\t// Speed is still recognized for backwards compatibility\n\t\tduration = duration || settings.duration;\n\t\t// Make sure the settings are given right\n\t\tvar queue = settings.queue && settings.axis.length > 1;\n\t\tif (queue) {\n\t\t\t// Let's keep the overall duration\n\t\t\tduration /= 2;\n\t\t}\n\t\tsettings.offset = both(settings.offset);\n\t\tsettings.over = both(settings.over);\n\n\t\treturn this.each(function() {\n\t\t\t// Null target yields nothing, just like jQuery does\n\t\t\tif (target === null) return;\n\n\t\t\tvar win = isWin(this),\n\t\t\t\telem = win ? this.contentWindow || window : this,\n\t\t\t\t$elem = $(elem),\n\t\t\t\ttarg = target,\n\t\t\t\tattr = {},\n\t\t\t\ttoff;\n\n\t\t\tswitch (typeof targ) {\n\t\t\t\t// A number will pass the regex\n\t\t\t\tcase 'number':\n\t\t\t\tcase 'string':\n\t\t\t\t\tif (/^([+-]=?)?\\d+(\\.\\d+)?(px|%)?$/.test(targ)) {\n\t\t\t\t\t\ttarg = both(targ);\n\t\t\t\t\t\t// We are done\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t// Relative/Absolute selector\n\t\t\t\t\ttarg = win ? $(targ) : $(targ, elem);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'object':\n\t\t\t\t\tif (targ.length === 0) return;\n\t\t\t\t\t// DOMElement / jQuery\n\t\t\t\t\tif (targ.is || targ.style) {\n\t\t\t\t\t\t// Get the real position of the target\n\t\t\t\t\t\ttoff = (targ = $(targ)).offset();\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar offset = isFunction(settings.offset) && settings.offset(elem, targ) || settings.offset;\n\n\t\t\t$.each(settings.axis.split(''), function(i, axis) {\n\t\t\t\tvar Pos\t= axis === 'x' ? 'Left' : 'Top',\n\t\t\t\t\tpos = Pos.toLowerCase(),\n\t\t\t\t\tkey = 'scroll' + Pos,\n\t\t\t\t\tprev = $elem[key](),\n\t\t\t\t\tmax = $scrollTo.max(elem, axis);\n\n\t\t\t\tif (toff) {// jQuery / DOMElement\n\t\t\t\t\tattr[key] = toff[pos] + (win ? 0 : prev - $elem.offset()[pos]);\n\n\t\t\t\t\t// If it's a dom element, reduce the margin\n\t\t\t\t\tif (settings.margin) {\n\t\t\t\t\t\tattr[key] -= parseInt(targ.css('margin'+Pos), 10) || 0;\n\t\t\t\t\t\tattr[key] -= parseInt(targ.css('border'+Pos+'Width'), 10) || 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tattr[key] += offset[pos] || 0;\n\n\t\t\t\t\tif (settings.over[pos]) {\n\t\t\t\t\t\t// Scroll to a fraction of its width/height\n\t\t\t\t\t\tattr[key] += targ[axis === 'x'?'width':'height']() * settings.over[pos];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar val = targ[pos];\n\t\t\t\t\t// Handle percentage values\n\t\t\t\t\tattr[key] = val.slice && val.slice(-1) === '%' ?\n\t\t\t\t\t\tparseFloat(val) / 100 * max\n\t\t\t\t\t\t: val;\n\t\t\t\t}\n\n\t\t\t\t// Number or 'number'\n\t\t\t\tif (settings.limit && /^\\d+$/.test(attr[key])) {\n\t\t\t\t\t// Check the limits\n\t\t\t\t\tattr[key] = attr[key] <= 0 ? 0 : Math.min(attr[key], max);\n\t\t\t\t}\n\n\t\t\t\t// Don't waste time animating, if there's no need.\n\t\t\t\tif (!i && settings.axis.length > 1) {\n\t\t\t\t\tif (prev === attr[key]) {\n\t\t\t\t\t\t// No animation needed\n\t\t\t\t\t\tattr = {};\n\t\t\t\t\t} else if (queue) {\n\t\t\t\t\t\t// Intermediate animation\n\t\t\t\t\t\tanimate(settings.onAfterFirst);\n\t\t\t\t\t\t// Don't animate this axis again in the next iteration.\n\t\t\t\t\t\tattr = {};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tanimate(settings.onAfter);\n\n\t\t\tfunction animate(callback) {\n\t\t\t\tvar opts = $.extend({}, settings, {\n\t\t\t\t\t// The queue setting conflicts with animate()\n\t\t\t\t\t// Force it to always be true\n\t\t\t\t\tqueue: true,\n\t\t\t\t\tduration: duration,\n\t\t\t\t\tcomplete: callback && function() {\n\t\t\t\t\t\tcallback.call(elem, targ, settings);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t$elem.animate(attr, opts);\n\t\t\t}\n\t\t});\n\t};\n\n\t// Max scrolling position, works on quirks mode\n\t// It only fails (not too badly) on IE, quirks mode.\n\t$scrollTo.max = function(elem, axis) {\n\t\tvar Dim = axis === 'x' ? 'Width' : 'Height',\n\t\t\tscroll = 'scroll'+Dim;\n\n\t\tif (!isWin(elem))\n\t\t\treturn elem[scroll] - $(elem)[Dim.toLowerCase()]();\n\n\t\tvar size = 'client' + Dim,\n\t\t\tdoc = elem.ownerDocument || elem.document,\n\t\t\thtml = doc.documentElement,\n\t\t\tbody = doc.body;\n\n\t\treturn Math.max(html[scroll], body[scroll]) - Math.min(html[size], body[size]);\n\t};\n\n\tfunction both(val) {\n\t\treturn isFunction(val) || $.isPlainObject(val) ? val : { top:val, left:val };\n\t}\n\n\t// Add special hooks so that window scroll properties can be animated\n\t$.Tween.propHooks.scrollLeft =\n\t$.Tween.propHooks.scrollTop = {\n\t\tget: function(t) {\n\t\t\treturn $(t.elem)[t.prop]();\n\t\t},\n\t\tset: function(t) {\n\t\t\tvar curr = this.get(t);\n\t\t\t// If interrupt is true and user scrolled, stop animating\n\t\t\tif (t.options.interrupt && t._last && t._last !== curr) {\n\t\t\t\treturn $(t.elem).stop();\n\t\t\t}\n\t\t\tvar next = Math.round(t.now);\n\t\t\t// Don't waste CPU\n\t\t\t// Browsers don't render floating point scroll\n\t\t\tif (curr !== next) {\n\t\t\t\t$(t.elem)[t.prop](next);\n\t\t\t\tt._last = this.get(t);\n\t\t\t}\n\t\t}\n\t};\n\n\t// AMD requirement\n\treturn $scrollTo;\n});\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t//     character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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 */\nfunction 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 * 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/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * 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 * 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 */\nfunction 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 `_.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 */\nfunction baseRest(func, start) {\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] = array;\n    return apply(func, this, otherArgs);\n  };\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 * 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 */\nfunction 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 * 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 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 */\nfunction 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 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 * 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 */\nfunction 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 * 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 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 * 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 */\nvar assignIn = createAssigner(function(object, source) {\n  copyObject(source, keysIn(source), 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 */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = assignIn;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar BIND_FLAG = 1,\n    BIND_KEY_FLAG = 2,\n    CURRY_BOUND_FLAG = 4,\n    CURRY_FLAG = 8,\n    CURRY_RIGHT_FLAG = 16,\n    PARTIAL_FLAG = 32,\n    PARTIAL_RIGHT_FLAG = 64,\n    ARY_FLAG = 128,\n    REARG_FLAG = 256,\n    FLIP_FLAG = 512;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n  ['ary', ARY_FLAG],\n  ['bind', BIND_FLAG],\n  ['bindKey', BIND_KEY_FLAG],\n  ['curry', CURRY_FLAG],\n  ['curryRight', CURRY_RIGHT_FLAG],\n  ['flip', FLIP_FLAG],\n  ['partial', PARTIAL_FLAG],\n  ['partialRight', PARTIAL_RIGHT_FLAG],\n  ['rearg', REARG_FLAG]\n];\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\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 leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n    reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n    reSplitDetails = /,? & /;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * 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 */\nfunction 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 `_.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 * 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 */\nfunction arrayIncludes(array, value) {\n  var length = array ? array.length : 0;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\n/**\n * 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 */\nfunction 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 * 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 * 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 */\nfunction 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/** Used for built-in method references. */\nvar 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 objectCreate = Object.create;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/* Used to set `toString` methods. */\nvar defineProperty = (function() {\n  var func = getNative(Object, 'defineProperty'),\n      name = getNative.name;\n\n  return (name && name.length > 2) ? func : undefined;\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 `_.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 `_.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 */\nfunction baseRest(func, start) {\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] = array;\n    return apply(func, this, otherArgs);\n  };\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 */\nfunction 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 */\nfunction 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 */\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 * 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 */\nfunction createBind(func, bitmask, thisArg) {\n  var isBind = bitmask & 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 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 */\nfunction 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 */\nfunction 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 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 */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n  var isAry = bitmask & ARY_FLAG,\n      isBind = bitmask & BIND_FLAG,\n      isBindKey = bitmask & BIND_KEY_FLAG,\n      isCurried = bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG),\n      isFlip = bitmask & 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 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 */\nfunction createPartial(func, bitmask, thisArg, partials) {\n  var isBind = bitmask & 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 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 */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n  var isCurry = bitmask & 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 ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);\n  bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);\n\n  if (!(bitmask & CURRY_BOUND_FLAG)) {\n    bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);\n  }\n\n  var result = wrapFunc(func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity);\n  result.placeholder = placeholder;\n  return setWrapToString(result, func, bitmask);\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 *  The bitmask may be composed of the following 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 */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n  var isBindKey = bitmask & 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 &= ~(PARTIAL_FLAG | 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 & PARTIAL_RIGHT_FLAG) {\n    var partialsRight = partials,\n        holdersRight = holders;\n\n    partials = holders = undefined;\n  }\n\n  var newData = [\n    func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n    argPos, ary, arity\n  ];\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] == null\n    ? (isBindKey ? 0 : func.length)\n    : nativeMax(newData[9] - length, 0);\n\n  if (!arity && bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG)) {\n    bitmask &= ~(CURRY_FLAG | CURRY_RIGHT_FLAG);\n  }\n  if (!bitmask || bitmask == BIND_FLAG) {\n    var result = createBind(func, bitmask, thisArg);\n  } else if (bitmask == CURRY_FLAG || bitmask == CURRY_RIGHT_FLAG) {\n    result = createCurry(func, bitmask, arity);\n  } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !holders.length) {\n    result = createPartial(func, bitmask, thisArg, partials);\n  } else {\n    result = createHybrid.apply(undefined, newData);\n  }\n  return setWrapToString(result, func, bitmask);\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 */\nfunction getHolder(func) {\n  var object = func;\n  return object.placeholder;\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 * 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 */\nfunction getWrapDetails(source) {\n  var match = source.match(reWrapDetails);\n  return match ? match[1].split(reSplitDetails) : [];\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 */\nfunction insertWrapDetails(source, details) {\n  var length = details.length,\n      lastIndex = length - 1;\n\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 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 `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 * 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 */\nfunction 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 * 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 */\nvar setWrapToString = !defineProperty ? identity : function(wrapper, reference, bitmask) {\n  var source = (reference + '');\n  return defineProperty(wrapper, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)))\n  });\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 * 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 */\nfunction 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 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 */\nvar bind = baseRest(function(func, thisArg, partials) {\n  var bitmask = BIND_FLAG;\n  if (partials.length) {\n    var holders = replaceHolders(partials, getHolder(bind));\n    bitmask |= PARTIAL_FLAG;\n  }\n  return createWrap(func, bitmask, thisArg, partials, holders);\n});\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\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 */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\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 */\nfunction identity(value) {\n  return value;\n}\n\n// Assign default placeholders.\nbind.placeholder = {};\n\nmodule.exports = bind;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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 */\nfunction 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 * 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/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use.\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 */\nfunction assignInDefaults(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 * 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 * 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 */\nfunction 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 `_.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 */\nfunction baseRest(func, start) {\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] = array;\n    return apply(func, this, otherArgs);\n  };\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 * 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 */\nfunction 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 * 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 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 */\nfunction 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 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 * 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 */\nfunction 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 * 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 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 * 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 */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n  copyObject(source, keysIn(source), object, customizer);\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 */\nvar defaults = baseRest(function(args) {\n  args.push(undefined, assignInDefaults);\n  return apply(assignInWith, undefined, args);\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 */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = defaults;\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 as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    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/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\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 */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\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 of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[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/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0,\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 `_.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 */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\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 */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.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 */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\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 Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\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 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    symbolToString = symbolProto ? symbolProto.toString : 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 *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\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 */\nfunction 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 */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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 * 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 `_.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 */\nvar baseEach = createBaseEach(baseForOwn);\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 */\nfunction 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 `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 */\nvar baseFor = createBaseFor();\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 */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\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 */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\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 `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 `_.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 */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\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 {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_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, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\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 */\nfunction 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, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, 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 */\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 `_.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 */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(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 */\nfunction 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 */\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 * 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 */\nfunction 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 */\nfunction 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, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\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 */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\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 */\nfunction 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 (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 * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\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 */\nfunction 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 */\nfunction 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 * 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_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 (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, 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 & PARTIAL_COMPARE_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 |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(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  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\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, customizer, bitmask, 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 * 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 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 */\nfunction 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 */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\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 */\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 * 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 */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\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) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\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 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 */\nfunction 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 */\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 * 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 */\nfunction 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 */\nfunction 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 * 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 */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.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 */\nfunction 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 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 * 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]\n *  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 */\nfunction filter(collection, predicate) {\n  var func = isArray(collection) ? arrayFilter : baseFilter;\n  return func(collection, baseIteratee(predicate, 3));\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * 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 */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\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 process.\n * @returns {string} Returns the 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 */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\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 */\nfunction 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 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 */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\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 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 */\nfunction identity(value) {\n  return value;\n}\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 */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = filter;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * 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/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\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 */\nfunction 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 * 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 */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\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 */\nfunction flatten(array) {\n  var length = array ? array.length : 0;\n  return length ? baseFlatten(array, 1) : [];\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\nmodule.exports = flatten;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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 * 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 * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.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 */\nvar baseEach = createBaseEach(baseForOwn);\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 */\nvar baseFor = createBaseFor();\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 */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\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 `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 */\nfunction 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 */\nfunction 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 * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * 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 * _([1, 2]).forEach(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 */\nfunction forEach(collection, iteratee) {\n  var func = isArray(collection) ? arrayEach : baseEach;\n  return func(collection, typeof iteratee == 'function' ? iteratee : identity);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * 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 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 */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = forEach;\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 as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    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/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\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 */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\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 of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[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/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\n/**\n * 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 */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\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 */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.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 */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\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 Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\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 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    symbolToString = symbolProto ? symbolProto.toString : 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 *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\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 */\nfunction 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 */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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 * 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 `_.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 */\nvar baseEach = createBaseEach(baseForOwn);\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 */\nvar baseFor = createBaseFor();\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 */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\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 */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\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 `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 `_.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 */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\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 {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_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, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\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 */\nfunction 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, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, 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 */\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 `_.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 */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(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 */\nfunction 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 */\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 * 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 */\nfunction 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 */\nfunction 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 */\nfunction 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, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\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 */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\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 */\nfunction 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 (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 * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\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 */\nfunction 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 */\nfunction 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 * 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_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 (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, 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 & PARTIAL_COMPARE_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 |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(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  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\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, customizer, bitmask, 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 * 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 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 */\nfunction 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 */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\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 */\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 * 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 */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\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) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\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 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 */\nfunction 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 */\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 * 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 */\nfunction 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 */\nfunction 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 * 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 */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.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 */\nfunction 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 process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Creates 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 */\nfunction map(collection, iteratee) {\n  var func = isArray(collection) ? arrayMap : baseMap;\n  return func(collection, baseIteratee(iteratee, 3));\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * 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 */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\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 process.\n * @returns {string} Returns the 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 */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\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 */\nfunction 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 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 */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\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 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 */\nfunction identity(value) {\n  return value;\n}\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 */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = map;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\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\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 to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\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    asyncTag = '[object AsyncFunction]',\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    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    undefinedTag = '[object Undefined]',\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 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 of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[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/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar 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. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 */\nfunction 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 * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.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 */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\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 * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar 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 resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to 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/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\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    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeMax = Math.max,\n    nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * 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 */\nvar 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 * 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 == 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 */\nfunction 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 */\nfunction 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 */\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  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`.\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 == 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 */\nfunction 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 */\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  --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 */\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    ++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`.\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 == 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 */\nfunction 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 */\nfunction 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 */\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  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`.\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  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 */\nfunction 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 */\nfunction 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 */\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 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`.\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  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 * 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 */\nfunction 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 */\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    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 */\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 `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 */\nfunction 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 `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 */\nvar baseFor = createBaseFor();\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 */\nfunction 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 `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\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) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\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 */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\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 */\nfunction 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 `_.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 */\nfunction 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 */\nfunction 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 `_.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 */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), 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 */\nvar 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 * 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 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 */\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 `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  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 * 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 */\nfunction 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 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 */\nfunction 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 * 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 * 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 */\nfunction 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 * 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 * 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  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 */\nfunction 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 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 * 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 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 */\nfunction 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 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 */\nvar setToString = shortOut(baseSetToString);\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 */\nfunction 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 * 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 */\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 * 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 */\nvar 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 */\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  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 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 != 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 */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || 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 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 */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\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 */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\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 */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\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 */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\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 */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\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 */\nfunction identity(value) {\n  return value;\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 = merge;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * 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 */\nfunction 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 `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\n/**\n * 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/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\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 */\nfunction 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 `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n  object = Object(object);\n  return basePickBy(object, props, function(value, key) {\n    return key in object;\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[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n  var index = -1,\n      length = props.length,\n      result = {};\n\n  while (++index < length) {\n    var key = props[index],\n        value = object[key];\n\n    if (predicate(value, key)) {\n      result[key] = value;\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 */\nfunction baseRest(func, start) {\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] = array;\n    return apply(func, this, otherArgs);\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 */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\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 */\nfunction 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 * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * 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[])} [props] The property identifiers 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 */\nvar pick = baseRest(function(object, props) {\n  return object == null ? {} : basePick(object, arrayMap(baseFlatten(props, 1), toKey));\n});\n\nmodule.exports = pick;\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 as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    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/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\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 */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\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 of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[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/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 * 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 */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\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 */\nfunction baseProperty(key) {\n  return function(object) {\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 */\nfunction 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 `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.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 */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\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 Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\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 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    symbolToString = symbolProto ? symbolProto.toString : 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 *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\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 */\nfunction 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 */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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 * 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 `_.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 */\nvar baseEach = createBaseEach(baseForOwn);\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 */\nvar baseFor = createBaseFor();\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 */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\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 */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\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 `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 `_.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 */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\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 {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_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, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\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 */\nfunction 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, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, 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 */\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 `_.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 */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(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 */\nfunction 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 */\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 * 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 */\nfunction 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 */\nfunction 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, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\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 */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\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 */\nfunction 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 (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 * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\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 */\nfunction 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 */\nfunction 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 * 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_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 (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, 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 & PARTIAL_COMPARE_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 |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(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  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\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, customizer, bitmask, 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 * 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 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 */\nfunction 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 */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\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 */\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 * 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 */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\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) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\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 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 */\nfunction 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 */\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 * 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 */\nfunction 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 */\nfunction 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 * 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 */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.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 */\nfunction 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 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 * 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 */\nfunction reduce(collection, iteratee, accumulator) {\n  var func = isArray(collection) ? arrayReduce : baseReduce,\n      initAccum = arguments.length < 3;\n\n  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * 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 */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\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 process.\n * @returns {string} Returns the 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 */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\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 */\nfunction 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 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 */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\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 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 */\nfunction identity(value) {\n  return value;\n}\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 */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = reduce;\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 as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    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/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\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 */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\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 of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[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/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0,\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 `_.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 */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\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 */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.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 */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\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 Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\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 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    symbolToString = symbolProto ? symbolProto.toString : 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 *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\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 */\nfunction 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 */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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 * 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 `_.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 */\nvar baseEach = createBaseEach(baseForOwn);\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 */\nfunction 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 `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 */\nvar baseFor = createBaseFor();\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 */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\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 */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\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 `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 `_.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 */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\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 {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_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, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\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 */\nfunction 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, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, 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 */\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 `_.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 */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(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 */\nfunction 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 */\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 * 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 */\nfunction 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 */\nfunction 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, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\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 */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\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 */\nfunction 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 (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 * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\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 */\nfunction 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 */\nfunction 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 * 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_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 (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, 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 & PARTIAL_COMPARE_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 |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(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  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\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, customizer, bitmask, 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 * 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 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 */\nfunction 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 */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\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 */\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 * 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 */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\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) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\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 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 */\nfunction 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 */\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 * 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 */\nfunction 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 */\nfunction 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 * 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 */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.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 */\nfunction 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 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 * 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 */\nfunction reject(collection, predicate) {\n  var func = isArray(collection) ? arrayFilter : baseFilter;\n  return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * 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 */\nfunction 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 * 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 classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * 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 */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\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 process.\n * @returns {string} Returns the 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 */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\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 */\nfunction 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 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 */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\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 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 */\nfunction identity(value) {\n  return value;\n}\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 */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = reject;\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 as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    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/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\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 */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\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 of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[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/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\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 */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.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 */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\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 Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\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 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    symbolToString = symbolProto ? symbolProto.toString : 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 *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\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 */\nfunction 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 */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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 * 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 `_.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 */\nvar baseEach = createBaseEach(baseForOwn);\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 */\nvar baseFor = createBaseFor();\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 */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\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 */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\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 `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 `_.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 */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\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 {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_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, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\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 */\nfunction 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, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, 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 */\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 `_.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 */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(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 */\nfunction 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 */\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 * 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 */\nfunction 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 */\nfunction 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, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\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 */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\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 */\nfunction 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 `_.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 */\nfunction 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 (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 * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\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 */\nfunction 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 */\nfunction 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 * 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_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 (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, 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 & PARTIAL_COMPARE_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 |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, 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 {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(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  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\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, customizer, bitmask, 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 * 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 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 */\nfunction 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 */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\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 */\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 * 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 */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\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) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\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 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 */\nfunction 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 */\nfunction 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 */\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 * 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 */\nfunction 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 */\nfunction 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 * 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 */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.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 */\nfunction 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 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 * 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 */\nfunction 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, baseIteratee(predicate, 3));\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * 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 */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\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 process.\n * @returns {string} Returns the 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 */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\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 */\nfunction 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 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 */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\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 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 */\nfunction identity(value) {\n  return value;\n}\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 */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = some;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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 */\nfunction 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\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\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 */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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 */\nfunction 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\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\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 */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\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\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\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 */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        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\nmodule.exports = debounce;\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 != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\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 != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n    isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\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 */\nfunction 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\nmodule.exports = throttle;\n","var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = 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\nmodule.exports = toNumber;\n","'use strict'\n\nvar visit = require('unist-util-visit')\n\nmodule.exports = getDefinitionFactory\n\nvar own = {}.hasOwnProperty\n\n// Get a definition in `node` by `identifier`.\nfunction getDefinitionFactory(node, options) {\n  return getterFactory(gather(node, options))\n}\n\n// Gather all definitions in `node`\nfunction gather(node) {\n  var cache = {}\n\n  if (!node || !node.type) {\n    throw new Error('mdast-util-definitions expected node')\n  }\n\n  visit(node, 'definition', ondefinition)\n\n  return cache\n\n  function ondefinition(definition) {\n    var id = normalise(definition.identifier)\n    if (!own.call(cache, id)) {\n      cache[id] = definition\n    }\n  }\n}\n\n// Factory to get a node from the given definition-cache.\nfunction getterFactory(cache) {\n  return getter\n\n  // Get a node from the bound definition-cache.\n  function getter(identifier) {\n    var id = identifier && normalise(identifier)\n    return id && own.call(cache, id) ? cache[id] : null\n  }\n}\n\nfunction normalise(identifier) {\n  return identifier.toUpperCase()\n}\n","'use strict'\n\nmodule.exports = fromMarkdown\n\n// These three are compiled away in the `dist/`\n\nvar toString = require('mdast-util-to-string')\nvar assign = require('micromark/dist/constant/assign')\nvar own = require('micromark/dist/constant/has-own-property')\nvar normalizeIdentifier = require('micromark/dist/util/normalize-identifier')\nvar safeFromInt = require('micromark/dist/util/safe-from-int')\nvar parser = require('micromark/dist/parse')\nvar preprocessor = require('micromark/dist/preprocess')\nvar postprocess = require('micromark/dist/postprocess')\nvar decode = require('parse-entities/decode-entity')\nvar stringifyPosition = require('unist-util-stringify-position')\n\nfunction fromMarkdown(value, encoding, options) {\n  if (typeof encoding !== 'string') {\n    options = encoding\n    encoding = undefined\n  }\n\n  return compiler(options)(\n    postprocess(\n      parser(options).document().write(preprocessor()(value, encoding, true))\n    )\n  )\n}\n\n// Note this compiler only understand complete buffering, not streaming.\nfunction compiler(options) {\n  var settings = options || {}\n  var config = configure(\n    {\n      transforms: [],\n      canContainEols: [\n        'emphasis',\n        'fragment',\n        'heading',\n        'paragraph',\n        'strong'\n      ],\n\n      enter: {\n        autolink: opener(link),\n        autolinkProtocol: onenterdata,\n        autolinkEmail: onenterdata,\n        atxHeading: opener(heading),\n        blockQuote: opener(blockQuote),\n        characterEscape: onenterdata,\n        characterReference: onenterdata,\n        codeFenced: opener(codeFlow),\n        codeFencedFenceInfo: buffer,\n        codeFencedFenceMeta: buffer,\n        codeIndented: opener(codeFlow, buffer),\n        codeText: opener(codeText, buffer),\n        codeTextData: onenterdata,\n        data: onenterdata,\n        codeFlowValue: onenterdata,\n        definition: opener(definition),\n        definitionDestinationString: buffer,\n        definitionLabelString: buffer,\n        definitionTitleString: buffer,\n        emphasis: opener(emphasis),\n        hardBreakEscape: opener(hardBreak),\n        hardBreakTrailing: opener(hardBreak),\n        htmlFlow: opener(html, buffer),\n        htmlFlowData: onenterdata,\n        htmlText: opener(html, buffer),\n        htmlTextData: onenterdata,\n        image: opener(image),\n        label: buffer,\n        link: opener(link),\n        listItem: opener(listItem),\n        listItemValue: onenterlistitemvalue,\n        listOrdered: opener(list, onenterlistordered),\n        listUnordered: opener(list),\n        paragraph: opener(paragraph),\n        reference: onenterreference,\n        referenceString: buffer,\n        resourceDestinationString: buffer,\n        resourceTitleString: buffer,\n        setextHeading: opener(heading),\n        strong: opener(strong),\n        thematicBreak: opener(thematicBreak)\n      },\n\n      exit: {\n        atxHeading: closer(),\n        atxHeadingSequence: onexitatxheadingsequence,\n        autolink: closer(),\n        autolinkEmail: onexitautolinkemail,\n        autolinkProtocol: onexitautolinkprotocol,\n        blockQuote: closer(),\n        characterEscapeValue: onexitdata,\n        characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n        characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n        characterReferenceValue: onexitcharacterreferencevalue,\n        codeFenced: closer(onexitcodefenced),\n        codeFencedFence: onexitcodefencedfence,\n        codeFencedFenceInfo: onexitcodefencedfenceinfo,\n        codeFencedFenceMeta: onexitcodefencedfencemeta,\n        codeFlowValue: onexitdata,\n        codeIndented: closer(onexitcodeindented),\n        codeText: closer(onexitcodetext),\n        codeTextData: onexitdata,\n        data: onexitdata,\n        definition: closer(),\n        definitionDestinationString: onexitdefinitiondestinationstring,\n        definitionLabelString: onexitdefinitionlabelstring,\n        definitionTitleString: onexitdefinitiontitlestring,\n        emphasis: closer(),\n        hardBreakEscape: closer(onexithardbreak),\n        hardBreakTrailing: closer(onexithardbreak),\n        htmlFlow: closer(onexithtmlflow),\n        htmlFlowData: onexitdata,\n        htmlText: closer(onexithtmltext),\n        htmlTextData: onexitdata,\n        image: closer(onexitimage),\n        label: onexitlabel,\n        labelText: onexitlabeltext,\n        lineEnding: onexitlineending,\n        link: closer(onexitlink),\n        listItem: closer(),\n        listOrdered: closer(),\n        listUnordered: closer(),\n        paragraph: closer(),\n        referenceString: onexitreferencestring,\n        resourceDestinationString: onexitresourcedestinationstring,\n        resourceTitleString: onexitresourcetitlestring,\n        resource: onexitresource,\n        setextHeading: closer(onexitsetextheading),\n        setextHeadingLineSequence: onexitsetextheadinglinesequence,\n        setextHeadingText: onexitsetextheadingtext,\n        strong: closer(),\n        thematicBreak: closer()\n      }\n    },\n\n    settings.mdastExtensions || []\n  )\n\n  var data = {}\n\n  return compile\n\n  function compile(events) {\n    var tree = {type: 'root', children: []}\n    var stack = [tree]\n    var tokenStack = []\n    var listStack = []\n    var index = -1\n    var handler\n    var listStart\n\n    var context = {\n      stack: stack,\n      tokenStack: tokenStack,\n      config: config,\n      enter: enter,\n      exit: exit,\n      buffer: buffer,\n      resume: resume,\n      setData: setData,\n      getData: getData\n    }\n\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (\n        events[index][1].type === 'listOrdered' ||\n        events[index][1].type === 'listUnordered'\n      ) {\n        if (events[index][0] === 'enter') {\n          listStack.push(index)\n        } else {\n          listStart = listStack.pop(index)\n          index = prepareList(events, listStart, index)\n        }\n      }\n    }\n\n    index = -1\n\n    while (++index < events.length) {\n      handler = config[events[index][0]]\n\n      if (own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(\n          assign({sliceSerialize: events[index][2].sliceSerialize}, context),\n          events[index][1]\n        )\n      }\n    }\n\n    if (tokenStack.length) {\n      throw new Error(\n        'Cannot close document, a token (`' +\n          tokenStack[tokenStack.length - 1].type +\n          '`, ' +\n          stringifyPosition({\n            start: tokenStack[tokenStack.length - 1].start,\n            end: tokenStack[tokenStack.length - 1].end\n          }) +\n          ') is still open'\n      )\n    }\n\n    // Figure out `root` position.\n    tree.position = {\n      start: point(\n        events.length ? events[0][1].start : {line: 1, column: 1, offset: 0}\n      ),\n\n      end: point(\n        events.length\n          ? events[events.length - 2][1].end\n          : {line: 1, column: 1, offset: 0}\n      )\n    }\n\n    index = -1\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree\n    }\n\n    return tree\n  }\n\n  function prepareList(events, start, length) {\n    var index = start - 1\n    var containerBalance = -1\n    var listSpread = false\n    var listItem\n    var tailIndex\n    var lineIndex\n    var tailEvent\n    var event\n    var firstBlankLineIndex\n    var atMarker\n\n    while (++index <= length) {\n      event = events[index]\n\n      if (\n        event[1].type === 'listUnordered' ||\n        event[1].type === 'listOrdered' ||\n        event[1].type === 'blockQuote'\n      ) {\n        if (event[0] === 'enter') {\n          containerBalance++\n        } else {\n          containerBalance--\n        }\n\n        atMarker = undefined\n      } else if (event[1].type === 'lineEndingBlank') {\n        if (event[0] === 'enter') {\n          if (\n            listItem &&\n            !atMarker &&\n            !containerBalance &&\n            !firstBlankLineIndex\n          ) {\n            firstBlankLineIndex = index\n          }\n\n          atMarker = undefined\n        }\n      } else if (\n        event[1].type === 'linePrefix' ||\n        event[1].type === 'listItemValue' ||\n        event[1].type === 'listItemMarker' ||\n        event[1].type === 'listItemPrefix' ||\n        event[1].type === 'listItemPrefixWhitespace'\n      ) {\n        // Empty.\n      } else {\n        atMarker = undefined\n      }\n\n      if (\n        (!containerBalance &&\n          event[0] === 'enter' &&\n          event[1].type === 'listItemPrefix') ||\n        (containerBalance === -1 &&\n          event[0] === 'exit' &&\n          (event[1].type === 'listUnordered' ||\n            event[1].type === 'listOrdered'))\n      ) {\n        if (listItem) {\n          tailIndex = index\n          lineIndex = undefined\n\n          while (tailIndex--) {\n            tailEvent = events[tailIndex]\n\n            if (\n              tailEvent[1].type === 'lineEnding' ||\n              tailEvent[1].type === 'lineEndingBlank'\n            ) {\n              if (tailEvent[0] === 'exit') continue\n\n              if (lineIndex) {\n                events[lineIndex][1].type = 'lineEndingBlank'\n                listSpread = true\n              }\n\n              tailEvent[1].type = 'lineEnding'\n              lineIndex = tailIndex\n            } else if (\n              tailEvent[1].type === 'linePrefix' ||\n              tailEvent[1].type === 'blockQuotePrefix' ||\n              tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n              tailEvent[1].type === 'blockQuoteMarker' ||\n              tailEvent[1].type === 'listItemIndent'\n            ) {\n              // Empty\n            } else {\n              break\n            }\n          }\n\n          if (\n            firstBlankLineIndex &&\n            (!lineIndex || firstBlankLineIndex < lineIndex)\n          ) {\n            listItem._spread = true\n          }\n\n          // Fix position.\n          listItem.end = point(\n            lineIndex ? events[lineIndex][1].start : event[1].end\n          )\n\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n          index++\n          length++\n        }\n\n        // Create a new list item.\n        if (event[1].type === 'listItemPrefix') {\n          listItem = {\n            type: 'listItem',\n            _spread: false,\n            start: point(event[1].start)\n          }\n\n          events.splice(index, 0, ['enter', listItem, event[2]])\n          index++\n          length++\n          firstBlankLineIndex = undefined\n          atMarker = true\n        }\n      }\n    }\n\n    events[start][1]._spread = listSpread\n    return length\n  }\n\n  function setData(key, value) {\n    data[key] = value\n  }\n\n  function getData(key) {\n    return data[key]\n  }\n\n  function point(d) {\n    return {line: d.line, column: d.column, offset: d.offset}\n  }\n\n  function opener(create, and) {\n    return open\n\n    function open(token) {\n      enter.call(this, create(token), token)\n      if (and) and.call(this, token)\n    }\n  }\n\n  function buffer() {\n    this.stack.push({type: 'fragment', children: []})\n  }\n\n  function enter(node, token) {\n    this.stack[this.stack.length - 1].children.push(node)\n    this.stack.push(node)\n    this.tokenStack.push(token)\n    node.position = {start: point(token.start)}\n    return node\n  }\n\n  function closer(and) {\n    return close\n\n    function close(token) {\n      if (and) and.call(this, token)\n      exit.call(this, token)\n    }\n  }\n\n  function exit(token) {\n    var node = this.stack.pop()\n    var open = this.tokenStack.pop()\n\n    if (!open) {\n      throw new Error(\n        'Cannot close `' +\n          token.type +\n          '` (' +\n          stringifyPosition({start: token.start, end: token.end}) +\n          '): it’s not open'\n      )\n    } else if (open.type !== token.type) {\n      throw new Error(\n        'Cannot close `' +\n          token.type +\n          '` (' +\n          stringifyPosition({start: token.start, end: token.end}) +\n          '): a different token (`' +\n          open.type +\n          '`, ' +\n          stringifyPosition({start: open.start, end: open.end}) +\n          ') is open'\n      )\n    }\n\n    node.position.end = point(token.end)\n    return node\n  }\n\n  function resume() {\n    return toString(this.stack.pop())\n  }\n\n  //\n  // Handlers.\n  //\n\n  function onenterlistordered() {\n    setData('expectingFirstListItemValue', true)\n  }\n\n  function onenterlistitemvalue(token) {\n    if (getData('expectingFirstListItemValue')) {\n      this.stack[this.stack.length - 2].start = parseInt(\n        this.sliceSerialize(token),\n        10\n      )\n\n      setData('expectingFirstListItemValue')\n    }\n  }\n\n  function onexitcodefencedfenceinfo() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].lang = data\n  }\n\n  function onexitcodefencedfencemeta() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].meta = data\n  }\n\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (getData('flowCodeInside')) return\n    this.buffer()\n    setData('flowCodeInside', true)\n  }\n\n  function onexitcodefenced() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].value = data.replace(\n      /^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g,\n      ''\n    )\n\n    setData('flowCodeInside')\n  }\n\n  function onexitcodeindented() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].value = data\n  }\n\n  function onexitdefinitionlabelstring(token) {\n    // Discard label, use the source content instead.\n    var label = this.resume()\n    this.stack[this.stack.length - 1].label = label\n    this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n\n  function onexitdefinitiontitlestring() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].title = data\n  }\n\n  function onexitdefinitiondestinationstring() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].url = data\n  }\n\n  function onexitatxheadingsequence(token) {\n    if (!this.stack[this.stack.length - 1].depth) {\n      this.stack[this.stack.length - 1].depth = this.sliceSerialize(\n        token\n      ).length\n    }\n  }\n\n  function onexitsetextheadingtext() {\n    setData('setextHeadingSlurpLineEnding', true)\n  }\n\n  function onexitsetextheadinglinesequence(token) {\n    this.stack[this.stack.length - 1].depth =\n      this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n  }\n\n  function onexitsetextheading() {\n    setData('setextHeadingSlurpLineEnding')\n  }\n\n  function onenterdata(token) {\n    var siblings = this.stack[this.stack.length - 1].children\n    var tail = siblings[siblings.length - 1]\n\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text()\n      tail.position = {start: point(token.start)}\n      this.stack[this.stack.length - 1].children.push(tail)\n    }\n\n    this.stack.push(tail)\n  }\n\n  function onexitdata(token) {\n    var tail = this.stack.pop()\n    tail.value += this.sliceSerialize(token)\n    tail.position.end = point(token.end)\n  }\n\n  function onexitlineending(token) {\n    var context = this.stack[this.stack.length - 1]\n\n    // If we’re at a hard break, include the line ending in there.\n    if (getData('atHardBreak')) {\n      context.children[context.children.length - 1].position.end = point(\n        token.end\n      )\n\n      setData('atHardBreak')\n      return\n    }\n\n    if (\n      !getData('setextHeadingSlurpLineEnding') &&\n      config.canContainEols.indexOf(context.type) > -1\n    ) {\n      onenterdata.call(this, token)\n      onexitdata.call(this, token)\n    }\n  }\n\n  function onexithardbreak() {\n    setData('atHardBreak', true)\n  }\n\n  function onexithtmlflow() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].value = data\n  }\n\n  function onexithtmltext() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].value = data\n  }\n\n  function onexitcodetext() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].value = data\n  }\n\n  function onexitlink() {\n    var context = this.stack[this.stack.length - 1]\n\n    // To do: clean.\n    if (getData('inReference')) {\n      context.type += 'Reference'\n      context.referenceType = getData('referenceType') || 'shortcut'\n      delete context.url\n      delete context.title\n    } else {\n      delete context.identifier\n      delete context.label\n      delete context.referenceType\n    }\n\n    setData('referenceType')\n  }\n\n  function onexitimage() {\n    var context = this.stack[this.stack.length - 1]\n\n    // To do: clean.\n    if (getData('inReference')) {\n      context.type += 'Reference'\n      context.referenceType = getData('referenceType') || 'shortcut'\n      delete context.url\n      delete context.title\n    } else {\n      delete context.identifier\n      delete context.label\n      delete context.referenceType\n    }\n\n    setData('referenceType')\n  }\n\n  function onexitlabeltext(token) {\n    this.stack[this.stack.length - 2].identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n\n  function onexitlabel() {\n    var fragment = this.stack[this.stack.length - 1]\n    var value = this.resume()\n\n    this.stack[this.stack.length - 1].label = value\n\n    // Assume a reference.\n    setData('inReference', true)\n\n    if (this.stack[this.stack.length - 1].type === 'link') {\n      this.stack[this.stack.length - 1].children = fragment.children\n    } else {\n      this.stack[this.stack.length - 1].alt = value\n    }\n  }\n\n  function onexitresourcedestinationstring() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].url = data\n  }\n\n  function onexitresourcetitlestring() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].title = data\n  }\n\n  function onexitresource() {\n    setData('inReference')\n  }\n\n  function onenterreference() {\n    setData('referenceType', 'collapsed')\n  }\n\n  function onexitreferencestring(token) {\n    var label = this.resume()\n    this.stack[this.stack.length - 1].label = label\n    this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n    setData('referenceType', 'full')\n  }\n\n  function onexitcharacterreferencemarker(token) {\n    setData('characterReferenceType', token.type)\n  }\n\n  function onexitcharacterreferencevalue(token) {\n    var data = this.sliceSerialize(token)\n    var type = getData('characterReferenceType')\n    var value\n    var tail\n\n    if (type) {\n      value = safeFromInt(\n        data,\n        type === 'characterReferenceMarkerNumeric' ? 10 : 16\n      )\n\n      setData('characterReferenceType')\n    } else {\n      value = decode(data)\n    }\n\n    tail = this.stack.pop()\n    tail.value += value\n    tail.position.end = point(token.end)\n  }\n\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token)\n    this.stack[this.stack.length - 1].url = this.sliceSerialize(token)\n  }\n\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token)\n    this.stack[this.stack.length - 1].url =\n      'mailto:' + this.sliceSerialize(token)\n  }\n\n  //\n  // Creaters.\n  //\n\n  function blockQuote() {\n    return {type: 'blockquote', children: []}\n  }\n\n  function codeFlow() {\n    return {type: 'code', lang: null, meta: null, value: ''}\n  }\n\n  function codeText() {\n    return {type: 'inlineCode', value: ''}\n  }\n\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    }\n  }\n\n  function emphasis() {\n    return {type: 'emphasis', children: []}\n  }\n\n  function heading() {\n    return {type: 'heading', depth: undefined, children: []}\n  }\n\n  function hardBreak() {\n    return {type: 'break'}\n  }\n\n  function html() {\n    return {type: 'html', value: ''}\n  }\n\n  function image() {\n    return {type: 'image', title: null, url: '', alt: null}\n  }\n\n  function link() {\n    return {type: 'link', title: null, url: '', children: []}\n  }\n\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      spread: token._spread,\n      children: []\n    }\n  }\n\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      spread: token._spread,\n      checked: null,\n      children: []\n    }\n  }\n\n  function paragraph() {\n    return {type: 'paragraph', children: []}\n  }\n\n  function strong() {\n    return {type: 'strong', children: []}\n  }\n\n  function text() {\n    return {type: 'text', value: ''}\n  }\n\n  function thematicBreak() {\n    return {type: 'thematicBreak'}\n  }\n}\n\nfunction configure(config, extensions) {\n  var index = -1\n\n  while (++index < extensions.length) {\n    extension(config, extensions[index])\n  }\n\n  return config\n}\n\nfunction extension(config, extension) {\n  var key\n  var left\n\n  for (key in extension) {\n    left = own.call(config, key) ? config[key] : (config[key] = {})\n\n    if (key === 'canContainEols' || key === 'transforms') {\n      config[key] = [].concat(left, extension[key])\n    } else {\n      Object.assign(left, extension[key])\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = require('./dist')\n","'use strict'\nmodule.exports = require('./lib')\n","'use strict'\n\nmodule.exports = all\n\nvar one = require('./one')\n\nfunction all(h, parent) {\n  var nodes = parent.children || []\n  var length = nodes.length\n  var values = []\n  var index = -1\n  var result\n  var head\n\n  while (++index < length) {\n    result = one(h, nodes[index], parent)\n\n    if (result) {\n      if (index && nodes[index - 1].type === 'break') {\n        if (result.value) {\n          result.value = result.value.replace(/^\\s+/, '')\n        }\n\n        head = result.children && result.children[0]\n\n        if (head && head.value) {\n          head.value = head.value.replace(/^\\s+/, '')\n        }\n      }\n\n      values = values.concat(result)\n    }\n  }\n\n  return values\n}\n","'use strict'\n\nmodule.exports = generateFootnotes\n\nvar thematicBreak = require('./handlers/thematic-break')\nvar list = require('./handlers/list')\nvar wrap = require('./wrap')\n\nfunction generateFootnotes(h) {\n  var footnoteById = h.footnoteById\n  var footnoteOrder = h.footnoteOrder\n  var length = footnoteOrder.length\n  var index = -1\n  var listItems = []\n  var def\n  var backReference\n  var content\n  var tail\n\n  while (++index < length) {\n    def = footnoteById[footnoteOrder[index].toUpperCase()]\n\n    if (!def) {\n      continue\n    }\n\n    content = def.children.concat()\n    tail = content[content.length - 1]\n    backReference = {\n      type: 'link',\n      url: '#fnref-' + def.identifier,\n      data: {hProperties: {className: ['footnote-backref']}},\n      children: [{type: 'text', value: '↩'}]\n    }\n\n    if (!tail || tail.type !== 'paragraph') {\n      tail = {type: 'paragraph', children: []}\n      content.push(tail)\n    }\n\n    tail.children.push(backReference)\n\n    listItems.push({\n      type: 'listItem',\n      data: {hProperties: {id: 'fn-' + def.identifier}},\n      children: content,\n      position: def.position\n    })\n  }\n\n  if (listItems.length === 0) {\n    return null\n  }\n\n  return h(\n    null,\n    'div',\n    {className: ['footnotes']},\n    wrap(\n      [\n        thematicBreak(h),\n        list(h, {type: 'list', ordered: true, children: listItems})\n      ],\n      true\n    )\n  )\n}\n","'use strict'\n\nmodule.exports = blockquote\n\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction blockquote(h, node) {\n  return h(node, 'blockquote', wrap(all(h, node), true))\n}\n","'use strict'\n\nmodule.exports = hardBreak\n\nvar u = require('unist-builder')\n\nfunction hardBreak(h, node) {\n  return [h(node, 'br'), u('text', '\\n')]\n}\n","'use strict'\n\nmodule.exports = code\n\nvar u = require('unist-builder')\n\nfunction code(h, node) {\n  var value = node.value ? node.value + '\\n' : ''\n  // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n  // on for years in remark now.\n  var lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/)\n  var props = {}\n  var code\n\n  if (lang) {\n    props.className = ['language-' + lang]\n  }\n\n  code = h(node, 'code', props, [u('text', value)])\n\n  if (node.meta) {\n    code.data = {meta: node.meta}\n  }\n\n  return h(node.position, 'pre', [code])\n}\n","'use strict'\n\nmodule.exports = strikethrough\n\nvar all = require('../all')\n\nfunction strikethrough(h, node) {\n  return h(node, 'del', all(h, node))\n}\n","'use strict'\n\nmodule.exports = emphasis\n\nvar all = require('../all')\n\nfunction emphasis(h, node) {\n  return h(node, 'em', all(h, node))\n}\n","'use strict'\n\nmodule.exports = footnoteReference\n\nvar u = require('unist-builder')\n\nfunction footnoteReference(h, node) {\n  var footnoteOrder = h.footnoteOrder\n  var identifier = String(node.identifier)\n\n  if (footnoteOrder.indexOf(identifier) === -1) {\n    footnoteOrder.push(identifier)\n  }\n\n  return h(node.position, 'sup', {id: 'fnref-' + identifier}, [\n    h(node, 'a', {href: '#fn-' + identifier, className: ['footnote-ref']}, [\n      u('text', node.label || identifier)\n    ])\n  ])\n}\n","'use strict'\n\nmodule.exports = footnote\n\nvar footnoteReference = require('./footnote-reference')\n\nfunction footnote(h, node) {\n  var footnoteById = h.footnoteById\n  var footnoteOrder = h.footnoteOrder\n  var identifier = 1\n\n  while (identifier in footnoteById) {\n    identifier++\n  }\n\n  identifier = String(identifier)\n\n  // No need to check if `identifier` exists in `footnoteOrder`, it’s guaranteed\n  // to not exist because we just generated it.\n  footnoteOrder.push(identifier)\n\n  footnoteById[identifier] = {\n    type: 'footnoteDefinition',\n    identifier: identifier,\n    children: [{type: 'paragraph', children: node.children}],\n    position: node.position\n  }\n\n  return footnoteReference(h, {\n    type: 'footnoteReference',\n    identifier: identifier,\n    position: node.position\n  })\n}\n","'use strict'\n\nmodule.exports = heading\n\nvar all = require('../all')\n\nfunction heading(h, node) {\n  return h(node, 'h' + node.depth, all(h, node))\n}\n","'use strict'\n\nmodule.exports = html\n\nvar u = require('unist-builder')\n\n// Return either a `raw` node in dangerous mode, otherwise nothing.\nfunction html(h, node) {\n  return h.dangerous ? h.augment(node, u('raw', node.value)) : null\n}\n","'use strict'\n\nmodule.exports = imageReference\n\nvar normalize = require('mdurl/encode')\nvar revert = require('../revert')\n\nfunction imageReference(h, node) {\n  var def = h.definition(node.identifier)\n  var props\n\n  if (!def) {\n    return revert(h, node)\n  }\n\n  props = {src: normalize(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    props.title = def.title\n  }\n\n  return h(node, 'img', props)\n}\n","'use strict'\n\nvar normalize = require('mdurl/encode')\n\nmodule.exports = image\n\nfunction image(h, node) {\n  var props = {src: normalize(node.url), alt: node.alt}\n\n  if (node.title !== null && node.title !== undefined) {\n    props.title = node.title\n  }\n\n  return h(node, 'img', props)\n}\n","'use strict'\n\nmodule.exports = {\n  blockquote: require('./blockquote'),\n  break: require('./break'),\n  code: require('./code'),\n  delete: require('./delete'),\n  emphasis: require('./emphasis'),\n  footnoteReference: require('./footnote-reference'),\n  footnote: require('./footnote'),\n  heading: require('./heading'),\n  html: require('./html'),\n  imageReference: require('./image-reference'),\n  image: require('./image'),\n  inlineCode: require('./inline-code'),\n  linkReference: require('./link-reference'),\n  link: require('./link'),\n  listItem: require('./list-item'),\n  list: require('./list'),\n  paragraph: require('./paragraph'),\n  root: require('./root'),\n  strong: require('./strong'),\n  table: require('./table'),\n  text: require('./text'),\n  thematicBreak: require('./thematic-break'),\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  return null\n}\n","'use strict'\n\nmodule.exports = inlineCode\n\nvar u = require('unist-builder')\n\nfunction inlineCode(h, node) {\n  var value = node.value.replace(/\\r?\\n|\\r/g, ' ')\n  return h(node, 'code', [u('text', value)])\n}\n","'use strict'\n\nmodule.exports = linkReference\n\nvar normalize = require('mdurl/encode')\nvar revert = require('../revert')\nvar all = require('../all')\n\nfunction linkReference(h, node) {\n  var def = h.definition(node.identifier)\n  var props\n\n  if (!def) {\n    return revert(h, node)\n  }\n\n  props = {href: normalize(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    props.title = def.title\n  }\n\n  return h(node, 'a', props, all(h, node))\n}\n","'use strict'\n\nvar normalize = require('mdurl/encode')\nvar all = require('../all')\n\nmodule.exports = link\n\nfunction link(h, node) {\n  var props = {href: normalize(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    props.title = node.title\n  }\n\n  return h(node, 'a', props, all(h, node))\n}\n","'use strict'\n\nmodule.exports = listItem\n\nvar u = require('unist-builder')\nvar all = require('../all')\n\nfunction listItem(h, node, parent) {\n  var result = all(h, node)\n  var head = result[0]\n  var loose = parent ? listLoose(parent) : listItemLoose(node)\n  var props = {}\n  var wrapped = []\n  var length\n  var index\n  var child\n\n  if (typeof node.checked === 'boolean') {\n    if (!head || head.tagName !== 'p') {\n      head = h(null, 'p', [])\n      result.unshift(head)\n    }\n\n    if (head.children.length > 0) {\n      head.children.unshift(u('text', ' '))\n    }\n\n    head.children.unshift(\n      h(null, 'input', {\n        type: 'checkbox',\n        checked: node.checked,\n        disabled: true\n      })\n    )\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    props.className = ['task-list-item']\n  }\n\n  length = result.length\n  index = -1\n\n  while (++index < length) {\n    child = result[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (loose || index !== 0 || child.tagName !== 'p') {\n      wrapped.push(u('text', '\\n'))\n    }\n\n    if (child.tagName === 'p' && !loose) {\n      wrapped = wrapped.concat(child.children)\n    } else {\n      wrapped.push(child)\n    }\n  }\n\n  // Add a final eol.\n  if (length && (loose || child.tagName !== 'p')) {\n    wrapped.push(u('text', '\\n'))\n  }\n\n  return h(node, 'li', props, wrapped)\n}\n\nfunction listLoose(node) {\n  var loose = node.spread\n  var children = node.children\n  var length = children.length\n  var index = -1\n\n  while (!loose && ++index < length) {\n    loose = listItemLoose(children[index])\n  }\n\n  return loose\n}\n\nfunction listItemLoose(node) {\n  var spread = node.spread\n\n  return spread === undefined || spread === null\n    ? node.children.length > 1\n    : spread\n}\n","'use strict'\n\nmodule.exports = list\n\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction list(h, node) {\n  var props = {}\n  var name = node.ordered ? 'ol' : 'ul'\n  var items\n  var index = -1\n  var length\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    props.start = node.start\n  }\n\n  items = all(h, node)\n  length = items.length\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < length) {\n    if (\n      items[index].properties.className &&\n      items[index].properties.className.indexOf('task-list-item') !== -1\n    ) {\n      props.className = ['contains-task-list']\n      break\n    }\n  }\n\n  return h(node, name, props, wrap(items, true))\n}\n","'use strict'\n\nmodule.exports = paragraph\n\nvar all = require('../all')\n\nfunction paragraph(h, node) {\n  return h(node, 'p', all(h, node))\n}\n","'use strict'\n\nmodule.exports = root\n\nvar u = require('unist-builder')\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction root(h, node) {\n  return h.augment(node, u('root', wrap(all(h, node))))\n}\n","'use strict'\n\nmodule.exports = strong\n\nvar all = require('../all')\n\nfunction strong(h, node) {\n  return h(node, 'strong', all(h, node))\n}\n","'use strict'\n\nmodule.exports = table\n\nvar position = require('unist-util-position')\nvar wrap = require('../wrap')\nvar all = require('../all')\n\nfunction table(h, node) {\n  var rows = node.children\n  var index = rows.length\n  var align = node.align || []\n  var alignLength = align.length\n  var result = []\n  var pos\n  var row\n  var out\n  var name\n  var cell\n\n  while (index--) {\n    row = rows[index].children\n    name = index === 0 ? 'th' : 'td'\n    pos = alignLength || row.length\n    out = []\n\n    while (pos--) {\n      cell = row[pos]\n      out[pos] = h(cell, name, {align: align[pos]}, cell ? all(h, cell) : [])\n    }\n\n    result[index] = h(rows[index], 'tr', wrap(out, true))\n  }\n\n  return h(\n    node,\n    'table',\n    wrap(\n      [h(result[0].position, 'thead', wrap([result[0]], true))].concat(\n        result[1]\n          ? h(\n              {\n                start: position.start(result[1]),\n                end: position.end(result[result.length - 1])\n              },\n              'tbody',\n              wrap(result.slice(1), true)\n            )\n          : []\n      ),\n      true\n    )\n  )\n}\n","'use strict'\n\nmodule.exports = text\n\nvar u = require('unist-builder')\n\nfunction text(h, node) {\n  return h.augment(\n    node,\n    u('text', String(node.value).replace(/[ \\t]*(\\r?\\n|\\r)[ \\t]*/g, '$1'))\n  )\n}\n","'use strict'\n\nmodule.exports = thematicBreak\n\nfunction thematicBreak(h, node) {\n  return h(node, 'hr')\n}\n","'use strict'\n\nmodule.exports = toHast\n\nvar u = require('unist-builder')\nvar visit = require('unist-util-visit')\nvar position = require('unist-util-position')\nvar generated = require('unist-util-generated')\nvar definitions = require('mdast-util-definitions')\nvar one = require('./one')\nvar footer = require('./footer')\nvar handlers = require('./handlers')\n\nvar own = {}.hasOwnProperty\n\nvar deprecationWarningIssued = false\n\n// Factory to transform.\nfunction factory(tree, options) {\n  var settings = options || {}\n\n  // Issue a warning if the deprecated tag 'allowDangerousHTML' is used\n  if (settings.allowDangerousHTML !== undefined && !deprecationWarningIssued) {\n    deprecationWarningIssued = true\n    console.warn(\n      'mdast-util-to-hast: deprecation: `allowDangerousHTML` is nonstandard, use `allowDangerousHtml` instead'\n    )\n  }\n\n  var dangerous = settings.allowDangerousHtml || settings.allowDangerousHTML\n  var footnoteById = {}\n\n  h.dangerous = dangerous\n  h.definition = definitions(tree)\n  h.footnoteById = footnoteById\n  h.footnoteOrder = []\n  h.augment = augment\n  h.handlers = Object.assign({}, handlers, settings.handlers)\n  h.unknownHandler = settings.unknownHandler\n  h.passThrough = settings.passThrough\n\n  visit(tree, 'footnoteDefinition', onfootnotedefinition)\n\n  return h\n\n  // Finalise the created `right`, a hast node, from `left`, an mdast node.\n  function augment(left, right) {\n    var data\n    var ctx\n\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && left.data) {\n      data = left.data\n\n      if (data.hName) {\n        if (right.type !== 'element') {\n          right = {\n            type: 'element',\n            tagName: '',\n            properties: {},\n            children: []\n          }\n        }\n\n        right.tagName = data.hName\n      }\n\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = Object.assign({}, right.properties, data.hProperties)\n      }\n\n      if (right.children && data.hChildren) {\n        right.children = data.hChildren\n      }\n    }\n\n    ctx = left && left.position ? left : {position: left}\n\n    if (!generated(ctx)) {\n      right.position = {\n        start: position.start(ctx),\n        end: position.end(ctx)\n      }\n    }\n\n    return right\n  }\n\n  // Create an element for `node`.\n  function h(node, tagName, props, children) {\n    if (\n      (children === undefined || children === null) &&\n      typeof props === 'object' &&\n      'length' in props\n    ) {\n      children = props\n      props = {}\n    }\n\n    return augment(node, {\n      type: 'element',\n      tagName: tagName,\n      properties: props || {},\n      children: children || []\n    })\n  }\n\n  function onfootnotedefinition(definition) {\n    var id = String(definition.identifier).toUpperCase()\n\n    // Mimick CM behavior of link definitions.\n    // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n    if (!own.call(footnoteById, id)) {\n      footnoteById[id] = definition\n    }\n  }\n}\n\n// Transform `tree`, which is an mdast node, to a hast node.\nfunction toHast(tree, options) {\n  var h = factory(tree, options)\n  var node = one(h, tree)\n  var foot = footer(h)\n\n  if (foot) {\n    node.children = node.children.concat(u('text', '\\n'), foot)\n  }\n\n  return node\n}\n","'use strict'\n\nmodule.exports = one\n\nvar u = require('unist-builder')\nvar all = require('./all')\n\nvar own = {}.hasOwnProperty\n\n// Transform an unknown node.\nfunction unknown(h, node) {\n  if (text(node)) {\n    return h.augment(node, u('text', node.value))\n  }\n\n  return h(node, 'div', all(h, node))\n}\n\n// Visit a node.\nfunction one(h, node, parent) {\n  var type = node && node.type\n  var fn\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n\n  if (own.call(h.handlers, type)) {\n    fn = h.handlers[type]\n  } else if (h.passThrough && h.passThrough.indexOf(type) > -1) {\n    fn = returnNode\n  } else {\n    fn = h.unknownHandler\n  }\n\n  return (typeof fn === 'function' ? fn : unknown)(h, node, parent)\n}\n\n// Check if the node should be renderered as a text node.\nfunction text(node) {\n  var data = node.data || {}\n\n  if (\n    own.call(data, 'hName') ||\n    own.call(data, 'hProperties') ||\n    own.call(data, 'hChildren')\n  ) {\n    return false\n  }\n\n  return 'value' in node\n}\n\nfunction returnNode(h, node) {\n  var clone\n\n  if (node.children) {\n    clone = Object.assign({}, node)\n    clone.children = all(h, node)\n    return clone\n  }\n\n  return node\n}\n","'use strict'\n\nmodule.exports = revert\n\nvar u = require('unist-builder')\nvar all = require('./all')\n\n// Return the content of a reference without definition as Markdown.\nfunction revert(h, node) {\n  var subtype = node.referenceType\n  var suffix = ']'\n  var contents\n  var head\n  var tail\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return u('text', '![' + node.alt + suffix)\n  }\n\n  contents = all(h, node)\n  head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift(u('text', '['))\n  }\n\n  tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push(u('text', suffix))\n  }\n\n  return contents\n}\n","'use strict'\n\nmodule.exports = wrap\n\nvar u = require('unist-builder')\n\n// Wrap `nodes` with line feeds between each entry.\n// Optionally adds line feeds at the start and end.\nfunction wrap(nodes, loose) {\n  var result = []\n  var index = -1\n  var length = nodes.length\n\n  if (loose) {\n    result.push(u('text', '\\n'))\n  }\n\n  while (++index < length) {\n    if (index) {\n      result.push(u('text', '\\n'))\n    }\n\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push(u('text', '\\n'))\n  }\n\n  return result\n}\n","'use strict'\n\nmodule.exports = toString\n\n// Get the text content of a node.\n// Prefer the node’s plain-text fields, otherwise serialize its children,\n// and if the given value is an array, serialize the nodes in it.\nfunction toString(node) {\n  return (\n    (node &&\n      (node.value ||\n        node.alt ||\n        node.title ||\n        ('children' in node && all(node.children)) ||\n        ('length' in node && all(node)))) ||\n    ''\n  )\n}\n\nfunction all(values) {\n  var result = []\n  var index = -1\n\n  while (++index < values.length) {\n    result[index] = toString(values[index])\n  }\n\n  return result.join('')\n}\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n  var i, ch, cache = encodeCache[exclude];\n  if (cache) { return cache; }\n\n  cache = encodeCache[exclude] = [];\n\n  for (i = 0; i < 128; i++) {\n    ch = String.fromCharCode(i);\n\n    if (/^[0-9a-z]$/i.test(ch)) {\n      // always allow unencoded alphanumeric characters\n      cache.push(ch);\n    } else {\n      cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n    }\n  }\n\n  for (i = 0; i < exclude.length; i++) {\n    cache[exclude.charCodeAt(i)] = exclude[i];\n  }\n\n  return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n//  - string       - string to encode\n//  - exclude      - list of characters to ignore (in addition to a-zA-Z0-9)\n//  - keepEscaped  - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n  var i, l, code, nextCode, cache,\n      result = '';\n\n  if (typeof exclude !== 'string') {\n    // encode(string, keepEscaped)\n    keepEscaped  = exclude;\n    exclude = encode.defaultChars;\n  }\n\n  if (typeof keepEscaped === 'undefined') {\n    keepEscaped = true;\n  }\n\n  cache = getEncodeCache(exclude);\n\n  for (i = 0, l = string.length; i < l; i++) {\n    code = string.charCodeAt(i);\n\n    if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n      if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n        result += string.slice(i, i + 3);\n        i += 2;\n        continue;\n      }\n    }\n\n    if (code < 128) {\n      result += cache[code];\n      continue;\n    }\n\n    if (code >= 0xD800 && code <= 0xDFFF) {\n      if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n        nextCode = string.charCodeAt(i + 1);\n        if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n          result += encodeURIComponent(string[i] + string[i + 1]);\n          i++;\n          continue;\n        }\n      }\n      result += '%EF%BF%BD';\n      continue;\n    }\n\n    result += encodeURIComponent(string[i]);\n  }\n\n  return result;\n}\n\nencode.defaultChars   = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlpha = regexCheck(/[A-Za-z]/)\n\nmodule.exports = asciiAlpha\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\nmodule.exports = asciiAlphanumeric\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\nmodule.exports = asciiAtext\n","'use strict'\n\n// Note: EOF is seen as ASCII control here, because `null < 32 == true`.\nfunction asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code < 32 || code === 127\n  )\n}\n\nmodule.exports = asciiControl\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiDigit = regexCheck(/\\d/)\n\nmodule.exports = asciiDigit\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\nmodule.exports = asciiHexDigit\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\nmodule.exports = asciiPunctuation\n","'use strict'\n\nfunction markdownLineEndingOrSpace(code) {\n  return code < 0 || code === 32\n}\n\nmodule.exports = markdownLineEndingOrSpace\n","'use strict'\n\nfunction markdownLineEnding(code) {\n  return code < -2\n}\n\nmodule.exports = markdownLineEnding\n","'use strict'\n\nfunction markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32\n}\n\nmodule.exports = markdownSpace\n","'use strict'\n\nvar unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js')\nvar regexCheck = require('../util/regex-check.js')\n\n// In fact adds to the bundle size.\n\nvar unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar unicodeWhitespace = regexCheck(/\\s/)\n\nmodule.exports = unicodeWhitespace\n","'use strict'\n\nvar assign = Object.assign\n\nmodule.exports = assign\n","'use strict'\n\nvar fromCharCode = String.fromCharCode\n\nmodule.exports = fromCharCode\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = own\n","'use strict'\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar basics = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'section',\n  'source',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\nmodule.exports = basics\n","'use strict'\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar raws = ['pre', 'script', 'style', 'textarea']\n\nmodule.exports = raws\n","'use strict'\n\nvar splice = [].splice\n\nmodule.exports = splice\n","'use strict'\n\n// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nvar unicodePunctuation = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar text$1 = require('./initialize/text.js')\nvar attention = require('./tokenize/attention.js')\nvar autolink = require('./tokenize/autolink.js')\nvar blockQuote = require('./tokenize/block-quote.js')\nvar characterEscape = require('./tokenize/character-escape.js')\nvar characterReference = require('./tokenize/character-reference.js')\nvar codeFenced = require('./tokenize/code-fenced.js')\nvar codeIndented = require('./tokenize/code-indented.js')\nvar codeText = require('./tokenize/code-text.js')\nvar definition = require('./tokenize/definition.js')\nvar hardBreakEscape = require('./tokenize/hard-break-escape.js')\nvar headingAtx = require('./tokenize/heading-atx.js')\nvar htmlFlow = require('./tokenize/html-flow.js')\nvar htmlText = require('./tokenize/html-text.js')\nvar labelEnd = require('./tokenize/label-end.js')\nvar labelStartImage = require('./tokenize/label-start-image.js')\nvar labelStartLink = require('./tokenize/label-start-link.js')\nvar lineEnding = require('./tokenize/line-ending.js')\nvar list = require('./tokenize/list.js')\nvar setextUnderline = require('./tokenize/setext-underline.js')\nvar thematicBreak = require('./tokenize/thematic-break.js')\n\nvar document = {\n  42: list,\n  // Asterisk\n  43: list,\n  // Plus sign\n  45: list,\n  // Dash\n  48: list,\n  // 0\n  49: list,\n  // 1\n  50: list,\n  // 2\n  51: list,\n  // 3\n  52: list,\n  // 4\n  53: list,\n  // 5\n  54: list,\n  // 6\n  55: list,\n  // 7\n  56: list,\n  // 8\n  57: list,\n  // 9\n  62: blockQuote // Greater than\n}\nvar contentInitial = {\n  91: definition // Left square bracket\n}\nvar flowInitial = {\n  '-2': codeIndented,\n  // Horizontal tab\n  '-1': codeIndented,\n  // Virtual space\n  32: codeIndented // Space\n}\nvar flow = {\n  35: headingAtx,\n  // Number sign\n  42: thematicBreak,\n  // Asterisk\n  45: [setextUnderline, thematicBreak],\n  // Dash\n  60: htmlFlow,\n  // Less than\n  61: setextUnderline,\n  // Equals to\n  95: thematicBreak,\n  // Underscore\n  96: codeFenced,\n  // Grave accent\n  126: codeFenced // Tilde\n}\nvar string = {\n  38: characterReference,\n  // Ampersand\n  92: characterEscape // Backslash\n}\nvar text = {\n  '-5': lineEnding,\n  // Carriage return\n  '-4': lineEnding,\n  // Line feed\n  '-3': lineEnding,\n  // Carriage return + line feed\n  33: labelStartImage,\n  // Exclamation mark\n  38: characterReference,\n  // Ampersand\n  42: attention,\n  // Asterisk\n  60: [autolink, htmlText],\n  // Less than\n  91: labelStartLink,\n  // Left square bracket\n  92: [hardBreakEscape, characterEscape],\n  // Backslash\n  93: labelEnd,\n  // Right square bracket\n  95: attention,\n  // Underscore\n  96: codeText // Grave accent\n}\nvar insideSpan = {\n  null: [attention, text$1.resolver]\n}\nvar disable = {\n  null: []\n}\n\nexports.contentInitial = contentInitial\nexports.disable = disable\nexports.document = document\nexports.flow = flow\nexports.flowInitial = flowInitial\nexports.insideSpan = insideSpan\nexports.string = string\nexports.text = text\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\n\nvar tokenize = initializeContent\n\nfunction initializeContent(effects) {\n  var contentStart = effects.attempt(\n    this.parser.constructs.contentInitial,\n    afterContentStartConstruct,\n    paragraphInitial\n  )\n  var previous\n  return contentStart\n\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, contentStart, 'linePrefix')\n  }\n\n  function paragraphInitial(code) {\n    effects.enter('paragraph')\n    return lineStart(code)\n  }\n\n  function lineStart(code) {\n    var token = effects.enter('chunkText', {\n      contentType: 'text',\n      previous: previous\n    })\n\n    if (previous) {\n      previous.next = token\n    }\n\n    previous = token\n    return data(code)\n  }\n\n  function data(code) {\n    if (code === null) {\n      effects.exit('chunkText')\n      effects.exit('paragraph')\n      effects.consume(code)\n      return\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      effects.exit('chunkText')\n      return lineStart\n    } // Data.\n\n    effects.consume(code)\n    return data\n  }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeDocument\nvar containerConstruct = {\n  tokenize: tokenizeContainer\n}\nvar lazyFlowConstruct = {\n  tokenize: tokenizeLazyFlow\n}\n\nfunction initializeDocument(effects) {\n  var self = this\n  var stack = []\n  var continued = 0\n  var inspectConstruct = {\n    tokenize: tokenizeInspect,\n    partial: true\n  }\n  var inspectResult\n  var childFlow\n  var childToken\n  return start\n\n  function start(code) {\n    if (continued < stack.length) {\n      self.containerState = stack[continued][1]\n      return effects.attempt(\n        stack[continued][0].continuation,\n        documentContinue,\n        documentContinued\n      )(code)\n    }\n\n    return documentContinued(code)\n  }\n\n  function documentContinue(code) {\n    continued++\n    return start(code)\n  }\n\n  function documentContinued(code) {\n    // If we’re in a concrete construct (such as when expecting another line of\n    // HTML, or we resulted in lazy content), we can immediately start flow.\n    if (inspectResult && inspectResult.flowContinue) {\n      return flowStart(code)\n    }\n\n    self.interrupt =\n      childFlow &&\n      childFlow.currentConstruct &&\n      childFlow.currentConstruct.interruptible\n    self.containerState = {}\n    return effects.attempt(\n      containerConstruct,\n      containerContinue,\n      flowStart\n    )(code)\n  }\n\n  function containerContinue(code) {\n    stack.push([self.currentConstruct, self.containerState])\n    self.containerState = undefined\n    return documentContinued(code)\n  }\n\n  function flowStart(code) {\n    if (code === null) {\n      exitContainers(0, true)\n      effects.consume(code)\n      return\n    }\n\n    childFlow = childFlow || self.parser.flow(self.now())\n    effects.enter('chunkFlow', {\n      contentType: 'flow',\n      previous: childToken,\n      _tokenizer: childFlow\n    })\n    return flowContinue(code)\n  }\n\n  function flowContinue(code) {\n    if (code === null) {\n      continueFlow(effects.exit('chunkFlow'))\n      return flowStart(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      continueFlow(effects.exit('chunkFlow'))\n      return effects.check(inspectConstruct, documentAfterPeek)\n    }\n\n    effects.consume(code)\n    return flowContinue\n  }\n\n  function documentAfterPeek(code) {\n    exitContainers(\n      inspectResult.continued,\n      inspectResult && inspectResult.flowEnd\n    )\n    continued = 0\n    return start(code)\n  }\n\n  function continueFlow(token) {\n    if (childToken) childToken.next = token\n    childToken = token\n    childFlow.lazy = inspectResult && inspectResult.lazy\n    childFlow.defineSkip(token.start)\n    childFlow.write(self.sliceStream(token))\n  }\n\n  function exitContainers(size, end) {\n    var index = stack.length // Close the flow.\n\n    if (childFlow && end) {\n      childFlow.write([null])\n      childToken = childFlow = undefined\n    } // Exit open containers.\n\n    while (index-- > size) {\n      self.containerState = stack[index][1]\n      stack[index][0].exit.call(self, effects)\n    }\n\n    stack.length = size\n  }\n\n  function tokenizeInspect(effects, ok) {\n    var subcontinued = 0\n    inspectResult = {}\n    return inspectStart\n\n    function inspectStart(code) {\n      if (subcontinued < stack.length) {\n        self.containerState = stack[subcontinued][1]\n        return effects.attempt(\n          stack[subcontinued][0].continuation,\n          inspectContinue,\n          inspectLess\n        )(code)\n      } // If we’re continued but in a concrete flow, we can’t have more\n      // containers.\n\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        inspectResult.flowContinue = true\n        return inspectDone(code)\n      }\n\n      self.interrupt =\n        childFlow.currentConstruct && childFlow.currentConstruct.interruptible\n      self.containerState = {}\n      return effects.attempt(\n        containerConstruct,\n        inspectFlowEnd,\n        inspectDone\n      )(code)\n    }\n\n    function inspectContinue(code) {\n      subcontinued++\n      return self.containerState._closeFlow\n        ? inspectFlowEnd(code)\n        : inspectStart(code)\n    }\n\n    function inspectLess(code) {\n      if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {\n        // Maybe another container?\n        self.containerState = {}\n        return effects.attempt(\n          containerConstruct,\n          inspectFlowEnd, // Maybe flow, or a blank line?\n          effects.attempt(\n            lazyFlowConstruct,\n            inspectFlowEnd,\n            effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)\n          )\n        )(code)\n      } // Otherwise we’re interrupting.\n\n      return inspectFlowEnd(code)\n    }\n\n    function inspectLazy(code) {\n      // Act as if all containers are continued.\n      subcontinued = stack.length\n      inspectResult.lazy = true\n      inspectResult.flowContinue = true\n      return inspectDone(code)\n    } // We’re done with flow if we have more containers, or an interruption.\n\n    function inspectFlowEnd(code) {\n      inspectResult.flowEnd = true\n      return inspectDone(code)\n    }\n\n    function inspectDone(code) {\n      inspectResult.continued = subcontinued\n      self.interrupt = self.containerState = undefined\n      return ok(code)\n    }\n  }\n}\n\nfunction tokenizeContainer(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.attempt(this.parser.constructs.document, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n      ? undefined\n      : 4\n  )\n}\n\nfunction tokenizeLazyFlow(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.lazy(this.parser.constructs.flow, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n      ? undefined\n      : 4\n  )\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar content = require('../tokenize/content.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeFlow\n\nfunction initializeFlow(effects) {\n  var self = this\n  var initial = effects.attempt(\n    // Try to parse a blank line.\n    partialBlankLine,\n    atBlankEnding, // Try to parse initial flow (essentially, only code).\n    effects.attempt(\n      this.parser.constructs.flowInitial,\n      afterConstruct,\n      factorySpace(\n        effects,\n        effects.attempt(\n          this.parser.constructs.flow,\n          afterConstruct,\n          effects.attempt(content, afterConstruct)\n        ),\n        'linePrefix'\n      )\n    )\n  )\n  return initial\n\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEndingBlank')\n    effects.consume(code)\n    effects.exit('lineEndingBlank')\n    self.currentConstruct = undefined\n    return initial\n  }\n\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    self.currentConstruct = undefined\n    return initial\n  }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar assign = require('../constant/assign.js')\nvar shallow = require('../util/shallow.js')\n\nvar text = initializeFactory('text')\nvar string = initializeFactory('string')\nvar resolver = {\n  resolveAll: createResolver()\n}\n\nfunction initializeFactory(field) {\n  return {\n    tokenize: initializeText,\n    resolveAll: createResolver(\n      field === 'text' ? resolveAllLineSuffixes : undefined\n    )\n  }\n\n  function initializeText(effects) {\n    var self = this\n    var constructs = this.parser.constructs[field]\n    var text = effects.attempt(constructs, start, notText)\n    return start\n\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code)\n    }\n\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code)\n        return\n      }\n\n      effects.enter('data')\n      effects.consume(code)\n      return data\n    }\n\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit('data')\n        return text(code)\n      } // Data.\n\n      effects.consume(code)\n      return data\n    }\n\n    function atBreak(code) {\n      var list = constructs[code]\n      var index = -1\n\n      if (code === null) {\n        return true\n      }\n\n      if (list) {\n        while (++index < list.length) {\n          if (\n            !list[index].previous ||\n            list[index].previous.call(self, self.previous)\n          ) {\n            return true\n          }\n        }\n      }\n    }\n  }\n}\n\nfunction createResolver(extraResolver) {\n  return resolveAllText\n\n  function resolveAllText(events, context) {\n    var index = -1\n    var enter // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === 'data') {\n          enter = index\n          index++\n        }\n      } else if (!events[index] || events[index][1].type !== 'data') {\n        // Don’t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end\n          events.splice(enter + 2, index - enter - 2)\n          index = enter + 2\n        }\n\n        enter = undefined\n      }\n    }\n\n    return extraResolver ? extraResolver(events, context) : events\n  }\n} // A rather ugly set of instructions which again looks at chunks in the input\n// stream.\n// The reason to do this here is that it is *much* faster to parse in reverse.\n// And that we can’t hook into `null` to split the line suffix before an EOF.\n// To do: figure out if we can make this into a clean utility, or even in core.\n// As it will be useful for GFMs literal autolink extension (and maybe even\n// tables?)\n\nfunction resolveAllLineSuffixes(events, context) {\n  var eventIndex = -1\n  var chunks\n  var data\n  var chunk\n  var index\n  var bufferIndex\n  var size\n  var tabs\n  var token\n\n  while (++eventIndex <= events.length) {\n    if (\n      (eventIndex === events.length ||\n        events[eventIndex][1].type === 'lineEnding') &&\n      events[eventIndex - 1][1].type === 'data'\n    ) {\n      data = events[eventIndex - 1][1]\n      chunks = context.sliceStream(data)\n      index = chunks.length\n      bufferIndex = -1\n      size = 0\n      tabs = undefined\n\n      while (index--) {\n        chunk = chunks[index]\n\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length\n\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++\n            bufferIndex--\n          }\n\n          if (bufferIndex) break\n          bufferIndex = -1\n        } // Number\n        else if (chunk === -2) {\n          tabs = true\n          size++\n        } else if (chunk === -1);\n        else {\n          // Replacement character, exit.\n          index++\n          break\n        }\n      }\n\n      if (size) {\n        token = {\n          type:\n            eventIndex === events.length || tabs || size < 2\n              ? 'lineSuffix'\n              : 'hardBreakTrailing',\n          start: {\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size,\n            _index: data.start._index + index,\n            _bufferIndex: index\n              ? bufferIndex\n              : data.start._bufferIndex + bufferIndex\n          },\n          end: shallow(data.end)\n        }\n        data.end = shallow(token.start)\n\n        if (data.start.offset === data.end.offset) {\n          assign(data, token)\n        } else {\n          events.splice(\n            eventIndex,\n            0,\n            ['enter', token, context],\n            ['exit', token, context]\n          )\n          eventIndex += 2\n        }\n      }\n\n      eventIndex++\n    }\n  }\n\n  return events\n}\n\nexports.resolver = resolver\nexports.string = string\nexports.text = text\n","'use strict'\n\nvar content = require('./initialize/content.js')\nvar document = require('./initialize/document.js')\nvar flow = require('./initialize/flow.js')\nvar text = require('./initialize/text.js')\nvar combineExtensions = require('./util/combine-extensions.js')\nvar createTokenizer = require('./util/create-tokenizer.js')\nvar miniflat = require('./util/miniflat.js')\nvar constructs = require('./constructs.js')\n\nfunction parse(options) {\n  var settings = options || {}\n  var parser = {\n    defined: [],\n    constructs: combineExtensions(\n      [constructs].concat(miniflat(settings.extensions))\n    ),\n    content: create(content),\n    document: create(document),\n    flow: create(flow),\n    string: create(text.string),\n    text: create(text.text)\n  }\n  return parser\n\n  function create(initializer) {\n    return creator\n\n    function creator(from) {\n      return createTokenizer(parser, initializer, from)\n    }\n  }\n}\n\nmodule.exports = parse\n","'use strict'\n\nvar subtokenize = require('./util/subtokenize.js')\n\nfunction postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n\n  return events\n}\n\nmodule.exports = postprocess\n","'use strict'\n\nvar search = /[\\0\\t\\n\\r]/g\n\nfunction preprocess() {\n  var start = true\n  var column = 1\n  var buffer = ''\n  var atCarriageReturn\n  return preprocessor\n\n  function preprocessor(value, encoding, end) {\n    var chunks = []\n    var match\n    var next\n    var startPosition\n    var endPosition\n    var code\n    value = buffer + value.toString(encoding)\n    startPosition = 0\n    buffer = ''\n\n    if (start) {\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++\n      }\n\n      start = undefined\n    }\n\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition\n      match = search.exec(value)\n      endPosition = match ? match.index : value.length\n      code = value.charCodeAt(endPosition)\n\n      if (!match) {\n        buffer = value.slice(startPosition)\n        break\n      }\n\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3)\n        atCarriageReturn = undefined\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5)\n          atCarriageReturn = undefined\n        }\n\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition))\n          column += endPosition - startPosition\n        }\n\n        if (code === 0) {\n          chunks.push(65533)\n          column++\n        } else if (code === 9) {\n          next = Math.ceil(column / 4) * 4\n          chunks.push(-2)\n\n          while (column++ < next) chunks.push(-1)\n        } else if (code === 10) {\n          chunks.push(-4)\n          column = 1\n        } // Must be carriage return.\n        else {\n          atCarriageReturn = true\n          column = 1\n        }\n      }\n\n      startPosition = endPosition + 1\n    }\n\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5)\n      if (buffer) chunks.push(buffer)\n      chunks.push(null)\n    }\n\n    return chunks\n  }\n}\n\nmodule.exports = preprocess\n","'use strict'\n\nvar chunkedPush = require('../util/chunked-push.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar classifyCharacter = require('../util/classify-character.js')\nvar movePoint = require('../util/move-point.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar shallow = require('../util/shallow.js')\n\nvar attention = {\n  name: 'attention',\n  tokenize: tokenizeAttention,\n  resolveAll: resolveAllAttention\n}\n\nfunction resolveAllAttention(events, context) {\n  var index = -1\n  var open\n  var group\n  var text\n  var openingSequence\n  var closingSequence\n  var use\n  var nextEvents\n  var offset // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it’s\n  // a bottleneck for malicious stuff.\n\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (\n      events[index][0] === 'enter' &&\n      events[index][1].type === 'attentionSequence' &&\n      events[index][1]._close\n    ) {\n      open = index // Now walk back to find an opener.\n\n      while (open--) {\n        // Find a token that can open the closer.\n        if (\n          events[open][0] === 'exit' &&\n          events[open][1].type === 'attentionSequence' &&\n          events[open][1]._open && // If the markers are the same:\n          context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n            context.sliceSerialize(events[index][1]).charCodeAt(0)\n        ) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don’t match.\n          if (\n            (events[open][1]._close || events[index][1]._open) &&\n            (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n            !(\n              (events[open][1].end.offset -\n                events[open][1].start.offset +\n                events[index][1].end.offset -\n                events[index][1].start.offset) %\n              3\n            )\n          ) {\n            continue\n          } // Number of markers to use from the sequence.\n\n          use =\n            events[open][1].end.offset - events[open][1].start.offset > 1 &&\n            events[index][1].end.offset - events[index][1].start.offset > 1\n              ? 2\n              : 1\n          openingSequence = {\n            type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n            start: movePoint(shallow(events[open][1].end), -use),\n            end: shallow(events[open][1].end)\n          }\n          closingSequence = {\n            type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n            start: shallow(events[index][1].start),\n            end: movePoint(shallow(events[index][1].start), use)\n          }\n          text = {\n            type: use > 1 ? 'strongText' : 'emphasisText',\n            start: shallow(events[open][1].end),\n            end: shallow(events[index][1].start)\n          }\n          group = {\n            type: use > 1 ? 'strong' : 'emphasis',\n            start: shallow(openingSequence.start),\n            end: shallow(closingSequence.end)\n          }\n          events[open][1].end = shallow(openingSequence.start)\n          events[index][1].start = shallow(closingSequence.end)\n          nextEvents = [] // If there are more markers in the opening, add them before.\n\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = chunkedPush(nextEvents, [\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context]\n            ])\n          } // Opening.\n\n          nextEvents = chunkedPush(nextEvents, [\n            ['enter', group, context],\n            ['enter', openingSequence, context],\n            ['exit', openingSequence, context],\n            ['enter', text, context]\n          ]) // Between.\n\n          nextEvents = chunkedPush(\n            nextEvents,\n            resolveAll(\n              context.parser.constructs.insideSpan.null,\n              events.slice(open + 1, index),\n              context\n            )\n          ) // Closing.\n\n          nextEvents = chunkedPush(nextEvents, [\n            ['exit', text, context],\n            ['enter', closingSequence, context],\n            ['exit', closingSequence, context],\n            ['exit', group, context]\n          ]) // If there are more markers in the closing, add them after.\n\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2\n            nextEvents = chunkedPush(nextEvents, [\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context]\n            ])\n          } else {\n            offset = 0\n          }\n\n          chunkedSplice(events, open - 1, index - open + 3, nextEvents)\n          index = open + nextEvents.length - offset - 2\n          break\n        }\n      }\n    }\n  } // Remove remaining sequences.\n\n  index = -1\n\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data'\n    }\n  }\n\n  return events\n}\n\nfunction tokenizeAttention(effects, ok) {\n  var before = classifyCharacter(this.previous)\n  var marker\n  return start\n\n  function start(code) {\n    effects.enter('attentionSequence')\n    marker = code\n    return sequence(code)\n  }\n\n  function sequence(code) {\n    var token\n    var after\n    var open\n    var close\n\n    if (code === marker) {\n      effects.consume(code)\n      return sequence\n    }\n\n    token = effects.exit('attentionSequence')\n    after = classifyCharacter(code)\n    open = !after || (after === 2 && before)\n    close = !before || (before === 2 && after)\n    token._open = marker === 42 ? open : open && (before || !close)\n    token._close = marker === 42 ? close : close && (after || !open)\n    return ok(code)\n  }\n}\n\nmodule.exports = attention\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiAtext = require('../character/ascii-atext.js')\nvar asciiControl = require('../character/ascii-control.js')\n\nvar autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n}\n\nfunction tokenizeAutolink(effects, ok, nok) {\n  var size = 1\n  return start\n\n  function start(code) {\n    effects.enter('autolink')\n    effects.enter('autolinkMarker')\n    effects.consume(code)\n    effects.exit('autolinkMarker')\n    effects.enter('autolinkProtocol')\n    return open\n  }\n\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return schemeOrEmailAtext\n    }\n\n    return asciiAtext(code) ? emailAtext(code) : nok(code)\n  }\n\n  function schemeOrEmailAtext(code) {\n    return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n      ? schemeInsideOrEmailAtext(code)\n      : emailAtext(code)\n  }\n\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code)\n      return urlInside\n    }\n\n    if (\n      (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n      size++ < 32\n    ) {\n      effects.consume(code)\n      return schemeInsideOrEmailAtext\n    }\n\n    return emailAtext(code)\n  }\n\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit('autolinkProtocol')\n      return end(code)\n    }\n\n    if (code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return urlInside\n  }\n\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n\n    if (asciiAtext(code)) {\n      effects.consume(code)\n      return emailAtext\n    }\n\n    return nok(code)\n  }\n\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n  }\n\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n\n    if (code === 62) {\n      // Exit, then change the type.\n      effects.exit('autolinkProtocol').type = 'autolinkEmail'\n      return end(code)\n    }\n\n    return emailValue(code)\n  }\n\n  function emailValue(code) {\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      effects.consume(code)\n      return code === 45 ? emailValue : emailLabel\n    }\n\n    return nok(code)\n  }\n\n  function end(code) {\n    effects.enter('autolinkMarker')\n    effects.consume(code)\n    effects.exit('autolinkMarker')\n    effects.exit('autolink')\n    return ok\n  }\n}\n\nmodule.exports = autolink\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar blockQuote = {\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart,\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit: exit\n}\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  var self = this\n  return start\n\n  function start(code) {\n    if (code === 62) {\n      if (!self.containerState.open) {\n        effects.enter('blockQuote', {\n          _container: true\n        })\n        self.containerState.open = true\n      }\n\n      effects.enter('blockQuotePrefix')\n      effects.enter('blockQuoteMarker')\n      effects.consume(code)\n      effects.exit('blockQuoteMarker')\n      return after\n    }\n\n    return nok(code)\n  }\n\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter('blockQuotePrefixWhitespace')\n      effects.consume(code)\n      effects.exit('blockQuotePrefixWhitespace')\n      effects.exit('blockQuotePrefix')\n      return ok\n    }\n\n    effects.exit('blockQuotePrefix')\n    return ok(code)\n  }\n}\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.attempt(blockQuote, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n      ? undefined\n      : 4\n  )\n}\n\nfunction exit(effects) {\n  effects.exit('blockQuote')\n}\n\nmodule.exports = blockQuote\n","'use strict'\n\nvar asciiPunctuation = require('../character/ascii-punctuation.js')\n\nvar characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n}\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    effects.enter('characterEscape')\n    effects.enter('escapeMarker')\n    effects.consume(code)\n    effects.exit('escapeMarker')\n    return open\n  }\n\n  function open(code) {\n    if (asciiPunctuation(code)) {\n      effects.enter('characterEscapeValue')\n      effects.consume(code)\n      effects.exit('characterEscapeValue')\n      effects.exit('characterEscape')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = characterEscape\n","'use strict'\n\nvar decodeEntity = require('parse-entities/decode-entity.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiDigit = require('../character/ascii-digit.js')\nvar asciiHexDigit = require('../character/ascii-hex-digit.js')\n\nfunction _interopDefaultLegacy(e) {\n  return e && typeof e === 'object' && 'default' in e ? e : {default: e}\n}\n\nvar decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)\n\nvar characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n}\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  var self = this\n  var size = 0\n  var max\n  var test\n  return start\n\n  function start(code) {\n    effects.enter('characterReference')\n    effects.enter('characterReferenceMarker')\n    effects.consume(code)\n    effects.exit('characterReferenceMarker')\n    return open\n  }\n\n  function open(code) {\n    if (code === 35) {\n      effects.enter('characterReferenceMarkerNumeric')\n      effects.consume(code)\n      effects.exit('characterReferenceMarkerNumeric')\n      return numeric\n    }\n\n    effects.enter('characterReferenceValue')\n    max = 31\n    test = asciiAlphanumeric\n    return value(code)\n  }\n\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter('characterReferenceMarkerHexadecimal')\n      effects.consume(code)\n      effects.exit('characterReferenceMarkerHexadecimal')\n      effects.enter('characterReferenceValue')\n      max = 6\n      test = asciiHexDigit\n      return value\n    }\n\n    effects.enter('characterReferenceValue')\n    max = 7\n    test = asciiDigit\n    return value(code)\n  }\n\n  function value(code) {\n    var token\n\n    if (code === 59 && size) {\n      token = effects.exit('characterReferenceValue')\n\n      if (\n        test === asciiAlphanumeric &&\n        !decodeEntity__default['default'](self.sliceSerialize(token))\n      ) {\n        return nok(code)\n      }\n\n      effects.enter('characterReferenceMarker')\n      effects.consume(code)\n      effects.exit('characterReferenceMarker')\n      effects.exit('characterReference')\n      return ok\n    }\n\n    if (test(code) && size++ < max) {\n      effects.consume(code)\n      return value\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = characterReference\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar factorySpace = require('./factory-space.js')\n\nvar codeFenced = {\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced,\n  concrete: true\n}\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  var self = this\n  var closingFenceConstruct = {\n    tokenize: tokenizeClosingFence,\n    partial: true\n  }\n  var initialPrefix = prefixSize(this.events, 'linePrefix')\n  var sizeOpen = 0\n  var marker\n  return start\n\n  function start(code) {\n    effects.enter('codeFenced')\n    effects.enter('codeFencedFence')\n    effects.enter('codeFencedFenceSequence')\n    marker = code\n    return sequenceOpen(code)\n  }\n\n  function sequenceOpen(code) {\n    if (code === marker) {\n      effects.consume(code)\n      sizeOpen++\n      return sequenceOpen\n    }\n\n    effects.exit('codeFencedFenceSequence')\n    return sizeOpen < 3\n      ? nok(code)\n      : factorySpace(effects, infoOpen, 'whitespace')(code)\n  }\n\n  function infoOpen(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return openAfter(code)\n    }\n\n    effects.enter('codeFencedFenceInfo')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return info(code)\n  }\n\n  function info(code) {\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceInfo')\n      return factorySpace(effects, infoAfter, 'whitespace')(code)\n    }\n\n    if (code === 96 && code === marker) return nok(code)\n    effects.consume(code)\n    return info\n  }\n\n  function infoAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return openAfter(code)\n    }\n\n    effects.enter('codeFencedFenceMeta')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return meta(code)\n  }\n\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceMeta')\n      return openAfter(code)\n    }\n\n    if (code === 96 && code === marker) return nok(code)\n    effects.consume(code)\n    return meta\n  }\n\n  function openAfter(code) {\n    effects.exit('codeFencedFence')\n    return self.interrupt ? ok(code) : content(code)\n  }\n\n  function content(code) {\n    if (code === null) {\n      return after(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return effects.attempt(\n        closingFenceConstruct,\n        after,\n        initialPrefix\n          ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1)\n          : content\n      )\n    }\n\n    effects.enter('codeFlowValue')\n    return contentContinue(code)\n  }\n\n  function contentContinue(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return content(code)\n    }\n\n    effects.consume(code)\n    return contentContinue\n  }\n\n  function after(code) {\n    effects.exit('codeFenced')\n    return ok(code)\n  }\n\n  function tokenizeClosingFence(effects, ok, nok) {\n    var size = 0\n    return factorySpace(\n      effects,\n      closingSequenceStart,\n      'linePrefix',\n      this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n        ? undefined\n        : 4\n    )\n\n    function closingSequenceStart(code) {\n      effects.enter('codeFencedFence')\n      effects.enter('codeFencedFenceSequence')\n      return closingSequence(code)\n    }\n\n    function closingSequence(code) {\n      if (code === marker) {\n        effects.consume(code)\n        size++\n        return closingSequence\n      }\n\n      if (size < sizeOpen) return nok(code)\n      effects.exit('codeFencedFenceSequence')\n      return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n    }\n\n    function closingSequenceEnd(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit('codeFencedFence')\n        return ok(code)\n      }\n\n      return nok(code)\n    }\n  }\n}\n\nmodule.exports = codeFenced\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar factorySpace = require('./factory-space.js')\n\nvar codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented,\n  resolve: resolveCodeIndented\n}\nvar indentedContentConstruct = {\n  tokenize: tokenizeIndentedContent,\n  partial: true\n}\n\nfunction resolveCodeIndented(events, context) {\n  var code = {\n    type: 'codeIndented',\n    start: events[0][1].start,\n    end: events[events.length - 1][1].end\n  }\n  chunkedSplice(events, 0, 0, [['enter', code, context]])\n  chunkedSplice(events, events.length, 0, [['exit', code, context]])\n  return events\n}\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  return effects.attempt(indentedContentConstruct, afterPrefix, nok)\n\n  function afterPrefix(code) {\n    if (code === null) {\n      return ok(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)\n    }\n\n    effects.enter('codeFlowValue')\n    return content(code)\n  }\n\n  function content(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return afterPrefix(code)\n    }\n\n    effects.consume(code)\n    return content\n  }\n}\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n  var self = this\n  return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n\n  function afterPrefix(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n    }\n\n    return prefixSize(self.events, 'linePrefix') < 4 ? nok(code) : ok(code)\n  }\n}\n\nmodule.exports = codeIndented\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar codeText = {\n  name: 'codeText',\n  tokenize: tokenizeCodeText,\n  resolve: resolveCodeText,\n  previous: previous\n}\n\nfunction resolveCodeText(events) {\n  var tailExitIndex = events.length - 4\n  var headEnterIndex = 3\n  var index\n  var enter // If we start and end with an EOL or a space.\n\n  if (\n    (events[headEnterIndex][1].type === 'lineEnding' ||\n      events[headEnterIndex][1].type === 'space') &&\n    (events[tailExitIndex][1].type === 'lineEnding' ||\n      events[tailExitIndex][1].type === 'space')\n  ) {\n    index = headEnterIndex // And we have data.\n\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === 'codeTextData') {\n        // Then we have padding.\n        events[tailExitIndex][1].type = events[headEnterIndex][1].type =\n          'codeTextPadding'\n        headEnterIndex += 2\n        tailExitIndex -= 2\n        break\n      }\n    }\n  } // Merge adjacent spaces and data.\n\n  index = headEnterIndex - 1\n  tailExitIndex++\n\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n        enter = index\n      }\n    } else if (\n      index === tailExitIndex ||\n      events[index][1].type === 'lineEnding'\n    ) {\n      events[enter][1].type = 'codeTextData'\n\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end\n        events.splice(enter + 2, index - enter - 2)\n        tailExitIndex -= index - enter - 2\n        index = enter + 2\n      }\n\n      enter = undefined\n    }\n  }\n\n  return events\n}\n\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return (\n    code !== 96 ||\n    this.events[this.events.length - 1][1].type === 'characterEscape'\n  )\n}\n\nfunction tokenizeCodeText(effects, ok, nok) {\n  var sizeOpen = 0\n  var size\n  var token\n  return start\n\n  function start(code) {\n    effects.enter('codeText')\n    effects.enter('codeTextSequence')\n    return openingSequence(code)\n  }\n\n  function openingSequence(code) {\n    if (code === 96) {\n      effects.consume(code)\n      sizeOpen++\n      return openingSequence\n    }\n\n    effects.exit('codeTextSequence')\n    return gap(code)\n  }\n\n  function gap(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code)\n    } // Closing fence?\n    // Could also be data.\n\n    if (code === 96) {\n      token = effects.enter('codeTextSequence')\n      size = 0\n      return closingSequence(code)\n    } // Tabs don’t work, and virtual spaces don’t make sense.\n\n    if (code === 32) {\n      effects.enter('space')\n      effects.consume(code)\n      effects.exit('space')\n      return gap\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return gap\n    } // Data.\n\n    effects.enter('codeTextData')\n    return data(code)\n  } // In code.\n\n  function data(code) {\n    if (\n      code === null ||\n      code === 32 ||\n      code === 96 ||\n      markdownLineEnding(code)\n    ) {\n      effects.exit('codeTextData')\n      return gap(code)\n    }\n\n    effects.consume(code)\n    return data\n  } // Closing fence.\n\n  function closingSequence(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code)\n      size++\n      return closingSequence\n    } // Done!\n\n    if (size === sizeOpen) {\n      effects.exit('codeTextSequence')\n      effects.exit('codeText')\n      return ok(code)\n    } // More or less accents: mark as data.\n\n    token.type = 'codeTextData'\n    return data(code)\n  }\n}\n\nmodule.exports = codeText\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar subtokenize = require('../util/subtokenize.js')\nvar factorySpace = require('./factory-space.js')\n\n// No name because it must not be turned off.\nvar content = {\n  tokenize: tokenizeContent,\n  resolve: resolveContent,\n  interruptible: true,\n  lazy: true\n}\nvar continuationConstruct = {\n  tokenize: tokenizeContinuation,\n  partial: true\n} // Content is transparent: it’s parsed right now. That way, definitions are also\n// parsed right now: before text in paragraphs (specifically, media) are parsed.\n\nfunction resolveContent(events) {\n  subtokenize(events)\n  return events\n}\n\nfunction tokenizeContent(effects, ok) {\n  var previous\n  return start\n\n  function start(code) {\n    effects.enter('content')\n    previous = effects.enter('chunkContent', {\n      contentType: 'content'\n    })\n    return data(code)\n  }\n\n  function data(code) {\n    if (code === null) {\n      return contentEnd(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.check(\n        continuationConstruct,\n        contentContinue,\n        contentEnd\n      )(code)\n    } // Data.\n\n    effects.consume(code)\n    return data\n  }\n\n  function contentEnd(code) {\n    effects.exit('chunkContent')\n    effects.exit('content')\n    return ok(code)\n  }\n\n  function contentContinue(code) {\n    effects.consume(code)\n    effects.exit('chunkContent')\n    previous = previous.next = effects.enter('chunkContent', {\n      contentType: 'content',\n      previous: previous\n    })\n    return data\n  }\n}\n\nfunction tokenizeContinuation(effects, ok, nok) {\n  var self = this\n  return startLookahead\n\n  function startLookahead(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, prefixed, 'linePrefix')\n  }\n\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    if (\n      self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ||\n      prefixSize(self.events, 'linePrefix') < 4\n    ) {\n      return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n    }\n\n    return ok(code)\n  }\n}\n\nmodule.exports = content\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factorySpace = require('./factory-space.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n}\nvar titleConstruct = {\n  tokenize: tokenizeTitle,\n  partial: true\n}\n\nfunction tokenizeDefinition(effects, ok, nok) {\n  var self = this\n  var identifier\n  return start\n\n  function start(code) {\n    effects.enter('definition')\n    return factoryLabel.call(\n      self,\n      effects,\n      labelAfter,\n      nok,\n      'definitionLabel',\n      'definitionLabelMarker',\n      'definitionLabelString'\n    )(code)\n  }\n\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(\n      self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n    )\n\n    if (code === 58) {\n      effects.enter('definitionMarker')\n      effects.consume(code)\n      effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n      return factoryWhitespace(\n        effects,\n        factoryDestination(\n          effects,\n          effects.attempt(\n            titleConstruct,\n            factorySpace(effects, after, 'whitespace'),\n            factorySpace(effects, after, 'whitespace')\n          ),\n          nok,\n          'definitionDestination',\n          'definitionDestinationLiteral',\n          'definitionDestinationLiteralMarker',\n          'definitionDestinationRaw',\n          'definitionDestinationString'\n        )\n      )\n    }\n\n    return nok(code)\n  }\n\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('definition')\n\n      if (self.parser.defined.indexOf(identifier) < 0) {\n        self.parser.defined.push(identifier)\n      }\n\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\nfunction tokenizeTitle(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, before)(code)\n      : nok(code)\n  }\n\n  function before(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(\n        effects,\n        factorySpace(effects, after, 'whitespace'),\n        nok,\n        'definitionTitle',\n        'definitionTitleMarker',\n        'definitionTitleString'\n      )(code)\n    }\n\n    return nok(code)\n  }\n\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n  }\n}\n\nmodule.exports = definition\n","'use strict'\n\nvar asciiControl = require('../character/ascii-control.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\n// eslint-disable-next-line max-params\nfunction destinationFactory(\n  effects,\n  ok,\n  nok,\n  type,\n  literalType,\n  literalMarkerType,\n  rawType,\n  stringType,\n  max\n) {\n  var limit = max || Infinity\n  var balance = 0\n  return start\n\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type)\n      effects.enter(literalType)\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      return destinationEnclosedBefore\n    }\n\n    if (asciiControl(code) || code === 41) {\n      return nok(code)\n    }\n\n    effects.enter(type)\n    effects.enter(rawType)\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return destinationRaw(code)\n  }\n\n  function destinationEnclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      effects.exit(literalType)\n      effects.exit(type)\n      return ok\n    }\n\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return destinationEnclosed(code)\n  }\n\n  function destinationEnclosed(code) {\n    if (code === 62) {\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      return destinationEnclosedBefore(code)\n    }\n\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n  }\n\n  function destinationEnclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code)\n      return destinationEnclosed\n    }\n\n    return destinationEnclosed(code)\n  }\n\n  function destinationRaw(code) {\n    if (code === 40) {\n      if (++balance > limit) return nok(code)\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    if (code === 41) {\n      if (!balance--) {\n        effects.exit('chunkString')\n        effects.exit(stringType)\n        effects.exit(rawType)\n        effects.exit(type)\n        return ok(code)\n      }\n\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      if (balance) return nok(code)\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      effects.exit(rawType)\n      effects.exit(type)\n      return ok(code)\n    }\n\n    if (asciiControl(code)) return nok(code)\n    effects.consume(code)\n    return code === 92 ? destinationRawEscape : destinationRaw\n  }\n\n  function destinationRawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    return destinationRaw(code)\n  }\n}\n\nmodule.exports = destinationFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\n\n// eslint-disable-next-line max-params\nfunction labelFactory(effects, ok, nok, type, markerType, stringType) {\n  var self = this\n  var size = 0\n  var data\n  return start\n\n  function start(code) {\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    effects.enter(stringType)\n    return atBreak\n  }\n\n  function atBreak(code) {\n    if (\n      code === null ||\n      code === 91 ||\n      (code === 93 && !data) ||\n      /* c8 ignore next */\n      (code === 94 &&\n        /* c8 ignore next */\n        !size &&\n        /* c8 ignore next */\n        '_hiddenFootnoteSupport' in self.parser.constructs) ||\n      size > 999\n    ) {\n      return nok(code)\n    }\n\n    if (code === 93) {\n      effects.exit(stringType)\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return atBreak\n    }\n\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return label(code)\n  }\n\n  function label(code) {\n    if (\n      code === null ||\n      code === 91 ||\n      code === 93 ||\n      markdownLineEnding(code) ||\n      size++ > 999\n    ) {\n      effects.exit('chunkString')\n      return atBreak(code)\n    }\n\n    effects.consume(code)\n    data = data || !markdownSpace(code)\n    return code === 92 ? labelEscape : label\n  }\n\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code)\n      size++\n      return label\n    }\n\n    return label(code)\n  }\n}\n\nmodule.exports = labelFactory\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\n\nfunction spaceFactory(effects, ok, type, max) {\n  var limit = max ? max - 1 : Infinity\n  var size = 0\n  return start\n\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type)\n      return prefix(code)\n    }\n\n    return ok(code)\n  }\n\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code)\n      return prefix\n    }\n\n    effects.exit(type)\n    return ok(code)\n  }\n}\n\nmodule.exports = spaceFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction titleFactory(effects, ok, nok, type, markerType, stringType) {\n  var marker\n  return start\n\n  function start(code) {\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    marker = code === 40 ? 41 : code\n    return atFirstTitleBreak\n  }\n\n  function atFirstTitleBreak(code) {\n    if (code === marker) {\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    effects.enter(stringType)\n    return atTitleBreak(code)\n  }\n\n  function atTitleBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType)\n      return atFirstTitleBreak(marker)\n    }\n\n    if (code === null) {\n      return nok(code)\n    } // Note: blank lines can’t exist in content.\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return factorySpace(effects, atTitleBreak, 'linePrefix')\n    }\n\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return title(code)\n  }\n\n  function title(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      return atTitleBreak(code)\n    }\n\n    effects.consume(code)\n    return code === 92 ? titleEscape : title\n  }\n\n  function titleEscape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code)\n      return title\n    }\n\n    return title(code)\n  }\n}\n\nmodule.exports = titleFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction whitespaceFactory(effects, ok) {\n  var seen\n  return start\n\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      seen = true\n      return start\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(\n        effects,\n        start,\n        seen ? 'linePrefix' : 'lineSuffix'\n      )(code)\n    }\n\n    return ok(code)\n  }\n}\n\nmodule.exports = whitespaceFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n}\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    effects.enter('hardBreakEscape')\n    effects.enter('escapeMarker')\n    effects.consume(code)\n    return open\n  }\n\n  function open(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit('escapeMarker')\n      effects.exit('hardBreakEscape')\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = hardBreakEscape\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar factorySpace = require('./factory-space.js')\n\nvar headingAtx = {\n  name: 'headingAtx',\n  tokenize: tokenizeHeadingAtx,\n  resolve: resolveHeadingAtx\n}\n\nfunction resolveHeadingAtx(events, context) {\n  var contentEnd = events.length - 2\n  var contentStart = 3\n  var content\n  var text // Prefix whitespace, part of the opening.\n\n  if (events[contentStart][1].type === 'whitespace') {\n    contentStart += 2\n  } // Suffix whitespace, part of the closing.\n\n  if (\n    contentEnd - 2 > contentStart &&\n    events[contentEnd][1].type === 'whitespace'\n  ) {\n    contentEnd -= 2\n  }\n\n  if (\n    events[contentEnd][1].type === 'atxHeadingSequence' &&\n    (contentStart === contentEnd - 1 ||\n      (contentEnd - 4 > contentStart &&\n        events[contentEnd - 2][1].type === 'whitespace'))\n  ) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n  }\n\n  if (contentEnd > contentStart) {\n    content = {\n      type: 'atxHeadingText',\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    }\n    text = {\n      type: 'chunkText',\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: 'text'\n    }\n    chunkedSplice(events, contentStart, contentEnd - contentStart + 1, [\n      ['enter', content, context],\n      ['enter', text, context],\n      ['exit', text, context],\n      ['exit', content, context]\n    ])\n  }\n\n  return events\n}\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  var self = this\n  var size = 0\n  return start\n\n  function start(code) {\n    effects.enter('atxHeading')\n    effects.enter('atxHeadingSequence')\n    return fenceOpenInside(code)\n  }\n\n  function fenceOpenInside(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code)\n      return fenceOpenInside\n    }\n\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingSequence')\n      return self.interrupt ? ok(code) : headingBreak(code)\n    }\n\n    return nok(code)\n  }\n\n  function headingBreak(code) {\n    if (code === 35) {\n      effects.enter('atxHeadingSequence')\n      return sequence(code)\n    }\n\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('atxHeading')\n      return ok(code)\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headingBreak, 'whitespace')(code)\n    }\n\n    effects.enter('atxHeadingText')\n    return data(code)\n  }\n\n  function sequence(code) {\n    if (code === 35) {\n      effects.consume(code)\n      return sequence\n    }\n\n    effects.exit('atxHeadingSequence')\n    return headingBreak(code)\n  }\n\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingText')\n      return headingBreak(code)\n    }\n\n    effects.consume(code)\n    return data\n  }\n}\n\nmodule.exports = headingAtx\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar fromCharCode = require('../constant/from-char-code.js')\nvar htmlBlockNames = require('../constant/html-block-names.js')\nvar htmlRawNames = require('../constant/html-raw-names.js')\nvar partialBlankLine = require('./partial-blank-line.js')\n\nvar htmlFlow = {\n  name: 'htmlFlow',\n  tokenize: tokenizeHtmlFlow,\n  resolveTo: resolveToHtmlFlow,\n  concrete: true\n}\nvar nextBlankConstruct = {\n  tokenize: tokenizeNextBlank,\n  partial: true\n}\n\nfunction resolveToHtmlFlow(events) {\n  var index = events.length\n\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n      break\n    }\n  }\n\n  if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n    events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n    events.splice(index - 2, 2)\n  }\n\n  return events\n}\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  var self = this\n  var kind\n  var startTag\n  var buffer\n  var index\n  var marker\n  return start\n\n  function start(code) {\n    effects.enter('htmlFlow')\n    effects.enter('htmlFlowData')\n    effects.consume(code)\n    return open\n  }\n\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationStart\n    }\n\n    if (code === 47) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      buffer = fromCharCode(code)\n      startTag = true\n      return tagName\n    }\n\n    return nok(code)\n  }\n\n  function declarationStart(code) {\n    if (code === 45) {\n      effects.consume(code)\n      kind = 2\n      return commentOpenInside\n    }\n\n    if (code === 91) {\n      effects.consume(code)\n      kind = 5\n      buffer = 'CDATA['\n      index = 0\n      return cdataOpenInside\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      kind = 4\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    return nok(code)\n  }\n\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    return nok(code)\n  }\n\n  function cdataOpenInside(code) {\n    if (code === buffer.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === buffer.length\n        ? self.interrupt\n          ? ok\n          : continuation\n        : cdataOpenInside\n    }\n\n    return nok(code)\n  }\n\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      buffer = fromCharCode(code)\n      return tagName\n    }\n\n    return nok(code)\n  }\n\n  function tagName(code) {\n    if (\n      code === null ||\n      code === 47 ||\n      code === 62 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      if (\n        code !== 47 &&\n        startTag &&\n        htmlRawNames.indexOf(buffer.toLowerCase()) > -1\n      ) {\n        kind = 1\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n\n      if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {\n        kind = 6\n\n        if (code === 47) {\n          effects.consume(code)\n          return basicSelfClosing\n        }\n\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n\n      kind = 7 // Do not support complete HTML when interrupting.\n\n      return self.interrupt\n        ? nok(code)\n        : startTag\n        ? completeAttributeNameBefore(code)\n        : completeClosingTagAfter(code)\n    }\n\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      buffer += fromCharCode(code)\n      return tagName\n    }\n\n    return nok(code)\n  }\n\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return self.interrupt ? ok : continuation\n    }\n\n    return nok(code)\n  }\n\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeClosingTagAfter\n    }\n\n    return completeEnd(code)\n  }\n\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return completeEnd\n    }\n\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameBefore\n    }\n\n    return completeEnd(code)\n  }\n\n  function completeAttributeName(code) {\n    if (\n      code === 45 ||\n      code === 46 ||\n      code === 58 ||\n      code === 95 ||\n      asciiAlphanumeric(code)\n    ) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n\n    return completeAttributeNameAfter(code)\n  }\n\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameAfter\n    }\n\n    return completeAttributeNameBefore(code)\n  }\n\n  function completeAttributeValueBefore(code) {\n    if (\n      code === null ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 34 || code === 39) {\n      effects.consume(code)\n      marker = code\n      return completeAttributeValueQuoted\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n\n    marker = undefined\n    return completeAttributeValueUnquoted(code)\n  }\n\n  function completeAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return completeAttributeValueQuotedAfter\n    }\n\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return completeAttributeValueQuoted\n  }\n\n  function completeAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      return completeAttributeNameAfter(code)\n    }\n\n    effects.consume(code)\n    return completeAttributeValueUnquoted\n  }\n\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code)\n    }\n\n    return nok(code)\n  }\n\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return completeAfter\n    }\n\n    return nok(code)\n  }\n\n  function completeAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAfter\n    }\n\n    return code === null || markdownLineEnding(code)\n      ? continuation(code)\n      : nok(code)\n  }\n\n  function continuation(code) {\n    if (code === 45 && kind === 2) {\n      effects.consume(code)\n      return continuationCommentInside\n    }\n\n    if (code === 60 && kind === 1) {\n      effects.consume(code)\n      return continuationRawTagOpen\n    }\n\n    if (code === 62 && kind === 4) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    if (code === 63 && kind === 3) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    if (code === 93 && kind === 5) {\n      effects.consume(code)\n      return continuationCharacterDataInside\n    }\n\n    if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n      return effects.check(\n        nextBlankConstruct,\n        continuationClose,\n        continuationAtLineEnding\n      )(code)\n    }\n\n    if (code === null || markdownLineEnding(code)) {\n      return continuationAtLineEnding(code)\n    }\n\n    effects.consume(code)\n    return continuation\n  }\n\n  function continuationAtLineEnding(code) {\n    effects.exit('htmlFlowData')\n    return htmlContinueStart(code)\n  }\n\n  function htmlContinueStart(code) {\n    if (code === null) {\n      return done(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return htmlContinueStart\n    }\n\n    effects.enter('htmlFlowData')\n    return continuation(code)\n  }\n\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code)\n      buffer = ''\n      return continuationRawEndTag\n    }\n\n    return continuation(code)\n  }\n\n  function continuationRawEndTag(code) {\n    if (code === 62 && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    if (asciiAlpha(code) && buffer.length < 8) {\n      effects.consume(code)\n      buffer += fromCharCode(code)\n      return continuationRawEndTag\n    }\n\n    return continuation(code)\n  }\n\n  function continuationCharacterDataInside(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    return continuation(code)\n  }\n\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('htmlFlowData')\n      return done(code)\n    }\n\n    effects.consume(code)\n    return continuationClose\n  }\n\n  function done(code) {\n    effects.exit('htmlFlow')\n    return ok(code)\n  }\n}\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    effects.exit('htmlFlowData')\n    effects.enter('lineEndingBlank')\n    effects.consume(code)\n    effects.exit('lineEndingBlank')\n    return effects.attempt(partialBlankLine, ok, nok)\n  }\n}\n\nmodule.exports = htmlFlow\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n}\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n  var self = this\n  var marker\n  var buffer\n  var index\n  var returnState\n  return start\n\n  function start(code) {\n    effects.enter('htmlText')\n    effects.enter('htmlTextData')\n    effects.consume(code)\n    return open\n  }\n\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationOpen\n    }\n\n    if (code === 47) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      return instruction\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n\n    return nok(code)\n  }\n\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentOpen\n    }\n\n    if (code === 91) {\n      effects.consume(code)\n      buffer = 'CDATA['\n      index = 0\n      return cdataOpen\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return declaration\n    }\n\n    return nok(code)\n  }\n\n  function commentOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentStart\n    }\n\n    return nok(code)\n  }\n\n  function commentStart(code) {\n    if (code === null || code === 62) {\n      return nok(code)\n    }\n\n    if (code === 45) {\n      effects.consume(code)\n      return commentStartDash\n    }\n\n    return comment(code)\n  }\n\n  function commentStartDash(code) {\n    if (code === null || code === 62) {\n      return nok(code)\n    }\n\n    return comment(code)\n  }\n\n  function comment(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 45) {\n      effects.consume(code)\n      return commentClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = comment\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return comment\n  }\n\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return end\n    }\n\n    return comment(code)\n  }\n\n  function cdataOpen(code) {\n    if (code === buffer.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === buffer.length ? cdata : cdataOpen\n    }\n\n    return nok(code)\n  }\n\n  function cdata(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 93) {\n      effects.consume(code)\n      return cdataClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = cdata\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return cdata\n  }\n\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n\n    return cdata(code)\n  }\n\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code)\n    }\n\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n\n    return cdata(code)\n  }\n\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = declaration\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return declaration\n  }\n\n  function instruction(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      return instructionClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = instruction\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return instruction\n  }\n\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code)\n  }\n\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n\n    return nok(code)\n  }\n\n  function tagClose(code) {\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n\n    return tagCloseBetween(code)\n  }\n\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagCloseBetween\n    }\n\n    return end(code)\n  }\n\n  function tagOpen(code) {\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    return nok(code)\n  }\n\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return end\n    }\n\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenBetween\n    }\n\n    return end(code)\n  }\n\n  function tagOpenAttributeName(code) {\n    if (\n      code === 45 ||\n      code === 46 ||\n      code === 58 ||\n      code === 95 ||\n      asciiAlphanumeric(code)\n    ) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n\n    return tagOpenAttributeNameAfter(code)\n  }\n\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeNameAfter\n    }\n\n    return tagOpenBetween(code)\n  }\n\n  function tagOpenAttributeValueBefore(code) {\n    if (\n      code === null ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 34 || code === 39) {\n      effects.consume(code)\n      marker = code\n      return tagOpenAttributeValueQuoted\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n\n    effects.consume(code)\n    marker = undefined\n    return tagOpenAttributeValueUnquoted\n  }\n\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return tagOpenAttributeValueQuotedAfter\n    }\n\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return tagOpenAttributeValueQuoted\n  }\n\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    return nok(code)\n  }\n\n  function tagOpenAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 60 ||\n      code === 61 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    effects.consume(code)\n    return tagOpenAttributeValueUnquoted\n  } // We can’t have blank lines in content, so no need to worry about empty\n  // tokens.\n\n  function atLineEnding(code) {\n    effects.exit('htmlTextData')\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(\n      effects,\n      afterPrefix,\n      'linePrefix',\n      self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n        ? undefined\n        : 4\n    )\n  }\n\n  function afterPrefix(code) {\n    effects.enter('htmlTextData')\n    return returnState(code)\n  }\n\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code)\n      effects.exit('htmlTextData')\n      effects.exit('htmlText')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = htmlText\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar shallow = require('../util/shallow.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryTitle = require('./factory-title.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\n\nvar labelEnd = {\n  name: 'labelEnd',\n  tokenize: tokenizeLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  resolveAll: resolveAllLabelEnd\n}\nvar resourceConstruct = {\n  tokenize: tokenizeResource\n}\nvar fullReferenceConstruct = {\n  tokenize: tokenizeFullReference\n}\nvar collapsedReferenceConstruct = {\n  tokenize: tokenizeCollapsedReference\n}\n\nfunction resolveAllLabelEnd(events) {\n  var index = -1\n  var token\n\n  while (++index < events.length) {\n    token = events[index][1]\n\n    if (\n      !token._used &&\n      (token.type === 'labelImage' ||\n        token.type === 'labelLink' ||\n        token.type === 'labelEnd')\n    ) {\n      // Remove the marker.\n      events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n      token.type = 'data'\n      index++\n    }\n  }\n\n  return events\n}\n\nfunction resolveToLabelEnd(events, context) {\n  var index = events.length\n  var offset = 0\n  var group\n  var label\n  var text\n  var token\n  var open\n  var close\n  var media // Find an opening.\n\n  while (index--) {\n    token = events[index][1]\n\n    if (open) {\n      // If we see another link, or inactive link label, we’ve been here before.\n      if (\n        token.type === 'link' ||\n        (token.type === 'labelLink' && token._inactive)\n      ) {\n        break\n      } // Mark other link openings as inactive, as we can’t have links in\n      // links.\n\n      if (events[index][0] === 'enter' && token.type === 'labelLink') {\n        token._inactive = true\n      }\n    } else if (close) {\n      if (\n        events[index][0] === 'enter' &&\n        (token.type === 'labelImage' || token.type === 'labelLink') &&\n        !token._balanced\n      ) {\n        open = index\n\n        if (token.type !== 'labelLink') {\n          offset = 2\n          break\n        }\n      }\n    } else if (token.type === 'labelEnd') {\n      close = index\n    }\n  }\n\n  group = {\n    type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n    start: shallow(events[open][1].start),\n    end: shallow(events[events.length - 1][1].end)\n  }\n  label = {\n    type: 'label',\n    start: shallow(events[open][1].start),\n    end: shallow(events[close][1].end)\n  }\n  text = {\n    type: 'labelText',\n    start: shallow(events[open + offset + 2][1].end),\n    end: shallow(events[close - 2][1].start)\n  }\n  media = [\n    ['enter', group, context],\n    ['enter', label, context]\n  ] // Opening marker.\n\n  media = chunkedPush(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n  media = chunkedPush(media, [['enter', text, context]]) // Between.\n\n  media = chunkedPush(\n    media,\n    resolveAll(\n      context.parser.constructs.insideSpan.null,\n      events.slice(open + offset + 4, close - 3),\n      context\n    )\n  ) // Text close, marker close, label close.\n\n  media = chunkedPush(media, [\n    ['exit', text, context],\n    events[close - 2],\n    events[close - 1],\n    ['exit', label, context]\n  ]) // Reference, resource, or so.\n\n  media = chunkedPush(media, events.slice(close + 1)) // Media close.\n\n  media = chunkedPush(media, [['exit', group, context]])\n  chunkedSplice(events, open, events.length, media)\n  return events\n}\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  var self = this\n  var index = self.events.length\n  var labelStart\n  var defined // Find an opening.\n\n  while (index--) {\n    if (\n      (self.events[index][1].type === 'labelImage' ||\n        self.events[index][1].type === 'labelLink') &&\n      !self.events[index][1]._balanced\n    ) {\n      labelStart = self.events[index][1]\n      break\n    }\n  }\n\n  return start\n\n  function start(code) {\n    if (!labelStart) {\n      return nok(code)\n    } // It’s a balanced bracket, but contains a link.\n\n    if (labelStart._inactive) return balanced(code)\n    defined =\n      self.parser.defined.indexOf(\n        normalizeIdentifier(\n          self.sliceSerialize({\n            start: labelStart.end,\n            end: self.now()\n          })\n        )\n      ) > -1\n    effects.enter('labelEnd')\n    effects.enter('labelMarker')\n    effects.consume(code)\n    effects.exit('labelMarker')\n    effects.exit('labelEnd')\n    return afterLabelEnd\n  }\n\n  function afterLabelEnd(code) {\n    // Resource: `[asd](fgh)`.\n    if (code === 40) {\n      return effects.attempt(\n        resourceConstruct,\n        ok,\n        defined ? ok : balanced\n      )(code)\n    } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n    if (code === 91) {\n      return effects.attempt(\n        fullReferenceConstruct,\n        ok,\n        defined\n          ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n          : balanced\n      )(code)\n    } // Shortcut reference: `[asd]`?\n\n    return defined ? ok(code) : balanced(code)\n  }\n\n  function balanced(code) {\n    labelStart._balanced = true\n    return nok(code)\n  }\n}\n\nfunction tokenizeResource(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    effects.enter('resource')\n    effects.enter('resourceMarker')\n    effects.consume(code)\n    effects.exit('resourceMarker')\n    return factoryWhitespace(effects, open)\n  }\n\n  function open(code) {\n    if (code === 41) {\n      return end(code)\n    }\n\n    return factoryDestination(\n      effects,\n      destinationAfter,\n      nok,\n      'resourceDestination',\n      'resourceDestinationLiteral',\n      'resourceDestinationLiteralMarker',\n      'resourceDestinationRaw',\n      'resourceDestinationString',\n      3\n    )(code)\n  }\n\n  function destinationAfter(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, between)(code)\n      : end(code)\n  }\n\n  function between(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(\n        effects,\n        factoryWhitespace(effects, end),\n        nok,\n        'resourceTitle',\n        'resourceTitleMarker',\n        'resourceTitleString'\n      )(code)\n    }\n\n    return end(code)\n  }\n\n  function end(code) {\n    if (code === 41) {\n      effects.enter('resourceMarker')\n      effects.consume(code)\n      effects.exit('resourceMarker')\n      effects.exit('resource')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\nfunction tokenizeFullReference(effects, ok, nok) {\n  var self = this\n  return start\n\n  function start(code) {\n    return factoryLabel.call(\n      self,\n      effects,\n      afterLabel,\n      nok,\n      'reference',\n      'referenceMarker',\n      'referenceString'\n    )(code)\n  }\n\n  function afterLabel(code) {\n    return self.parser.defined.indexOf(\n      normalizeIdentifier(\n        self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n      )\n    ) < 0\n      ? nok(code)\n      : ok(code)\n  }\n}\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    effects.enter('reference')\n    effects.enter('referenceMarker')\n    effects.consume(code)\n    effects.exit('referenceMarker')\n    return open\n  }\n\n  function open(code) {\n    if (code === 93) {\n      effects.enter('referenceMarker')\n      effects.consume(code)\n      effects.exit('referenceMarker')\n      effects.exit('reference')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = labelEnd\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartImage = {\n  name: 'labelStartImage',\n  tokenize: tokenizeLabelStartImage,\n  resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  var self = this\n  return start\n\n  function start(code) {\n    effects.enter('labelImage')\n    effects.enter('labelImageMarker')\n    effects.consume(code)\n    effects.exit('labelImageMarker')\n    return open\n  }\n\n  function open(code) {\n    if (code === 91) {\n      effects.enter('labelMarker')\n      effects.consume(code)\n      effects.exit('labelMarker')\n      effects.exit('labelImage')\n      return after\n    }\n\n    return nok(code)\n  }\n\n  function after(code) {\n    /* c8 ignore next */\n    return code === 94 &&\n      /* c8 ignore next */\n      '_hiddenFootnoteSupport' in self.parser.constructs\n      ? /* c8 ignore next */\n        nok(code)\n      : ok(code)\n  }\n}\n\nmodule.exports = labelStartImage\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartLink = {\n  name: 'labelStartLink',\n  tokenize: tokenizeLabelStartLink,\n  resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  var self = this\n  return start\n\n  function start(code) {\n    effects.enter('labelLink')\n    effects.enter('labelMarker')\n    effects.consume(code)\n    effects.exit('labelMarker')\n    effects.exit('labelLink')\n    return after\n  }\n\n  function after(code) {\n    /* c8 ignore next */\n    return code === 94 &&\n      /* c8 ignore next */\n      '_hiddenFootnoteSupport' in self.parser.constructs\n      ? /* c8 ignore next */\n        nok(code)\n      : ok(code)\n  }\n}\n\nmodule.exports = labelStartLink\n","'use strict'\n\nvar factorySpace = require('./factory-space.js')\n\nvar lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n}\n\nfunction tokenizeLineEnding(effects, ok) {\n  return start\n\n  function start(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, ok, 'linePrefix')\n  }\n}\n\nmodule.exports = lineEnding\n","'use strict'\n\nvar asciiDigit = require('../character/ascii-digit.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar sizeChunks = require('../util/size-chunks.js')\nvar factorySpace = require('./factory-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar thematicBreak = require('./thematic-break.js')\n\nvar list = {\n  name: 'list',\n  tokenize: tokenizeListStart,\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd\n}\nvar listItemPrefixWhitespaceConstruct = {\n  tokenize: tokenizeListItemPrefixWhitespace,\n  partial: true\n}\nvar indentConstruct = {\n  tokenize: tokenizeIndent,\n  partial: true\n}\n\nfunction tokenizeListStart(effects, ok, nok) {\n  var self = this\n  var initialSize = prefixSize(self.events, 'linePrefix')\n  var size = 0\n  return start\n\n  function start(code) {\n    var kind =\n      self.containerState.type ||\n      (code === 42 || code === 43 || code === 45\n        ? 'listUnordered'\n        : 'listOrdered')\n\n    if (\n      kind === 'listUnordered'\n        ? !self.containerState.marker || code === self.containerState.marker\n        : asciiDigit(code)\n    ) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind\n        effects.enter(kind, {\n          _container: true\n        })\n      }\n\n      if (kind === 'listUnordered') {\n        effects.enter('listItemPrefix')\n        return code === 42 || code === 45\n          ? effects.check(thematicBreak, nok, atMarker)(code)\n          : atMarker(code)\n      }\n\n      if (!self.interrupt || code === 49) {\n        effects.enter('listItemPrefix')\n        effects.enter('listItemValue')\n        return inside(code)\n      }\n    }\n\n    return nok(code)\n  }\n\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code)\n      return inside\n    }\n\n    if (\n      (!self.interrupt || size < 2) &&\n      (self.containerState.marker\n        ? code === self.containerState.marker\n        : code === 41 || code === 46)\n    ) {\n      effects.exit('listItemValue')\n      return atMarker(code)\n    }\n\n    return nok(code)\n  }\n\n  function atMarker(code) {\n    effects.enter('listItemMarker')\n    effects.consume(code)\n    effects.exit('listItemMarker')\n    self.containerState.marker = self.containerState.marker || code\n    return effects.check(\n      partialBlankLine, // Can’t be empty when interrupting.\n      self.interrupt ? nok : onBlank,\n      effects.attempt(\n        listItemPrefixWhitespaceConstruct,\n        endOfPrefix,\n        otherPrefix\n      )\n    )\n  }\n\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true\n    initialSize++\n    return endOfPrefix(code)\n  }\n\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter('listItemPrefixWhitespace')\n      effects.consume(code)\n      effects.exit('listItemPrefixWhitespace')\n      return endOfPrefix\n    }\n\n    return nok(code)\n  }\n\n  function endOfPrefix(code) {\n    self.containerState.size =\n      initialSize + sizeChunks(self.sliceStream(effects.exit('listItemPrefix')))\n    return ok(code)\n  }\n}\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n  var self = this\n  self.containerState._closeFlow = undefined\n  return effects.check(partialBlankLine, onBlank, notBlank)\n\n  function onBlank(code) {\n    self.containerState.furtherBlankLines =\n      self.containerState.furtherBlankLines ||\n      self.containerState.initialBlankLine // We have a blank line.\n    // Still, try to consume at most the items size.\n\n    return factorySpace(\n      effects,\n      ok,\n      'listItemIndent',\n      self.containerState.size + 1\n    )(code)\n  }\n\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n      return notInCurrentItem(code)\n    }\n\n    self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n  }\n\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n    self.interrupt = undefined\n    return factorySpace(\n      effects,\n      effects.attempt(list, ok, nok),\n      'linePrefix',\n      self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n        ? undefined\n        : 4\n    )(code)\n  }\n}\n\nfunction tokenizeIndent(effects, ok, nok) {\n  var self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemIndent',\n    self.containerState.size + 1\n  )\n\n  function afterPrefix(code) {\n    return prefixSize(self.events, 'listItemIndent') ===\n      self.containerState.size\n      ? ok(code)\n      : nok(code)\n  }\n}\n\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type)\n}\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  var self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemPrefixWhitespace',\n    self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n      ? undefined\n      : 4 + 1\n  )\n\n  function afterPrefix(code) {\n    return markdownSpace(code) ||\n      !prefixSize(self.events, 'listItemPrefixWhitespace')\n      ? nok(code)\n      : ok(code)\n  }\n}\n\nmodule.exports = list\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nvar partialBlankLine = {\n  tokenize: tokenizePartialBlankLine,\n  partial: true\n}\n\nfunction tokenizePartialBlankLine(effects, ok, nok) {\n  return factorySpace(effects, afterWhitespace, 'linePrefix')\n\n  function afterWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n  }\n}\n\nmodule.exports = partialBlankLine\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar shallow = require('../util/shallow.js')\nvar factorySpace = require('./factory-space.js')\n\nvar setextUnderline = {\n  name: 'setextUnderline',\n  tokenize: tokenizeSetextUnderline,\n  resolveTo: resolveToSetextUnderline\n}\n\nfunction resolveToSetextUnderline(events, context) {\n  var index = events.length\n  var content\n  var text\n  var definition\n  var heading // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === 'content') {\n        content = index\n        break\n      }\n\n      if (events[index][1].type === 'paragraph') {\n        text = index\n      }\n    } // Exit\n    else {\n      if (events[index][1].type === 'content') {\n        // Remove the content end (if needed we’ll add it later)\n        events.splice(index, 1)\n      }\n\n      if (!definition && events[index][1].type === 'definition') {\n        definition = index\n      }\n    }\n  }\n\n  heading = {\n    type: 'setextHeading',\n    start: shallow(events[text][1].start),\n    end: shallow(events[events.length - 1][1].end)\n  } // Change the paragraph to setext heading text.\n\n  events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\n\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context])\n    events.splice(definition + 1, 0, ['exit', events[content][1], context])\n    events[content][1].end = shallow(events[definition][1].end)\n  } else {\n    events[content][1] = heading\n  } // Add the heading exit at the end.\n\n  events.push(['exit', heading, context])\n  return events\n}\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  var self = this\n  var index = self.events.length\n  var marker\n  var paragraph // Find an opening.\n\n  while (index--) {\n    // Skip enter/exit of line ending, line prefix, and content.\n    // We can now either have a definition or a paragraph.\n    if (\n      self.events[index][1].type !== 'lineEnding' &&\n      self.events[index][1].type !== 'linePrefix' &&\n      self.events[index][1].type !== 'content'\n    ) {\n      paragraph = self.events[index][1].type === 'paragraph'\n      break\n    }\n  }\n\n  return start\n\n  function start(code) {\n    if (!self.lazy && (self.interrupt || paragraph)) {\n      effects.enter('setextHeadingLine')\n      effects.enter('setextHeadingLineSequence')\n      marker = code\n      return closingSequence(code)\n    }\n\n    return nok(code)\n  }\n\n  function closingSequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return closingSequence\n    }\n\n    effects.exit('setextHeadingLineSequence')\n    return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n  }\n\n  function closingSequenceEnd(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('setextHeadingLine')\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = setextUnderline\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n}\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  var size = 0\n  var marker\n  return start\n\n  function start(code) {\n    effects.enter('thematicBreak')\n    marker = code\n    return atBreak(code)\n  }\n\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter('thematicBreakSequence')\n      return sequence(code)\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, 'whitespace')(code)\n    }\n\n    if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n      return nok(code)\n    }\n\n    effects.exit('thematicBreak')\n    return ok(code)\n  }\n\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      size++\n      return sequence\n    }\n\n    effects.exit('thematicBreakSequence')\n    return atBreak(code)\n  }\n}\n\nmodule.exports = thematicBreak\n","'use strict'\n\nvar chunkedSplice = require('./chunked-splice.js')\n\nfunction chunkedPush(list, items) {\n  if (list.length) {\n    chunkedSplice(list, list.length, 0, items)\n    return list\n  }\n\n  return items\n}\n\nmodule.exports = chunkedPush\n","'use strict'\n\nvar splice = require('../constant/splice.js')\n\n// causes a stack overflow in V8 when trying to insert 100k items for instance.\n\nfunction chunkedSplice(list, start, remove, items) {\n  var end = list.length\n  var chunkStart = 0\n  var parameters // Make start between zero and `end` (included).\n\n  if (start < 0) {\n    start = -start > end ? 0 : end + start\n  } else {\n    start = start > end ? end : start\n  }\n\n  remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n  if (items.length < 10000) {\n    parameters = Array.from(items)\n    parameters.unshift(start, remove)\n    splice.apply(list, parameters)\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000)\n      parameters.unshift(start, 0)\n      splice.apply(list, parameters)\n      chunkStart += 10000\n      start += 10000\n    }\n  }\n}\n\nmodule.exports = chunkedSplice\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar unicodePunctuation = require('../character/unicode-punctuation.js')\nvar unicodeWhitespace = require('../character/unicode-whitespace.js')\n\n// Classify whether a character is unicode whitespace, unicode punctuation, or\n// anything else.\n// Used for attention (emphasis, strong), whose sequences can open or close\n// based on the class of surrounding characters.\nfunction classifyCharacter(code) {\n  if (\n    code === null ||\n    markdownLineEndingOrSpace(code) ||\n    unicodeWhitespace(code)\n  ) {\n    return 1\n  }\n\n  if (unicodePunctuation(code)) {\n    return 2\n  }\n}\n\nmodule.exports = classifyCharacter\n","'use strict'\n\nvar hasOwnProperty = require('../constant/has-own-property.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\n\nfunction combineExtensions(extensions) {\n  var all = {}\n  var index = -1\n\n  while (++index < extensions.length) {\n    extension(all, extensions[index])\n  }\n\n  return all\n}\n\nfunction extension(all, extension) {\n  var hook\n  var left\n  var right\n  var code\n\n  for (hook in extension) {\n    left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {})\n    right = extension[hook]\n\n    for (code in right) {\n      left[code] = constructs(\n        miniflat(right[code]),\n        hasOwnProperty.call(left, code) ? left[code] : []\n      )\n    }\n  }\n}\n\nfunction constructs(list, existing) {\n  var index = -1\n  var before = []\n\n  while (++index < list.length) {\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  chunkedSplice(existing, 0, 0, before)\n  return existing\n}\n\nmodule.exports = combineExtensions\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar chunkedPush = require('./chunked-push.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\nvar resolveAll = require('./resolve-all.js')\nvar serializeChunks = require('./serialize-chunks.js')\nvar shallow = require('./shallow.js')\nvar sliceChunks = require('./slice-chunks.js')\n\n// Create a tokenizer.\n// Tokenizers deal with one type of data (e.g., containers, flow, text).\n// The parser is the object dealing with it all.\n// `initialize` works like other constructs, except that only its `tokenize`\n// function is used, in which case it doesn’t receive an `ok` or `nok`.\n// `from` can be given to set the point before the first character, although\n// when further lines are indented, they must be set with `defineSkip`.\nfunction createTokenizer(parser, initialize, from) {\n  var point = from\n    ? shallow(from)\n    : {\n        line: 1,\n        column: 1,\n        offset: 0\n      }\n  var columnStart = {}\n  var resolveAllConstructs = []\n  var chunks = []\n  var stack = []\n\n  var effects = {\n    consume: consume,\n    enter: enter,\n    exit: exit,\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    }),\n    lazy: constructFactory(onsuccessfulcheck, {\n      lazy: true\n    })\n  } // State and tools for resolving and serializing.\n\n  var context = {\n    previous: null,\n    events: [],\n    parser: parser,\n    sliceStream: sliceStream,\n    sliceSerialize: sliceSerialize,\n    now: now,\n    defineSkip: skip,\n    write: write\n  } // The state function.\n\n  var state = initialize.tokenize.call(context, effects) // Track which character we expect to be consumed, to catch bugs.\n\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize)\n  } // Store where we are in the input stream.\n\n  point._index = 0\n  point._bufferIndex = -1\n  return context\n\n  function write(slice) {\n    chunks = chunkedPush(chunks, slice)\n    main() // Exit if we’re not done, resolve might change stuff.\n\n    if (chunks[chunks.length - 1] !== null) {\n      return []\n    }\n\n    addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n    context.events = resolveAll(resolveAllConstructs, context.events, context)\n    return context.events\n  } //\n  // Tools.\n  //\n\n  function sliceSerialize(token) {\n    return serializeChunks(sliceStream(token))\n  }\n\n  function sliceStream(token) {\n    return sliceChunks(chunks, token)\n  }\n\n  function now() {\n    return shallow(point)\n  }\n\n  function skip(value) {\n    columnStart[value.line] = value.column\n    accountForPotentialSkip()\n  } //\n  // State management.\n  //\n  // Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n  // `consume`).\n  // Here is where we walk through the chunks, which either include strings of\n  // several characters, or numerical character codes.\n  // The reason to do this in a loop instead of a call is so the stack can\n  // drain.\n\n  function main() {\n    var chunkIndex\n    var chunk\n\n    while (point._index < chunks.length) {\n      chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index\n\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0\n        }\n\n        while (\n          point._index === chunkIndex &&\n          point._bufferIndex < chunk.length\n        ) {\n          go(chunk.charCodeAt(point._bufferIndex))\n        }\n      } else {\n        go(chunk)\n      }\n    }\n  } // Deal with one code.\n\n  function go(code) {\n    state = state(code)\n  } // Move a character forward.\n\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++\n      point.column = 1\n      point.offset += code === -3 ? 2 : 1\n      accountForPotentialSkip()\n    } else if (code !== -1) {\n      point.column++\n      point.offset++\n    } // Not in a string chunk.\n\n    if (point._bufferIndex < 0) {\n      point._index++\n    } else {\n      point._bufferIndex++ // At end of string chunk.\n\n      if (point._bufferIndex === chunks[point._index].length) {\n        point._bufferIndex = -1\n        point._index++\n      }\n    } // Expose the previous character.\n\n    context.previous = code // Mark as consumed.\n  } // Start a token.\n\n  function enter(type, fields) {\n    var token = fields || {}\n    token.type = type\n    token.start = now()\n    context.events.push(['enter', token, context])\n    stack.push(token)\n    return token\n  } // Stop a token.\n\n  function exit(type) {\n    var token = stack.pop()\n    token.end = now()\n    context.events.push(['exit', token, context])\n    return token\n  } // Use results.\n\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from)\n  } // Discard results.\n\n  function onsuccessfulcheck(construct, info) {\n    info.restore()\n  } // Factory to attempt/check/interrupt.\n\n  function constructFactory(onreturn, fields) {\n    return hook // Handle either an object mapping codes to constructs, a list of\n    // constructs, or a single construct.\n\n    function hook(constructs, returnState, bogusState) {\n      var listOfConstructs\n      var constructIndex\n      var currentConstruct\n      var info\n      return constructs.tokenize || 'length' in constructs\n        ? handleListOfConstructs(miniflat(constructs))\n        : handleMapOfConstructs\n\n      function handleMapOfConstructs(code) {\n        if (code in constructs || null in constructs) {\n          return handleListOfConstructs(\n            constructs.null\n              ? /* c8 ignore next */\n                miniflat(constructs[code]).concat(miniflat(constructs.null))\n              : constructs[code]\n          )(code)\n        }\n\n        return bogusState(code)\n      }\n\n      function handleListOfConstructs(list) {\n        listOfConstructs = list\n        constructIndex = 0\n        return handleConstruct(list[constructIndex])\n      }\n\n      function handleConstruct(construct) {\n        return start\n\n        function start(code) {\n          // To do: not nede to store if there is no bogus state, probably?\n          // Currently doesn’t work because `inspect` in document does a check\n          // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n          // by not storing.\n          info = store()\n          currentConstruct = construct\n\n          if (!construct.partial) {\n            context.currentConstruct = construct\n          }\n\n          if (\n            construct.name &&\n            context.parser.constructs.disable.null.indexOf(construct.name) > -1\n          ) {\n            return nok()\n          }\n\n          return construct.tokenize.call(\n            fields ? assign({}, context, fields) : context,\n            effects,\n            ok,\n            nok\n          )(code)\n        }\n      }\n\n      function ok(code) {\n        onreturn(currentConstruct, info)\n        return returnState\n      }\n\n      function nok(code) {\n        info.restore()\n\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex])\n        }\n\n        return bogusState\n      }\n    }\n  }\n\n  function addResult(construct, from) {\n    if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {\n      resolveAllConstructs.push(construct)\n    }\n\n    if (construct.resolve) {\n      chunkedSplice(\n        context.events,\n        from,\n        context.events.length - from,\n        construct.resolve(context.events.slice(from), context)\n      )\n    }\n\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context)\n    }\n  }\n\n  function store() {\n    var startPoint = now()\n    var startPrevious = context.previous\n    var startCurrentConstruct = context.currentConstruct\n    var startEventsIndex = context.events.length\n    var startStack = Array.from(stack)\n    return {\n      restore: restore,\n      from: startEventsIndex\n    }\n\n    function restore() {\n      point = startPoint\n      context.previous = startPrevious\n      context.currentConstruct = startCurrentConstruct\n      context.events.length = startEventsIndex\n      stack = startStack\n      accountForPotentialSkip()\n    }\n  }\n\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line]\n      point.offset += columnStart[point.line] - 1\n    }\n  }\n}\n\nmodule.exports = createTokenizer\n","'use strict'\n\nfunction miniflat(value) {\n  return value === null || value === undefined\n    ? []\n    : 'length' in value\n    ? value\n    : [value]\n}\n\nmodule.exports = miniflat\n","'use strict'\n\n// chunks (replacement characters, tabs, or line endings).\n\nfunction movePoint(point, offset) {\n  point.column += offset\n  point.offset += offset\n  point._bufferIndex += offset\n  return point\n}\n\nmodule.exports = movePoint\n","'use strict'\n\nfunction normalizeIdentifier(value) {\n  return (\n    value // Collapse Markdown whitespace.\n      .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n      .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n      // counterpart is uppercased will result in a different uppercase\n      // character.\n      // Hence, to get that form, we perform both lower- and uppercase.\n      // Upper case makes sure keys will not interact with default prototypal\n      // methods: no object method is uppercase.\n      .toLowerCase()\n      .toUpperCase()\n  )\n}\n\nmodule.exports = normalizeIdentifier\n","'use strict'\n\nvar sizeChunks = require('./size-chunks.js')\n\nfunction prefixSize(events, type) {\n  var tail = events[events.length - 1]\n  if (!tail || tail[1].type !== type) return 0\n  return sizeChunks(tail[2].sliceStream(tail[1]))\n}\n\nmodule.exports = prefixSize\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction regexCheck(regex) {\n  return check\n\n  function check(code) {\n    return regex.test(fromCharCode(code))\n  }\n}\n\nmodule.exports = regexCheck\n","'use strict'\n\nfunction resolveAll(constructs, events, context) {\n  var called = []\n  var index = -1\n  var resolve\n\n  while (++index < constructs.length) {\n    resolve = constructs[index].resolveAll\n\n    if (resolve && called.indexOf(resolve) < 0) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n\nmodule.exports = resolveAll\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction safeFromInt(value, base) {\n  var code = parseInt(value, base)\n\n  if (\n    // C0 except for HT, LF, FF, CR, space\n    code < 9 ||\n    code === 11 ||\n    (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n    (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n    (code > 55295 && code < 57344) || // Noncharacters.\n    (code > 64975 && code < 65008) ||\n    (code & 65535) === 65535 ||\n    (code & 65535) === 65534 || // Out of range\n    code > 1114111\n  ) {\n    return '\\uFFFD'\n  }\n\n  return fromCharCode(code)\n}\n\nmodule.exports = safeFromInt\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction serializeChunks(chunks) {\n  var index = -1\n  var result = []\n  var chunk\n  var value\n  var atTab\n\n  while (++index < chunks.length) {\n    chunk = chunks[index]\n\n    if (typeof chunk === 'string') {\n      value = chunk\n    } else if (chunk === -5) {\n      value = '\\r'\n    } else if (chunk === -4) {\n      value = '\\n'\n    } else if (chunk === -3) {\n      value = '\\r' + '\\n'\n    } else if (chunk === -2) {\n      value = '\\t'\n    } else if (chunk === -1) {\n      if (atTab) continue\n      value = ' '\n    } else {\n      // Currently only replacement character.\n      value = fromCharCode(chunk)\n    }\n\n    atTab = chunk === -2\n    result.push(value)\n  }\n\n  return result.join('')\n}\n\nmodule.exports = serializeChunks\n","'use strict'\n\nvar assign = require('../constant/assign.js')\n\nfunction shallow(object) {\n  return assign({}, object)\n}\n\nmodule.exports = shallow\n","'use strict'\n\n// Counts tabs based on their expanded size, and CR+LF as one character.\n\nfunction sizeChunks(chunks) {\n  var index = -1\n  var size = 0\n\n  while (++index < chunks.length) {\n    size += typeof chunks[index] === 'string' ? chunks[index].length : 1\n  }\n\n  return size\n}\n\nmodule.exports = sizeChunks\n","'use strict'\n\nfunction sliceChunks(chunks, token) {\n  var startIndex = token.start._index\n  var startBufferIndex = token.start._bufferIndex\n  var endIndex = token.end._index\n  var endBufferIndex = token.end._bufferIndex\n  var view\n\n  if (startIndex === endIndex) {\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n  } else {\n    view = chunks.slice(startIndex, endIndex)\n\n    if (startBufferIndex > -1) {\n      view[0] = view[0].slice(startBufferIndex)\n    }\n\n    if (endBufferIndex > 0) {\n      view.push(chunks[endIndex].slice(0, endBufferIndex))\n    }\n  }\n\n  return view\n}\n\nmodule.exports = sliceChunks\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar shallow = require('./shallow.js')\n\nfunction subtokenize(events) {\n  var jumps = {}\n  var index = -1\n  var event\n  var lineIndex\n  var otherIndex\n  var otherEvent\n  var parameters\n  var subevents\n  var more\n\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index]\n    }\n\n    event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n\n    if (\n      index &&\n      event[1].type === 'chunkFlow' &&\n      events[index - 1][1].type === 'listItemPrefix'\n    ) {\n      subevents = event[1]._tokenizer.events\n      otherIndex = 0\n\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'lineEndingBlank'\n      ) {\n        otherIndex += 2\n      }\n\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'content'\n      ) {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === 'content') {\n            break\n          }\n\n          if (subevents[otherIndex][1].type === 'chunkText') {\n            subevents[otherIndex][1].isInFirstContentOfListItem = true\n            otherIndex++\n          }\n        }\n      }\n    } // Enter.\n\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        assign(jumps, subcontent(events, index))\n        index = jumps[index]\n        more = true\n      }\n    } // Exit.\n    else if (event[1]._container || event[1]._movePreviousLineEndings) {\n      otherIndex = index\n      lineIndex = undefined\n\n      while (otherIndex--) {\n        otherEvent = events[otherIndex]\n\n        if (\n          otherEvent[1].type === 'lineEnding' ||\n          otherEvent[1].type === 'lineEndingBlank'\n        ) {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events[lineIndex][1].type = 'lineEndingBlank'\n            }\n\n            otherEvent[1].type = 'lineEnding'\n            lineIndex = otherIndex\n          }\n        } else {\n          break\n        }\n      }\n\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = shallow(events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n        parameters = events.slice(lineIndex, index)\n        parameters.unshift(event)\n        chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)\n      }\n    }\n  }\n\n  return !more\n}\n\nfunction subcontent(events, eventIndex) {\n  var token = events[eventIndex][1]\n  var context = events[eventIndex][2]\n  var startPosition = eventIndex - 1\n  var startPositions = []\n  var tokenizer =\n    token._tokenizer || context.parser[token.contentType](token.start)\n  var childEvents = tokenizer.events\n  var jumps = []\n  var gaps = {}\n  var stream\n  var previous\n  var index\n  var entered\n  var end\n  var adjust // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n\n  while (token) {\n    // Find the position of the event for this token.\n    while (events[++startPosition][1] !== token) {\n      // Empty.\n    }\n\n    startPositions.push(startPosition)\n\n    if (!token._tokenizer) {\n      stream = context.sliceStream(token)\n\n      if (!token.next) {\n        stream.push(null)\n      }\n\n      if (previous) {\n        tokenizer.defineSkip(token.start)\n      }\n\n      if (token.isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true\n      }\n\n      tokenizer.write(stream)\n\n      if (token.isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined\n      }\n    } // Unravel the next token.\n\n    previous = token\n    token = token.next\n  } // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n\n  token = previous\n  index = childEvents.length\n\n  while (index--) {\n    // Make sure we’ve at least seen something (final eol is part of the last\n    // token).\n    if (childEvents[index][0] === 'enter') {\n      entered = true\n    } else if (\n      // Find a void token that includes a break.\n      entered &&\n      childEvents[index][1].type === childEvents[index - 1][1].type &&\n      childEvents[index][1].start.line !== childEvents[index][1].end.line\n    ) {\n      add(childEvents.slice(index + 1, end))\n      // Help GC.\n      token._tokenizer = token.next = undefined\n      token = token.previous\n      end = index + 1\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = token._tokenizer = token.next = undefined // Do head:\n\n  add(childEvents.slice(0, end))\n  index = -1\n  adjust = 0\n\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n    adjust += jumps[index][1] - jumps[index][0] - 1\n  }\n\n  return gaps\n\n  function add(slice) {\n    var start = startPositions.pop()\n    jumps.unshift([start, start + slice.length - 1])\n    chunkedSplice(events, start, 2, slice)\n  }\n}\n\nmodule.exports = subtokenize\n","module.exports = compile;\n\nvar BaseFuncs = require(\"boolbase\"),\n    trueFunc  = BaseFuncs.trueFunc,\n    falseFunc = BaseFuncs.falseFunc;\n\n/*\n\treturns a function that checks if an elements index matches the given rule\n\thighly optimized to return the fastest solution\n*/\nfunction compile(parsed){\n\tvar a = parsed[0],\n\t    b = parsed[1] - 1;\n\n\t//when b <= 0, a*n won't be possible for any matches when a < 0\n\t//besides, the specification says that no element is matched when a and b are 0\n\tif(b < 0 && a <= 0) return falseFunc;\n\n\t//when a is in the range -1..1, it matches any element (so only b is checked)\n\tif(a ===-1) return function(pos){ return pos <= b; };\n\tif(a === 0) return function(pos){ return pos === b; };\n\t//when b <= 0 and a === 1, they match any element\n\tif(a === 1) return b < 0 ? trueFunc : function(pos){ return pos >= b; };\n\n\t//when a > 0, modulo can be used to check if there is a match\n\tvar bMod = b % a;\n\tif(bMod < 0) bMod += a;\n\n\tif(a > 1){\n\t\treturn function(pos){\n\t\t\treturn pos >= b && pos % a === bMod;\n\t\t};\n\t}\n\n\ta *= -1; //make `a` positive\n\n\treturn function(pos){\n\t\treturn pos <= b && pos % a === bMod;\n\t};\n}","var parse = require(\"./parse.js\"),\n    compile = require(\"./compile.js\");\n\nmodule.exports = function nthCheck(formula){\n\treturn compile(parse(formula));\n};\n\nmodule.exports.parse = parse;\nmodule.exports.compile = compile;","module.exports = parse;\n\n//following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\n\n//[ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\nvar re_nthElement = /^([+\\-]?\\d*n)?\\s*(?:([+\\-]?)\\s*(\\d+))?$/;\n\n/*\n\tparses a nth-check formula, returns an array of two numbers\n*/\nfunction parse(formula){\n\tformula = formula.trim().toLowerCase();\n\n\tif(formula === \"even\"){\n\t\treturn [2, 0];\n\t} else if(formula === \"odd\"){\n\t\treturn [2, 1];\n\t} else {\n\t\tvar parsed = formula.match(re_nthElement);\n\n\t\tif(!parsed){\n\t\t\tthrow new SyntaxError(\"n-th rule couldn't be parsed ('\" + formula + \"')\");\n\t\t}\n\n\t\tvar a;\n\n\t\tif(parsed[1]){\n\t\t\ta = parseInt(parsed[1], 10);\n\t\t\tif(isNaN(a)){\n\t\t\t\tif(parsed[1].charAt(0) === \"-\") a = -1;\n\t\t\t\telse a = 1;\n\t\t\t}\n\t\t} else a = 0;\n\n\t\treturn [\n\t\t\ta,\n\t\t\tparsed[3] ? parseInt((parsed[2] || \"\") + parsed[3], 10) : 0\n\t\t];\n\t}\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","'use strict'\n\n/* eslint-env browser */\n\nvar el\n\nvar semicolon = 59 //  ';'\n\nmodule.exports = decodeEntity\n\nfunction decodeEntity(characters) {\n  var entity = '&' + characters + ';'\n  var char\n\n  el = el || document.createElement('i')\n  el.innerHTML = entity\n  char = el.textContent\n\n  // Some entities do not require the closing semicolon (`&not` - for instance),\n  // which leads to situations where parsing the assumed entity of &notit; will\n  // result in the string `¬it;`.  When we encounter a trailing semicolon after\n  // parsing and the entity to decode was not a semicolon (`&semi;`), we can\n  // assume that the matching was incomplete\n  if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the entity was not valid\n  return char === entity ? false : char\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 = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\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","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict'\n\nvar normalize = require('./normalize')\nvar DefinedInfo = require('./lib/util/defined-info')\nvar Info = require('./lib/util/info')\n\nvar data = 'data'\n\nmodule.exports = find\n\nvar valid = /^data[-\\w.:]+$/i\nvar dash = /-[a-z]/g\nvar cap = /[A-Z]/g\n\nfunction find(schema, value) {\n  var normal = normalize(value)\n  var prop = value\n  var Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === data && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      prop = datasetToProperty(value)\n    } else {\n      value = datasetToAttribute(value)\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(prop, value)\n}\n\nfunction datasetToProperty(attribute) {\n  var value = attribute.slice(5).replace(dash, camelcase)\n  return data + value.charAt(0).toUpperCase() + value.slice(1)\n}\n\nfunction datasetToAttribute(property) {\n  var value = property.slice(4)\n\n  if (dash.test(value)) {\n    return property\n  }\n\n  value = value.replace(cap, kebab)\n\n  if (value.charAt(0) !== '-') {\n    value = '-' + value\n  }\n\n  return data + value\n}\n\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n","'use strict'\n\nvar merge = require('./lib/util/merge')\nvar xlink = require('./lib/xlink')\nvar xml = require('./lib/xml')\nvar xmlns = require('./lib/xmlns')\nvar aria = require('./lib/aria')\nvar html = require('./lib/html')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, html])\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\n\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\n\nmodule.exports = create({\n  transform: ariaTransform,\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  }\n})\n\nfunction ariaTransform(_, prop) {\n  return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n}\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nvar boolean = types.boolean\nvar overloadedBoolean = types.overloadedBoolean\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\n\nmodule.exports = create({\n  space: 'html',\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  transform: caseInsensitiveTransform,\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    capture: boolean,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: boolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: commaSeparated,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforePrint: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextMenu: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: commaSeparated,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  }\n})\n","'use strict'\n\nvar types = require('./util/types')\nvar create = require('./util/create')\nvar caseSensitiveTransform = require('./util/case-sensitive-transform')\n\nvar boolean = types.boolean\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\nvar commaOrSpaceSeparated = types.commaOrSpaceSeparated\n\nmodule.exports = create({\n  space: 'svg',\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  transform: caseSensitiveTransform,\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  }\n})\n","'use strict'\n\nvar caseSensitiveTransform = require('./case-sensitive-transform')\n\nmodule.exports = caseInsensitiveTransform\n\nfunction caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","'use strict'\n\nmodule.exports = caseSensitiveTransform\n\nfunction caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n","'use strict'\n\nvar normalize = require('../../normalize')\nvar Schema = require('./schema')\nvar DefinedInfo = require('./defined-info')\n\nmodule.exports = create\n\nfunction create(definition) {\n  var space = definition.space\n  var mustUseProperty = definition.mustUseProperty || []\n  var attributes = definition.attributes || {}\n  var props = definition.properties\n  var transform = definition.transform\n  var property = {}\n  var normal = {}\n  var prop\n  var info\n\n  for (prop in props) {\n    info = new DefinedInfo(\n      prop,\n      transform(attributes, prop),\n      props[prop],\n      space\n    )\n\n    if (mustUseProperty.indexOf(prop) !== -1) {\n      info.mustUseProperty = true\n    }\n\n    property[prop] = info\n\n    normal[normalize(prop)] = prop\n    normal[normalize(info.attribute)] = prop\n  }\n\n  return new Schema(property, normal, space)\n}\n","'use strict'\n\nvar Info = require('./info')\nvar types = require('./types')\n\nmodule.exports = DefinedInfo\n\nDefinedInfo.prototype = new Info()\nDefinedInfo.prototype.defined = true\n\nvar checks = [\n  'boolean',\n  'booleanish',\n  'overloadedBoolean',\n  'number',\n  'commaSeparated',\n  'spaceSeparated',\n  'commaOrSpaceSeparated'\n]\nvar checksLength = checks.length\n\nfunction DefinedInfo(property, attribute, mask, space) {\n  var index = -1\n  var check\n\n  mark(this, 'space', space)\n\n  Info.call(this, property, attribute)\n\n  while (++index < checksLength) {\n    check = checks[index]\n    mark(this, check, (mask & types[check]) === types[check])\n  }\n}\n\nfunction mark(values, key, value) {\n  if (value) {\n    values[key] = value\n  }\n}\n","'use strict'\n\nmodule.exports = Info\n\nvar proto = Info.prototype\n\nproto.space = null\nproto.attribute = null\nproto.property = null\nproto.boolean = false\nproto.booleanish = false\nproto.overloadedBoolean = false\nproto.number = false\nproto.commaSeparated = false\nproto.spaceSeparated = false\nproto.commaOrSpaceSeparated = false\nproto.mustUseProperty = false\nproto.defined = false\n\nfunction Info(property, attribute) {\n  this.property = property\n  this.attribute = attribute\n}\n","'use strict'\n\nvar xtend = require('xtend')\nvar Schema = require('./schema')\n\nmodule.exports = merge\n\nfunction merge(definitions) {\n  var length = definitions.length\n  var property = []\n  var normal = []\n  var index = -1\n  var info\n  var space\n\n  while (++index < length) {\n    info = definitions[index]\n    property.push(info.property)\n    normal.push(info.normal)\n    space = info.space\n  }\n\n  return new Schema(\n    xtend.apply(null, property),\n    xtend.apply(null, normal),\n    space\n  )\n}\n","'use strict'\n\nmodule.exports = Schema\n\nvar proto = Schema.prototype\n\nproto.space = null\nproto.normal = {}\nproto.property = {}\n\nfunction Schema(property, normal, space) {\n  this.property = property\n  this.normal = normal\n\n  if (space) {\n    this.space = space\n  }\n}\n","'use strict'\n\nvar powers = 0\n\nexports.boolean = increment()\nexports.booleanish = increment()\nexports.overloadedBoolean = increment()\nexports.number = increment()\nexports.spaceSeparated = increment()\nexports.commaSeparated = increment()\nexports.commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return Math.pow(2, ++powers)\n}\n","'use strict'\n\nvar create = require('./util/create')\n\nmodule.exports = create({\n  space: 'xlink',\n  transform: xlinkTransform,\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  }\n})\n\nfunction xlinkTransform(_, prop) {\n  return 'xlink:' + prop.slice(5).toLowerCase()\n}\n","'use strict'\n\nvar create = require('./util/create')\n\nmodule.exports = create({\n  space: 'xml',\n  transform: xmlTransform,\n  properties: {\n    xmlLang: null,\n    xmlBase: null,\n    xmlSpace: null\n  }\n})\n\nfunction xmlTransform(_, prop) {\n  return 'xml:' + prop.slice(3).toLowerCase()\n}\n","'use strict'\n\nvar create = require('./util/create')\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform')\n\nmodule.exports = create({\n  space: 'xmlns',\n  attributes: {\n    xmlnsxlink: 'xmlns:xlink'\n  },\n  transform: caseInsensitiveTransform,\n  properties: {\n    xmlns: null,\n    xmlnsXLink: null\n  }\n})\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","'use strict'\n\nmodule.exports = normalize\n\nfunction normalize(value) {\n  return value.toLowerCase()\n}\n","'use strict'\n\nvar merge = require('./lib/util/merge')\nvar xlink = require('./lib/xlink')\nvar xml = require('./lib/xml')\nvar xmlns = require('./lib/xmlns')\nvar aria = require('./lib/aria')\nvar svg = require('./lib/svg')\n\nmodule.exports = merge([xml, xlink, xmlns, aria, svg])\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = {};\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(options.delimiter, limit);\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key, val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n            val = utils.maybeMap(\n                parseArrayValue(part.slice(pos + 1), options),\n                function (encodedVal) {\n                    return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                }\n            );\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(val);\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (has.call(obj, key)) {\n            obj[key] = utils.combine(obj[key], val);\n        } else {\n            obj[key] = val;\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            obj = [].concat(leaf);\n        } else {\n            obj = options.plainObjects ? Object.create(null) : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var index = parseInt(cleanRoot, 10);\n            if (!options.parseArrays && cleanRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== cleanRoot\n                && String(index) === cleanRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (cleanRoot !== '__proto__') {\n                obj[cleanRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    // Transform dot notation to bracket notation\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    // The regex chunks\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    // Get the parent\n\n    var segment = options.depth > 0 && brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    // Stash the parent if it exists\n\n    var keys = [];\n    if (parent) {\n        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    // Loop through children appending to the array until we hit depth\n\n    var i = 0;\n    while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n        keys.push(segment[1]);\n    }\n\n    // If there's a remainder, just add whatever is left\n\n    if (segment) {\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    return {\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? Object.create(null) : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? Object.create(null) : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    delimiter: '&',\n    encode: true,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    strictNullHandling,\n    skipNulls,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n                var valuesArray = split.call(String(obj), ',');\n                var valuesJoined = '';\n                for (var i = 0; i < valuesArray.length; ++i) {\n                    valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n                }\n                return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n            }\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            strictNullHandling,\n            skipNulls,\n            encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var arrayFormat;\n    if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if (opts && 'indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = 'indices';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n    if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n    var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n\n        if (options.skipNulls && obj[key] === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            obj[key],\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? Object.create(null) : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var i = 0; i < string.length; ++i) {\n        var c = string.charCodeAt(i);\n\n        if (\n            c === 0x2D // -\n            || c === 0x2E // .\n            || c === 0x5F // _\n            || c === 0x7E // ~\n            || (c >= 0x30 && c <= 0x39) // 0-9\n            || (c >= 0x41 && c <= 0x5A) // a-z\n            || (c >= 0x61 && c <= 0x7A) // A-Z\n            || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n        ) {\n            out += string.charAt(i);\n            continue;\n        }\n\n        if (c < 0x80) {\n            out = out + hexTable[c];\n            continue;\n        }\n\n        if (c < 0x800) {\n            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        if (c < 0xD800 || c >= 0xE000) {\n            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        i += 1;\n        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n        /* eslint operator-linebreak: [2, \"before\"] */\n        out += hexTable[0xF0 | (c >> 18)]\n            + hexTable[0x80 | ((c >> 12) & 0x3F)]\n            + hexTable[0x80 | ((c >> 6) & 0x3F)]\n            + hexTable[0x80 | (c & 0x3F)];\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n    return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\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\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 (Array.isArray(obj[k])) {\n      obj[k].push(v);\n    } else {\n      obj[k] = [obj[k], v];\n    }\n  }\n\n  return obj;\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 Object.keys(obj).map(function(k) {\n      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n      if (Array.isArray(obj[k])) {\n        return obj[k].map(function(v) {\n          return ks + encodeURIComponent(stringifyPrimitive(v));\n        }).join(sep);\n      } else {\n        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n      }\n    }).filter(Boolean).join(sep);\n\n  }\n\n  if (!name) return '';\n  return encodeURIComponent(stringifyPrimitive(name)) + eq +\n         encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","\"use strict\";\n\nvar skipMethods = {\n  'constructor': 1,\n  'render': 1,\n  'shouldComponentUpdate': 1,\n  'componentWillMount': 1,\n  'componentDidMount': 1,\n  'componentWillReceiveProps': 1,\n  'componentWillUpdate': 1,\n  'componentDidUpdate': 1,\n  'componentWillUnmount': 1\n}\n\nfunction autoBind(object, filter){\n  var proto = object.constructor.prototype\n\n  var filterFn = typeof filter == 'function' ?\n    filter:\n    filter && typeof filter == 'object' ?\n      function(key) {\n        return !filter[key] && skipMethods[key] !== 1 && typeof proto[key] === 'function'\n      }:\n      function(key) {\n        return skipMethods[key] !== 1 && typeof proto[key] === 'function'\n      }\n\n  var names = Object.getOwnPropertyNames(proto).filter(filterFn)\n\n  names.push('setState')\n  names.forEach(function(key){\n    object[key] = object[key].bind(object)\n  })\n\n  return object\n}\n\nexports.default = autoBind\nmodule.exports = exports['default']","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar autoBind = require('../autoBind');\n\nvar ReactClass = function (_React$Component) {\n  _inherits(ReactClass, _React$Component);\n\n  function ReactClass(props) {\n    _classCallCheck(this, ReactClass);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ReactClass).call(this, props));\n\n    autoBind(_this);\n    return _this;\n  }\n\n  return ReactClass;\n}(React.Component);\n\nexports.default = ReactClass;\nexports.autoBind = autoBind;\nexports.Component = ReactClass;","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?exports.ReactCrop=t(require(\"react\")):e.ReactCrop=t(e.React)}(this,(function(e){return(()=>{var t={703:(e,t,r)=>{\"use strict\";var o=r(414);function n(){}function i(){}i.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,i,a){if(a!==o){var s=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw s.name=\"Invariant Violation\",s}}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:n};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},427:t=>{\"use strict\";t.exports=e}},r={};function o(e){var n=r[e];if(void 0!==n)return n.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var n={};return(()=>{\"use strict\";o.r(n),o.d(n,{Component:()=>S,containCrop:()=>O,default:()=>S,makeAspectCrop:()=>C});var e=o(427),t=o.n(e),r=o(697),i=o.n(r);function a(e){var t,r,o=\"\";if(\"string\"==typeof e||\"number\"==typeof e)o+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(r=a(e[t]))&&(o&&(o+=\" \"),o+=r);else for(t in e)e[t]&&(o&&(o+=\" \"),o+=t);return o}function s(e){return(s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function c(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function d(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e,t){return!t||\"object\"!==s(t)&&\"function\"!=typeof t?u(e):t}function u(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function f(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function m(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?f(Object(r),!0).forEach((function(t){v(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):f(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function v(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function g(e,t,r){return Math.min(Math.max(e,t),r)}function y(e){return e&&!isNaN(e.width)&&!isNaN(e.height)}function w(e){return\"n\"===e?\"s\":\"ne\"===e?\"sw\":\"e\"===e?\"w\":\"se\"===e?\"nw\":\"s\"===e?\"n\":\"sw\"===e?\"ne\":\"w\"===e?\"e\":\"nw\"===e?\"se\":e}function C(e,t,r){if(isNaN(e.aspect))return console.warn(\"`crop.aspect` should be a number in order to make an aspect crop\",e),e;var o=m({unit:\"px\",x:0,y:0},e);return e.width&&(o.height=o.width/e.aspect),e.height&&(o.width=o.height*e.aspect),o.y+o.height>r&&(o.height=r-o.y,o.width=o.height*e.aspect),o.x+o.width>t&&(o.width=t-o.x,o.height=o.width/e.aspect),o}function b(e,t,r){return\"%\"===e.unit?e:{unit:\"%\",aspect:e.aspect,x:e.x/t*100,y:e.y/r*100,width:e.width/t*100,height:e.height/r*100}}function x(e,t,r){return e.unit?\"px\"===e.unit?e:{unit:\"px\",aspect:e.aspect,x:e.x*t/100,y:e.y*r/100,width:e.width*t/100,height:e.height*r/100}:m(m({},e),{},{unit:\"px\"})}function O(e,t,r,o){var n=x(t,r,o),i=x(e,r,o),a=m({},n);if(!n.aspect)return n.x<0?(a.x=0,a.width+=n.x):n.x+n.width>r&&(a.width=r-n.x),n.y+n.height>o&&(a.height=o-n.y),a;var s=!1;n.x<0?(a.x=0,a.width+=n.x,a.height=a.width/n.aspect,s=!0):n.x+n.width>r&&(a.width=r-n.x,a.height=a.width/n.aspect,s=!0),s&&i.y>a.y&&(a.y=n.y+(n.height-a.height));var c=!1;return a.y+a.height>o&&(a.height=o-n.y,a.width=a.height*n.aspect,c=!0),c&&i.x>a.x&&(a.x=n.x+(n.width-a.width)),a}var D={capture:!0,passive:!1},S=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&p(e,t)}(f,e);var r,o,n,i,s=(n=f,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=l(n);if(i){var r=l(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return h(this,e)});function f(){var e;c(this,f);for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];return v(u(e=s.call.apply(s,[this].concat(r))),\"window\",\"undefined\"!=typeof window?window:{}),v(u(e),\"document\",\"undefined\"!=typeof document?document:{}),v(u(e),\"state\",{}),v(u(e),\"keysDown\",new Set),v(u(e),\"onCropPointerDown\",(function(t){var r=e.props,o=r.crop,n=r.disabled,i=e.mediaDimensions,a=x(o,i.width,i.height);if(!n){t.cancelable&&t.preventDefault(),e.bindDocMove(),e.componentRef.focus({preventScroll:!0});var s=t.target.dataset.ord,c=\"nw\"===s||\"w\"===s||\"sw\"===s,d=\"nw\"===s||\"n\"===s||\"ne\"===s;e.evData={clientStartX:t.clientX,clientStartY:t.clientY,cropStartWidth:a.width,cropStartHeight:a.height,cropStartX:c?a.x+a.width:a.x,cropStartY:d?a.y+a.height:a.y,xInversed:c,yInversed:d,xCrossOver:c,yCrossOver:d,startXCrossOver:c,startYCrossOver:d,isResize:t.target.dataset.ord,ord:s},e.mouseDownOnCrop=!0,e.setState({cropIsActive:!0})}})),v(u(e),\"onComponentPointerDown\",(function(t){var r=e.props,o=r.crop,n=r.disabled,i=r.locked,a=r.keepSelection,s=r.onChange,c=e.mediaWrapperRef.firstChild;if(t.target===c&&c.contains(t.target)&&!(n||i||a&&y(o))){t.cancelable&&t.preventDefault(),e.bindDocMove(),e.componentRef.focus({preventScroll:!0});var d=e.mediaWrapperRef.getBoundingClientRect(),p=t.clientX-d.left,h=t.clientY-d.top,u={unit:\"px\",aspect:o?o.aspect:void 0,x:p,y:h,width:0,height:0};e.evData={clientStartX:t.clientX,clientStartY:t.clientY,cropStartWidth:u.width,cropStartHeight:u.height,cropStartX:u.x,cropStartY:u.y,xInversed:!1,yInversed:!1,xCrossOver:!1,yCrossOver:!1,startXCrossOver:!1,startYCrossOver:!1,isResize:!0,ord:\"nw\"},e.mouseDownOnCrop=!0;var l=e.mediaDimensions,f=l.width,m=l.height;s(x(u,f,m),b(u,f,m)),e.setState({cropIsActive:!0,newCropIsBeingDrawn:!0})}})),v(u(e),\"onDocPointerMove\",(function(t){var r=e.props,o=r.crop,n=r.disabled,i=r.onChange,a=r.onDragStart;if(!n&&e.mouseDownOnCrop){t.cancelable&&t.preventDefault(),e.dragStarted||(e.dragStarted=!0,a(t));var s,c=u(e).evData;if(c.xDiff=t.clientX-c.clientStartX,c.yDiff=t.clientY-c.clientStartY,(s=c.isResize?e.resizeCrop():e.dragCrop())!==o){var d=e.mediaDimensions,p=d.width,h=d.height;i(x(s,p,h),b(s,p,h))}}})),v(u(e),\"onComponentKeyDown\",(function(t){var r=e.props,o=r.crop,n=r.disabled,i=r.onChange,a=r.onComplete;if(!n){e.keysDown.add(t.key);var s=!1;if(y(o)){var c=e.makeNewCrop(),d=(navigator.platform.match(\"Mac\")?t.metaKey:t.ctrlKey)?f.nudgeStepLarge:t.shiftKey?f.nudgeStepMedium:f.nudgeStep;if(e.keysDown.has(\"ArrowLeft\")&&(c.x-=d,s=!0),e.keysDown.has(\"ArrowRight\")&&(c.x+=d,s=!0),e.keysDown.has(\"ArrowUp\")&&(c.y-=d,s=!0),e.keysDown.has(\"ArrowDown\")&&(c.y+=d,s=!0),s){t.cancelable&&t.preventDefault();var p=e.mediaDimensions,h=p.width,u=p.height;c.x=g(c.x,0,h-c.width),c.y=g(c.y,0,u-c.height);var l=x(c,h,u),m=b(c,h,u);i(l,m),a(l,m)}}}})),v(u(e),\"onComponentKeyUp\",(function(t){e.keysDown.delete(t.key)})),v(u(e),\"onDocPointerDone\",(function(t){var r=e.props,o=r.crop,n=r.disabled,i=r.onComplete,a=r.onDragEnd;if(e.unbindDocMove(),!n&&e.mouseDownOnCrop){e.mouseDownOnCrop=!1,e.dragStarted=!1;var s=e.mediaDimensions,c=s.width,d=s.height;a(t),i(x(o,c,d),b(o,c,d)),e.setState({cropIsActive:!1,newCropIsBeingDrawn:!1})}})),v(u(e),\"onMediaLoaded\",(function(){var t=e.props,r=t.onComplete,o=t.onChange,n=e.createNewCrop(),i=n.pixelCrop,a=n.percentCrop;o(i,a),r(i,a)})),v(u(e),\"onImageLoad\",(function(t){var r=t.target,o=e.props,n=o.onComplete,i=o.onChange;if(!1!==(0,o.onImageLoaded)(r)){var a=e.createNewCrop(),s=a.pixelCrop,c=a.percentCrop;i(s,c),n(s,c)}})),v(u(e),\"bindComponentRef\",(function(t){e.componentRef=t})),v(u(e),\"bindMediaWrapperRef\",(function(t){e.mediaWrapperRef=t})),v(u(e),\"bindImageRef\",(function(t){e.imageRef=t})),v(u(e),\"bindCropSelectionRef\",(function(t){e.cropSelectRef=t})),e}return r=f,(o=[{key:\"componentDidMount\",value:function(){this.componentRef.addEventListener&&this.componentRef.addEventListener(\"medialoaded\",this.onMediaLoaded)}},{key:\"componentWillUnmount\",value:function(){this.componentRef.removeEventListener&&this.componentRef.removeEventListener(\"medialoaded\",this.onMediaLoaded)}},{key:\"componentDidUpdate\",value:function(e){var t=this.props.crop;if(this.imageRef&&e.crop!==t&&t.aspect&&(t.width&&!t.height||!t.width&&t.height)){var r=this.imageRef,o=r.width,n=r.height,i=C(this.makeNewCrop(),o,n),a=x(i,o,n),s=b(i,o,n);this.props.onChange(a,s),this.props.onComplete(a,s)}}},{key:\"bindDocMove\",value:function(){this.docMoveBound||(this.document.addEventListener(\"pointermove\",this.onDocPointerMove,D),this.document.addEventListener(\"pointerup\",this.onDocPointerDone,D),this.document.addEventListener(\"pointercancel\",this.onDocPointerDone,D),this.docMoveBound=!0)}},{key:\"unbindDocMove\",value:function(){this.docMoveBound&&(this.document.removeEventListener(\"pointermove\",this.onDocPointerMove,D),this.document.removeEventListener(\"pointerup\",this.onDocPointerDone,D),this.document.removeEventListener(\"pointercancel\",this.onDocPointerDone,D),this.docMoveBound=!1)}},{key:\"createNewCrop\",value:function(){var e,t,r,o=this.mediaDimensions,n=o.width,i=o.height,a=(e=this.makeNewCrop(),t=n,r=i,!e.aspect||e.width&&e.height?e:C(e,t,r));return{pixelCrop:x(a,n,i),percentCrop:b(a,n,i)}}},{key:\"mediaDimensions\",get:function(){var e=this.mediaWrapperRef;return{width:e.clientWidth,height:e.clientHeight}}},{key:\"getCropStyle\",value:function(){var e=this.makeNewCrop(this.props.crop?this.props.crop.unit:\"px\");return{top:\"\".concat(e.y).concat(e.unit),left:\"\".concat(e.x).concat(e.unit),width:\"\".concat(e.width).concat(e.unit),height:\"\".concat(e.height).concat(e.unit)}}},{key:\"getNewSize\",value:function(){var e,t=this.props,r=t.crop,o=t.minWidth,n=t.maxWidth,i=t.minHeight,a=t.maxHeight,s=this.evData,c=this.mediaDimensions,d=c.width,p=c.height,h=s.cropStartWidth+s.xDiff;return s.xCrossOver&&(h=Math.abs(h)),h=g(h,o,n||d),e=r.aspect?h/r.aspect:s.cropStartHeight+s.yDiff,s.yCrossOver&&(e=Math.min(Math.abs(e),s.cropStartY)),e=g(e,i,a||p),r.aspect&&(h=g(e*r.aspect,0,d)),{width:h,height:e}}},{key:\"dragCrop\",value:function(){var e=this.makeNewCrop(),t=this.evData,r=this.mediaDimensions,o=r.width,n=r.height;return e.x=g(t.cropStartX+t.xDiff,0,o-e.width),e.y=g(t.cropStartY+t.yDiff,0,n-e.height),e}},{key:\"resizeCrop\",value:function(){var e=this.evData,t=this.makeNewCrop(),r=e.ord;e.xInversed&&(e.xDiff-=2*e.cropStartWidth),e.yInversed&&(e.yDiff-=2*e.cropStartHeight);var o=this.getNewSize(),n=e.cropStartX,i=e.cropStartY;e.xCrossOver&&(n=t.x+(t.width-o.width)),e.yCrossOver&&(i=!1===e.lastYCrossover?t.y-o.height:t.y+(t.height-o.height));var a=this.mediaDimensions,s=a.width,c=a.height,d=O(this.props.crop,{unit:t.unit,x:n,y:i,width:o.width,height:o.height,aspect:t.aspect},s,c);return t.aspect||f.xyOrds.indexOf(r)>-1?(t.x=d.x,t.y=d.y,t.width=d.width,t.height=d.height):f.xOrds.indexOf(r)>-1?(t.x=d.x,t.width=d.width):f.yOrds.indexOf(r)>-1&&(t.y=d.y,t.height=d.height),e.lastYCrossover=e.yCrossOver,this.crossOverCheck(),t.width<this.props.minWidth||t.height<this.props.minHeight?this.props.crop:t}},{key:\"createCropSelection\",value:function(){var e=this.props,r=e.disabled,o=e.locked,n=e.renderSelectionAddon,i=e.ruleOfThirds,a=e.crop,s=this.getCropStyle();return t().createElement(\"div\",{ref:this.bindCropSelectionRef,style:s,className:\"ReactCrop__crop-selection\",onPointerDown:this.onCropPointerDown},!r&&!o&&t().createElement(\"div\",{className:\"ReactCrop__drag-elements\"},t().createElement(\"div\",{className:\"ReactCrop__drag-bar ord-n\",\"data-ord\":\"n\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-bar ord-e\",\"data-ord\":\"e\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-bar ord-s\",\"data-ord\":\"s\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-bar ord-w\",\"data-ord\":\"w\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-handle ord-nw\",\"data-ord\":\"nw\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-handle ord-n\",\"data-ord\":\"n\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-handle ord-ne\",\"data-ord\":\"ne\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-handle ord-e\",\"data-ord\":\"e\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-handle ord-se\",\"data-ord\":\"se\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-handle ord-s\",\"data-ord\":\"s\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-handle ord-sw\",\"data-ord\":\"sw\"}),t().createElement(\"div\",{className:\"ReactCrop__drag-handle ord-w\",\"data-ord\":\"w\"})),n&&y(a)&&t().createElement(\"div\",{className:\"ReactCrop__selection-addon\",onMouseDown:function(e){return e.stopPropagation()}},n(this.state)),i&&t().createElement(t().Fragment,null,t().createElement(\"div\",{className:\"ReactCrop__rule-of-thirds-hz\"}),t().createElement(\"div\",{className:\"ReactCrop__rule-of-thirds-vt\"})))}},{key:\"makeNewCrop\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"px\",t=m(m({},f.defaultCrop),this.props.crop||{}),r=this.mediaDimensions,o=r.width,n=r.height;return\"px\"===e?x(t,o,n):b(t,o,n)}},{key:\"crossOverCheck\",value:function(){var e=this.evData,t=this.props,r=t.minWidth,o=t.minHeight;!r&&(!e.xCrossOver&&-Math.abs(e.cropStartWidth)-e.xDiff>=0||e.xCrossOver&&-Math.abs(e.cropStartWidth)-e.xDiff<=0)&&(e.xCrossOver=!e.xCrossOver),!o&&(!e.yCrossOver&&-Math.abs(e.cropStartHeight)-e.yDiff>=0||e.yCrossOver&&-Math.abs(e.cropStartHeight)-e.yDiff<=0)&&(e.yCrossOver=!e.yCrossOver);var n=e.xCrossOver!==e.startXCrossOver,i=e.yCrossOver!==e.startYCrossOver;e.inversedXOrd=!!n&&w(e.ord),e.inversedYOrd=!!i&&w(e.ord)}},{key:\"render\",value:function(){var e=this.props,r=e.children,o=e.circularCrop,n=e.className,i=e.crossorigin,s=e.crop,c=e.disabled,d=e.locked,p=e.imageAlt,h=e.onImageError,u=e.renderComponent,l=e.src,f=e.style,m=e.imageStyle,v=e.ruleOfThirds,g=this.state,w=g.cropIsActive,C=g.newCropIsBeingDrawn,b=y(s)&&this.componentRef?this.createCropSelection():null,x=function(){for(var e,t,r=0,o=\"\";r<arguments.length;)(e=arguments[r++])&&(t=a(e))&&(o&&(o+=\" \"),o+=t);return o}(\"ReactCrop\",n,{\"ReactCrop--active\":w,\"ReactCrop--disabled\":c,\"ReactCrop--locked\":d,\"ReactCrop--new-crop\":C,\"ReactCrop--fixed-aspect\":s&&s.aspect,\"ReactCrop--circular-crop\":s&&o,\"ReactCrop--rule-of-thirds\":s&&v,\"ReactCrop--invisible-crop\":!this.dragStarted&&s&&!s.width&&!s.height});return t().createElement(\"div\",{ref:this.bindComponentRef,className:x,style:f,onPointerDown:this.onComponentPointerDown,tabIndex:0,onKeyDown:this.onComponentKeyDown,onKeyUp:this.onComponentKeyUp},t().createElement(\"div\",{ref:this.bindMediaWrapperRef},u||t().createElement(\"img\",{ref:this.bindImageRef,crossOrigin:i,className:\"ReactCrop__image\",style:m,src:l,onLoad:this.onImageLoad,onError:h,alt:p})),r,b)}}])&&d(r.prototype,o),f}(e.PureComponent);S.xOrds=[\"e\",\"w\"],S.yOrds=[\"n\",\"s\"],S.xyOrds=[\"nw\",\"ne\",\"se\",\"sw\"],S.nudgeStep=1,S.nudgeStepMedium=10,S.nudgeStepLarge=100,S.defaultCrop={x:0,y:0,width:0,height:0,unit:\"px\"},S.propTypes={className:i().string,children:i().oneOfType([i().arrayOf(i().node),i().node]),circularCrop:i().bool,crop:i().shape({aspect:i().number,x:i().number,y:i().number,width:i().number,height:i().number,unit:i().oneOf([\"px\",\"%\"])}),crossorigin:i().string,disabled:i().bool,locked:i().bool,imageAlt:i().string,imageStyle:i().shape({}),keepSelection:i().bool,minWidth:i().number,minHeight:i().number,maxWidth:i().number,maxHeight:i().number,onChange:i().func.isRequired,onImageError:i().func,onComplete:i().func,onImageLoaded:i().func,onDragStart:i().func,onDragEnd:i().func,src:i().string.isRequired,style:i().shape({}),renderComponent:i().node,renderSelectionAddon:i().func,ruleOfThirds:i().bool},S.defaultProps={circularCrop:!1,className:void 0,crop:void 0,crossorigin:void 0,disabled:!1,locked:!1,imageAlt:\"\",maxWidth:void 0,maxHeight:void 0,minWidth:0,minHeight:0,keepSelection:!1,onComplete:function(){},onImageError:function(){},onImageLoaded:function(){},onDragStart:function(){},onDragEnd:function(){},children:void 0,style:void 0,renderComponent:void 0,imageStyle:void 0,renderSelectionAddon:void 0,ruleOfThirds:!1}})(),n})()}));","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\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\nconst React = require('react')\nconst ReactIs = require('react-is')\nconst svg = require('property-information/svg')\nconst find = require('property-information/find')\nconst hastToReact = require('property-information/hast-to-react.json')\nconst spaces = require('space-separated-tokens')\nconst commas = require('comma-separated-tokens')\nconst style = require('style-to-object')\n\nexports.hastToReact = toReact\nexports.hastChildrenToReact = childrenToReact\n\n/**\n * @typedef {JSX.IntrinsicElements} IntrinsicElements\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n */\n\n/**\n * @typedef Info\n * @property {string?} space\n * @property {string?} attribute\n * @property {string?} property\n * @property {boolean} boolean\n * @property {boolean} booleanish\n * @property {boolean} overloadedBoolean\n * @property {boolean} number\n * @property {boolean} commaSeparated\n * @property {boolean} spaceSeparated\n * @property {boolean} commaOrSpaceSeparated\n * @property {boolean} mustUseProperty\n * @property {boolean} defined\n *\n * @typedef Schema\n * @property {Object.<string, Info>} property\n * @property {Object.<string, string>} normal\n * @property {string?} space\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {TransformOptions} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array.<Comment|Element|Text>} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array.<Comment|Element|Text>} children\n * @param {string?} title\n * @returns {string|undefined}\n *\n * @typedef {keyof IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef ReactMarkdownProps\n * @property {Element} node\n * @property {string} key\n * @property {ReactNode[]} children\n * @property {Position?} [sourcePosition] Passed when `options.rawSourcePos` is given\n * @property {number} [index] Passed when `options.includeElementIndex` is given\n * @property {number} [siblingCount] Passed when `options.includeElementIndex` is given\n *\n * @callback CodeComponent\n * @param {JSX.IntrinsicElements['code'] & ReactMarkdownProps & {inline?: boolean}} props\n * @returns {ReactNode}\n *\n * @callback HeadingComponent\n * @param {JSX.IntrinsicElements['h1'] & ReactMarkdownProps & {level: number}} props\n * @returns {ReactNode}\n *\n * @callback LiComponent\n * @param {JSX.IntrinsicElements['li'] & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} props\n * @returns {ReactNode}\n *\n * @callback OrderedListComponent\n * @param {JSX.IntrinsicElements['ol'] & ReactMarkdownProps & {depth: number, ordered: true}} props\n * @returns {ReactNode}\n *\n * @callback TableCellComponent\n * @param {JSX.IntrinsicElements['table'] & ReactMarkdownProps & {style?: Object.<string, unknown>, isHeader: boolean}} props\n * @returns {ReactNode}\n *\n * @callback TableRowComponent\n * @param {JSX.IntrinsicElements['tr'] & ReactMarkdownProps & {isHeader: boolean}} props\n * @returns {ReactNode}\n *\n * @callback UnorderedListComponent\n * @param {JSX.IntrinsicElements['ul'] & ReactMarkdownProps & {depth: number, ordered: false}} props\n * @returns {ReactNode}\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableCellComponent|ReactMarkdownNames} td\n * @property {TableCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {{[TagName in keyof IntrinsicElements]: TagName | ((props: IntrinsicElements[TagName] & ReactMarkdownProps) => ReactNode)}} NormalComponents\n * @typedef {Partial<Omit<NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components\n */\n\n/**\n * @typedef TransformOptions\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {string|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nfunction childrenToReact(context, node) {\n  /** @type {Array.<ReactNode>} */\n  const children = []\n  let childIndex = -1\n  /** @type {Comment|Doctype|Element|Raw|Text} */\n  let child\n\n  while (++childIndex < node.children.length) {\n    child = node.children[childIndex]\n\n    if (child.type === 'element') {\n      children.push(toReact(context, child, childIndex, node))\n    } else if (child.type === 'text') {\n      // React does not permit whitespace text elements as children of table:\n      // cf. https://github.com/remarkjs/react-markdown/issues/576\n      if (\n        node.type !== 'element' ||\n        !tableElements.has(node.tagName) ||\n        child.value !== '\\n'\n      ) {\n        children.push(child.value)\n      }\n    }\n    // @ts-expect-error `raw` nodes are non-standard\n    else if (child.type === 'raw' && !context.options.skipHtml) {\n      // Default behavior is to show (encoded) HTML.\n      // @ts-expect-error `raw` nodes are non-standard\n      children.push(child.value)\n    }\n  }\n\n  return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n  const options = context.options\n  const parentSchema = context.schema\n  /** @type {ReactMarkdownNames} */\n  // @ts-expect-error assume a known HTML/SVG element.\n  const name = node.tagName\n  /** @type {Object.<string, unknown>} */\n  const properties = {}\n  let schema = parentSchema\n  /** @type {string} */\n  let property\n\n  if (parentSchema.space === 'html' && name === 'svg') {\n    schema = svg\n    context.schema = schema\n  }\n\n  /* istanbul ignore else - types say they’re optional. */\n  if (node.properties) {\n    for (property in node.properties) {\n      /* istanbul ignore else - prototype polution. */\n      if (own.call(node.properties, property)) {\n        addProperty(properties, property, node.properties[property], context)\n      }\n    }\n  }\n\n  if (name === 'ol' || name === 'ul') {\n    context.listDepth++\n  }\n\n  const children = childrenToReact(context, node)\n\n  if (name === 'ol' || name === 'ul') {\n    context.listDepth--\n  }\n\n  // Restore parent schema.\n  context.schema = parentSchema\n\n  // Nodes created by plugins do not have positional info, in which case we use\n  // an object that matches the positon interface.\n  const position = node.position || {\n    start: {line: null, column: null, offset: null},\n    end: {line: null, column: null, offset: null}\n  }\n  const component =\n    options.components && own.call(options.components, name)\n      ? options.components[name]\n      : name\n  const basic = typeof component === 'string' || component === React.Fragment\n\n  if (!ReactIs.isValidElementType(component)) {\n    throw new TypeError(\n      `Component for name \\`${name}\\` not defined or is not renderable`\n    )\n  }\n\n  properties.key = [\n    name,\n    position.start.line,\n    position.start.column,\n    index\n  ].join('-')\n\n  if (name === 'a' && options.linkTarget) {\n    properties.target =\n      typeof options.linkTarget === 'function'\n        ? // @ts-expect-error assume `href` is a string\n          options.linkTarget(properties.href, node.children, properties.title)\n        : options.linkTarget\n  }\n\n  if (name === 'a' && options.transformLinkUri) {\n    properties.href = options.transformLinkUri(\n      // @ts-expect-error assume `href` is a string\n      properties.href,\n      node.children,\n      properties.title\n    )\n  }\n\n  if (\n    !basic &&\n    name === 'code' &&\n    parent.type === 'element' &&\n    parent.tagName !== 'pre'\n  ) {\n    properties.inline = true\n  }\n\n  if (\n    !basic &&\n    (name === 'h1' ||\n      name === 'h2' ||\n      name === 'h3' ||\n      name === 'h4' ||\n      name === 'h5' ||\n      name === 'h6')\n  ) {\n    properties.level = parseInt(name.charAt(1), 10)\n  }\n\n  if (name === 'img' && options.transformImageUri) {\n    properties.src = options.transformImageUri(\n      // @ts-expect-error assume `src` is a string\n      properties.src,\n      properties.alt,\n      properties.title\n    )\n  }\n\n  if (!basic && name === 'li' && parent.type === 'element') {\n    const input = getInputElement(node)\n    properties.checked =\n      input && input.properties ? Boolean(input.properties.checked) : null\n    properties.index = getElementsBeforeCount(parent, node)\n    properties.ordered = parent.tagName === 'ol'\n  }\n\n  if (!basic && (name === 'ol' || name === 'ul')) {\n    properties.ordered = name === 'ol'\n    properties.depth = context.listDepth\n  }\n\n  if (name === 'td' || name === 'th') {\n    if (properties.align) {\n      if (!properties.style) properties.style = {}\n      // @ts-expect-error assume `style` is an object\n      properties.style.textAlign = properties.align\n      delete properties.align\n    }\n\n    if (!basic) {\n      properties.isHeader = name === 'th'\n    }\n  }\n\n  if (!basic && name === 'tr' && parent.type === 'element') {\n    properties.isHeader = Boolean(parent.tagName === 'thead')\n  }\n\n  // If `sourcePos` is given, pass source information (line/column info from markdown source).\n  if (options.sourcePos) {\n    properties['data-sourcepos'] = flattenPosition(position)\n  }\n\n  if (!basic && options.rawSourcePos) {\n    properties.sourcePosition = node.position\n  }\n\n  // If `includeElementIndex` is given, pass node index info to components.\n  if (!basic && options.includeElementIndex) {\n    properties.index = getElementsBeforeCount(parent, node)\n    properties.siblingCount = getElementsBeforeCount(parent)\n  }\n\n  if (!basic) {\n    properties.node = node\n  }\n\n  // Ensure no React warnings are emitted for void elements w/ children.\n  return children.length > 0\n    ? React.createElement(component, properties, children)\n    : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n  let index = -1\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n\n    if (child.type === 'element' && child.tagName === 'input') {\n      return child\n    }\n  }\n\n  return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n  let index = -1\n  let count = 0\n\n  while (++index < parent.children.length) {\n    if (parent.children[index] === node) break\n    if (parent.children[index].type === 'element') count++\n  }\n\n  return count\n}\n\n/**\n * @param {Object.<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n  /** @type {Info} */\n  const info = find(ctx.schema, prop)\n  let result = value\n\n  // Ignore nullish and `NaN` values.\n  // eslint-disable-next-line no-self-compare\n  if (result === null || result === undefined || result !== result) {\n    return\n  }\n\n  // Accept `array`.\n  // Most props are space-separated.\n  if (result && typeof result === 'object' && 'length' in result) {\n    // type-coverage:ignore-next-line remove when typed.\n    result = (info.commaSeparated ? commas : spaces).stringify(result)\n  }\n\n  if (info.property === 'style' && typeof result === 'string') {\n    result = parseStyle(result)\n  }\n\n  /* istanbul ignore else - types say they’re optional. */\n  if (info.space && info.property) {\n    props[\n      own.call(hastToReact, info.property)\n        ? hastToReact[info.property]\n        : info.property\n    ] = result\n  } else if (info.attribute) {\n    props[info.attribute] = result\n  }\n}\n\n/**\n * @param {string} value\n * @returns {Object.<string, string>}\n */\nfunction parseStyle(value) {\n  /** @type {Object.<string, string>} */\n  const result = {}\n\n  try {\n    style(value, iterator)\n  } catch (/** @type {unknown} */ _) {\n    // Silent.\n  }\n\n  return result\n\n  /**\n   * @param {string} name\n   * @param {string} v\n   */\n  function iterator(name, v) {\n    const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n    result[k.replace(/-([a-z])/g, styleReplacer)] = v\n  }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n  return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n  return [\n    pos.start.line,\n    ':',\n    pos.start.column,\n    '-',\n    pos.end.line,\n    ':',\n    pos.end.column\n  ]\n    .map((d) => String(d))\n    .join('')\n}\n","'use strict'\n\nconst React = require('react')\nconst vfile = require('vfile')\nconst unified = require('unified')\nconst parse = require('remark-parse')\nconst remarkRehype = require('remark-rehype')\nconst PropTypes = require('prop-types')\nconst html = require('property-information/html')\nconst filter = require('./rehype-filter.js')\nconst uriTransformer = require('./uri-transformer.js')\nconst childrenToReact = require('./ast-to-react.js').hastChildrenToReact\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').RehypeFilterOptions} FilterOptions\n * @typedef {import('./ast-to-react.js').TransformOptions} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [plugins=[]] **deprecated**: use `remarkPlugins` instead\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n */\n\nmodule.exports = ReactMarkdown\n\nconst own = {}.hasOwnProperty\nconst changelog =\n  'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/**\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\n/**\n * @type {Object.<string, Deprecation>}\n */\nconst deprecated = {\n  renderers: {to: 'components', id: 'change-renderers-to-components'},\n  astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n  allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n  escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n  source: {to: 'children', id: 'change-source-to-children'},\n  allowNode: {\n    to: 'allowElement',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  allowedTypes: {\n    to: 'allowedElements',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  disallowedTypes: {\n    to: 'disallowedElements',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  includeNodeIndex: {\n    to: 'includeElementIndex',\n    id: 'change-includenodeindex-to-includeelementindex'\n  }\n}\n\n/**\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nfunction ReactMarkdown(options) {\n  for (const key in deprecated) {\n    if (own.call(deprecated, key) && own.call(options, key)) {\n      /** @type {Deprecation} */\n      const deprecation = deprecated[key]\n      console.warn(\n        `[react-markdown] Warning: please ${\n          deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n        } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n      )\n      delete deprecated[key]\n    }\n  }\n\n  const processor = unified()\n    .use(parse)\n    // TODO: deprecate `plugins` in v7.0.0.\n    .use(options.remarkPlugins || options.plugins || [])\n    .use(remarkRehype, {allowDangerousHtml: true})\n    .use(options.rehypePlugins || [])\n    .use(filter, options)\n\n  /** @type {vfile} */\n  let file\n\n  if (typeof options.children === 'string') {\n    file = vfile(options.children)\n  } else {\n    if (options.children !== undefined && options.children !== null) {\n      console.warn(\n        `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n      )\n    }\n\n    file = vfile()\n  }\n\n  /** @type {Root} */\n  // @ts-expect-error we’ll throw if it isn’t a root next.\n  const hastNode = processor.runSync(processor.parse(file), file)\n\n  if (hastNode.type !== 'root') {\n    throw new TypeError('Expected a `root` node')\n  }\n\n  /** @type {ReactElement} */\n  let result = React.createElement(\n    React.Fragment,\n    {},\n    childrenToReact({options: options, schema: html, listDepth: 0}, hastNode)\n  )\n\n  if (options.className) {\n    result = React.createElement('div', {className: options.className}, result)\n  }\n\n  return result\n}\n\nReactMarkdown.defaultProps = {transformLinkUri: uriTransformer}\n\nReactMarkdown.propTypes = {\n  // Core options:\n  children: PropTypes.string,\n  // Layout options:\n  className: PropTypes.string,\n  // Filter options:\n  allowElement: PropTypes.func,\n  allowedElements: PropTypes.arrayOf(PropTypes.string),\n  disallowedElements: PropTypes.arrayOf(PropTypes.string),\n  unwrapDisallowed: PropTypes.bool,\n  // Plugin options:\n  // type-coverage:ignore-next-line\n  remarkPlugins: PropTypes.arrayOf(\n    PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.func,\n      PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))\n    ])\n  ),\n  // type-coverage:ignore-next-line\n  rehypePlugins: PropTypes.arrayOf(\n    PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.func,\n      PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))\n    ])\n  ),\n  // Transform options:\n  sourcePos: PropTypes.bool,\n  rawSourcePos: PropTypes.bool,\n  skipHtml: PropTypes.bool,\n  includeElementIndex: PropTypes.bool,\n  transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n  transformImageUri: PropTypes.func,\n  components: PropTypes.object\n}\n\nReactMarkdown.uriTransformer = uriTransformer\n","const visit = require('unist-util-visit')\n\nmodule.exports = rehypeFilter\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef RehypeFilterOptions\n * @property {Array.<string>} [allowedElements]\n * @property {Array.<string>} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[RehypeFilterOptions]>}\n */\nfunction rehypeFilter(options) {\n  if (options.allowedElements && options.disallowedElements) {\n    throw new TypeError(\n      'Only one of `allowedElements` and `disallowedElements` should be defined'\n    )\n  }\n\n  if (\n    options.allowedElements ||\n    options.disallowedElements ||\n    options.allowElement\n  ) {\n    return (tree) => {\n      const node = /** @type {Root} */ (tree)\n      visit(node, 'element', onelement)\n    }\n  }\n\n  /**\n   * @param {Node} node_\n   * @param {number|null|undefined} index\n   * @param {Node|null|undefined} parent_\n   * @returns {number|void}\n   */\n  function onelement(node_, index, parent_) {\n    const node = /** @type {Element} */ (node_)\n    const parent = /** @type {Element|Root} */ (parent_)\n    /** @type {boolean|undefined} */\n    let remove\n\n    if (options.allowedElements) {\n      remove = !options.allowedElements.includes(node.tagName)\n    } else if (options.disallowedElements) {\n      remove = options.disallowedElements.includes(node.tagName)\n    }\n\n    if (!remove && options.allowElement && typeof index === 'number') {\n      remove = !options.allowElement(node, index, parent)\n    }\n\n    if (remove && typeof index === 'number') {\n      if (options.unwrapDisallowed && node.children) {\n        parent.children.splice(index, 1, ...node.children)\n      } else {\n        parent.children.splice(index, 1)\n      }\n\n      return index\n    }\n\n    return undefined\n  }\n}\n","const protocols = ['http', 'https', 'mailto', 'tel']\n\nmodule.exports = uriTransformer\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nfunction uriTransformer(uri) {\n  const url = (uri || '').trim()\n  const first = url.charAt(0)\n\n  if (first === '#' || first === '/') {\n    return url\n  }\n\n  const colon = url.indexOf(':')\n  if (colon === -1) {\n    return url\n  }\n\n  let index = -1\n\n  while (++index < protocols.length) {\n    const protocol = protocols[index]\n\n    if (\n      colon === protocol.length &&\n      url.slice(0, protocol.length).toLowerCase() === protocol\n    ) {\n      return url\n    }\n  }\n\n  index = url.indexOf('?')\n  if (index !== -1 && colon > index) {\n    return url\n  }\n\n  index = url.indexOf('#')\n  if (index !== -1 && colon > index) {\n    return url\n  }\n\n  // eslint-disable-next-line no-script-url\n  return 'javascript:void(0)'\n}\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react'), require('prop-types')) :\n  typeof define === 'function' && define.amd ? define(['react', 'prop-types'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ReactTags = factory(global.React, global.PropTypes));\n}(this, (function (React, PropTypes) { 'use strict';\n\n  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);\n\n  function Tag (props) {\n    return (\n      React__default['default'].createElement( 'button', { type: 'button', className: props.classNames.selectedTag, title: props.removeButtonText, onClick: props.onDelete },\n        React__default['default'].createElement( 'span', { className: props.classNames.selectedTagName }, props.tag.name)\n      )\n    )\n  }\n\n  var SIZER_STYLES = {\n    position: 'absolute',\n    width: 0,\n    height: 0,\n    visibility: 'hidden',\n    overflow: 'scroll',\n    whiteSpace: 'pre'\n  };\n\n  var STYLE_PROPS = [\n    'fontSize',\n    'fontFamily',\n    'fontWeight',\n    'fontStyle',\n    'letterSpacing',\n    'textTransform'\n  ];\n\n  var Input = /*@__PURE__*/(function (superclass) {\n    function Input (props) {\n      superclass.call(this, props);\n      this.state = { inputWidth: null };\n\n      this.input = React__default['default'].createRef();\n      this.sizer = React__default['default'].createRef();\n    }\n\n    if ( superclass ) Input.__proto__ = superclass;\n    Input.prototype = Object.create( superclass && superclass.prototype );\n    Input.prototype.constructor = Input;\n\n    Input.prototype.componentDidMount = function componentDidMount () {\n      if (this.props.autoresize) {\n        this.copyInputStyles();\n        this.updateInputWidth();\n      }\n    };\n\n    Input.prototype.componentDidUpdate = function componentDidUpdate (ref) {\n      var query = ref.query;\n      var placeholderText = ref.placeholderText;\n\n      if (query !== this.props.query || placeholderText !== this.props.placeholderText) {\n        this.updateInputWidth();\n      }\n    };\n\n    Input.prototype.copyInputStyles = function copyInputStyles () {\n      var this$1$1 = this;\n\n      var inputStyle = window.getComputedStyle(this.input.current);\n\n      STYLE_PROPS.forEach(function (prop) {\n        this$1$1.sizer.current.style[prop] = inputStyle[prop];\n      });\n    };\n\n    Input.prototype.updateInputWidth = function updateInputWidth () {\n      var inputWidth;\n\n      if (this.props.autoresize) {\n        // scrollWidth is designed to be fast not accurate.\n        // +2 is completely arbitrary but does the job.\n        inputWidth = Math.ceil(this.sizer.current.scrollWidth) + 2;\n      }\n\n      if (inputWidth !== this.state.inputWidth) {\n        this.setState({ inputWidth: inputWidth });\n      }\n    };\n\n    Input.prototype.render = function render () {\n      var ref = this.props;\n      var id = ref.id;\n      var query = ref.query;\n      var ariaLabelText = ref.ariaLabelText;\n      var placeholderText = ref.placeholderText;\n      var expanded = ref.expanded;\n      var classNames = ref.classNames;\n      var inputAttributes = ref.inputAttributes;\n      var inputEventHandlers = ref.inputEventHandlers;\n      var index = ref.index;\n\n      return (\n        React__default['default'].createElement( 'div', { className: classNames.searchWrapper },\n          React__default['default'].createElement( 'input', Object.assign({},\n            inputAttributes, inputEventHandlers, { ref: this.input, value: query, placeholder: placeholderText, className: classNames.searchInput, role: 'combobox', 'aria-autocomplete': 'list', 'aria-label': ariaLabelText || placeholderText, 'aria-owns': id, 'aria-activedescendant': index > -1 ? (id + \"-\" + index) : null, 'aria-expanded': expanded, style: { width: this.state.inputWidth } })),\n          React__default['default'].createElement( 'div', { ref: this.sizer, style: SIZER_STYLES }, query || placeholderText)\n        )\n      )\n    };\n\n    return Input;\n  }(React__default['default'].Component));\n\n  function escapeForRegExp (string) {\n    return string.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n  }\n\n  function matchAny (string) {\n    return new RegExp(escapeForRegExp(string), 'gi')\n  }\n\n  function matchPartial (string) {\n    return new RegExp((\"(?:^|\\\\s)\" + (escapeForRegExp(string))), 'i')\n  }\n\n  function matchExact (string) {\n    return new RegExp((\"^\" + (escapeForRegExp(string)) + \"$\"), 'i')\n  }\n\n  function markIt (name, query) {\n    var regexp = matchAny(query);\n    return name.replace(regexp, '<mark>$&</mark>')\n  }\n\n  function DefaultSuggestionComponent (ref) {\n    var item = ref.item;\n    var query = ref.query;\n\n    return (\n      React__default['default'].createElement( 'span', { dangerouslySetInnerHTML: { __html: markIt(item.name, query) } })\n    )\n  }\n\n  function Suggestions (props) {\n    var SuggestionComponent = props.suggestionComponent || DefaultSuggestionComponent;\n\n    var options = props.options.map(function (item, index) {\n      var key = (props.id) + \"-\" + index;\n      var classNames = [];\n\n      if (props.index === index) {\n        classNames.push(props.classNames.suggestionActive);\n      }\n\n      if (item.disabled) {\n        classNames.push(props.classNames.suggestionDisabled);\n      }\n\n      return (\n        React__default['default'].createElement( 'li', {\n          id: key, key: key, role: 'option', className: classNames.join(' '), 'aria-disabled': Boolean(item.disabled), onMouseDown: function (e) { return e.preventDefault(); }, onClick: function () { return props.addTag(item); } },\n          item.prefix\n            ? React__default['default'].createElement( 'span', { className: props.classNames.suggestionPrefix }, item.prefix, ' ')\n            : null,\n          item.disableMarkIt\n            ? item.name\n            : React__default['default'].createElement( SuggestionComponent, { item: item, query: props.query })\n        )\n      )\n    });\n\n    return (\n      React__default['default'].createElement( 'div', { className: props.classNames.suggestions },\n        React__default['default'].createElement( 'ul', { role: 'listbox', id: props.id }, options)\n      )\n    )\n  }\n\n  function focusNextElement (scope, currentTarget) {\n    var interactiveEls = scope.querySelectorAll('a,button,input');\n\n    var currentEl = Array.prototype.findIndex.call(\n      interactiveEls,\n      function (element) { return element === currentTarget; }\n    );\n\n    var nextEl = interactiveEls[currentEl - 1] || interactiveEls[currentEl + 1];\n\n    if (nextEl) {\n      nextEl.focus();\n    }\n  }\n\n  var KEYS = {\n    ENTER: 'Enter',\n    TAB: 'Tab',\n    BACKSPACE: 'Backspace',\n    UP_ARROW: 'ArrowUp',\n    UP_ARROW_COMPAT: 'Up',\n    DOWN_ARROW: 'ArrowDown',\n    DOWN_ARROW_COMPAT: 'Down'\n  };\n\n  var CLASS_NAMES = {\n    root: 'react-tags',\n    rootFocused: 'is-focused',\n    selected: 'react-tags__selected',\n    selectedTag: 'react-tags__selected-tag',\n    selectedTagName: 'react-tags__selected-tag-name',\n    search: 'react-tags__search',\n    searchWrapper: 'react-tags__search-wrapper',\n    searchInput: 'react-tags__search-input',\n    suggestions: 'react-tags__suggestions',\n    suggestionActive: 'is-active',\n    suggestionDisabled: 'is-disabled',\n    suggestionPrefix: 'react-tags__suggestion-prefix'\n  };\n\n  function findMatchIndex (options, query) {\n    return options.findIndex(function (option) { return matchExact(query).test(option.name); })\n  }\n\n  function pressDelimiter () {\n    if (this.state.query.length >= this.props.minQueryLength) {\n      // Check if the user typed in an existing suggestion.\n      var match = findMatchIndex(this.state.options, this.state.query);\n      var index = this.state.index === -1 ? match : this.state.index;\n      var tag = index > -1 ? this.state.options[index] : null;\n\n      if (tag) {\n        this.addTag(tag);\n      } else if (this.props.allowNew) {\n        this.addTag({ name: this.state.query });\n      }\n    }\n  }\n\n  function pressUpKey (e) {\n    e.preventDefault();\n\n    // if first item, cycle to the bottom\n    var size = this.state.options.length - 1;\n    this.setState({ index: this.state.index <= 0 ? size : this.state.index - 1 });\n  }\n\n  function pressDownKey (e) {\n    e.preventDefault();\n\n    // if last item, cycle to top\n    var size = this.state.options.length - 1;\n    this.setState({ index: this.state.index >= size ? 0 : this.state.index + 1 });\n  }\n\n  function pressBackspaceKey () {\n    // when backspace key is pressed and query is blank, delete the last tag\n    if (!this.state.query.length) {\n      this.deleteTag(this.props.tags.length - 1);\n    }\n  }\n\n  function defaultSuggestionsFilter (item, query) {\n    var regexp = matchPartial(query);\n    return regexp.test(item.name)\n  }\n\n  function getOptions (props, state) {\n    var options;\n\n    if (props.suggestionsTransform) {\n      options = props.suggestionsTransform(state.query, props.suggestions);\n    } else {\n      options = props.suggestions.filter(function (item) { return props.suggestionsFilter(item, state.query); });\n    }\n\n    options = options.slice(0, props.maxSuggestionsLength);\n\n    if (props.allowNew && props.newTagText && findMatchIndex(options, state.query) === -1) {\n      options.push({ id: 0, name: state.query, prefix: props.newTagText, disableMarkIt: true });\n    } else if (props.noSuggestionsText && options.length === 0) {\n      options.push({ id: 0, name: props.noSuggestionsText, disabled: true, disableMarkIt: true });\n    }\n\n    return options\n  }\n\n  var ReactTags = /*@__PURE__*/(function (superclass) {\n    function ReactTags (props) {\n      superclass.call(this, props);\n\n      this.state = {\n        query: '',\n        focused: false,\n        index: -1\n      };\n\n      this.inputEventHandlers = {\n        // Provide a no-op function to the input component to avoid warnings\n        // <https://github.com/i-like-robots/react-tags/issues/135>\n        // <https://github.com/facebook/react/issues/13835>\n        onChange: function () {},\n        onBlur: this.onBlur.bind(this),\n        onFocus: this.onFocus.bind(this),\n        onInput: this.onInput.bind(this),\n        onKeyDown: this.onKeyDown.bind(this)\n      };\n\n      this.container = React__default['default'].createRef();\n      this.input = React__default['default'].createRef();\n    }\n\n    if ( superclass ) ReactTags.__proto__ = superclass;\n    ReactTags.prototype = Object.create( superclass && superclass.prototype );\n    ReactTags.prototype.constructor = ReactTags;\n\n    ReactTags.prototype.onInput = function onInput (e) {\n      var query = e.target.value;\n\n      if (this.props.onInput) {\n        this.props.onInput(query);\n      }\n\n      // NOTE: This test is a last resort for soft keyboards and browsers which do not\n      // support `KeyboardEvent.key`.\n      // <https://bugs.chromium.org/p/chromium/issues/detail?id=763559>\n      // <https://bugs.chromium.org/p/chromium/issues/detail?id=118639>\n      if (\n        query.length === this.state.query.length + 1 &&\n        this.props.delimiters.indexOf(query.slice(-1)) > -1\n      ) {\n        pressDelimiter.call(this);\n      } else if (query !== this.state.query) {\n        this.setState({ query: query });\n      }\n    };\n\n    ReactTags.prototype.onKeyDown = function onKeyDown (e) {\n      // when one of the terminating keys is pressed, add current query to the tags\n      if (this.props.delimiters.indexOf(e.key) > -1) {\n        if (this.state.query || this.state.index > -1) {\n          e.preventDefault();\n        }\n\n        pressDelimiter.call(this);\n      }\n\n      // when backspace key is pressed and query is blank, delete the last tag\n      if (e.key === KEYS.BACKSPACE && this.props.allowBackspace) {\n        pressBackspaceKey.call(this, e);\n      }\n\n      if (e.key === KEYS.UP_ARROW || e.key === KEYS.UP_ARROW_COMPAT) {\n        pressUpKey.call(this, e);\n      }\n\n      if (e.key === KEYS.DOWN_ARROW || e.key === KEYS.DOWN_ARROW_COMPAT) {\n        pressDownKey.call(this, e);\n      }\n    };\n\n    ReactTags.prototype.onClick = function onClick (e) {\n      if (document.activeElement !== e.target) {\n        this.focusInput();\n      }\n    };\n\n    ReactTags.prototype.onBlur = function onBlur () {\n      this.setState({ focused: false, index: -1 });\n\n      if (this.props.onBlur) {\n        this.props.onBlur();\n      }\n\n      if (this.props.addOnBlur) {\n        pressDelimiter.call(this);\n      }\n    };\n\n    ReactTags.prototype.onFocus = function onFocus () {\n      this.setState({ focused: true });\n\n      if (this.props.onFocus) {\n        this.props.onFocus();\n      }\n    };\n\n    ReactTags.prototype.onDeleteTag = function onDeleteTag (index, event) {\n      // Because we'll destroy the element with cursor focus we need to ensure\n      // it does not get lost and move it to the next interactive element\n      if (this.container.current) {\n        focusNextElement(this.container.current, event.currentTarget);\n      }\n\n      this.deleteTag(index);\n    };\n\n    ReactTags.prototype.addTag = function addTag (tag) {\n      if (tag.disabled) {\n        return\n      }\n\n      if (typeof this.props.onValidate === 'function' && !this.props.onValidate(tag)) {\n        return\n      }\n\n      this.props.onAddition({ id: tag.id, name: tag.name });\n\n      this.clearInput();\n    };\n\n    ReactTags.prototype.deleteTag = function deleteTag (i) {\n      this.props.onDelete(i);\n    };\n\n    ReactTags.prototype.clearInput = function clearInput () {\n      this.setState({\n        query: '',\n        index: -1\n      });\n    };\n\n    ReactTags.prototype.clearSelectedIndex = function clearSelectedIndex () {\n      this.setState({ index: -1 });\n    };\n\n    ReactTags.prototype.focusInput = function focusInput () {\n      if (this.input.current && this.input.current.input.current) {\n        this.input.current.input.current.focus();\n      }\n    };\n\n    ReactTags.prototype.render = function render () {\n      var this$1$1 = this;\n\n      var TagComponent = this.props.tagComponent || Tag;\n\n      var expanded = this.state.focused && this.state.query.length >= this.props.minQueryLength;\n      var classNames = Object.assign({}, CLASS_NAMES, this.props.classNames);\n      var rootClassNames = [classNames.root];\n\n      this.state.focused && rootClassNames.push(classNames.rootFocused);\n\n      return (\n        React__default['default'].createElement( 'div', { ref: this.container, className: rootClassNames.join(' '), onClick: this.onClick.bind(this) },\n          React__default['default'].createElement( 'div', {\n            className: classNames.selected, 'aria-relevant': 'additions removals', 'aria-live': 'polite' },\n            this.props.tags.map(function (tag, i) { return (\n              React__default['default'].createElement( TagComponent, {\n                key: i, tag: tag, removeButtonText: this$1$1.props.removeButtonText, classNames: classNames, onDelete: this$1$1.onDeleteTag.bind(this$1$1, i) })\n            ); })\n          ),\n          React__default['default'].createElement( 'div', { className: classNames.search },\n            React__default['default'].createElement( Input, Object.assign({},\n              this.state, { id: this.props.id, ref: this.input, classNames: classNames, inputAttributes: this.props.inputAttributes, inputEventHandlers: this.inputEventHandlers, autoresize: this.props.autoresize, expanded: expanded, placeholderText: this.props.placeholderText, ariaLabelText: this.props.ariaLabelText })),\n            expanded && this.state.options.length\n              ? React__default['default'].createElement( Suggestions, Object.assign({},\n                  this.state, { id: this.props.id, classNames: classNames, expanded: expanded, addTag: this.addTag.bind(this), suggestionComponent: this.props.suggestionComponent }))\n              : null\n          )\n        )\n      )\n    };\n\n    ReactTags.getDerivedStateFromProps = function getDerivedStateFromProps (props, state) {\n      if (state.prevQuery !== state.query || state.prevSuggestions !== props.suggestions) {\n        return {\n          prevQuery: state.query,\n          prevSuggestions: props.suggestions,\n          options: getOptions(props, state)\n        }\n      }\n\n      return null\n    };\n\n    return ReactTags;\n  }(React__default['default'].Component));\n\n  ReactTags.defaultProps = {\n    id: 'ReactTags',\n    tags: [],\n    placeholderText: 'Add new tag',\n    removeButtonText: 'Click to remove tag',\n    noSuggestionsText: null,\n    newTagText: null,\n    suggestions: [],\n    suggestionsFilter: defaultSuggestionsFilter,\n    suggestionsTransform: null,\n    autoresize: true,\n    classNames: CLASS_NAMES,\n    delimiters: [KEYS.TAB, KEYS.ENTER],\n    minQueryLength: 2,\n    maxSuggestionsLength: 6,\n    allowNew: false,\n    allowBackspace: true,\n    addOnBlur: false,\n    tagComponent: null,\n    suggestionComponent: null,\n    inputAttributes: {}\n  };\n\n  ReactTags.propTypes = {\n    id: PropTypes__default['default'].string,\n    tags: PropTypes__default['default'].arrayOf(PropTypes__default['default'].object),\n    placeholderText: PropTypes__default['default'].string,\n    ariaLabelText: PropTypes__default['default'].string,\n    removeButtonText: PropTypes__default['default'].string,\n    noSuggestionsText: PropTypes__default['default'].string,\n    newTagText: PropTypes__default['default'].string,\n    suggestions: PropTypes__default['default'].arrayOf(PropTypes__default['default'].object),\n    suggestionsFilter: PropTypes__default['default'].func,\n    suggestionsTransform: PropTypes__default['default'].func,\n    autoresize: PropTypes__default['default'].bool,\n    delimiters: PropTypes__default['default'].arrayOf(PropTypes__default['default'].string),\n    onDelete: PropTypes__default['default'].func.isRequired,\n    onAddition: PropTypes__default['default'].func.isRequired,\n    onInput: PropTypes__default['default'].func,\n    onFocus: PropTypes__default['default'].func,\n    onBlur: PropTypes__default['default'].func,\n    onValidate: PropTypes__default['default'].func,\n    minQueryLength: PropTypes__default['default'].number,\n    maxSuggestionsLength: PropTypes__default['default'].number,\n    classNames: PropTypes__default['default'].object,\n    allowNew: PropTypes__default['default'].bool,\n    allowBackspace: PropTypes__default['default'].bool,\n    addOnBlur: PropTypes__default['default'].bool,\n    tagComponent: PropTypes__default['default'].oneOfType([\n      PropTypes__default['default'].func,\n      PropTypes__default['default'].element\n    ]),\n    suggestionComponent: PropTypes__default['default'].oneOfType([\n      PropTypes__default['default'].func,\n      PropTypes__default['default'].element\n    ]),\n    inputAttributes: PropTypes__default['default'].object\n  };\n\n  return ReactTags;\n\n})));\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n  defineProperty(\n    GeneratorFunctionPrototype,\n    \"constructor\",\n    { value: GeneratorFunction, configurable: true }\n  );\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    defineProperty(this, \"_invoke\", { value: enqueue });\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var methodName = context.method;\n    var method = delegate.iterator[methodName];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method, or a missing .next mehtod, always terminate the\n      // yield* loop.\n      context.delegate = null;\n\n      // Note: [\"return\"] must be used for ES3 parsing compatibility.\n      if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n        // If the delegate iterator has a return method, give it a\n        // chance to clean up.\n        context.method = \"return\";\n        context.arg = undefined;\n        maybeInvokeDelegate(delegate, context);\n\n        if (context.method === \"throw\") {\n          // If maybeInvokeDelegate(context) changed context.method from\n          // \"return\" to \"throw\", let that override the TypeError below.\n          return ContinueSentinel;\n        }\n      }\n      if (methodName !== \"return\") {\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a '\" + methodName + \"' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(val) {\n    var object = Object(val);\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","'use strict'\n\nmodule.exports = parse\n\nvar fromMarkdown = require('mdast-util-from-markdown')\n\nfunction parse(options) {\n  var self = this\n\n  this.Parser = parse\n\n  function parse(doc) {\n    return fromMarkdown(\n      doc,\n      Object.assign({}, self.data('settings'), options, {\n        // Note: these options are not in the readme.\n        // The goal is for them to be set by plugins on `data` instead of being\n        // passed by users.\n        extensions: self.data('micromarkExtensions') || [],\n        mdastExtensions: self.data('fromMarkdownExtensions') || []\n      })\n    )\n  }\n}\n","'use strict'\n\nvar mdast2hast = require('mdast-util-to-hast')\n\nmodule.exports = remark2rehype\n\n// Attacher.\n// If a destination is given, runs the destination with the new hast tree\n// (bridge mode).\n// Without destination, returns the tree: further plugins run on that tree\n// (mutate mode).\nfunction remark2rehype(destination, options) {\n  if (destination && !destination.process) {\n    options = destination\n    destination = null\n  }\n\n  return destination ? bridge(destination, options) : mutate(options)\n}\n\n// Bridge mode.\n// Runs the destination with the new hast tree.\nfunction bridge(destination, options) {\n  return transformer\n\n  function transformer(node, file, next) {\n    destination.run(mdast2hast(node, options), file, done)\n\n    function done(error) {\n      next(error)\n    }\n  }\n}\n\n// Mutate-mode.\n// Further transformers run on the hast tree.\nfunction mutate(options) {\n  return transformer\n\n  function transformer(node) {\n    return mdast2hast(node, options)\n  }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","\"use strict\";function _createForOfIteratorHelper(o,allowArrayLike){var it;if(typeof Symbol===\"undefined\"||o[Symbol.iterator]==null){if(Array.isArray(o)||(it=_unsupportedIterableToArray2(o))||allowArrayLike&&o&&typeof o.length===\"number\"){if(it)o=it;var i=0;var F=function F(){};return{s:F,n:function n(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]};},e:function e(_e){throw _e;},f:F};}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}var normalCompletion=true,didErr=false,err;return{s:function s(){it=o[Symbol.iterator]();},n:function n(){var step=it.next();normalCompletion=step.done;return step;},e:function e(_e2){didErr=true;err=_e2;},f:function f(){try{if(!normalCompletion&&it[\"return\"]!=null)it[\"return\"]();}finally{if(didErr)throw err;}}};}function _unsupportedIterableToArray2(o,minLen){if(!o)return;if(typeof o===\"string\")return _arrayLikeToArray2(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 _arrayLikeToArray2(o,minLen);}function _arrayLikeToArray2(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++){arr2[i]=arr[i];}return arr2;}function _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);}(function(f){if((typeof exports===\"undefined\"?\"undefined\":_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.sanitizeHtml=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(require,module,exports){'use strict';exports.byteLength=byteLength;exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=='undefined'?Uint8Array:Array;var code='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';for(var i=0,len=code.length;i<len;++i){lookup[i]=code[i];revLookup[code.charCodeAt(i)]=i;}// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)]=62;revLookup['_'.charCodeAt(0)]=63;function getLens(b64){var len=b64.length;if(len%4>0){throw new Error('Invalid string. Length must be a multiple of 4');}// Trim off extra bytes after placeholder bytes are found\n// See: https://github.com/beatgammit/base64-js/issues/42\nvar validLen=b64.indexOf('=');if(validLen===-1)validLen=len;var placeHoldersLen=validLen===len?0:4-validLen%4;return[validLen,placeHoldersLen];}// base64 is 4/3 + up to two characters of the original data\nfunction byteLength(b64){var lens=getLens(b64);var validLen=lens[0];var placeHoldersLen=lens[1];return(validLen+placeHoldersLen)*3/4-placeHoldersLen;}function _byteLength(b64,validLen,placeHoldersLen){return(validLen+placeHoldersLen)*3/4-placeHoldersLen;}function toByteArray(b64){var tmp;var lens=getLens(b64);var validLen=lens[0];var placeHoldersLen=lens[1];var arr=new Arr(_byteLength(b64,validLen,placeHoldersLen));var curByte=0;// if there are placeholders, only get up to the last complete 4 chars\nvar len=placeHoldersLen>0?validLen-4:validLen;var i;for(i=0;i<len;i+=4){tmp=revLookup[b64.charCodeAt(i)]<<18|revLookup[b64.charCodeAt(i+1)]<<12|revLookup[b64.charCodeAt(i+2)]<<6|revLookup[b64.charCodeAt(i+3)];arr[curByte++]=tmp>>16&0xFF;arr[curByte++]=tmp>>8&0xFF;arr[curByte++]=tmp&0xFF;}if(placeHoldersLen===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[curByte++]=tmp&0xFF;}if(placeHoldersLen===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[curByte++]=tmp>>8&0xFF;arr[curByte++]=tmp&0xFF;}return arr;}function tripletToBase64(num){return lookup[num>>18&0x3F]+lookup[num>>12&0x3F]+lookup[num>>6&0x3F]+lookup[num&0x3F];}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;i<end;i+=3){tmp=(uint8[i]<<16&0xFF0000)+(uint8[i+1]<<8&0xFF00)+(uint8[i+2]&0xFF);output.push(tripletToBase64(tmp));}return output.join('');}function fromByteArray(uint8){var tmp;var len=uint8.length;var extraBytes=len%3;// if we have 1 byte left, pad 2 bytes\nvar parts=[];var maxChunkLength=16383;// must be multiple of 3\n// go through the array every three bytes, we'll deal with trailing stuff later\nfor(var i=0,len2=len-extraBytes;i<len2;i+=maxChunkLength){parts.push(encodeChunk(uint8,i,i+maxChunkLength>len2?len2:i+maxChunkLength));}// pad the end with zeros, but make sure to not forget the extra bytes\nif(extraBytes===1){tmp=uint8[len-1];parts.push(lookup[tmp>>2]+lookup[tmp<<4&0x3F]+'==');}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];parts.push(lookup[tmp>>10]+lookup[tmp>>4&0x3F]+lookup[tmp<<2&0x3F]+'=');}return parts.join('');}},{}],2:[function(require,module,exports){},{}],3:[function(require,module,exports){(function(Buffer){/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */ /* eslint-disable no-proto */'use strict';var base64=require('base64-js');var ieee754=require('ieee754');exports.Buffer=Buffer;exports.SlowBuffer=SlowBuffer;exports.INSPECT_MAX_BYTES=50;var K_MAX_LENGTH=0x7fffffff;exports.kMaxLength=K_MAX_LENGTH;/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */Buffer.TYPED_ARRAY_SUPPORT=typedArraySupport();if(!Buffer.TYPED_ARRAY_SUPPORT&&typeof console!=='undefined'&&typeof console.error==='function'){console.error('This browser lacks typed array (Uint8Array) support which is required by '+'`buffer` v5.x. Use `buffer` v4.x if you require old browser support.');}function typedArraySupport(){// Can typed array instances can be augmented?\ntry{var arr=new Uint8Array(1);arr.__proto__={__proto__:Uint8Array.prototype,foo:function foo(){return 42;}};return arr.foo()===42;}catch(e){return false;}}Object.defineProperty(Buffer.prototype,'parent',{enumerable:true,get:function get(){if(!Buffer.isBuffer(this))return undefined;return this.buffer;}});Object.defineProperty(Buffer.prototype,'offset',{enumerable:true,get:function get(){if(!Buffer.isBuffer(this))return undefined;return this.byteOffset;}});function createBuffer(length){if(length>K_MAX_LENGTH){throw new RangeError('The value \"'+length+'\" is invalid for option \"size\"');}// Return an augmented `Uint8Array` instance\nvar buf=new Uint8Array(length);buf.__proto__=Buffer.prototype;return buf;}/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */function Buffer(arg,encodingOrOffset,length){// Common case.\nif(typeof arg==='number'){if(typeof encodingOrOffset==='string'){throw new TypeError('The \"string\" argument must be of type string. Received type number');}return allocUnsafe(arg);}return from(arg,encodingOrOffset,length);}// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif(typeof Symbol!=='undefined'&&Symbol.species!=null&&Buffer[Symbol.species]===Buffer){Object.defineProperty(Buffer,Symbol.species,{value:null,configurable:true,enumerable:false,writable:false});}Buffer.poolSize=8192;// not used by this implementation\nfunction from(value,encodingOrOffset,length){if(typeof value==='string'){return fromString(value,encodingOrOffset);}if(ArrayBuffer.isView(value)){return fromArrayLike(value);}if(value==null){throw TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, '+'or Array-like Object. Received type '+_typeof(value));}if(isInstance(value,ArrayBuffer)||value&&isInstance(value.buffer,ArrayBuffer)){return fromArrayBuffer(value,encodingOrOffset,length);}if(typeof value==='number'){throw new TypeError('The \"value\" argument must not be of type number. Received type number');}var valueOf=value.valueOf&&value.valueOf();if(valueOf!=null&&valueOf!==value){return Buffer.from(valueOf,encodingOrOffset,length);}var b=fromObject(value);if(b)return b;if(typeof Symbol!=='undefined'&&Symbol.toPrimitive!=null&&typeof value[Symbol.toPrimitive]==='function'){return Buffer.from(value[Symbol.toPrimitive]('string'),encodingOrOffset,length);}throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, '+'or Array-like Object. Received type '+_typeof(value));}/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/Buffer.from=function(value,encodingOrOffset,length){return from(value,encodingOrOffset,length);};// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__=Uint8Array.prototype;Buffer.__proto__=Uint8Array;function assertSize(size){if(typeof size!=='number'){throw new TypeError('\"size\" argument must be of type number');}else if(size<0){throw new RangeError('The value \"'+size+'\" is invalid for option \"size\"');}}function alloc(size,fill,encoding){assertSize(size);if(size<=0){return createBuffer(size);}if(fill!==undefined){// Only pay attention to encoding if it's a string. This\n// prevents accidentally sending in a number that would\n// be interpretted as a start offset.\nreturn typeof encoding==='string'?createBuffer(size).fill(fill,encoding):createBuffer(size).fill(fill);}return createBuffer(size);}/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/Buffer.alloc=function(size,fill,encoding){return alloc(size,fill,encoding);};function allocUnsafe(size){assertSize(size);return createBuffer(size<0?0:checked(size)|0);}/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */Buffer.allocUnsafe=function(size){return allocUnsafe(size);};/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */Buffer.allocUnsafeSlow=function(size){return allocUnsafe(size);};function fromString(string,encoding){if(typeof encoding!=='string'||encoding===''){encoding='utf8';}if(!Buffer.isEncoding(encoding)){throw new TypeError('Unknown encoding: '+encoding);}var length=byteLength(string,encoding)|0;var buf=createBuffer(length);var actual=buf.write(string,encoding);if(actual!==length){// Writing a hex string, for example, that contains invalid characters will\n// cause everything after the first invalid character to be ignored. (e.g.\n// 'abxxcd' will be treated as 'ab')\nbuf=buf.slice(0,actual);}return buf;}function fromArrayLike(array){var length=array.length<0?0:checked(array.length)|0;var buf=createBuffer(length);for(var i=0;i<length;i+=1){buf[i]=array[i]&255;}return buf;}function fromArrayBuffer(array,byteOffset,length){if(byteOffset<0||array.byteLength<byteOffset){throw new RangeError('\"offset\" is outside of buffer bounds');}if(array.byteLength<byteOffset+(length||0)){throw new RangeError('\"length\" is outside of buffer bounds');}var buf;if(byteOffset===undefined&&length===undefined){buf=new Uint8Array(array);}else if(length===undefined){buf=new Uint8Array(array,byteOffset);}else{buf=new Uint8Array(array,byteOffset,length);}// Return an augmented `Uint8Array` instance\nbuf.__proto__=Buffer.prototype;return buf;}function fromObject(obj){if(Buffer.isBuffer(obj)){var len=checked(obj.length)|0;var buf=createBuffer(len);if(buf.length===0){return buf;}obj.copy(buf,0,0,len);return buf;}if(obj.length!==undefined){if(typeof obj.length!=='number'||numberIsNaN(obj.length)){return createBuffer(0);}return fromArrayLike(obj);}if(obj.type==='Buffer'&&Array.isArray(obj.data)){return fromArrayLike(obj.data);}}function checked(length){// Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n// length is NaN (which is otherwise coerced to zero.)\nif(length>=K_MAX_LENGTH){throw new RangeError('Attempt to allocate Buffer larger than maximum '+'size: 0x'+K_MAX_LENGTH.toString(16)+' bytes');}return length|0;}function SlowBuffer(length){if(+length!=length){// eslint-disable-line eqeqeq\nlength=0;}return Buffer.alloc(+length);}Buffer.isBuffer=function isBuffer(b){return b!=null&&b._isBuffer===true&&b!==Buffer.prototype;// so Buffer.isBuffer(Buffer.prototype) will be false\n};Buffer.compare=function compare(a,b){if(isInstance(a,Uint8Array))a=Buffer.from(a,a.offset,a.byteLength);if(isInstance(b,Uint8Array))b=Buffer.from(b,b.offset,b.byteLength);if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');}if(a===b)return 0;var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i<len;++i){if(a[i]!==b[i]){x=a[i];y=b[i];break;}}if(x<y)return-1;if(y<x)return 1;return 0;};Buffer.isEncoding=function isEncoding(encoding){switch(String(encoding).toLowerCase()){case'hex':case'utf8':case'utf-8':case'ascii':case'latin1':case'binary':case'base64':case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return true;default:return false;}};Buffer.concat=function concat(list,length){if(!Array.isArray(list)){throw new TypeError('\"list\" argument must be an Array of Buffers');}if(list.length===0){return Buffer.alloc(0);}var i;if(length===undefined){length=0;for(i=0;i<list.length;++i){length+=list[i].length;}}var buffer=Buffer.allocUnsafe(length);var pos=0;for(i=0;i<list.length;++i){var buf=list[i];if(isInstance(buf,Uint8Array)){buf=Buffer.from(buf);}if(!Buffer.isBuffer(buf)){throw new TypeError('\"list\" argument must be an Array of Buffers');}buf.copy(buffer,pos);pos+=buf.length;}return buffer;};function byteLength(string,encoding){if(Buffer.isBuffer(string)){return string.length;}if(ArrayBuffer.isView(string)||isInstance(string,ArrayBuffer)){return string.byteLength;}if(typeof string!=='string'){throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. '+'Received type '+_typeof(string));}var len=string.length;var mustMatch=arguments.length>2&&arguments[2]===true;if(!mustMatch&&len===0)return 0;// Use a for loop to avoid recursion\nvar loweredCase=false;for(;;){switch(encoding){case'ascii':case'latin1':case'binary':return len;case'utf8':case'utf-8':return utf8ToBytes(string).length;case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return len*2;case'hex':return len>>>1;case'base64':return base64ToBytes(string).length;default:if(loweredCase){return mustMatch?-1:utf8ToBytes(string).length;// assume utf8\n}encoding=(''+encoding).toLowerCase();loweredCase=true;}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){var loweredCase=false;// No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n// property of a typed array.\n// This behaves neither like String nor Uint8Array in that we set start/end\n// to their upper/lower bounds if the value passed is out of range.\n// undefined is handled specially as per ECMA-262 6th Edition,\n// Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\nif(start===undefined||start<0){start=0;}// Return early if start > this.length. Done here to prevent potential uint32\n// coercion fail below.\nif(start>this.length){return'';}if(end===undefined||end>this.length){end=this.length;}if(end<=0){return'';}// Force coersion to uint32. This will also coerce falsey/NaN values to 0.\nend>>>=0;start>>>=0;if(end<=start){return'';}if(!encoding)encoding='utf8';while(true){switch(encoding){case'hex':return hexSlice(this,start,end);case'utf8':case'utf-8':return utf8Slice(this,start,end);case'ascii':return asciiSlice(this,start,end);case'latin1':case'binary':return latin1Slice(this,start,end);case'base64':return base64Slice(this,start,end);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError('Unknown encoding: '+encoding);encoding=(encoding+'').toLowerCase();loweredCase=true;}}}// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer=true;function swap(b,n,m){var i=b[n];b[n]=b[m];b[m]=i;}Buffer.prototype.swap16=function swap16(){var len=this.length;if(len%2!==0){throw new RangeError('Buffer size must be a multiple of 16-bits');}for(var i=0;i<len;i+=2){swap(this,i,i+1);}return this;};Buffer.prototype.swap32=function swap32(){var len=this.length;if(len%4!==0){throw new RangeError('Buffer size must be a multiple of 32-bits');}for(var i=0;i<len;i+=4){swap(this,i,i+3);swap(this,i+1,i+2);}return this;};Buffer.prototype.swap64=function swap64(){var len=this.length;if(len%8!==0){throw new RangeError('Buffer size must be a multiple of 64-bits');}for(var i=0;i<len;i+=8){swap(this,i,i+7);swap(this,i+1,i+6);swap(this,i+2,i+5);swap(this,i+3,i+4);}return this;};Buffer.prototype.toString=function toString(){var length=this.length;if(length===0)return'';if(arguments.length===0)return utf8Slice(this,0,length);return slowToString.apply(this,arguments);};Buffer.prototype.toLocaleString=Buffer.prototype.toString;Buffer.prototype.equals=function equals(b){if(!Buffer.isBuffer(b))throw new TypeError('Argument must be a Buffer');if(this===b)return true;return Buffer.compare(this,b)===0;};Buffer.prototype.inspect=function inspect(){var str='';var max=exports.INSPECT_MAX_BYTES;str=this.toString('hex',0,max).replace(/(.{2})/g,'$1 ').trim();if(this.length>max)str+=' ... ';return'<Buffer '+str+'>';};Buffer.prototype.compare=function compare(target,start,end,thisStart,thisEnd){if(isInstance(target,Uint8Array)){target=Buffer.from(target,target.offset,target.byteLength);}if(!Buffer.isBuffer(target)){throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. '+'Received type '+_typeof(target));}if(start===undefined){start=0;}if(end===undefined){end=target?target.length:0;}if(thisStart===undefined){thisStart=0;}if(thisEnd===undefined){thisEnd=this.length;}if(start<0||end>target.length||thisStart<0||thisEnd>this.length){throw new RangeError('out of range index');}if(thisStart>=thisEnd&&start>=end){return 0;}if(thisStart>=thisEnd){return-1;}if(start>=end){return 1;}start>>>=0;end>>>=0;thisStart>>>=0;thisEnd>>>=0;if(this===target)return 0;var x=thisEnd-thisStart;var y=end-start;var len=Math.min(x,y);var thisCopy=this.slice(thisStart,thisEnd);var targetCopy=target.slice(start,end);for(var i=0;i<len;++i){if(thisCopy[i]!==targetCopy[i]){x=thisCopy[i];y=targetCopy[i];break;}}if(x<y)return-1;if(y<x)return 1;return 0;};// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf(buffer,val,byteOffset,encoding,dir){// Empty buffer means no match\nif(buffer.length===0)return-1;// Normalize byteOffset\nif(typeof byteOffset==='string'){encoding=byteOffset;byteOffset=0;}else if(byteOffset>0x7fffffff){byteOffset=0x7fffffff;}else if(byteOffset<-0x80000000){byteOffset=-0x80000000;}byteOffset=+byteOffset;// Coerce to Number.\nif(numberIsNaN(byteOffset)){// byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\nbyteOffset=dir?0:buffer.length-1;}// Normalize byteOffset: negative offsets start from the end of the buffer\nif(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length){if(dir)return-1;else byteOffset=buffer.length-1;}else if(byteOffset<0){if(dir)byteOffset=0;else return-1;}// Normalize val\nif(typeof val==='string'){val=Buffer.from(val,encoding);}// Finally, search either indexOf (if dir is true) or lastIndexOf\nif(Buffer.isBuffer(val)){// Special case: looking for empty string/buffer always fails\nif(val.length===0){return-1;}return arrayIndexOf(buffer,val,byteOffset,encoding,dir);}else if(typeof val==='number'){val=val&0xFF;// Search for a byte value [0-255]\nif(typeof Uint8Array.prototype.indexOf==='function'){if(dir){return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset);}else{return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset);}}return arrayIndexOf(buffer,[val],byteOffset,encoding,dir);}throw new TypeError('val must be string, number or Buffer');}function arrayIndexOf(arr,val,byteOffset,encoding,dir){var indexSize=1;var arrLength=arr.length;var valLength=val.length;if(encoding!==undefined){encoding=String(encoding).toLowerCase();if(encoding==='ucs2'||encoding==='ucs-2'||encoding==='utf16le'||encoding==='utf-16le'){if(arr.length<2||val.length<2){return-1;}indexSize=2;arrLength/=2;valLength/=2;byteOffset/=2;}}function read(buf,i){if(indexSize===1){return buf[i];}else{return buf.readUInt16BE(i*indexSize);}}var i;if(dir){var foundIndex=-1;for(i=byteOffset;i<arrLength;i++){if(read(arr,i)===read(val,foundIndex===-1?0:i-foundIndex)){if(foundIndex===-1)foundIndex=i;if(i-foundIndex+1===valLength)return foundIndex*indexSize;}else{if(foundIndex!==-1)i-=i-foundIndex;foundIndex=-1;}}}else{if(byteOffset+valLength>arrLength)byteOffset=arrLength-valLength;for(i=byteOffset;i>=0;i--){var found=true;for(var j=0;j<valLength;j++){if(read(arr,i+j)!==read(val,j)){found=false;break;}}if(found)return i;}}return-1;}Buffer.prototype.includes=function includes(val,byteOffset,encoding){return this.indexOf(val,byteOffset,encoding)!==-1;};Buffer.prototype.indexOf=function indexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,true);};Buffer.prototype.lastIndexOf=function lastIndexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,false);};function hexWrite(buf,string,offset,length){offset=Number(offset)||0;var remaining=buf.length-offset;if(!length){length=remaining;}else{length=Number(length);if(length>remaining){length=remaining;}}var strLen=string.length;if(length>strLen/2){length=strLen/2;}for(var i=0;i<length;++i){var parsed=parseInt(string.substr(i*2,2),16);if(numberIsNaN(parsed))return i;buf[offset+i]=parsed;}return i;}function utf8Write(buf,string,offset,length){return blitBuffer(utf8ToBytes(string,buf.length-offset),buf,offset,length);}function asciiWrite(buf,string,offset,length){return blitBuffer(asciiToBytes(string),buf,offset,length);}function latin1Write(buf,string,offset,length){return asciiWrite(buf,string,offset,length);}function base64Write(buf,string,offset,length){return blitBuffer(base64ToBytes(string),buf,offset,length);}function ucs2Write(buf,string,offset,length){return blitBuffer(utf16leToBytes(string,buf.length-offset),buf,offset,length);}Buffer.prototype.write=function write(string,offset,length,encoding){// Buffer#write(string)\nif(offset===undefined){encoding='utf8';length=this.length;offset=0;// Buffer#write(string, encoding)\n}else if(length===undefined&&typeof offset==='string'){encoding=offset;length=this.length;offset=0;// Buffer#write(string, offset[, length][, encoding])\n}else if(isFinite(offset)){offset=offset>>>0;if(isFinite(length)){length=length>>>0;if(encoding===undefined)encoding='utf8';}else{encoding=length;length=undefined;}}else{throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');}var remaining=this.length-offset;if(length===undefined||length>remaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError('Attempt to write outside buffer bounds');}if(!encoding)encoding='utf8';var loweredCase=false;for(;;){switch(encoding){case'hex':return hexWrite(this,string,offset,length);case'utf8':case'utf-8':return utf8Write(this,string,offset,length);case'ascii':return asciiWrite(this,string,offset,length);case'latin1':case'binary':return latin1Write(this,string,offset,length);case'base64':// Warning: maxLength not taken into account in base64Write\nreturn base64Write(this,string,offset,length);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError('Unknown encoding: '+encoding);encoding=(''+encoding).toLowerCase();loweredCase=true;}}};Buffer.prototype.toJSON=function toJSON(){return{type:'Buffer',data:Array.prototype.slice.call(this._arr||this,0)};};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf);}else{return base64.fromByteArray(buf.slice(start,end));}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[];var i=start;while(i<end){var firstByte=buf[i];var codePoint=null;var bytesPerSequence=firstByte>0xEF?4:firstByte>0xDF?3:firstByte>0xBF?2:1;if(i+bytesPerSequence<=end){var secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<0x80){codePoint=firstByte;}break;case 2:secondByte=buf[i+1];if((secondByte&0xC0)===0x80){tempCodePoint=(firstByte&0x1F)<<0x6|secondByte&0x3F;if(tempCodePoint>0x7F){codePoint=tempCodePoint;}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&0xC0)===0x80&&(thirdByte&0xC0)===0x80){tempCodePoint=(firstByte&0xF)<<0xC|(secondByte&0x3F)<<0x6|thirdByte&0x3F;if(tempCodePoint>0x7FF&&(tempCodePoint<0xD800||tempCodePoint>0xDFFF)){codePoint=tempCodePoint;}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&0xC0)===0x80&&(thirdByte&0xC0)===0x80&&(fourthByte&0xC0)===0x80){tempCodePoint=(firstByte&0xF)<<0x12|(secondByte&0x3F)<<0xC|(thirdByte&0x3F)<<0x6|fourthByte&0x3F;if(tempCodePoint>0xFFFF&&tempCodePoint<0x110000){codePoint=tempCodePoint;}}}}if(codePoint===null){// we did not generate a valid codePoint so insert a\n// replacement char (U+FFFD) and advance only 1 byte\ncodePoint=0xFFFD;bytesPerSequence=1;}else if(codePoint>0xFFFF){// encode to utf16 (surrogate pair dance)\ncodePoint-=0x10000;res.push(codePoint>>>10&0x3FF|0xD800);codePoint=0xDC00|codePoint&0x3FF;}res.push(codePoint);i+=bytesPerSequence;}return decodeCodePointsArray(res);}// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH=0x1000;function decodeCodePointsArray(codePoints){var len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints);// avoid extra slice()\n}// Decode in chunks to avoid \"call stack size exceeded\".\nvar res='';var i=0;while(i<len){res+=String.fromCharCode.apply(String,codePoints.slice(i,i+=MAX_ARGUMENTS_LENGTH));}return res;}function asciiSlice(buf,start,end){var ret='';end=Math.min(buf.length,end);for(var i=start;i<end;++i){ret+=String.fromCharCode(buf[i]&0x7F);}return ret;}function latin1Slice(buf,start,end){var ret='';end=Math.min(buf.length,end);for(var i=start;i<end;++i){ret+=String.fromCharCode(buf[i]);}return ret;}function hexSlice(buf,start,end){var len=buf.length;if(!start||start<0)start=0;if(!end||end<0||end>len)end=len;var out='';for(var i=start;i<end;++i){out+=toHex(buf[i]);}return out;}function utf16leSlice(buf,start,end){var bytes=buf.slice(start,end);var res='';for(var i=0;i<bytes.length;i+=2){res+=String.fromCharCode(bytes[i]+bytes[i+1]*256);}return res;}Buffer.prototype.slice=function slice(start,end){var len=this.length;start=~~start;end=end===undefined?len:~~end;if(start<0){start+=len;if(start<0)start=0;}else if(start>len){start=len;}if(end<0){end+=len;if(end<0)end=0;}else if(end>len){end=len;}if(end<start)end=start;var newBuf=this.subarray(start,end);// Return an augmented `Uint8Array` instance\nnewBuf.__proto__=Buffer.prototype;return newBuf;};/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */function checkOffset(offset,ext,length){if(offset%1!==0||offset<0)throw new RangeError('offset is not uint');if(offset+ext>length)throw new RangeError('Trying to access beyond buffer length');}Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i<byteLength&&(mul*=0x100)){val+=this[offset+i]*mul;}return val;};Buffer.prototype.readUIntBE=function readUIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){checkOffset(offset,byteLength,this.length);}var val=this[offset+--byteLength];var mul=1;while(byteLength>0&&(mul*=0x100)){val+=this[offset+--byteLength]*mul;}return val;};Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);return this[offset];};Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8;};Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1];};Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*0x1000000;};Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*0x1000000+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3]);};Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i<byteLength&&(mul*=0x100)){val+=this[offset+i]*mul;}mul*=0x80;if(val>=mul)val-=Math.pow(2,8*byteLength);return val;};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var i=byteLength;var mul=1;var val=this[offset+--i];while(i>0&&(mul*=0x100)){val+=this[offset+--i]*mul;}mul*=0x80;if(val>=mul)val-=Math.pow(2,8*byteLength);return val;};Buffer.prototype.readInt8=function readInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&0x80))return this[offset];return(0xff-this[offset]+1)*-1;};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset]|this[offset+1]<<8;return val&0x8000?val|0xFFFF0000:val;};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset+1]|this[offset]<<8;return val&0x8000?val|0xFFFF0000:val;};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24;};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3];};Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4);};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4);};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8);};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8);};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(value>max||value<min)throw new RangeError('\"value\" argument is out of bounds');if(offset+ext>buf.length)throw new RangeError('Index out of range');}Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0);}var mul=1;var i=0;this[offset]=value&0xFF;while(++i<byteLength&&(mul*=0x100)){this[offset+i]=value/mul&0xFF;}return offset+byteLength;};Buffer.prototype.writeUIntBE=function writeUIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0);}var i=byteLength-1;var mul=1;this[offset+i]=value&0xFF;while(--i>=0&&(mul*=0x100)){this[offset+i]=value/mul&0xFF;}return offset+byteLength;};Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,0xff,0);this[offset]=value&0xff;return offset+1;};Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,0xffff,0);this[offset]=value&0xff;this[offset+1]=value>>>8;return offset+2;};Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,0xffff,0);this[offset]=value>>>8;this[offset+1]=value&0xff;return offset+2;};Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,0xffffffff,0);this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&0xff;return offset+4;};Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,0xffffffff,0);this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&0xff;return offset+4;};Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit);}var i=0;var mul=1;var sub=0;this[offset]=value&0xFF;while(++i<byteLength&&(mul*=0x100)){if(value<0&&sub===0&&this[offset+i-1]!==0){sub=1;}this[offset+i]=(value/mul>>0)-sub&0xFF;}return offset+byteLength;};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit);}var i=byteLength-1;var mul=1;var sub=0;this[offset+i]=value&0xFF;while(--i>=0&&(mul*=0x100)){if(value<0&&sub===0&&this[offset+i+1]!==0){sub=1;}this[offset+i]=(value/mul>>0)-sub&0xFF;}return offset+byteLength;};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,0x7f,-0x80);if(value<0)value=0xff+value+1;this[offset]=value&0xff;return offset+1;};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,0x7fff,-0x8000);this[offset]=value&0xff;this[offset+1]=value>>>8;return offset+2;};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,0x7fff,-0x8000);this[offset]=value>>>8;this[offset+1]=value&0xff;return offset+2;};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,0x7fffffff,-0x80000000);this[offset]=value&0xff;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24;return offset+4;};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,0x7fffffff,-0x80000000);if(value<0)value=0xffffffff+value+1;this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&0xff;return offset+4;};function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError('Index out of range');if(offset<0)throw new RangeError('Index out of range');}function writeFloat(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,4,3.4028234663852886e+38,-3.4028234663852886e+38);}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4;}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert);};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert);};function writeDouble(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,8,1.7976931348623157E+308,-1.7976931348623157E+308);}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8;}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert);};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert);};// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy=function copy(target,targetStart,start,end){if(!Buffer.isBuffer(target))throw new TypeError('argument should be a Buffer');if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end<start)end=start;// Copy 0 bytes; we're done\nif(end===start)return 0;if(target.length===0||this.length===0)return 0;// Fatal error conditions\nif(targetStart<0){throw new RangeError('targetStart out of bounds');}if(start<0||start>=this.length)throw new RangeError('Index out of range');if(end<0)throw new RangeError('sourceEnd out of bounds');// Are we oob?\nif(end>this.length)end=this.length;if(target.length-targetStart<end-start){end=target.length-targetStart+start;}var len=end-start;if(this===target&&typeof Uint8Array.prototype.copyWithin==='function'){// Use built-in when available, missing from IE11\nthis.copyWithin(targetStart,start,end);}else if(this===target&&start<targetStart&&targetStart<end){// descending copy from end\nfor(var i=len-1;i>=0;--i){target[i+targetStart]=this[i+start];}}else{Uint8Array.prototype.set.call(target,this.subarray(start,end),targetStart);}return len;};// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill=function fill(val,start,end,encoding){// Handle string cases:\nif(typeof val==='string'){if(typeof start==='string'){encoding=start;start=0;end=this.length;}else if(typeof end==='string'){encoding=end;end=this.length;}if(encoding!==undefined&&typeof encoding!=='string'){throw new TypeError('encoding must be a string');}if(typeof encoding==='string'&&!Buffer.isEncoding(encoding)){throw new TypeError('Unknown encoding: '+encoding);}if(val.length===1){var code=val.charCodeAt(0);if(encoding==='utf8'&&code<128||encoding==='latin1'){// Fast path: If `val` fits into a single byte, use that numeric value.\nval=code;}}}else if(typeof val==='number'){val=val&255;}// Invalid ranges are not set to a default, so can range check early.\nif(start<0||this.length<start||this.length<end){throw new RangeError('Out of range index');}if(end<=start){return this;}start=start>>>0;end=end===undefined?this.length:end>>>0;if(!val)val=0;var i;if(typeof val==='number'){for(i=start;i<end;++i){this[i]=val;}}else{var bytes=Buffer.isBuffer(val)?val:Buffer.from(val,encoding);var len=bytes.length;if(len===0){throw new TypeError('The value \"'+val+'\" is invalid for argument \"value\"');}for(i=0;i<end-start;++i){this[i+start]=bytes[i%len];}}return this;};// HELPER FUNCTIONS\n// ================\nvar INVALID_BASE64_RE=/[^+/0-9A-Za-z-_]/g;function base64clean(str){// Node takes equal signs as end of the Base64 encoding\nstr=str.split('=')[0];// Node strips out invalid characters like \\n and \\t from the string, base64-js does not\nstr=str.trim().replace(INVALID_BASE64_RE,'');// Node converts strings with length < 2 to ''\nif(str.length<2)return'';// Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\nwhile(str.length%4!==0){str=str+'=';}return str;}function toHex(n){if(n<16)return'0'+n.toString(16);return n.toString(16);}function utf8ToBytes(string,units){units=units||Infinity;var codePoint;var length=string.length;var leadSurrogate=null;var bytes=[];for(var i=0;i<length;++i){codePoint=string.charCodeAt(i);// is surrogate component\nif(codePoint>0xD7FF&&codePoint<0xE000){// last char was a lead\nif(!leadSurrogate){// no lead yet\nif(codePoint>0xDBFF){// unexpected trail\nif((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);continue;}else if(i+1===length){// unpaired lead\nif((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);continue;}// valid lead\nleadSurrogate=codePoint;continue;}// 2 leads in a row\nif(codePoint<0xDC00){if((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);leadSurrogate=codePoint;continue;}// valid surrogate pair\ncodePoint=(leadSurrogate-0xD800<<10|codePoint-0xDC00)+0x10000;}else if(leadSurrogate){// valid bmp char, but last char was a lead\nif((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD);}leadSurrogate=null;// encode utf8\nif(codePoint<0x80){if((units-=1)<0)break;bytes.push(codePoint);}else if(codePoint<0x800){if((units-=2)<0)break;bytes.push(codePoint>>0x6|0xC0,codePoint&0x3F|0x80);}else if(codePoint<0x10000){if((units-=3)<0)break;bytes.push(codePoint>>0xC|0xE0,codePoint>>0x6&0x3F|0x80,codePoint&0x3F|0x80);}else if(codePoint<0x110000){if((units-=4)<0)break;bytes.push(codePoint>>0x12|0xF0,codePoint>>0xC&0x3F|0x80,codePoint>>0x6&0x3F|0x80,codePoint&0x3F|0x80);}else{throw new Error('Invalid code point');}}return bytes;}function asciiToBytes(str){var byteArray=[];for(var i=0;i<str.length;++i){// Node's code seems to be doing this and not & 0x7F..\nbyteArray.push(str.charCodeAt(i)&0xFF);}return byteArray;}function utf16leToBytes(str,units){var c,hi,lo;var byteArray=[];for(var i=0;i<str.length;++i){if((units-=2)<0)break;c=str.charCodeAt(i);hi=c>>8;lo=c%256;byteArray.push(lo);byteArray.push(hi);}return byteArray;}function base64ToBytes(str){return base64.toByteArray(base64clean(str));}function blitBuffer(src,dst,offset,length){for(var i=0;i<length;++i){if(i+offset>=dst.length||i>=src.length)break;dst[i+offset]=src[i];}return i;}// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance(obj,type){return obj instanceof type||obj!=null&&obj.constructor!=null&&obj.constructor.name!=null&&obj.constructor.name===type.name;}function numberIsNaN(obj){// For IE11 support\nreturn obj!==obj;// eslint-disable-line no-self-compare\n}}).call(this,require(\"buffer\").Buffer);},{\"base64-js\":1,\"buffer\":3,\"ieee754\":32}],4:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.attributeNames=exports.elementNames=void 0;exports.elementNames=new Map([[\"altglyph\",\"altGlyph\"],[\"altglyphdef\",\"altGlyphDef\"],[\"altglyphitem\",\"altGlyphItem\"],[\"animatecolor\",\"animateColor\"],[\"animatemotion\",\"animateMotion\"],[\"animatetransform\",\"animateTransform\"],[\"clippath\",\"clipPath\"],[\"feblend\",\"feBlend\"],[\"fecolormatrix\",\"feColorMatrix\"],[\"fecomponenttransfer\",\"feComponentTransfer\"],[\"fecomposite\",\"feComposite\"],[\"feconvolvematrix\",\"feConvolveMatrix\"],[\"fediffuselighting\",\"feDiffuseLighting\"],[\"fedisplacementmap\",\"feDisplacementMap\"],[\"fedistantlight\",\"feDistantLight\"],[\"fedropshadow\",\"feDropShadow\"],[\"feflood\",\"feFlood\"],[\"fefunca\",\"feFuncA\"],[\"fefuncb\",\"feFuncB\"],[\"fefuncg\",\"feFuncG\"],[\"fefuncr\",\"feFuncR\"],[\"fegaussianblur\",\"feGaussianBlur\"],[\"feimage\",\"feImage\"],[\"femerge\",\"feMerge\"],[\"femergenode\",\"feMergeNode\"],[\"femorphology\",\"feMorphology\"],[\"feoffset\",\"feOffset\"],[\"fepointlight\",\"fePointLight\"],[\"fespecularlighting\",\"feSpecularLighting\"],[\"fespotlight\",\"feSpotLight\"],[\"fetile\",\"feTile\"],[\"feturbulence\",\"feTurbulence\"],[\"foreignobject\",\"foreignObject\"],[\"glyphref\",\"glyphRef\"],[\"lineargradient\",\"linearGradient\"],[\"radialgradient\",\"radialGradient\"],[\"textpath\",\"textPath\"]]);exports.attributeNames=new Map([[\"definitionurl\",\"definitionURL\"],[\"attributename\",\"attributeName\"],[\"attributetype\",\"attributeType\"],[\"basefrequency\",\"baseFrequency\"],[\"baseprofile\",\"baseProfile\"],[\"calcmode\",\"calcMode\"],[\"clippathunits\",\"clipPathUnits\"],[\"diffuseconstant\",\"diffuseConstant\"],[\"edgemode\",\"edgeMode\"],[\"filterunits\",\"filterUnits\"],[\"glyphref\",\"glyphRef\"],[\"gradienttransform\",\"gradientTransform\"],[\"gradientunits\",\"gradientUnits\"],[\"kernelmatrix\",\"kernelMatrix\"],[\"kernelunitlength\",\"kernelUnitLength\"],[\"keypoints\",\"keyPoints\"],[\"keysplines\",\"keySplines\"],[\"keytimes\",\"keyTimes\"],[\"lengthadjust\",\"lengthAdjust\"],[\"limitingconeangle\",\"limitingConeAngle\"],[\"markerheight\",\"markerHeight\"],[\"markerunits\",\"markerUnits\"],[\"markerwidth\",\"markerWidth\"],[\"maskcontentunits\",\"maskContentUnits\"],[\"maskunits\",\"maskUnits\"],[\"numoctaves\",\"numOctaves\"],[\"pathlength\",\"pathLength\"],[\"patterncontentunits\",\"patternContentUnits\"],[\"patterntransform\",\"patternTransform\"],[\"patternunits\",\"patternUnits\"],[\"pointsatx\",\"pointsAtX\"],[\"pointsaty\",\"pointsAtY\"],[\"pointsatz\",\"pointsAtZ\"],[\"preservealpha\",\"preserveAlpha\"],[\"preserveaspectratio\",\"preserveAspectRatio\"],[\"primitiveunits\",\"primitiveUnits\"],[\"refx\",\"refX\"],[\"refy\",\"refY\"],[\"repeatcount\",\"repeatCount\"],[\"repeatdur\",\"repeatDur\"],[\"requiredextensions\",\"requiredExtensions\"],[\"requiredfeatures\",\"requiredFeatures\"],[\"specularconstant\",\"specularConstant\"],[\"specularexponent\",\"specularExponent\"],[\"spreadmethod\",\"spreadMethod\"],[\"startoffset\",\"startOffset\"],[\"stddeviation\",\"stdDeviation\"],[\"stitchtiles\",\"stitchTiles\"],[\"surfacescale\",\"surfaceScale\"],[\"systemlanguage\",\"systemLanguage\"],[\"tablevalues\",\"tableValues\"],[\"targetx\",\"targetX\"],[\"targety\",\"targetY\"],[\"textlength\",\"textLength\"],[\"viewbox\",\"viewBox\"],[\"viewtarget\",\"viewTarget\"],[\"xchannelselector\",\"xChannelSelector\"],[\"ychannelselector\",\"yChannelSelector\"],[\"zoomandpan\",\"zoomAndPan\"]]);},{}],5:[function(require,module,exports){\"use strict\";var __assign=this&&this.__assign||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i<n;i++){s=arguments[i];for(var p in s){if(Object.prototype.hasOwnProperty.call(s,p))t[p]=s[p];}}return t;};return __assign.apply(this,arguments);};var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){if(k2===undefined)k2=k;Object.defineProperty(o,k2,{enumerable:true,get:function get(){return m[k];}});}:function(o,m,k,k2){if(k2===undefined)k2=k;o[k2]=m[k];});var __setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(o,v){Object.defineProperty(o,\"default\",{enumerable:true,value:v});}:function(o,v){o[\"default\"]=v;});var __importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod){if(k!==\"default\"&&Object.prototype.hasOwnProperty.call(mod,k))__createBinding(result,mod,k);}__setModuleDefault(result,mod);return result;};Object.defineProperty(exports,\"__esModule\",{value:true});/*\n * Module dependencies\n */var ElementType=__importStar(require(\"domelementtype\"));var entities_1=require(\"entities\");/*\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser, see\n * https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */var foreignNames_1=require(\"./foreignNames\");var unencodedElements=new Set([\"style\",\"script\",\"xmp\",\"iframe\",\"noembed\",\"noframes\",\"plaintext\",\"noscript\"]);/**\n * Format attributes\n */function formatAttributes(attributes,opts){if(!attributes)return;return Object.keys(attributes).map(function(key){var _a,_b;var value=(_a=attributes[key])!==null&&_a!==void 0?_a:\"\";if(opts.xmlMode===\"foreign\"){/* Fix up mixed-case attribute names */key=(_b=foreignNames_1.attributeNames.get(key))!==null&&_b!==void 0?_b:key;}if(!opts.emptyAttrs&&!opts.xmlMode&&value===\"\"){return key;}return key+\"=\\\"\"+(opts.decodeEntities?entities_1.encodeXML(value):value.replace(/\"/g,\"&quot;\"))+\"\\\"\";}).join(\" \");}/**\n * Self-enclosing tags\n */var singleTag=new Set([\"area\",\"base\",\"basefont\",\"br\",\"col\",\"command\",\"embed\",\"frame\",\"hr\",\"img\",\"input\",\"isindex\",\"keygen\",\"link\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"]);/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */function render(node,options){if(options===void 0){options={};}// TODO: This is a bit hacky.\nvar nodes=Array.isArray(node)||node.cheerio?node:[node];var output=\"\";for(var i=0;i<nodes.length;i++){output+=renderNode(nodes[i],options);}return output;}exports[\"default\"]=render;function renderNode(node,options){switch(node.type){case\"root\":return render(node.children,options);case ElementType.Directive:return renderDirective(node);case ElementType.Comment:return renderComment(node);case ElementType.CDATA:return renderCdata(node);default:return ElementType.isTag(node)?renderTag(node,options):renderText(node,options);}}var foreignModeIntegrationPoints=new Set([\"mi\",\"mo\",\"mn\",\"ms\",\"mtext\",\"annotation-xml\",\"foreignObject\",\"desc\",\"title\"]);var foreignElements=new Set([\"svg\",\"math\"]);function renderTag(elem,opts){var _a;// Handle SVG / MathML in HTML\nif(opts.xmlMode===\"foreign\"){/* Fix up mixed-case element names */elem.name=(_a=foreignNames_1.elementNames.get(elem.name))!==null&&_a!==void 0?_a:elem.name;/* Exit foreign mode at integration points */if(elem.parent&&foreignModeIntegrationPoints.has(elem.parent.name)){opts=__assign(__assign({},opts),{xmlMode:false});}}if(!opts.xmlMode&&foreignElements.has(elem.name)){opts=__assign(__assign({},opts),{xmlMode:\"foreign\"});}var tag=\"<\"+elem.name;var attribs=formatAttributes(elem.attribs,opts);if(attribs){tag+=\" \"+attribs;}if(elem.children.length===0&&(opts.xmlMode?// In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\nopts.selfClosingTags!==false:// User explicitly asked for self-closing tags, even in HTML mode\nopts.selfClosingTags&&singleTag.has(elem.name))){if(!opts.xmlMode)tag+=\" \";tag+=\"/>\";}else{tag+=\">\";if(elem.children.length>0){tag+=render(elem.children,opts);}if(opts.xmlMode||!singleTag.has(elem.name)){tag+=\"</\"+elem.name+\">\";}}return tag;}function renderDirective(elem){return\"<\"+elem.data+\">\";}function renderText(elem,opts){var data=elem.data||\"\";// If entities weren't decoded, no need to encode them back\nif(opts.decodeEntities&&!(elem.parent&&unencodedElements.has(elem.parent.name))){data=entities_1.encodeXML(data);}return data;}function renderCdata(elem){return\"<![CDATA[\"+elem.children[0].data+\"]]>\";}function renderComment(elem){return\"<!--\"+elem.data+\"-->\";}},{\"./foreignNames\":4,\"domelementtype\":6,\"entities\":20}],6:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.Doctype=exports.CDATA=exports.Tag=exports.Style=exports.Script=exports.Comment=exports.Directive=exports.Text=exports.isTag=void 0;/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */function isTag(elem){return elem.type===\"tag\"/* Tag */||elem.type===\"script\"/* Script */||elem.type===\"style\"/* Style */;}exports.isTag=isTag;// Exports for backwards compatibility\n/** Type for Text */exports.Text=\"text\"/* Text */;/** Type for <? ... ?> */exports.Directive=\"directive\"/* Directive */;/** Type for <!-- ... --> */exports.Comment=\"comment\"/* Comment */;/** Type for <script> tags */exports.Script=\"script\"/* Script */;/** Type for <style> tags */exports.Style=\"style\"/* Style */;/** Type for Any tag */exports.Tag=\"tag\"/* Tag */;/** Type for <![CDATA[ ... ]]> */exports.CDATA=\"cdata\"/* CDATA */;/** Type for <!doctype ...> */exports.Doctype=\"doctype\"/* Doctype */;},{}],7:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var node_1=require(\"./node\");exports.Node=node_1.Node;exports.Element=node_1.Element;exports.DataNode=node_1.DataNode;exports.NodeWithChildren=node_1.NodeWithChildren;var reWhitespace=/\\s+/g;// Default options\nvar defaultOpts={normalizeWhitespace:false,withStartIndices:false,withEndIndices:false};var DomHandler=/** @class */function(){/**\n     * Initiate a new DomHandler.\n     *\n     * @param callback Called once parsing has completed.\n     * @param options Settings for the handler.\n     * @param elementCB Callback whenever a tag is closed.\n     */function DomHandler(callback,options,elementCB){/** The constructed DOM */this.dom=[];/** Indicated whether parsing has been completed. */this._done=false;/** Stack of open tags. */this._tagStack=[];/** A data node that is still being written to. */this._lastNode=null;/** Reference to the parser instance. Used for location information. */this._parser=null;// Make it possible to skip arguments, for backwards-compatibility\nif(typeof options===\"function\"){elementCB=options;options=defaultOpts;}if(_typeof(callback)===\"object\"){options=callback;callback=undefined;}this._callback=callback||null;this._options=options||defaultOpts;this._elementCB=elementCB||null;}DomHandler.prototype.onparserinit=function(parser){this._parser=parser;};// Resets the handler back to starting state\nDomHandler.prototype.onreset=function(){this.dom=[];this._done=false;this._tagStack=[];this._lastNode=null;this._parser=this._parser||null;};// Signals the handler that parsing is done\nDomHandler.prototype.onend=function(){if(this._done)return;this._done=true;this._parser=null;this.handleCallback(null);};DomHandler.prototype.onerror=function(error){this.handleCallback(error);};DomHandler.prototype.onclosetag=function(){this._lastNode=null;// If(this._tagStack.pop().name !== name) this.handleCallback(Error(\"Tagname didn't match!\"));\nvar elem=this._tagStack.pop();if(!elem||!this._parser){return;}if(this._options.withEndIndices){elem.endIndex=this._parser.endIndex;}if(this._elementCB)this._elementCB(elem);};DomHandler.prototype.onopentag=function(name,attribs){var element=new node_1.Element(name,attribs);this.addNode(element);this._tagStack.push(element);};DomHandler.prototype.ontext=function(data){var normalize=this._options.normalizeWhitespace;var _lastNode=this._lastNode;if(_lastNode&&_lastNode.type===\"text\"/* Text */){if(normalize){_lastNode.data=(_lastNode.data+data).replace(reWhitespace,\" \");}else{_lastNode.data+=data;}}else{if(normalize){data=data.replace(reWhitespace,\" \");}var node=new node_1.DataNode(\"text\"/* Text */,data);this.addNode(node);this._lastNode=node;}};DomHandler.prototype.oncomment=function(data){if(this._lastNode&&this._lastNode.type===\"comment\"/* Comment */){this._lastNode.data+=data;return;}var node=new node_1.DataNode(\"comment\"/* Comment */,data);this.addNode(node);this._lastNode=node;};DomHandler.prototype.oncommentend=function(){this._lastNode=null;};DomHandler.prototype.oncdatastart=function(){var text=new node_1.DataNode(\"text\"/* Text */,\"\");var node=new node_1.NodeWithChildren(\"cdata\"/* CDATA */,[text]);this.addNode(node);text.parent=node;this._lastNode=text;};DomHandler.prototype.oncdataend=function(){this._lastNode=null;};DomHandler.prototype.onprocessinginstruction=function(name,data){var node=new node_1.ProcessingInstruction(name,data);this.addNode(node);};DomHandler.prototype.handleCallback=function(error){if(typeof this._callback===\"function\"){this._callback(error,this.dom);}else if(error){throw error;}};DomHandler.prototype.addNode=function(node){var parent=this._tagStack[this._tagStack.length-1];var siblings=parent?parent.children:this.dom;var previousSibling=siblings[siblings.length-1];if(this._parser){if(this._options.withStartIndices){node.startIndex=this._parser.startIndex;}if(this._options.withEndIndices){node.endIndex=this._parser.endIndex;}}siblings.push(node);if(previousSibling){node.prev=previousSibling;previousSibling.next=node;}if(parent){node.parent=parent;}this._lastNode=null;};DomHandler.prototype.addDataNode=function(node){this.addNode(node);this._lastNode=node;};return DomHandler;}();exports.DomHandler=DomHandler;exports[\"default\"]=DomHandler;},{\"./node\":8}],8:[function(require,module,exports){\"use strict\";var __extends=this&&this.__extends||function(){var _extendStatics=function extendStatics(d,b){_extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b;}||function(d,b){for(var p in b){if(b.hasOwnProperty(p))d[p]=b[p];}};return _extendStatics(d,b);};return function(d,b){_extendStatics(d,b);function __(){this.constructor=d;}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __());};}();Object.defineProperty(exports,\"__esModule\",{value:true});var nodeTypes=new Map([[\"tag\"/* Tag */,1],[\"script\"/* Script */,1],[\"style\"/* Style */,1],[\"directive\"/* Directive */,1],[\"text\"/* Text */,3],[\"cdata\"/* CDATA */,4],[\"comment\"/* Comment */,8]]);// This object will be used as the prototype for Nodes when creating a\n// DOM-Level-1-compliant structure.\nvar Node=/** @class */function(){/**\n     *\n     * @param type The type of the node.\n     */function Node(type){this.type=type;/** Parent of the node */this.parent=null;/** Previous sibling */this.prev=null;/** Next sibling */this.next=null;/** The start index of the node. Requires `withStartIndices` on the handler to be `true. */this.startIndex=null;/** The end index of the node. Requires `withEndIndices` on the handler to be `true. */this.endIndex=null;}Object.defineProperty(Node.prototype,\"nodeType\",{// Read-only aliases\nget:function get(){return nodeTypes.get(this.type)||1;},enumerable:true,configurable:true});Object.defineProperty(Node.prototype,\"parentNode\",{// Read-write aliases for properties\nget:function get(){return this.parent||null;},set:function set(parent){this.parent=parent;},enumerable:true,configurable:true});Object.defineProperty(Node.prototype,\"previousSibling\",{get:function get(){return this.prev||null;},set:function set(prev){this.prev=prev;},enumerable:true,configurable:true});Object.defineProperty(Node.prototype,\"nextSibling\",{get:function get(){return this.next||null;},set:function set(next){this.next=next;},enumerable:true,configurable:true});return Node;}();exports.Node=Node;var DataNode=/** @class */function(_super){__extends(DataNode,_super);/**\n     *\n     * @param type The type of the node\n     * @param data The content of the data node\n     */function DataNode(type,data){var _this=_super.call(this,type)||this;_this.data=data;return _this;}Object.defineProperty(DataNode.prototype,\"nodeValue\",{get:function get(){return this.data;},set:function set(data){this.data=data;},enumerable:true,configurable:true});return DataNode;}(Node);exports.DataNode=DataNode;var ProcessingInstruction=/** @class */function(_super){__extends(ProcessingInstruction,_super);function ProcessingInstruction(name,data){var _this=_super.call(this,\"directive\"/* Directive */,data)||this;_this.name=name;return _this;}return ProcessingInstruction;}(DataNode);exports.ProcessingInstruction=ProcessingInstruction;var NodeWithChildren=/** @class */function(_super){__extends(NodeWithChildren,_super);/**\n     *\n     * @param type Type of the node.\n     * @param children Children of the node. Only certain node types can have children.\n     */function NodeWithChildren(type,children){var _this=_super.call(this,type)||this;_this.children=children;return _this;}Object.defineProperty(NodeWithChildren.prototype,\"firstChild\",{// Aliases\nget:function get(){return this.children[0]||null;},enumerable:true,configurable:true});Object.defineProperty(NodeWithChildren.prototype,\"lastChild\",{get:function get(){return this.children[this.children.length-1]||null;},enumerable:true,configurable:true});Object.defineProperty(NodeWithChildren.prototype,\"childNodes\",{get:function get(){return this.children;},set:function set(children){this.children=children;},enumerable:true,configurable:true});return NodeWithChildren;}(Node);exports.NodeWithChildren=NodeWithChildren;var Element=/** @class */function(_super){__extends(Element,_super);/**\n     *\n     * @param name Name of the tag, eg. `div`, `span`\n     * @param attribs Object mapping attribute names to attribute values\n     */function Element(name,attribs){var _this=_super.call(this,name===\"script\"?\"script\"/* Script */:name===\"style\"?\"style\"/* Style */:\"tag\"/* Tag */,[])||this;_this.name=name;_this.attribs=attribs;_this.attribs=attribs;return _this;}Object.defineProperty(Element.prototype,\"tagName\",{// DOM Level 1 aliases\nget:function get(){return this.name;},set:function set(name){this.name=name;},enumerable:true,configurable:true});return Element;}(NodeWithChildren);exports.Element=Element;},{}],9:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.uniqueSort=exports.compareDocumentPosition=exports.removeSubsets=void 0;var tagtypes_1=require(\"./tagtypes\");/**\n * Given an array of nodes, remove any member that is contained by another.\n *\n * @param nodes Nodes to filter.\n */function removeSubsets(nodes){var idx=nodes.length;/*\n     * Check if each node (or one of its ancestors) is already contained in the\n     * array.\n     */while(--idx>=0){var node=nodes[idx];/*\n         * Remove the node if it is not unique.\n         * We are going through the array from the end, so we only\n         * have to check nodes that preceed the node under consideration in the array.\n         */if(idx>0&&nodes.lastIndexOf(node,idx-1)>=0){nodes.splice(idx,1);continue;}for(var ancestor=node.parent;ancestor;ancestor=ancestor.parent){if(nodes.includes(ancestor)){nodes.splice(idx,1);break;}}}return nodes;}exports.removeSubsets=removeSubsets;/**\n * Compare the position of one node against another node in any other document.\n * The return value is a bitmask with the following values:\n *\n * document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent./\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n * @param nodaA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n *\n * @return A bitmask describing the input nodes' relative position.\n *\n *        See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n *        a description of these values.\n */function compareDocumentPosition(nodeA,nodeB){var aParents=[];var bParents=[];if(nodeA===nodeB){return 0;}var current=tagtypes_1.hasChildren(nodeA)?nodeA:nodeA.parent;while(current){aParents.unshift(current);current=current.parent;}current=tagtypes_1.hasChildren(nodeB)?nodeB:nodeB.parent;while(current){bParents.unshift(current);current=current.parent;}var maxIdx=Math.min(aParents.length,bParents.length);var idx=0;while(idx<maxIdx&&aParents[idx]===bParents[idx]){idx++;}if(idx===0){return 1/* DISCONNECTED */;}var sharedParent=aParents[idx-1];var siblings=sharedParent.children;var aSibling=aParents[idx];var bSibling=bParents[idx];if(siblings.indexOf(aSibling)>siblings.indexOf(bSibling)){if(sharedParent===nodeB){return 4/* FOLLOWING */|16/* CONTAINED_BY */;}return 4/* FOLLOWING */;}if(sharedParent===nodeA){return 2/* PRECEDING */|8/* CONTAINS */;}return 2/* PRECEDING */;}exports.compareDocumentPosition=compareDocumentPosition;/**\n * Sort an array of nodes based on their relative position in the document and\n * remove any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @param nodes Array of DOM nodes\n * @returns collection of unique nodes, sorted in document order\n */function uniqueSort(nodes){nodes=nodes.filter(function(node,i,arr){return!arr.includes(node,i+1);});nodes.sort(function(a,b){var relative=compareDocumentPosition(a,b);if(relative&2/* PRECEDING */){return-1;}else if(relative&4/* FOLLOWING */){return 1;}return 0;});return nodes;}exports.uniqueSort=uniqueSort;},{\"./tagtypes\":15}],10:[function(require,module,exports){\"use strict\";var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){if(k2===undefined)k2=k;Object.defineProperty(o,k2,{enumerable:true,get:function get(){return m[k];}});}:function(o,m,k,k2){if(k2===undefined)k2=k;o[k2]=m[k];});var __exportStar=this&&this.__exportStar||function(m,exports){for(var p in m){if(p!==\"default\"&&!Object.prototype.hasOwnProperty.call(exports,p))__createBinding(exports,m,p);}};Object.defineProperty(exports,\"__esModule\",{value:true});__exportStar(require(\"./stringify\"),exports);__exportStar(require(\"./traversal\"),exports);__exportStar(require(\"./manipulation\"),exports);__exportStar(require(\"./querying\"),exports);__exportStar(require(\"./legacy\"),exports);__exportStar(require(\"./helpers\"),exports);__exportStar(require(\"./tagtypes\"),exports);},{\"./helpers\":9,\"./legacy\":11,\"./manipulation\":12,\"./querying\":13,\"./stringify\":14,\"./tagtypes\":15,\"./traversal\":16}],11:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.getElementsByTagType=exports.getElementsByTagName=exports.getElementById=exports.getElements=exports.testElement=void 0;var querying_1=require(\"./querying\");var tagtypes_1=require(\"./tagtypes\");function isTextNode(node){return node.type===\"text\"/* Text */;}var Checks={tag_name:function tag_name(name){if(typeof name===\"function\"){return function(elem){return tagtypes_1.isTag(elem)&&name(elem.name);};}else if(name===\"*\"){return tagtypes_1.isTag;}return function(elem){return tagtypes_1.isTag(elem)&&elem.name===name;};},tag_type:function tag_type(type){if(typeof type===\"function\"){return function(elem){return type(elem.type);};}return function(elem){return elem.type===type;};},tag_contains:function tag_contains(data){if(typeof data===\"function\"){return function(elem){return isTextNode(elem)&&data(elem.data);};}return function(elem){return isTextNode(elem)&&elem.data===data;};}};function getAttribCheck(attrib,value){if(typeof value===\"function\"){return function(elem){return tagtypes_1.isTag(elem)&&value(elem.attribs[attrib]);};}return function(elem){return tagtypes_1.isTag(elem)&&elem.attribs[attrib]===value;};}function combineFuncs(a,b){return function(elem){return a(elem)||b(elem);};}function compileTest(options){var funcs=Object.keys(options).map(function(key){var value=options[key];return key in Checks?Checks[key](value):getAttribCheck(key,value);});return funcs.length===0?null:funcs.reduce(combineFuncs);}function testElement(options,element){var test=compileTest(options);return test?test(element):true;}exports.testElement=testElement;function getElements(options,element,recurse,limit){if(limit===void 0){limit=Infinity;}var test=compileTest(options);return test?querying_1.filter(test,element,recurse,limit):[];}exports.getElements=getElements;function getElementById(id,element,recurse){if(recurse===void 0){recurse=true;}if(!Array.isArray(element))element=[element];return querying_1.findOne(getAttribCheck(\"id\",id),element,recurse);}exports.getElementById=getElementById;function getElementsByTagName(name,element,recurse,limit){if(limit===void 0){limit=Infinity;}return querying_1.filter(Checks.tag_name(name),element,recurse,limit);}exports.getElementsByTagName=getElementsByTagName;function getElementsByTagType(type,element,recurse,limit){if(recurse===void 0){recurse=true;}if(limit===void 0){limit=Infinity;}return querying_1.filter(Checks.tag_type(type),element,recurse,limit);}exports.getElementsByTagType=getElementsByTagType;},{\"./querying\":13,\"./tagtypes\":15}],12:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.prepend=exports.append=exports.appendChild=exports.replaceElement=exports.removeElement=void 0;/**\n * Remove an element from the dom\n *\n * @param elem The element to be removed\n */function removeElement(elem){if(elem.prev)elem.prev.next=elem.next;if(elem.next)elem.next.prev=elem.prev;if(elem.parent){var childs=elem.parent.children;childs.splice(childs.lastIndexOf(elem),1);}}exports.removeElement=removeElement;/**\n * Replace an element in the dom\n *\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */function replaceElement(elem,replacement){var prev=replacement.prev=elem.prev;if(prev){prev.next=replacement;}var next=replacement.next=elem.next;if(next){next.prev=replacement;}var parent=replacement.parent=elem.parent;if(parent){var childs=parent.children;childs[childs.lastIndexOf(elem)]=replacement;}}exports.replaceElement=replaceElement;/**\n * Append a child to an element\n *\n * @param elem The element to append to\n * @param child The element to be added as a child\n */function appendChild(elem,child){removeElement(child);child.parent=elem;if(elem.children.push(child)!==1){var sibling=elem.children[elem.children.length-2];sibling.next=child;child.prev=sibling;child.next=null;}}exports.appendChild=appendChild;/**\n * Append an element after another\n *\n * @param elem The element to append to\n * @param next The element be added\n */function append(elem,next){removeElement(next);var parent=elem.parent;var currNext=elem.next;next.next=currNext;next.prev=elem;elem.next=next;next.parent=parent;if(currNext){currNext.prev=next;if(parent){var childs=parent.children;childs.splice(childs.lastIndexOf(currNext),0,next);}}else if(parent){parent.children.push(next);}}exports.append=append;/**\n * Prepend an element before another\n *\n * @param elem The element to append to\n * @param prev The element be added\n */function prepend(elem,prev){var parent=elem.parent;if(parent){var childs=parent.children;childs.splice(childs.lastIndexOf(elem),0,prev);}if(elem.prev){elem.prev.next=prev;}prev.parent=parent;prev.prev=elem.prev;prev.next=elem;elem.prev=prev;}exports.prepend=prepend;},{}],13:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.findAll=exports.existsOne=exports.findOne=exports.findOneChild=exports.find=exports.filter=void 0;var tagtypes_1=require(\"./tagtypes\");/**\n * Search a node and its children for nodes passing a test function.\n *\n * @param test Function to test nodes on.\n * @param element Element to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n */function filter(test,node,recurse,limit){if(recurse===void 0){recurse=true;}if(limit===void 0){limit=Infinity;}if(!Array.isArray(node))node=[node];return find(test,node,recurse,limit);}exports.filter=filter;/**\n * Like `filter`, but only works on an array of nodes.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n */function find(test,nodes,recurse,limit){var result=[];for(var _i=0,nodes_1=nodes;_i<nodes_1.length;_i++){var elem=nodes_1[_i];if(test(elem)){result.push(elem);if(--limit<=0)break;}if(recurse&&tagtypes_1.hasChildren(elem)&&elem.children.length>0){var children=find(test,elem.children,recurse,limit);result.push.apply(result,children);limit-=children.length;if(limit<=0)break;}}return result;}exports.find=find;/**\n * Finds the first element inside of an array that matches a test function.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n */function findOneChild(test,nodes){return nodes.find(test);}exports.findOneChild=findOneChild;/**\n * Finds one element in a tree that passes a test.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n */function findOne(test,nodes,recurse){if(recurse===void 0){recurse=true;}var elem=null;for(var i=0;i<nodes.length&&!elem;i++){var checked=nodes[i];if(!tagtypes_1.isTag(checked)){continue;}else if(test(checked)){elem=checked;}else if(recurse&&checked.children.length>0){elem=findOne(test,checked.children);}}return elem;}exports.findOne=findOne;/**\n * Returns whether a tree of nodes contains at least one node passing a test.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n */function existsOne(test,nodes){return nodes.some(function(checked){return tagtypes_1.isTag(checked)&&(test(checked)||checked.children.length>0&&existsOne(test,checked.children));});}exports.existsOne=existsOne;/**\n * Search and array of nodes and its children for nodes passing a test function.\n *\n * Same as `find`, only with less options, leading to reduced complexity.\n *\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n */function findAll(test,nodes){var _a;var result=[];var stack=nodes.filter(tagtypes_1.isTag);var elem;while(elem=stack.shift()){var children=(_a=elem.children)===null||_a===void 0?void 0:_a.filter(tagtypes_1.isTag);if(children&&children.length>0){stack.unshift.apply(stack,children);}if(test(elem))result.push(elem);}return result;}exports.findAll=findAll;},{\"./tagtypes\":15}],14:[function(require,module,exports){\"use strict\";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{\"default\":mod};};Object.defineProperty(exports,\"__esModule\",{value:true});exports.getText=exports.getInnerHTML=exports.getOuterHTML=void 0;var tagtypes_1=require(\"./tagtypes\");var dom_serializer_1=__importDefault(require(\"dom-serializer\"));function getOuterHTML(node,options){return dom_serializer_1[\"default\"](node,options);}exports.getOuterHTML=getOuterHTML;function getInnerHTML(node,options){return tagtypes_1.hasChildren(node)?node.children.map(function(node){return getOuterHTML(node,options);}).join(\"\"):\"\";}exports.getInnerHTML=getInnerHTML;function getText(node){if(Array.isArray(node))return node.map(getText).join(\"\");if(tagtypes_1.isTag(node))return node.name===\"br\"?\"\\n\":getText(node.children);if(tagtypes_1.isCDATA(node))return getText(node.children);if(tagtypes_1.isText(node))return node.data;return\"\";}exports.getText=getText;},{\"./tagtypes\":15,\"dom-serializer\":5}],15:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.hasChildren=exports.isComment=exports.isText=exports.isCDATA=exports.isTag=void 0;var domelementtype_1=require(\"domelementtype\");function isTag(node){return domelementtype_1.isTag(node);}exports.isTag=isTag;function isCDATA(node){return node.type===\"cdata\"/* CDATA */;}exports.isCDATA=isCDATA;function isText(node){return node.type===\"text\"/* Text */;}exports.isText=isText;function isComment(node){return node.type===\"comment\"/* Comment */;}exports.isComment=isComment;function hasChildren(node){return Object.prototype.hasOwnProperty.call(node,\"children\");}exports.hasChildren=hasChildren;},{\"domelementtype\":6}],16:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.nextElementSibling=exports.getName=exports.hasAttrib=exports.getAttributeValue=exports.getSiblings=exports.getParent=exports.getChildren=void 0;function getChildren(elem){return elem.children||null;}exports.getChildren=getChildren;function getParent(elem){return elem.parent||null;}exports.getParent=getParent;function getSiblings(elem){var parent=getParent(elem);return parent?getChildren(parent):[elem];}exports.getSiblings=getSiblings;function getAttributeValue(elem,name){var _a;return(_a=elem.attribs)===null||_a===void 0?void 0:_a[name];}exports.getAttributeValue=getAttributeValue;function hasAttrib(elem,name){return!!elem.attribs&&Object.prototype.hasOwnProperty.call(elem.attribs,name)&&elem.attribs[name]!=null;}exports.hasAttrib=hasAttrib;/**\n * Returns the name property of an element\n *\n * @param elem The element to get the name for\n */function getName(elem){return elem.name;}exports.getName=getName;function nextElementSibling(elem){var node=elem.next;while(node!==null&&node.type!==\"tag\"){node=node.next;}return node;}exports.nextElementSibling=nextElementSibling;},{}],17:[function(require,module,exports){\"use strict\";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{\"default\":mod};};Object.defineProperty(exports,\"__esModule\",{value:true});exports.decodeHTML=exports.decodeHTMLStrict=exports.decodeXML=void 0;var entities_json_1=__importDefault(require(\"./maps/entities.json\"));var legacy_json_1=__importDefault(require(\"./maps/legacy.json\"));var xml_json_1=__importDefault(require(\"./maps/xml.json\"));var decode_codepoint_1=__importDefault(require(\"./decode_codepoint\"));exports.decodeXML=getStrictDecoder(xml_json_1[\"default\"]);exports.decodeHTMLStrict=getStrictDecoder(entities_json_1[\"default\"]);function getStrictDecoder(map){var keys=Object.keys(map).join(\"|\");var replace=getReplacer(map);keys+=\"|#[xX][\\\\da-fA-F]+|#\\\\d+\";var re=new RegExp(\"&(?:\"+keys+\");\",\"g\");return function(str){return String(str).replace(re,replace);};}var sorter=function sorter(a,b){return a<b?1:-1;};exports.decodeHTML=function(){var legacy=Object.keys(legacy_json_1[\"default\"]).sort(sorter);var keys=Object.keys(entities_json_1[\"default\"]).sort(sorter);for(var i=0,j=0;i<keys.length;i++){if(legacy[j]===keys[i]){keys[i]+=\";?\";j++;}else{keys[i]+=\";\";}}var re=new RegExp(\"&(?:\"+keys.join(\"|\")+\"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\",\"g\");var replace=getReplacer(entities_json_1[\"default\"]);function replacer(str){if(str.substr(-1)!==\";\")str+=\";\";return replace(str);}//TODO consider creating a merged map\nreturn function(str){return String(str).replace(re,replacer);};}();function getReplacer(map){return function replace(str){if(str.charAt(1)===\"#\"){var secondChar=str.charAt(2);if(secondChar===\"X\"||secondChar===\"x\"){return decode_codepoint_1[\"default\"](parseInt(str.substr(3),16));}return decode_codepoint_1[\"default\"](parseInt(str.substr(2),10));}return map[str.slice(1,-1)];};}},{\"./decode_codepoint\":18,\"./maps/entities.json\":22,\"./maps/legacy.json\":23,\"./maps/xml.json\":24}],18:[function(require,module,exports){\"use strict\";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{\"default\":mod};};Object.defineProperty(exports,\"__esModule\",{value:true});var decode_json_1=__importDefault(require(\"./maps/decode.json\"));// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nfunction decodeCodePoint(codePoint){if(codePoint>=0xd800&&codePoint<=0xdfff||codePoint>0x10ffff){return\"\\uFFFD\";}if(codePoint in decode_json_1[\"default\"]){codePoint=decode_json_1[\"default\"][codePoint];}var output=\"\";if(codePoint>0xffff){codePoint-=0x10000;output+=String.fromCharCode(codePoint>>>10&0x3ff|0xd800);codePoint=0xdc00|codePoint&0x3ff;}output+=String.fromCharCode(codePoint);return output;}exports[\"default\"]=decodeCodePoint;},{\"./maps/decode.json\":21}],19:[function(require,module,exports){\"use strict\";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{\"default\":mod};};Object.defineProperty(exports,\"__esModule\",{value:true});exports.escape=exports.encodeHTML=exports.encodeXML=void 0;var xml_json_1=__importDefault(require(\"./maps/xml.json\"));var inverseXML=getInverseObj(xml_json_1[\"default\"]);var xmlReplacer=getInverseReplacer(inverseXML);exports.encodeXML=getInverse(inverseXML,xmlReplacer);var entities_json_1=__importDefault(require(\"./maps/entities.json\"));var inverseHTML=getInverseObj(entities_json_1[\"default\"]);var htmlReplacer=getInverseReplacer(inverseHTML);exports.encodeHTML=getInverse(inverseHTML,htmlReplacer);function getInverseObj(obj){return Object.keys(obj).sort().reduce(function(inverse,name){inverse[obj[name]]=\"&\"+name+\";\";return inverse;},{});}function getInverseReplacer(inverse){var single=[];var multiple=[];for(var _i=0,_a=Object.keys(inverse);_i<_a.length;_i++){var k=_a[_i];if(k.length===1){// Add value to single array\nsingle.push(\"\\\\\"+k);}else{// Add value to multiple array\nmultiple.push(k);}}// Add ranges to single characters.\nsingle.sort();for(var start=0;start<single.length-1;start++){// Find the end of a run of characters\nvar end=start;while(end<single.length-1&&single[end].charCodeAt(1)+1===single[end+1].charCodeAt(1)){end+=1;}var count=1+end-start;// We want to replace at least three characters\nif(count<3)continue;single.splice(start,count,single[start]+\"-\"+single[end]);}multiple.unshift(\"[\"+single.join(\"\")+\"]\");return new RegExp(multiple.join(\"|\"),\"g\");}var reNonASCII=/(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;function singleCharReplacer(c){// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\nreturn\"&#x\"+c.codePointAt(0).toString(16).toUpperCase()+\";\";}function getInverse(inverse,re){return function(data){return data.replace(re,function(name){return inverse[name];}).replace(reNonASCII,singleCharReplacer);};}var reXmlChars=getInverseReplacer(inverseXML);function escape(data){return data.replace(reXmlChars,singleCharReplacer).replace(reNonASCII,singleCharReplacer);}exports.escape=escape;},{\"./maps/entities.json\":22,\"./maps/xml.json\":24}],20:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.encode=exports.decodeStrict=exports.decode=void 0;var decode_1=require(\"./decode\");var encode_1=require(\"./encode\");/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n */function decode(data,level){return(!level||level<=0?decode_1.decodeXML:decode_1.decodeHTML)(data);}exports.decode=decode;/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n */function decodeStrict(data,level){return(!level||level<=0?decode_1.decodeXML:decode_1.decodeHTMLStrict)(data);}exports.decodeStrict=decodeStrict;/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n */function encode(data,level){return(!level||level<=0?encode_1.encodeXML:encode_1.encodeHTML)(data);}exports.encode=encode;var encode_2=require(\"./encode\");Object.defineProperty(exports,\"encodeXML\",{enumerable:true,get:function get(){return encode_2.encodeXML;}});Object.defineProperty(exports,\"encodeHTML\",{enumerable:true,get:function get(){return encode_2.encodeHTML;}});Object.defineProperty(exports,\"escape\",{enumerable:true,get:function get(){return encode_2.escape;}});// Legacy aliases\nObject.defineProperty(exports,\"encodeHTML4\",{enumerable:true,get:function get(){return encode_2.encodeHTML;}});Object.defineProperty(exports,\"encodeHTML5\",{enumerable:true,get:function get(){return encode_2.encodeHTML;}});var decode_2=require(\"./decode\");Object.defineProperty(exports,\"decodeXML\",{enumerable:true,get:function get(){return decode_2.decodeXML;}});Object.defineProperty(exports,\"decodeHTML\",{enumerable:true,get:function get(){return decode_2.decodeHTML;}});Object.defineProperty(exports,\"decodeHTMLStrict\",{enumerable:true,get:function get(){return decode_2.decodeHTMLStrict;}});// Legacy aliases\nObject.defineProperty(exports,\"decodeHTML4\",{enumerable:true,get:function get(){return decode_2.decodeHTML;}});Object.defineProperty(exports,\"decodeHTML5\",{enumerable:true,get:function get(){return decode_2.decodeHTML;}});Object.defineProperty(exports,\"decodeHTML4Strict\",{enumerable:true,get:function get(){return decode_2.decodeHTMLStrict;}});Object.defineProperty(exports,\"decodeHTML5Strict\",{enumerable:true,get:function get(){return decode_2.decodeHTMLStrict;}});Object.defineProperty(exports,\"decodeXMLStrict\",{enumerable:true,get:function get(){return decode_2.decodeXML;}});},{\"./decode\":17,\"./encode\":19}],21:[function(require,module,exports){module.exports={\"0\":65533,\"128\":8364,\"130\":8218,\"131\":402,\"132\":8222,\"133\":8230,\"134\":8224,\"135\":8225,\"136\":710,\"137\":8240,\"138\":352,\"139\":8249,\"140\":338,\"142\":381,\"145\":8216,\"146\":8217,\"147\":8220,\"148\":8221,\"149\":8226,\"150\":8211,\"151\":8212,\"152\":732,\"153\":8482,\"154\":353,\"155\":8250,\"156\":339,\"158\":382,\"159\":376};},{}],22:[function(require,module,exports){module.exports={\"Aacute\":\"\\xC1\",\"aacute\":\"\\xE1\",\"Abreve\":\"\\u0102\",\"abreve\":\"\\u0103\",\"ac\":\"\\u223E\",\"acd\":\"\\u223F\",\"acE\":\"\\u223E\\u0333\",\"Acirc\":\"\\xC2\",\"acirc\":\"\\xE2\",\"acute\":\"\\xB4\",\"Acy\":\"\\u0410\",\"acy\":\"\\u0430\",\"AElig\":\"\\xC6\",\"aelig\":\"\\xE6\",\"af\":\"\\u2061\",\"Afr\":\"\\uD835\\uDD04\",\"afr\":\"\\uD835\\uDD1E\",\"Agrave\":\"\\xC0\",\"agrave\":\"\\xE0\",\"alefsym\":\"\\u2135\",\"aleph\":\"\\u2135\",\"Alpha\":\"\\u0391\",\"alpha\":\"\\u03B1\",\"Amacr\":\"\\u0100\",\"amacr\":\"\\u0101\",\"amalg\":\"\\u2A3F\",\"amp\":\"&\",\"AMP\":\"&\",\"andand\":\"\\u2A55\",\"And\":\"\\u2A53\",\"and\":\"\\u2227\",\"andd\":\"\\u2A5C\",\"andslope\":\"\\u2A58\",\"andv\":\"\\u2A5A\",\"ang\":\"\\u2220\",\"ange\":\"\\u29A4\",\"angle\":\"\\u2220\",\"angmsdaa\":\"\\u29A8\",\"angmsdab\":\"\\u29A9\",\"angmsdac\":\"\\u29AA\",\"angmsdad\":\"\\u29AB\",\"angmsdae\":\"\\u29AC\",\"angmsdaf\":\"\\u29AD\",\"angmsdag\":\"\\u29AE\",\"angmsdah\":\"\\u29AF\",\"angmsd\":\"\\u2221\",\"angrt\":\"\\u221F\",\"angrtvb\":\"\\u22BE\",\"angrtvbd\":\"\\u299D\",\"angsph\":\"\\u2222\",\"angst\":\"\\xC5\",\"angzarr\":\"\\u237C\",\"Aogon\":\"\\u0104\",\"aogon\":\"\\u0105\",\"Aopf\":\"\\uD835\\uDD38\",\"aopf\":\"\\uD835\\uDD52\",\"apacir\":\"\\u2A6F\",\"ap\":\"\\u2248\",\"apE\":\"\\u2A70\",\"ape\":\"\\u224A\",\"apid\":\"\\u224B\",\"apos\":\"'\",\"ApplyFunction\":\"\\u2061\",\"approx\":\"\\u2248\",\"approxeq\":\"\\u224A\",\"Aring\":\"\\xC5\",\"aring\":\"\\xE5\",\"Ascr\":\"\\uD835\\uDC9C\",\"ascr\":\"\\uD835\\uDCB6\",\"Assign\":\"\\u2254\",\"ast\":\"*\",\"asymp\":\"\\u2248\",\"asympeq\":\"\\u224D\",\"Atilde\":\"\\xC3\",\"atilde\":\"\\xE3\",\"Auml\":\"\\xC4\",\"auml\":\"\\xE4\",\"awconint\":\"\\u2233\",\"awint\":\"\\u2A11\",\"backcong\":\"\\u224C\",\"backepsilon\":\"\\u03F6\",\"backprime\":\"\\u2035\",\"backsim\":\"\\u223D\",\"backsimeq\":\"\\u22CD\",\"Backslash\":\"\\u2216\",\"Barv\":\"\\u2AE7\",\"barvee\":\"\\u22BD\",\"barwed\":\"\\u2305\",\"Barwed\":\"\\u2306\",\"barwedge\":\"\\u2305\",\"bbrk\":\"\\u23B5\",\"bbrktbrk\":\"\\u23B6\",\"bcong\":\"\\u224C\",\"Bcy\":\"\\u0411\",\"bcy\":\"\\u0431\",\"bdquo\":\"\\u201E\",\"becaus\":\"\\u2235\",\"because\":\"\\u2235\",\"Because\":\"\\u2235\",\"bemptyv\":\"\\u29B0\",\"bepsi\":\"\\u03F6\",\"bernou\":\"\\u212C\",\"Bernoullis\":\"\\u212C\",\"Beta\":\"\\u0392\",\"beta\":\"\\u03B2\",\"beth\":\"\\u2136\",\"between\":\"\\u226C\",\"Bfr\":\"\\uD835\\uDD05\",\"bfr\":\"\\uD835\\uDD1F\",\"bigcap\":\"\\u22C2\",\"bigcirc\":\"\\u25EF\",\"bigcup\":\"\\u22C3\",\"bigodot\":\"\\u2A00\",\"bigoplus\":\"\\u2A01\",\"bigotimes\":\"\\u2A02\",\"bigsqcup\":\"\\u2A06\",\"bigstar\":\"\\u2605\",\"bigtriangledown\":\"\\u25BD\",\"bigtriangleup\":\"\\u25B3\",\"biguplus\":\"\\u2A04\",\"bigvee\":\"\\u22C1\",\"bigwedge\":\"\\u22C0\",\"bkarow\":\"\\u290D\",\"blacklozenge\":\"\\u29EB\",\"blacksquare\":\"\\u25AA\",\"blacktriangle\":\"\\u25B4\",\"blacktriangledown\":\"\\u25BE\",\"blacktriangleleft\":\"\\u25C2\",\"blacktriangleright\":\"\\u25B8\",\"blank\":\"\\u2423\",\"blk12\":\"\\u2592\",\"blk14\":\"\\u2591\",\"blk34\":\"\\u2593\",\"block\":\"\\u2588\",\"bne\":\"=\\u20E5\",\"bnequiv\":\"\\u2261\\u20E5\",\"bNot\":\"\\u2AED\",\"bnot\":\"\\u2310\",\"Bopf\":\"\\uD835\\uDD39\",\"bopf\":\"\\uD835\\uDD53\",\"bot\":\"\\u22A5\",\"bottom\":\"\\u22A5\",\"bowtie\":\"\\u22C8\",\"boxbox\":\"\\u29C9\",\"boxdl\":\"\\u2510\",\"boxdL\":\"\\u2555\",\"boxDl\":\"\\u2556\",\"boxDL\":\"\\u2557\",\"boxdr\":\"\\u250C\",\"boxdR\":\"\\u2552\",\"boxDr\":\"\\u2553\",\"boxDR\":\"\\u2554\",\"boxh\":\"\\u2500\",\"boxH\":\"\\u2550\",\"boxhd\":\"\\u252C\",\"boxHd\":\"\\u2564\",\"boxhD\":\"\\u2565\",\"boxHD\":\"\\u2566\",\"boxhu\":\"\\u2534\",\"boxHu\":\"\\u2567\",\"boxhU\":\"\\u2568\",\"boxHU\":\"\\u2569\",\"boxminus\":\"\\u229F\",\"boxplus\":\"\\u229E\",\"boxtimes\":\"\\u22A0\",\"boxul\":\"\\u2518\",\"boxuL\":\"\\u255B\",\"boxUl\":\"\\u255C\",\"boxUL\":\"\\u255D\",\"boxur\":\"\\u2514\",\"boxuR\":\"\\u2558\",\"boxUr\":\"\\u2559\",\"boxUR\":\"\\u255A\",\"boxv\":\"\\u2502\",\"boxV\":\"\\u2551\",\"boxvh\":\"\\u253C\",\"boxvH\":\"\\u256A\",\"boxVh\":\"\\u256B\",\"boxVH\":\"\\u256C\",\"boxvl\":\"\\u2524\",\"boxvL\":\"\\u2561\",\"boxVl\":\"\\u2562\",\"boxVL\":\"\\u2563\",\"boxvr\":\"\\u251C\",\"boxvR\":\"\\u255E\",\"boxVr\":\"\\u255F\",\"boxVR\":\"\\u2560\",\"bprime\":\"\\u2035\",\"breve\":\"\\u02D8\",\"Breve\":\"\\u02D8\",\"brvbar\":\"\\xA6\",\"bscr\":\"\\uD835\\uDCB7\",\"Bscr\":\"\\u212C\",\"bsemi\":\"\\u204F\",\"bsim\":\"\\u223D\",\"bsime\":\"\\u22CD\",\"bsolb\":\"\\u29C5\",\"bsol\":\"\\\\\",\"bsolhsub\":\"\\u27C8\",\"bull\":\"\\u2022\",\"bullet\":\"\\u2022\",\"bump\":\"\\u224E\",\"bumpE\":\"\\u2AAE\",\"bumpe\":\"\\u224F\",\"Bumpeq\":\"\\u224E\",\"bumpeq\":\"\\u224F\",\"Cacute\":\"\\u0106\",\"cacute\":\"\\u0107\",\"capand\":\"\\u2A44\",\"capbrcup\":\"\\u2A49\",\"capcap\":\"\\u2A4B\",\"cap\":\"\\u2229\",\"Cap\":\"\\u22D2\",\"capcup\":\"\\u2A47\",\"capdot\":\"\\u2A40\",\"CapitalDifferentialD\":\"\\u2145\",\"caps\":\"\\u2229\\uFE00\",\"caret\":\"\\u2041\",\"caron\":\"\\u02C7\",\"Cayleys\":\"\\u212D\",\"ccaps\":\"\\u2A4D\",\"Ccaron\":\"\\u010C\",\"ccaron\":\"\\u010D\",\"Ccedil\":\"\\xC7\",\"ccedil\":\"\\xE7\",\"Ccirc\":\"\\u0108\",\"ccirc\":\"\\u0109\",\"Cconint\":\"\\u2230\",\"ccups\":\"\\u2A4C\",\"ccupssm\":\"\\u2A50\",\"Cdot\":\"\\u010A\",\"cdot\":\"\\u010B\",\"cedil\":\"\\xB8\",\"Cedilla\":\"\\xB8\",\"cemptyv\":\"\\u29B2\",\"cent\":\"\\xA2\",\"centerdot\":\"\\xB7\",\"CenterDot\":\"\\xB7\",\"cfr\":\"\\uD835\\uDD20\",\"Cfr\":\"\\u212D\",\"CHcy\":\"\\u0427\",\"chcy\":\"\\u0447\",\"check\":\"\\u2713\",\"checkmark\":\"\\u2713\",\"Chi\":\"\\u03A7\",\"chi\":\"\\u03C7\",\"circ\":\"\\u02C6\",\"circeq\":\"\\u2257\",\"circlearrowleft\":\"\\u21BA\",\"circlearrowright\":\"\\u21BB\",\"circledast\":\"\\u229B\",\"circledcirc\":\"\\u229A\",\"circleddash\":\"\\u229D\",\"CircleDot\":\"\\u2299\",\"circledR\":\"\\xAE\",\"circledS\":\"\\u24C8\",\"CircleMinus\":\"\\u2296\",\"CirclePlus\":\"\\u2295\",\"CircleTimes\":\"\\u2297\",\"cir\":\"\\u25CB\",\"cirE\":\"\\u29C3\",\"cire\":\"\\u2257\",\"cirfnint\":\"\\u2A10\",\"cirmid\":\"\\u2AEF\",\"cirscir\":\"\\u29C2\",\"ClockwiseContourIntegral\":\"\\u2232\",\"CloseCurlyDoubleQuote\":\"\\u201D\",\"CloseCurlyQuote\":\"\\u2019\",\"clubs\":\"\\u2663\",\"clubsuit\":\"\\u2663\",\"colon\":\":\",\"Colon\":\"\\u2237\",\"Colone\":\"\\u2A74\",\"colone\":\"\\u2254\",\"coloneq\":\"\\u2254\",\"comma\":\",\",\"commat\":\"@\",\"comp\":\"\\u2201\",\"compfn\":\"\\u2218\",\"complement\":\"\\u2201\",\"complexes\":\"\\u2102\",\"cong\":\"\\u2245\",\"congdot\":\"\\u2A6D\",\"Congruent\":\"\\u2261\",\"conint\":\"\\u222E\",\"Conint\":\"\\u222F\",\"ContourIntegral\":\"\\u222E\",\"copf\":\"\\uD835\\uDD54\",\"Copf\":\"\\u2102\",\"coprod\":\"\\u2210\",\"Coproduct\":\"\\u2210\",\"copy\":\"\\xA9\",\"COPY\":\"\\xA9\",\"copysr\":\"\\u2117\",\"CounterClockwiseContourIntegral\":\"\\u2233\",\"crarr\":\"\\u21B5\",\"cross\":\"\\u2717\",\"Cross\":\"\\u2A2F\",\"Cscr\":\"\\uD835\\uDC9E\",\"cscr\":\"\\uD835\\uDCB8\",\"csub\":\"\\u2ACF\",\"csube\":\"\\u2AD1\",\"csup\":\"\\u2AD0\",\"csupe\":\"\\u2AD2\",\"ctdot\":\"\\u22EF\",\"cudarrl\":\"\\u2938\",\"cudarrr\":\"\\u2935\",\"cuepr\":\"\\u22DE\",\"cuesc\":\"\\u22DF\",\"cularr\":\"\\u21B6\",\"cularrp\":\"\\u293D\",\"cupbrcap\":\"\\u2A48\",\"cupcap\":\"\\u2A46\",\"CupCap\":\"\\u224D\",\"cup\":\"\\u222A\",\"Cup\":\"\\u22D3\",\"cupcup\":\"\\u2A4A\",\"cupdot\":\"\\u228D\",\"cupor\":\"\\u2A45\",\"cups\":\"\\u222A\\uFE00\",\"curarr\":\"\\u21B7\",\"curarrm\":\"\\u293C\",\"curlyeqprec\":\"\\u22DE\",\"curlyeqsucc\":\"\\u22DF\",\"curlyvee\":\"\\u22CE\",\"curlywedge\":\"\\u22CF\",\"curren\":\"\\xA4\",\"curvearrowleft\":\"\\u21B6\",\"curvearrowright\":\"\\u21B7\",\"cuvee\":\"\\u22CE\",\"cuwed\":\"\\u22CF\",\"cwconint\":\"\\u2232\",\"cwint\":\"\\u2231\",\"cylcty\":\"\\u232D\",\"dagger\":\"\\u2020\",\"Dagger\":\"\\u2021\",\"daleth\":\"\\u2138\",\"darr\":\"\\u2193\",\"Darr\":\"\\u21A1\",\"dArr\":\"\\u21D3\",\"dash\":\"\\u2010\",\"Dashv\":\"\\u2AE4\",\"dashv\":\"\\u22A3\",\"dbkarow\":\"\\u290F\",\"dblac\":\"\\u02DD\",\"Dcaron\":\"\\u010E\",\"dcaron\":\"\\u010F\",\"Dcy\":\"\\u0414\",\"dcy\":\"\\u0434\",\"ddagger\":\"\\u2021\",\"ddarr\":\"\\u21CA\",\"DD\":\"\\u2145\",\"dd\":\"\\u2146\",\"DDotrahd\":\"\\u2911\",\"ddotseq\":\"\\u2A77\",\"deg\":\"\\xB0\",\"Del\":\"\\u2207\",\"Delta\":\"\\u0394\",\"delta\":\"\\u03B4\",\"demptyv\":\"\\u29B1\",\"dfisht\":\"\\u297F\",\"Dfr\":\"\\uD835\\uDD07\",\"dfr\":\"\\uD835\\uDD21\",\"dHar\":\"\\u2965\",\"dharl\":\"\\u21C3\",\"dharr\":\"\\u21C2\",\"DiacriticalAcute\":\"\\xB4\",\"DiacriticalDot\":\"\\u02D9\",\"DiacriticalDoubleAcute\":\"\\u02DD\",\"DiacriticalGrave\":\"`\",\"DiacriticalTilde\":\"\\u02DC\",\"diam\":\"\\u22C4\",\"diamond\":\"\\u22C4\",\"Diamond\":\"\\u22C4\",\"diamondsuit\":\"\\u2666\",\"diams\":\"\\u2666\",\"die\":\"\\xA8\",\"DifferentialD\":\"\\u2146\",\"digamma\":\"\\u03DD\",\"disin\":\"\\u22F2\",\"div\":\"\\xF7\",\"divide\":\"\\xF7\",\"divideontimes\":\"\\u22C7\",\"divonx\":\"\\u22C7\",\"DJcy\":\"\\u0402\",\"djcy\":\"\\u0452\",\"dlcorn\":\"\\u231E\",\"dlcrop\":\"\\u230D\",\"dollar\":\"$\",\"Dopf\":\"\\uD835\\uDD3B\",\"dopf\":\"\\uD835\\uDD55\",\"Dot\":\"\\xA8\",\"dot\":\"\\u02D9\",\"DotDot\":\"\\u20DC\",\"doteq\":\"\\u2250\",\"doteqdot\":\"\\u2251\",\"DotEqual\":\"\\u2250\",\"dotminus\":\"\\u2238\",\"dotplus\":\"\\u2214\",\"dotsquare\":\"\\u22A1\",\"doublebarwedge\":\"\\u2306\",\"DoubleContourIntegral\":\"\\u222F\",\"DoubleDot\":\"\\xA8\",\"DoubleDownArrow\":\"\\u21D3\",\"DoubleLeftArrow\":\"\\u21D0\",\"DoubleLeftRightArrow\":\"\\u21D4\",\"DoubleLeftTee\":\"\\u2AE4\",\"DoubleLongLeftArrow\":\"\\u27F8\",\"DoubleLongLeftRightArrow\":\"\\u27FA\",\"DoubleLongRightArrow\":\"\\u27F9\",\"DoubleRightArrow\":\"\\u21D2\",\"DoubleRightTee\":\"\\u22A8\",\"DoubleUpArrow\":\"\\u21D1\",\"DoubleUpDownArrow\":\"\\u21D5\",\"DoubleVerticalBar\":\"\\u2225\",\"DownArrowBar\":\"\\u2913\",\"downarrow\":\"\\u2193\",\"DownArrow\":\"\\u2193\",\"Downarrow\":\"\\u21D3\",\"DownArrowUpArrow\":\"\\u21F5\",\"DownBreve\":\"\\u0311\",\"downdownarrows\":\"\\u21CA\",\"downharpoonleft\":\"\\u21C3\",\"downharpoonright\":\"\\u21C2\",\"DownLeftRightVector\":\"\\u2950\",\"DownLeftTeeVector\":\"\\u295E\",\"DownLeftVectorBar\":\"\\u2956\",\"DownLeftVector\":\"\\u21BD\",\"DownRightTeeVector\":\"\\u295F\",\"DownRightVectorBar\":\"\\u2957\",\"DownRightVector\":\"\\u21C1\",\"DownTeeArrow\":\"\\u21A7\",\"DownTee\":\"\\u22A4\",\"drbkarow\":\"\\u2910\",\"drcorn\":\"\\u231F\",\"drcrop\":\"\\u230C\",\"Dscr\":\"\\uD835\\uDC9F\",\"dscr\":\"\\uD835\\uDCB9\",\"DScy\":\"\\u0405\",\"dscy\":\"\\u0455\",\"dsol\":\"\\u29F6\",\"Dstrok\":\"\\u0110\",\"dstrok\":\"\\u0111\",\"dtdot\":\"\\u22F1\",\"dtri\":\"\\u25BF\",\"dtrif\":\"\\u25BE\",\"duarr\":\"\\u21F5\",\"duhar\":\"\\u296F\",\"dwangle\":\"\\u29A6\",\"DZcy\":\"\\u040F\",\"dzcy\":\"\\u045F\",\"dzigrarr\":\"\\u27FF\",\"Eacute\":\"\\xC9\",\"eacute\":\"\\xE9\",\"easter\":\"\\u2A6E\",\"Ecaron\":\"\\u011A\",\"ecaron\":\"\\u011B\",\"Ecirc\":\"\\xCA\",\"ecirc\":\"\\xEA\",\"ecir\":\"\\u2256\",\"ecolon\":\"\\u2255\",\"Ecy\":\"\\u042D\",\"ecy\":\"\\u044D\",\"eDDot\":\"\\u2A77\",\"Edot\":\"\\u0116\",\"edot\":\"\\u0117\",\"eDot\":\"\\u2251\",\"ee\":\"\\u2147\",\"efDot\":\"\\u2252\",\"Efr\":\"\\uD835\\uDD08\",\"efr\":\"\\uD835\\uDD22\",\"eg\":\"\\u2A9A\",\"Egrave\":\"\\xC8\",\"egrave\":\"\\xE8\",\"egs\":\"\\u2A96\",\"egsdot\":\"\\u2A98\",\"el\":\"\\u2A99\",\"Element\":\"\\u2208\",\"elinters\":\"\\u23E7\",\"ell\":\"\\u2113\",\"els\":\"\\u2A95\",\"elsdot\":\"\\u2A97\",\"Emacr\":\"\\u0112\",\"emacr\":\"\\u0113\",\"empty\":\"\\u2205\",\"emptyset\":\"\\u2205\",\"EmptySmallSquare\":\"\\u25FB\",\"emptyv\":\"\\u2205\",\"EmptyVerySmallSquare\":\"\\u25AB\",\"emsp13\":\"\\u2004\",\"emsp14\":\"\\u2005\",\"emsp\":\"\\u2003\",\"ENG\":\"\\u014A\",\"eng\":\"\\u014B\",\"ensp\":\"\\u2002\",\"Eogon\":\"\\u0118\",\"eogon\":\"\\u0119\",\"Eopf\":\"\\uD835\\uDD3C\",\"eopf\":\"\\uD835\\uDD56\",\"epar\":\"\\u22D5\",\"eparsl\":\"\\u29E3\",\"eplus\":\"\\u2A71\",\"epsi\":\"\\u03B5\",\"Epsilon\":\"\\u0395\",\"epsilon\":\"\\u03B5\",\"epsiv\":\"\\u03F5\",\"eqcirc\":\"\\u2256\",\"eqcolon\":\"\\u2255\",\"eqsim\":\"\\u2242\",\"eqslantgtr\":\"\\u2A96\",\"eqslantless\":\"\\u2A95\",\"Equal\":\"\\u2A75\",\"equals\":\"=\",\"EqualTilde\":\"\\u2242\",\"equest\":\"\\u225F\",\"Equilibrium\":\"\\u21CC\",\"equiv\":\"\\u2261\",\"equivDD\":\"\\u2A78\",\"eqvparsl\":\"\\u29E5\",\"erarr\":\"\\u2971\",\"erDot\":\"\\u2253\",\"escr\":\"\\u212F\",\"Escr\":\"\\u2130\",\"esdot\":\"\\u2250\",\"Esim\":\"\\u2A73\",\"esim\":\"\\u2242\",\"Eta\":\"\\u0397\",\"eta\":\"\\u03B7\",\"ETH\":\"\\xD0\",\"eth\":\"\\xF0\",\"Euml\":\"\\xCB\",\"euml\":\"\\xEB\",\"euro\":\"\\u20AC\",\"excl\":\"!\",\"exist\":\"\\u2203\",\"Exists\":\"\\u2203\",\"expectation\":\"\\u2130\",\"exponentiale\":\"\\u2147\",\"ExponentialE\":\"\\u2147\",\"fallingdotseq\":\"\\u2252\",\"Fcy\":\"\\u0424\",\"fcy\":\"\\u0444\",\"female\":\"\\u2640\",\"ffilig\":\"\\uFB03\",\"fflig\":\"\\uFB00\",\"ffllig\":\"\\uFB04\",\"Ffr\":\"\\uD835\\uDD09\",\"ffr\":\"\\uD835\\uDD23\",\"filig\":\"\\uFB01\",\"FilledSmallSquare\":\"\\u25FC\",\"FilledVerySmallSquare\":\"\\u25AA\",\"fjlig\":\"fj\",\"flat\":\"\\u266D\",\"fllig\":\"\\uFB02\",\"fltns\":\"\\u25B1\",\"fnof\":\"\\u0192\",\"Fopf\":\"\\uD835\\uDD3D\",\"fopf\":\"\\uD835\\uDD57\",\"forall\":\"\\u2200\",\"ForAll\":\"\\u2200\",\"fork\":\"\\u22D4\",\"forkv\":\"\\u2AD9\",\"Fouriertrf\":\"\\u2131\",\"fpartint\":\"\\u2A0D\",\"frac12\":\"\\xBD\",\"frac13\":\"\\u2153\",\"frac14\":\"\\xBC\",\"frac15\":\"\\u2155\",\"frac16\":\"\\u2159\",\"frac18\":\"\\u215B\",\"frac23\":\"\\u2154\",\"frac25\":\"\\u2156\",\"frac34\":\"\\xBE\",\"frac35\":\"\\u2157\",\"frac38\":\"\\u215C\",\"frac45\":\"\\u2158\",\"frac56\":\"\\u215A\",\"frac58\":\"\\u215D\",\"frac78\":\"\\u215E\",\"frasl\":\"\\u2044\",\"frown\":\"\\u2322\",\"fscr\":\"\\uD835\\uDCBB\",\"Fscr\":\"\\u2131\",\"gacute\":\"\\u01F5\",\"Gamma\":\"\\u0393\",\"gamma\":\"\\u03B3\",\"Gammad\":\"\\u03DC\",\"gammad\":\"\\u03DD\",\"gap\":\"\\u2A86\",\"Gbreve\":\"\\u011E\",\"gbreve\":\"\\u011F\",\"Gcedil\":\"\\u0122\",\"Gcirc\":\"\\u011C\",\"gcirc\":\"\\u011D\",\"Gcy\":\"\\u0413\",\"gcy\":\"\\u0433\",\"Gdot\":\"\\u0120\",\"gdot\":\"\\u0121\",\"ge\":\"\\u2265\",\"gE\":\"\\u2267\",\"gEl\":\"\\u2A8C\",\"gel\":\"\\u22DB\",\"geq\":\"\\u2265\",\"geqq\":\"\\u2267\",\"geqslant\":\"\\u2A7E\",\"gescc\":\"\\u2AA9\",\"ges\":\"\\u2A7E\",\"gesdot\":\"\\u2A80\",\"gesdoto\":\"\\u2A82\",\"gesdotol\":\"\\u2A84\",\"gesl\":\"\\u22DB\\uFE00\",\"gesles\":\"\\u2A94\",\"Gfr\":\"\\uD835\\uDD0A\",\"gfr\":\"\\uD835\\uDD24\",\"gg\":\"\\u226B\",\"Gg\":\"\\u22D9\",\"ggg\":\"\\u22D9\",\"gimel\":\"\\u2137\",\"GJcy\":\"\\u0403\",\"gjcy\":\"\\u0453\",\"gla\":\"\\u2AA5\",\"gl\":\"\\u2277\",\"glE\":\"\\u2A92\",\"glj\":\"\\u2AA4\",\"gnap\":\"\\u2A8A\",\"gnapprox\":\"\\u2A8A\",\"gne\":\"\\u2A88\",\"gnE\":\"\\u2269\",\"gneq\":\"\\u2A88\",\"gneqq\":\"\\u2269\",\"gnsim\":\"\\u22E7\",\"Gopf\":\"\\uD835\\uDD3E\",\"gopf\":\"\\uD835\\uDD58\",\"grave\":\"`\",\"GreaterEqual\":\"\\u2265\",\"GreaterEqualLess\":\"\\u22DB\",\"GreaterFullEqual\":\"\\u2267\",\"GreaterGreater\":\"\\u2AA2\",\"GreaterLess\":\"\\u2277\",\"GreaterSlantEqual\":\"\\u2A7E\",\"GreaterTilde\":\"\\u2273\",\"Gscr\":\"\\uD835\\uDCA2\",\"gscr\":\"\\u210A\",\"gsim\":\"\\u2273\",\"gsime\":\"\\u2A8E\",\"gsiml\":\"\\u2A90\",\"gtcc\":\"\\u2AA7\",\"gtcir\":\"\\u2A7A\",\"gt\":\">\",\"GT\":\">\",\"Gt\":\"\\u226B\",\"gtdot\":\"\\u22D7\",\"gtlPar\":\"\\u2995\",\"gtquest\":\"\\u2A7C\",\"gtrapprox\":\"\\u2A86\",\"gtrarr\":\"\\u2978\",\"gtrdot\":\"\\u22D7\",\"gtreqless\":\"\\u22DB\",\"gtreqqless\":\"\\u2A8C\",\"gtrless\":\"\\u2277\",\"gtrsim\":\"\\u2273\",\"gvertneqq\":\"\\u2269\\uFE00\",\"gvnE\":\"\\u2269\\uFE00\",\"Hacek\":\"\\u02C7\",\"hairsp\":\"\\u200A\",\"half\":\"\\xBD\",\"hamilt\":\"\\u210B\",\"HARDcy\":\"\\u042A\",\"hardcy\":\"\\u044A\",\"harrcir\":\"\\u2948\",\"harr\":\"\\u2194\",\"hArr\":\"\\u21D4\",\"harrw\":\"\\u21AD\",\"Hat\":\"^\",\"hbar\":\"\\u210F\",\"Hcirc\":\"\\u0124\",\"hcirc\":\"\\u0125\",\"hearts\":\"\\u2665\",\"heartsuit\":\"\\u2665\",\"hellip\":\"\\u2026\",\"hercon\":\"\\u22B9\",\"hfr\":\"\\uD835\\uDD25\",\"Hfr\":\"\\u210C\",\"HilbertSpace\":\"\\u210B\",\"hksearow\":\"\\u2925\",\"hkswarow\":\"\\u2926\",\"hoarr\":\"\\u21FF\",\"homtht\":\"\\u223B\",\"hookleftarrow\":\"\\u21A9\",\"hookrightarrow\":\"\\u21AA\",\"hopf\":\"\\uD835\\uDD59\",\"Hopf\":\"\\u210D\",\"horbar\":\"\\u2015\",\"HorizontalLine\":\"\\u2500\",\"hscr\":\"\\uD835\\uDCBD\",\"Hscr\":\"\\u210B\",\"hslash\":\"\\u210F\",\"Hstrok\":\"\\u0126\",\"hstrok\":\"\\u0127\",\"HumpDownHump\":\"\\u224E\",\"HumpEqual\":\"\\u224F\",\"hybull\":\"\\u2043\",\"hyphen\":\"\\u2010\",\"Iacute\":\"\\xCD\",\"iacute\":\"\\xED\",\"ic\":\"\\u2063\",\"Icirc\":\"\\xCE\",\"icirc\":\"\\xEE\",\"Icy\":\"\\u0418\",\"icy\":\"\\u0438\",\"Idot\":\"\\u0130\",\"IEcy\":\"\\u0415\",\"iecy\":\"\\u0435\",\"iexcl\":\"\\xA1\",\"iff\":\"\\u21D4\",\"ifr\":\"\\uD835\\uDD26\",\"Ifr\":\"\\u2111\",\"Igrave\":\"\\xCC\",\"igrave\":\"\\xEC\",\"ii\":\"\\u2148\",\"iiiint\":\"\\u2A0C\",\"iiint\":\"\\u222D\",\"iinfin\":\"\\u29DC\",\"iiota\":\"\\u2129\",\"IJlig\":\"\\u0132\",\"ijlig\":\"\\u0133\",\"Imacr\":\"\\u012A\",\"imacr\":\"\\u012B\",\"image\":\"\\u2111\",\"ImaginaryI\":\"\\u2148\",\"imagline\":\"\\u2110\",\"imagpart\":\"\\u2111\",\"imath\":\"\\u0131\",\"Im\":\"\\u2111\",\"imof\":\"\\u22B7\",\"imped\":\"\\u01B5\",\"Implies\":\"\\u21D2\",\"incare\":\"\\u2105\",\"in\":\"\\u2208\",\"infin\":\"\\u221E\",\"infintie\":\"\\u29DD\",\"inodot\":\"\\u0131\",\"intcal\":\"\\u22BA\",\"int\":\"\\u222B\",\"Int\":\"\\u222C\",\"integers\":\"\\u2124\",\"Integral\":\"\\u222B\",\"intercal\":\"\\u22BA\",\"Intersection\":\"\\u22C2\",\"intlarhk\":\"\\u2A17\",\"intprod\":\"\\u2A3C\",\"InvisibleComma\":\"\\u2063\",\"InvisibleTimes\":\"\\u2062\",\"IOcy\":\"\\u0401\",\"iocy\":\"\\u0451\",\"Iogon\":\"\\u012E\",\"iogon\":\"\\u012F\",\"Iopf\":\"\\uD835\\uDD40\",\"iopf\":\"\\uD835\\uDD5A\",\"Iota\":\"\\u0399\",\"iota\":\"\\u03B9\",\"iprod\":\"\\u2A3C\",\"iquest\":\"\\xBF\",\"iscr\":\"\\uD835\\uDCBE\",\"Iscr\":\"\\u2110\",\"isin\":\"\\u2208\",\"isindot\":\"\\u22F5\",\"isinE\":\"\\u22F9\",\"isins\":\"\\u22F4\",\"isinsv\":\"\\u22F3\",\"isinv\":\"\\u2208\",\"it\":\"\\u2062\",\"Itilde\":\"\\u0128\",\"itilde\":\"\\u0129\",\"Iukcy\":\"\\u0406\",\"iukcy\":\"\\u0456\",\"Iuml\":\"\\xCF\",\"iuml\":\"\\xEF\",\"Jcirc\":\"\\u0134\",\"jcirc\":\"\\u0135\",\"Jcy\":\"\\u0419\",\"jcy\":\"\\u0439\",\"Jfr\":\"\\uD835\\uDD0D\",\"jfr\":\"\\uD835\\uDD27\",\"jmath\":\"\\u0237\",\"Jopf\":\"\\uD835\\uDD41\",\"jopf\":\"\\uD835\\uDD5B\",\"Jscr\":\"\\uD835\\uDCA5\",\"jscr\":\"\\uD835\\uDCBF\",\"Jsercy\":\"\\u0408\",\"jsercy\":\"\\u0458\",\"Jukcy\":\"\\u0404\",\"jukcy\":\"\\u0454\",\"Kappa\":\"\\u039A\",\"kappa\":\"\\u03BA\",\"kappav\":\"\\u03F0\",\"Kcedil\":\"\\u0136\",\"kcedil\":\"\\u0137\",\"Kcy\":\"\\u041A\",\"kcy\":\"\\u043A\",\"Kfr\":\"\\uD835\\uDD0E\",\"kfr\":\"\\uD835\\uDD28\",\"kgreen\":\"\\u0138\",\"KHcy\":\"\\u0425\",\"khcy\":\"\\u0445\",\"KJcy\":\"\\u040C\",\"kjcy\":\"\\u045C\",\"Kopf\":\"\\uD835\\uDD42\",\"kopf\":\"\\uD835\\uDD5C\",\"Kscr\":\"\\uD835\\uDCA6\",\"kscr\":\"\\uD835\\uDCC0\",\"lAarr\":\"\\u21DA\",\"Lacute\":\"\\u0139\",\"lacute\":\"\\u013A\",\"laemptyv\":\"\\u29B4\",\"lagran\":\"\\u2112\",\"Lambda\":\"\\u039B\",\"lambda\":\"\\u03BB\",\"lang\":\"\\u27E8\",\"Lang\":\"\\u27EA\",\"langd\":\"\\u2991\",\"langle\":\"\\u27E8\",\"lap\":\"\\u2A85\",\"Laplacetrf\":\"\\u2112\",\"laquo\":\"\\xAB\",\"larrb\":\"\\u21E4\",\"larrbfs\":\"\\u291F\",\"larr\":\"\\u2190\",\"Larr\":\"\\u219E\",\"lArr\":\"\\u21D0\",\"larrfs\":\"\\u291D\",\"larrhk\":\"\\u21A9\",\"larrlp\":\"\\u21AB\",\"larrpl\":\"\\u2939\",\"larrsim\":\"\\u2973\",\"larrtl\":\"\\u21A2\",\"latail\":\"\\u2919\",\"lAtail\":\"\\u291B\",\"lat\":\"\\u2AAB\",\"late\":\"\\u2AAD\",\"lates\":\"\\u2AAD\\uFE00\",\"lbarr\":\"\\u290C\",\"lBarr\":\"\\u290E\",\"lbbrk\":\"\\u2772\",\"lbrace\":\"{\",\"lbrack\":\"[\",\"lbrke\":\"\\u298B\",\"lbrksld\":\"\\u298F\",\"lbrkslu\":\"\\u298D\",\"Lcaron\":\"\\u013D\",\"lcaron\":\"\\u013E\",\"Lcedil\":\"\\u013B\",\"lcedil\":\"\\u013C\",\"lceil\":\"\\u2308\",\"lcub\":\"{\",\"Lcy\":\"\\u041B\",\"lcy\":\"\\u043B\",\"ldca\":\"\\u2936\",\"ldquo\":\"\\u201C\",\"ldquor\":\"\\u201E\",\"ldrdhar\":\"\\u2967\",\"ldrushar\":\"\\u294B\",\"ldsh\":\"\\u21B2\",\"le\":\"\\u2264\",\"lE\":\"\\u2266\",\"LeftAngleBracket\":\"\\u27E8\",\"LeftArrowBar\":\"\\u21E4\",\"leftarrow\":\"\\u2190\",\"LeftArrow\":\"\\u2190\",\"Leftarrow\":\"\\u21D0\",\"LeftArrowRightArrow\":\"\\u21C6\",\"leftarrowtail\":\"\\u21A2\",\"LeftCeiling\":\"\\u2308\",\"LeftDoubleBracket\":\"\\u27E6\",\"LeftDownTeeVector\":\"\\u2961\",\"LeftDownVectorBar\":\"\\u2959\",\"LeftDownVector\":\"\\u21C3\",\"LeftFloor\":\"\\u230A\",\"leftharpoondown\":\"\\u21BD\",\"leftharpoonup\":\"\\u21BC\",\"leftleftarrows\":\"\\u21C7\",\"leftrightarrow\":\"\\u2194\",\"LeftRightArrow\":\"\\u2194\",\"Leftrightarrow\":\"\\u21D4\",\"leftrightarrows\":\"\\u21C6\",\"leftrightharpoons\":\"\\u21CB\",\"leftrightsquigarrow\":\"\\u21AD\",\"LeftRightVector\":\"\\u294E\",\"LeftTeeArrow\":\"\\u21A4\",\"LeftTee\":\"\\u22A3\",\"LeftTeeVector\":\"\\u295A\",\"leftthreetimes\":\"\\u22CB\",\"LeftTriangleBar\":\"\\u29CF\",\"LeftTriangle\":\"\\u22B2\",\"LeftTriangleEqual\":\"\\u22B4\",\"LeftUpDownVector\":\"\\u2951\",\"LeftUpTeeVector\":\"\\u2960\",\"LeftUpVectorBar\":\"\\u2958\",\"LeftUpVector\":\"\\u21BF\",\"LeftVectorBar\":\"\\u2952\",\"LeftVector\":\"\\u21BC\",\"lEg\":\"\\u2A8B\",\"leg\":\"\\u22DA\",\"leq\":\"\\u2264\",\"leqq\":\"\\u2266\",\"leqslant\":\"\\u2A7D\",\"lescc\":\"\\u2AA8\",\"les\":\"\\u2A7D\",\"lesdot\":\"\\u2A7F\",\"lesdoto\":\"\\u2A81\",\"lesdotor\":\"\\u2A83\",\"lesg\":\"\\u22DA\\uFE00\",\"lesges\":\"\\u2A93\",\"lessapprox\":\"\\u2A85\",\"lessdot\":\"\\u22D6\",\"lesseqgtr\":\"\\u22DA\",\"lesseqqgtr\":\"\\u2A8B\",\"LessEqualGreater\":\"\\u22DA\",\"LessFullEqual\":\"\\u2266\",\"LessGreater\":\"\\u2276\",\"lessgtr\":\"\\u2276\",\"LessLess\":\"\\u2AA1\",\"lesssim\":\"\\u2272\",\"LessSlantEqual\":\"\\u2A7D\",\"LessTilde\":\"\\u2272\",\"lfisht\":\"\\u297C\",\"lfloor\":\"\\u230A\",\"Lfr\":\"\\uD835\\uDD0F\",\"lfr\":\"\\uD835\\uDD29\",\"lg\":\"\\u2276\",\"lgE\":\"\\u2A91\",\"lHar\":\"\\u2962\",\"lhard\":\"\\u21BD\",\"lharu\":\"\\u21BC\",\"lharul\":\"\\u296A\",\"lhblk\":\"\\u2584\",\"LJcy\":\"\\u0409\",\"ljcy\":\"\\u0459\",\"llarr\":\"\\u21C7\",\"ll\":\"\\u226A\",\"Ll\":\"\\u22D8\",\"llcorner\":\"\\u231E\",\"Lleftarrow\":\"\\u21DA\",\"llhard\":\"\\u296B\",\"lltri\":\"\\u25FA\",\"Lmidot\":\"\\u013F\",\"lmidot\":\"\\u0140\",\"lmoustache\":\"\\u23B0\",\"lmoust\":\"\\u23B0\",\"lnap\":\"\\u2A89\",\"lnapprox\":\"\\u2A89\",\"lne\":\"\\u2A87\",\"lnE\":\"\\u2268\",\"lneq\":\"\\u2A87\",\"lneqq\":\"\\u2268\",\"lnsim\":\"\\u22E6\",\"loang\":\"\\u27EC\",\"loarr\":\"\\u21FD\",\"lobrk\":\"\\u27E6\",\"longleftarrow\":\"\\u27F5\",\"LongLeftArrow\":\"\\u27F5\",\"Longleftarrow\":\"\\u27F8\",\"longleftrightarrow\":\"\\u27F7\",\"LongLeftRightArrow\":\"\\u27F7\",\"Longleftrightarrow\":\"\\u27FA\",\"longmapsto\":\"\\u27FC\",\"longrightarrow\":\"\\u27F6\",\"LongRightArrow\":\"\\u27F6\",\"Longrightarrow\":\"\\u27F9\",\"looparrowleft\":\"\\u21AB\",\"looparrowright\":\"\\u21AC\",\"lopar\":\"\\u2985\",\"Lopf\":\"\\uD835\\uDD43\",\"lopf\":\"\\uD835\\uDD5D\",\"loplus\":\"\\u2A2D\",\"lotimes\":\"\\u2A34\",\"lowast\":\"\\u2217\",\"lowbar\":\"_\",\"LowerLeftArrow\":\"\\u2199\",\"LowerRightArrow\":\"\\u2198\",\"loz\":\"\\u25CA\",\"lozenge\":\"\\u25CA\",\"lozf\":\"\\u29EB\",\"lpar\":\"(\",\"lparlt\":\"\\u2993\",\"lrarr\":\"\\u21C6\",\"lrcorner\":\"\\u231F\",\"lrhar\":\"\\u21CB\",\"lrhard\":\"\\u296D\",\"lrm\":\"\\u200E\",\"lrtri\":\"\\u22BF\",\"lsaquo\":\"\\u2039\",\"lscr\":\"\\uD835\\uDCC1\",\"Lscr\":\"\\u2112\",\"lsh\":\"\\u21B0\",\"Lsh\":\"\\u21B0\",\"lsim\":\"\\u2272\",\"lsime\":\"\\u2A8D\",\"lsimg\":\"\\u2A8F\",\"lsqb\":\"[\",\"lsquo\":\"\\u2018\",\"lsquor\":\"\\u201A\",\"Lstrok\":\"\\u0141\",\"lstrok\":\"\\u0142\",\"ltcc\":\"\\u2AA6\",\"ltcir\":\"\\u2A79\",\"lt\":\"<\",\"LT\":\"<\",\"Lt\":\"\\u226A\",\"ltdot\":\"\\u22D6\",\"lthree\":\"\\u22CB\",\"ltimes\":\"\\u22C9\",\"ltlarr\":\"\\u2976\",\"ltquest\":\"\\u2A7B\",\"ltri\":\"\\u25C3\",\"ltrie\":\"\\u22B4\",\"ltrif\":\"\\u25C2\",\"ltrPar\":\"\\u2996\",\"lurdshar\":\"\\u294A\",\"luruhar\":\"\\u2966\",\"lvertneqq\":\"\\u2268\\uFE00\",\"lvnE\":\"\\u2268\\uFE00\",\"macr\":\"\\xAF\",\"male\":\"\\u2642\",\"malt\":\"\\u2720\",\"maltese\":\"\\u2720\",\"Map\":\"\\u2905\",\"map\":\"\\u21A6\",\"mapsto\":\"\\u21A6\",\"mapstodown\":\"\\u21A7\",\"mapstoleft\":\"\\u21A4\",\"mapstoup\":\"\\u21A5\",\"marker\":\"\\u25AE\",\"mcomma\":\"\\u2A29\",\"Mcy\":\"\\u041C\",\"mcy\":\"\\u043C\",\"mdash\":\"\\u2014\",\"mDDot\":\"\\u223A\",\"measuredangle\":\"\\u2221\",\"MediumSpace\":\"\\u205F\",\"Mellintrf\":\"\\u2133\",\"Mfr\":\"\\uD835\\uDD10\",\"mfr\":\"\\uD835\\uDD2A\",\"mho\":\"\\u2127\",\"micro\":\"\\xB5\",\"midast\":\"*\",\"midcir\":\"\\u2AF0\",\"mid\":\"\\u2223\",\"middot\":\"\\xB7\",\"minusb\":\"\\u229F\",\"minus\":\"\\u2212\",\"minusd\":\"\\u2238\",\"minusdu\":\"\\u2A2A\",\"MinusPlus\":\"\\u2213\",\"mlcp\":\"\\u2ADB\",\"mldr\":\"\\u2026\",\"mnplus\":\"\\u2213\",\"models\":\"\\u22A7\",\"Mopf\":\"\\uD835\\uDD44\",\"mopf\":\"\\uD835\\uDD5E\",\"mp\":\"\\u2213\",\"mscr\":\"\\uD835\\uDCC2\",\"Mscr\":\"\\u2133\",\"mstpos\":\"\\u223E\",\"Mu\":\"\\u039C\",\"mu\":\"\\u03BC\",\"multimap\":\"\\u22B8\",\"mumap\":\"\\u22B8\",\"nabla\":\"\\u2207\",\"Nacute\":\"\\u0143\",\"nacute\":\"\\u0144\",\"nang\":\"\\u2220\\u20D2\",\"nap\":\"\\u2249\",\"napE\":\"\\u2A70\\u0338\",\"napid\":\"\\u224B\\u0338\",\"napos\":\"\\u0149\",\"napprox\":\"\\u2249\",\"natural\":\"\\u266E\",\"naturals\":\"\\u2115\",\"natur\":\"\\u266E\",\"nbsp\":\"\\xA0\",\"nbump\":\"\\u224E\\u0338\",\"nbumpe\":\"\\u224F\\u0338\",\"ncap\":\"\\u2A43\",\"Ncaron\":\"\\u0147\",\"ncaron\":\"\\u0148\",\"Ncedil\":\"\\u0145\",\"ncedil\":\"\\u0146\",\"ncong\":\"\\u2247\",\"ncongdot\":\"\\u2A6D\\u0338\",\"ncup\":\"\\u2A42\",\"Ncy\":\"\\u041D\",\"ncy\":\"\\u043D\",\"ndash\":\"\\u2013\",\"nearhk\":\"\\u2924\",\"nearr\":\"\\u2197\",\"neArr\":\"\\u21D7\",\"nearrow\":\"\\u2197\",\"ne\":\"\\u2260\",\"nedot\":\"\\u2250\\u0338\",\"NegativeMediumSpace\":\"\\u200B\",\"NegativeThickSpace\":\"\\u200B\",\"NegativeThinSpace\":\"\\u200B\",\"NegativeVeryThinSpace\":\"\\u200B\",\"nequiv\":\"\\u2262\",\"nesear\":\"\\u2928\",\"nesim\":\"\\u2242\\u0338\",\"NestedGreaterGreater\":\"\\u226B\",\"NestedLessLess\":\"\\u226A\",\"NewLine\":\"\\n\",\"nexist\":\"\\u2204\",\"nexists\":\"\\u2204\",\"Nfr\":\"\\uD835\\uDD11\",\"nfr\":\"\\uD835\\uDD2B\",\"ngE\":\"\\u2267\\u0338\",\"nge\":\"\\u2271\",\"ngeq\":\"\\u2271\",\"ngeqq\":\"\\u2267\\u0338\",\"ngeqslant\":\"\\u2A7E\\u0338\",\"nges\":\"\\u2A7E\\u0338\",\"nGg\":\"\\u22D9\\u0338\",\"ngsim\":\"\\u2275\",\"nGt\":\"\\u226B\\u20D2\",\"ngt\":\"\\u226F\",\"ngtr\":\"\\u226F\",\"nGtv\":\"\\u226B\\u0338\",\"nharr\":\"\\u21AE\",\"nhArr\":\"\\u21CE\",\"nhpar\":\"\\u2AF2\",\"ni\":\"\\u220B\",\"nis\":\"\\u22FC\",\"nisd\":\"\\u22FA\",\"niv\":\"\\u220B\",\"NJcy\":\"\\u040A\",\"njcy\":\"\\u045A\",\"nlarr\":\"\\u219A\",\"nlArr\":\"\\u21CD\",\"nldr\":\"\\u2025\",\"nlE\":\"\\u2266\\u0338\",\"nle\":\"\\u2270\",\"nleftarrow\":\"\\u219A\",\"nLeftarrow\":\"\\u21CD\",\"nleftrightarrow\":\"\\u21AE\",\"nLeftrightarrow\":\"\\u21CE\",\"nleq\":\"\\u2270\",\"nleqq\":\"\\u2266\\u0338\",\"nleqslant\":\"\\u2A7D\\u0338\",\"nles\":\"\\u2A7D\\u0338\",\"nless\":\"\\u226E\",\"nLl\":\"\\u22D8\\u0338\",\"nlsim\":\"\\u2274\",\"nLt\":\"\\u226A\\u20D2\",\"nlt\":\"\\u226E\",\"nltri\":\"\\u22EA\",\"nltrie\":\"\\u22EC\",\"nLtv\":\"\\u226A\\u0338\",\"nmid\":\"\\u2224\",\"NoBreak\":\"\\u2060\",\"NonBreakingSpace\":\"\\xA0\",\"nopf\":\"\\uD835\\uDD5F\",\"Nopf\":\"\\u2115\",\"Not\":\"\\u2AEC\",\"not\":\"\\xAC\",\"NotCongruent\":\"\\u2262\",\"NotCupCap\":\"\\u226D\",\"NotDoubleVerticalBar\":\"\\u2226\",\"NotElement\":\"\\u2209\",\"NotEqual\":\"\\u2260\",\"NotEqualTilde\":\"\\u2242\\u0338\",\"NotExists\":\"\\u2204\",\"NotGreater\":\"\\u226F\",\"NotGreaterEqual\":\"\\u2271\",\"NotGreaterFullEqual\":\"\\u2267\\u0338\",\"NotGreaterGreater\":\"\\u226B\\u0338\",\"NotGreaterLess\":\"\\u2279\",\"NotGreaterSlantEqual\":\"\\u2A7E\\u0338\",\"NotGreaterTilde\":\"\\u2275\",\"NotHumpDownHump\":\"\\u224E\\u0338\",\"NotHumpEqual\":\"\\u224F\\u0338\",\"notin\":\"\\u2209\",\"notindot\":\"\\u22F5\\u0338\",\"notinE\":\"\\u22F9\\u0338\",\"notinva\":\"\\u2209\",\"notinvb\":\"\\u22F7\",\"notinvc\":\"\\u22F6\",\"NotLeftTriangleBar\":\"\\u29CF\\u0338\",\"NotLeftTriangle\":\"\\u22EA\",\"NotLeftTriangleEqual\":\"\\u22EC\",\"NotLess\":\"\\u226E\",\"NotLessEqual\":\"\\u2270\",\"NotLessGreater\":\"\\u2278\",\"NotLessLess\":\"\\u226A\\u0338\",\"NotLessSlantEqual\":\"\\u2A7D\\u0338\",\"NotLessTilde\":\"\\u2274\",\"NotNestedGreaterGreater\":\"\\u2AA2\\u0338\",\"NotNestedLessLess\":\"\\u2AA1\\u0338\",\"notni\":\"\\u220C\",\"notniva\":\"\\u220C\",\"notnivb\":\"\\u22FE\",\"notnivc\":\"\\u22FD\",\"NotPrecedes\":\"\\u2280\",\"NotPrecedesEqual\":\"\\u2AAF\\u0338\",\"NotPrecedesSlantEqual\":\"\\u22E0\",\"NotReverseElement\":\"\\u220C\",\"NotRightTriangleBar\":\"\\u29D0\\u0338\",\"NotRightTriangle\":\"\\u22EB\",\"NotRightTriangleEqual\":\"\\u22ED\",\"NotSquareSubset\":\"\\u228F\\u0338\",\"NotSquareSubsetEqual\":\"\\u22E2\",\"NotSquareSuperset\":\"\\u2290\\u0338\",\"NotSquareSupersetEqual\":\"\\u22E3\",\"NotSubset\":\"\\u2282\\u20D2\",\"NotSubsetEqual\":\"\\u2288\",\"NotSucceeds\":\"\\u2281\",\"NotSucceedsEqual\":\"\\u2AB0\\u0338\",\"NotSucceedsSlantEqual\":\"\\u22E1\",\"NotSucceedsTilde\":\"\\u227F\\u0338\",\"NotSuperset\":\"\\u2283\\u20D2\",\"NotSupersetEqual\":\"\\u2289\",\"NotTilde\":\"\\u2241\",\"NotTildeEqual\":\"\\u2244\",\"NotTildeFullEqual\":\"\\u2247\",\"NotTildeTilde\":\"\\u2249\",\"NotVerticalBar\":\"\\u2224\",\"nparallel\":\"\\u2226\",\"npar\":\"\\u2226\",\"nparsl\":\"\\u2AFD\\u20E5\",\"npart\":\"\\u2202\\u0338\",\"npolint\":\"\\u2A14\",\"npr\":\"\\u2280\",\"nprcue\":\"\\u22E0\",\"nprec\":\"\\u2280\",\"npreceq\":\"\\u2AAF\\u0338\",\"npre\":\"\\u2AAF\\u0338\",\"nrarrc\":\"\\u2933\\u0338\",\"nrarr\":\"\\u219B\",\"nrArr\":\"\\u21CF\",\"nrarrw\":\"\\u219D\\u0338\",\"nrightarrow\":\"\\u219B\",\"nRightarrow\":\"\\u21CF\",\"nrtri\":\"\\u22EB\",\"nrtrie\":\"\\u22ED\",\"nsc\":\"\\u2281\",\"nsccue\":\"\\u22E1\",\"nsce\":\"\\u2AB0\\u0338\",\"Nscr\":\"\\uD835\\uDCA9\",\"nscr\":\"\\uD835\\uDCC3\",\"nshortmid\":\"\\u2224\",\"nshortparallel\":\"\\u2226\",\"nsim\":\"\\u2241\",\"nsime\":\"\\u2244\",\"nsimeq\":\"\\u2244\",\"nsmid\":\"\\u2224\",\"nspar\":\"\\u2226\",\"nsqsube\":\"\\u22E2\",\"nsqsupe\":\"\\u22E3\",\"nsub\":\"\\u2284\",\"nsubE\":\"\\u2AC5\\u0338\",\"nsube\":\"\\u2288\",\"nsubset\":\"\\u2282\\u20D2\",\"nsubseteq\":\"\\u2288\",\"nsubseteqq\":\"\\u2AC5\\u0338\",\"nsucc\":\"\\u2281\",\"nsucceq\":\"\\u2AB0\\u0338\",\"nsup\":\"\\u2285\",\"nsupE\":\"\\u2AC6\\u0338\",\"nsupe\":\"\\u2289\",\"nsupset\":\"\\u2283\\u20D2\",\"nsupseteq\":\"\\u2289\",\"nsupseteqq\":\"\\u2AC6\\u0338\",\"ntgl\":\"\\u2279\",\"Ntilde\":\"\\xD1\",\"ntilde\":\"\\xF1\",\"ntlg\":\"\\u2278\",\"ntriangleleft\":\"\\u22EA\",\"ntrianglelefteq\":\"\\u22EC\",\"ntriangleright\":\"\\u22EB\",\"ntrianglerighteq\":\"\\u22ED\",\"Nu\":\"\\u039D\",\"nu\":\"\\u03BD\",\"num\":\"#\",\"numero\":\"\\u2116\",\"numsp\":\"\\u2007\",\"nvap\":\"\\u224D\\u20D2\",\"nvdash\":\"\\u22AC\",\"nvDash\":\"\\u22AD\",\"nVdash\":\"\\u22AE\",\"nVDash\":\"\\u22AF\",\"nvge\":\"\\u2265\\u20D2\",\"nvgt\":\">\\u20D2\",\"nvHarr\":\"\\u2904\",\"nvinfin\":\"\\u29DE\",\"nvlArr\":\"\\u2902\",\"nvle\":\"\\u2264\\u20D2\",\"nvlt\":\"<\\u20D2\",\"nvltrie\":\"\\u22B4\\u20D2\",\"nvrArr\":\"\\u2903\",\"nvrtrie\":\"\\u22B5\\u20D2\",\"nvsim\":\"\\u223C\\u20D2\",\"nwarhk\":\"\\u2923\",\"nwarr\":\"\\u2196\",\"nwArr\":\"\\u21D6\",\"nwarrow\":\"\\u2196\",\"nwnear\":\"\\u2927\",\"Oacute\":\"\\xD3\",\"oacute\":\"\\xF3\",\"oast\":\"\\u229B\",\"Ocirc\":\"\\xD4\",\"ocirc\":\"\\xF4\",\"ocir\":\"\\u229A\",\"Ocy\":\"\\u041E\",\"ocy\":\"\\u043E\",\"odash\":\"\\u229D\",\"Odblac\":\"\\u0150\",\"odblac\":\"\\u0151\",\"odiv\":\"\\u2A38\",\"odot\":\"\\u2299\",\"odsold\":\"\\u29BC\",\"OElig\":\"\\u0152\",\"oelig\":\"\\u0153\",\"ofcir\":\"\\u29BF\",\"Ofr\":\"\\uD835\\uDD12\",\"ofr\":\"\\uD835\\uDD2C\",\"ogon\":\"\\u02DB\",\"Ograve\":\"\\xD2\",\"ograve\":\"\\xF2\",\"ogt\":\"\\u29C1\",\"ohbar\":\"\\u29B5\",\"ohm\":\"\\u03A9\",\"oint\":\"\\u222E\",\"olarr\":\"\\u21BA\",\"olcir\":\"\\u29BE\",\"olcross\":\"\\u29BB\",\"oline\":\"\\u203E\",\"olt\":\"\\u29C0\",\"Omacr\":\"\\u014C\",\"omacr\":\"\\u014D\",\"Omega\":\"\\u03A9\",\"omega\":\"\\u03C9\",\"Omicron\":\"\\u039F\",\"omicron\":\"\\u03BF\",\"omid\":\"\\u29B6\",\"ominus\":\"\\u2296\",\"Oopf\":\"\\uD835\\uDD46\",\"oopf\":\"\\uD835\\uDD60\",\"opar\":\"\\u29B7\",\"OpenCurlyDoubleQuote\":\"\\u201C\",\"OpenCurlyQuote\":\"\\u2018\",\"operp\":\"\\u29B9\",\"oplus\":\"\\u2295\",\"orarr\":\"\\u21BB\",\"Or\":\"\\u2A54\",\"or\":\"\\u2228\",\"ord\":\"\\u2A5D\",\"order\":\"\\u2134\",\"orderof\":\"\\u2134\",\"ordf\":\"\\xAA\",\"ordm\":\"\\xBA\",\"origof\":\"\\u22B6\",\"oror\":\"\\u2A56\",\"orslope\":\"\\u2A57\",\"orv\":\"\\u2A5B\",\"oS\":\"\\u24C8\",\"Oscr\":\"\\uD835\\uDCAA\",\"oscr\":\"\\u2134\",\"Oslash\":\"\\xD8\",\"oslash\":\"\\xF8\",\"osol\":\"\\u2298\",\"Otilde\":\"\\xD5\",\"otilde\":\"\\xF5\",\"otimesas\":\"\\u2A36\",\"Otimes\":\"\\u2A37\",\"otimes\":\"\\u2297\",\"Ouml\":\"\\xD6\",\"ouml\":\"\\xF6\",\"ovbar\":\"\\u233D\",\"OverBar\":\"\\u203E\",\"OverBrace\":\"\\u23DE\",\"OverBracket\":\"\\u23B4\",\"OverParenthesis\":\"\\u23DC\",\"para\":\"\\xB6\",\"parallel\":\"\\u2225\",\"par\":\"\\u2225\",\"parsim\":\"\\u2AF3\",\"parsl\":\"\\u2AFD\",\"part\":\"\\u2202\",\"PartialD\":\"\\u2202\",\"Pcy\":\"\\u041F\",\"pcy\":\"\\u043F\",\"percnt\":\"%\",\"period\":\".\",\"permil\":\"\\u2030\",\"perp\":\"\\u22A5\",\"pertenk\":\"\\u2031\",\"Pfr\":\"\\uD835\\uDD13\",\"pfr\":\"\\uD835\\uDD2D\",\"Phi\":\"\\u03A6\",\"phi\":\"\\u03C6\",\"phiv\":\"\\u03D5\",\"phmmat\":\"\\u2133\",\"phone\":\"\\u260E\",\"Pi\":\"\\u03A0\",\"pi\":\"\\u03C0\",\"pitchfork\":\"\\u22D4\",\"piv\":\"\\u03D6\",\"planck\":\"\\u210F\",\"planckh\":\"\\u210E\",\"plankv\":\"\\u210F\",\"plusacir\":\"\\u2A23\",\"plusb\":\"\\u229E\",\"pluscir\":\"\\u2A22\",\"plus\":\"+\",\"plusdo\":\"\\u2214\",\"plusdu\":\"\\u2A25\",\"pluse\":\"\\u2A72\",\"PlusMinus\":\"\\xB1\",\"plusmn\":\"\\xB1\",\"plussim\":\"\\u2A26\",\"plustwo\":\"\\u2A27\",\"pm\":\"\\xB1\",\"Poincareplane\":\"\\u210C\",\"pointint\":\"\\u2A15\",\"popf\":\"\\uD835\\uDD61\",\"Popf\":\"\\u2119\",\"pound\":\"\\xA3\",\"prap\":\"\\u2AB7\",\"Pr\":\"\\u2ABB\",\"pr\":\"\\u227A\",\"prcue\":\"\\u227C\",\"precapprox\":\"\\u2AB7\",\"prec\":\"\\u227A\",\"preccurlyeq\":\"\\u227C\",\"Precedes\":\"\\u227A\",\"PrecedesEqual\":\"\\u2AAF\",\"PrecedesSlantEqual\":\"\\u227C\",\"PrecedesTilde\":\"\\u227E\",\"preceq\":\"\\u2AAF\",\"precnapprox\":\"\\u2AB9\",\"precneqq\":\"\\u2AB5\",\"precnsim\":\"\\u22E8\",\"pre\":\"\\u2AAF\",\"prE\":\"\\u2AB3\",\"precsim\":\"\\u227E\",\"prime\":\"\\u2032\",\"Prime\":\"\\u2033\",\"primes\":\"\\u2119\",\"prnap\":\"\\u2AB9\",\"prnE\":\"\\u2AB5\",\"prnsim\":\"\\u22E8\",\"prod\":\"\\u220F\",\"Product\":\"\\u220F\",\"profalar\":\"\\u232E\",\"profline\":\"\\u2312\",\"profsurf\":\"\\u2313\",\"prop\":\"\\u221D\",\"Proportional\":\"\\u221D\",\"Proportion\":\"\\u2237\",\"propto\":\"\\u221D\",\"prsim\":\"\\u227E\",\"prurel\":\"\\u22B0\",\"Pscr\":\"\\uD835\\uDCAB\",\"pscr\":\"\\uD835\\uDCC5\",\"Psi\":\"\\u03A8\",\"psi\":\"\\u03C8\",\"puncsp\":\"\\u2008\",\"Qfr\":\"\\uD835\\uDD14\",\"qfr\":\"\\uD835\\uDD2E\",\"qint\":\"\\u2A0C\",\"qopf\":\"\\uD835\\uDD62\",\"Qopf\":\"\\u211A\",\"qprime\":\"\\u2057\",\"Qscr\":\"\\uD835\\uDCAC\",\"qscr\":\"\\uD835\\uDCC6\",\"quaternions\":\"\\u210D\",\"quatint\":\"\\u2A16\",\"quest\":\"?\",\"questeq\":\"\\u225F\",\"quot\":\"\\\"\",\"QUOT\":\"\\\"\",\"rAarr\":\"\\u21DB\",\"race\":\"\\u223D\\u0331\",\"Racute\":\"\\u0154\",\"racute\":\"\\u0155\",\"radic\":\"\\u221A\",\"raemptyv\":\"\\u29B3\",\"rang\":\"\\u27E9\",\"Rang\":\"\\u27EB\",\"rangd\":\"\\u2992\",\"range\":\"\\u29A5\",\"rangle\":\"\\u27E9\",\"raquo\":\"\\xBB\",\"rarrap\":\"\\u2975\",\"rarrb\":\"\\u21E5\",\"rarrbfs\":\"\\u2920\",\"rarrc\":\"\\u2933\",\"rarr\":\"\\u2192\",\"Rarr\":\"\\u21A0\",\"rArr\":\"\\u21D2\",\"rarrfs\":\"\\u291E\",\"rarrhk\":\"\\u21AA\",\"rarrlp\":\"\\u21AC\",\"rarrpl\":\"\\u2945\",\"rarrsim\":\"\\u2974\",\"Rarrtl\":\"\\u2916\",\"rarrtl\":\"\\u21A3\",\"rarrw\":\"\\u219D\",\"ratail\":\"\\u291A\",\"rAtail\":\"\\u291C\",\"ratio\":\"\\u2236\",\"rationals\":\"\\u211A\",\"rbarr\":\"\\u290D\",\"rBarr\":\"\\u290F\",\"RBarr\":\"\\u2910\",\"rbbrk\":\"\\u2773\",\"rbrace\":\"}\",\"rbrack\":\"]\",\"rbrke\":\"\\u298C\",\"rbrksld\":\"\\u298E\",\"rbrkslu\":\"\\u2990\",\"Rcaron\":\"\\u0158\",\"rcaron\":\"\\u0159\",\"Rcedil\":\"\\u0156\",\"rcedil\":\"\\u0157\",\"rceil\":\"\\u2309\",\"rcub\":\"}\",\"Rcy\":\"\\u0420\",\"rcy\":\"\\u0440\",\"rdca\":\"\\u2937\",\"rdldhar\":\"\\u2969\",\"rdquo\":\"\\u201D\",\"rdquor\":\"\\u201D\",\"rdsh\":\"\\u21B3\",\"real\":\"\\u211C\",\"realine\":\"\\u211B\",\"realpart\":\"\\u211C\",\"reals\":\"\\u211D\",\"Re\":\"\\u211C\",\"rect\":\"\\u25AD\",\"reg\":\"\\xAE\",\"REG\":\"\\xAE\",\"ReverseElement\":\"\\u220B\",\"ReverseEquilibrium\":\"\\u21CB\",\"ReverseUpEquilibrium\":\"\\u296F\",\"rfisht\":\"\\u297D\",\"rfloor\":\"\\u230B\",\"rfr\":\"\\uD835\\uDD2F\",\"Rfr\":\"\\u211C\",\"rHar\":\"\\u2964\",\"rhard\":\"\\u21C1\",\"rharu\":\"\\u21C0\",\"rharul\":\"\\u296C\",\"Rho\":\"\\u03A1\",\"rho\":\"\\u03C1\",\"rhov\":\"\\u03F1\",\"RightAngleBracket\":\"\\u27E9\",\"RightArrowBar\":\"\\u21E5\",\"rightarrow\":\"\\u2192\",\"RightArrow\":\"\\u2192\",\"Rightarrow\":\"\\u21D2\",\"RightArrowLeftArrow\":\"\\u21C4\",\"rightarrowtail\":\"\\u21A3\",\"RightCeiling\":\"\\u2309\",\"RightDoubleBracket\":\"\\u27E7\",\"RightDownTeeVector\":\"\\u295D\",\"RightDownVectorBar\":\"\\u2955\",\"RightDownVector\":\"\\u21C2\",\"RightFloor\":\"\\u230B\",\"rightharpoondown\":\"\\u21C1\",\"rightharpoonup\":\"\\u21C0\",\"rightleftarrows\":\"\\u21C4\",\"rightleftharpoons\":\"\\u21CC\",\"rightrightarrows\":\"\\u21C9\",\"rightsquigarrow\":\"\\u219D\",\"RightTeeArrow\":\"\\u21A6\",\"RightTee\":\"\\u22A2\",\"RightTeeVector\":\"\\u295B\",\"rightthreetimes\":\"\\u22CC\",\"RightTriangleBar\":\"\\u29D0\",\"RightTriangle\":\"\\u22B3\",\"RightTriangleEqual\":\"\\u22B5\",\"RightUpDownVector\":\"\\u294F\",\"RightUpTeeVector\":\"\\u295C\",\"RightUpVectorBar\":\"\\u2954\",\"RightUpVector\":\"\\u21BE\",\"RightVectorBar\":\"\\u2953\",\"RightVector\":\"\\u21C0\",\"ring\":\"\\u02DA\",\"risingdotseq\":\"\\u2253\",\"rlarr\":\"\\u21C4\",\"rlhar\":\"\\u21CC\",\"rlm\":\"\\u200F\",\"rmoustache\":\"\\u23B1\",\"rmoust\":\"\\u23B1\",\"rnmid\":\"\\u2AEE\",\"roang\":\"\\u27ED\",\"roarr\":\"\\u21FE\",\"robrk\":\"\\u27E7\",\"ropar\":\"\\u2986\",\"ropf\":\"\\uD835\\uDD63\",\"Ropf\":\"\\u211D\",\"roplus\":\"\\u2A2E\",\"rotimes\":\"\\u2A35\",\"RoundImplies\":\"\\u2970\",\"rpar\":\")\",\"rpargt\":\"\\u2994\",\"rppolint\":\"\\u2A12\",\"rrarr\":\"\\u21C9\",\"Rrightarrow\":\"\\u21DB\",\"rsaquo\":\"\\u203A\",\"rscr\":\"\\uD835\\uDCC7\",\"Rscr\":\"\\u211B\",\"rsh\":\"\\u21B1\",\"Rsh\":\"\\u21B1\",\"rsqb\":\"]\",\"rsquo\":\"\\u2019\",\"rsquor\":\"\\u2019\",\"rthree\":\"\\u22CC\",\"rtimes\":\"\\u22CA\",\"rtri\":\"\\u25B9\",\"rtrie\":\"\\u22B5\",\"rtrif\":\"\\u25B8\",\"rtriltri\":\"\\u29CE\",\"RuleDelayed\":\"\\u29F4\",\"ruluhar\":\"\\u2968\",\"rx\":\"\\u211E\",\"Sacute\":\"\\u015A\",\"sacute\":\"\\u015B\",\"sbquo\":\"\\u201A\",\"scap\":\"\\u2AB8\",\"Scaron\":\"\\u0160\",\"scaron\":\"\\u0161\",\"Sc\":\"\\u2ABC\",\"sc\":\"\\u227B\",\"sccue\":\"\\u227D\",\"sce\":\"\\u2AB0\",\"scE\":\"\\u2AB4\",\"Scedil\":\"\\u015E\",\"scedil\":\"\\u015F\",\"Scirc\":\"\\u015C\",\"scirc\":\"\\u015D\",\"scnap\":\"\\u2ABA\",\"scnE\":\"\\u2AB6\",\"scnsim\":\"\\u22E9\",\"scpolint\":\"\\u2A13\",\"scsim\":\"\\u227F\",\"Scy\":\"\\u0421\",\"scy\":\"\\u0441\",\"sdotb\":\"\\u22A1\",\"sdot\":\"\\u22C5\",\"sdote\":\"\\u2A66\",\"searhk\":\"\\u2925\",\"searr\":\"\\u2198\",\"seArr\":\"\\u21D8\",\"searrow\":\"\\u2198\",\"sect\":\"\\xA7\",\"semi\":\";\",\"seswar\":\"\\u2929\",\"setminus\":\"\\u2216\",\"setmn\":\"\\u2216\",\"sext\":\"\\u2736\",\"Sfr\":\"\\uD835\\uDD16\",\"sfr\":\"\\uD835\\uDD30\",\"sfrown\":\"\\u2322\",\"sharp\":\"\\u266F\",\"SHCHcy\":\"\\u0429\",\"shchcy\":\"\\u0449\",\"SHcy\":\"\\u0428\",\"shcy\":\"\\u0448\",\"ShortDownArrow\":\"\\u2193\",\"ShortLeftArrow\":\"\\u2190\",\"shortmid\":\"\\u2223\",\"shortparallel\":\"\\u2225\",\"ShortRightArrow\":\"\\u2192\",\"ShortUpArrow\":\"\\u2191\",\"shy\":\"\\xAD\",\"Sigma\":\"\\u03A3\",\"sigma\":\"\\u03C3\",\"sigmaf\":\"\\u03C2\",\"sigmav\":\"\\u03C2\",\"sim\":\"\\u223C\",\"simdot\":\"\\u2A6A\",\"sime\":\"\\u2243\",\"simeq\":\"\\u2243\",\"simg\":\"\\u2A9E\",\"simgE\":\"\\u2AA0\",\"siml\":\"\\u2A9D\",\"simlE\":\"\\u2A9F\",\"simne\":\"\\u2246\",\"simplus\":\"\\u2A24\",\"simrarr\":\"\\u2972\",\"slarr\":\"\\u2190\",\"SmallCircle\":\"\\u2218\",\"smallsetminus\":\"\\u2216\",\"smashp\":\"\\u2A33\",\"smeparsl\":\"\\u29E4\",\"smid\":\"\\u2223\",\"smile\":\"\\u2323\",\"smt\":\"\\u2AAA\",\"smte\":\"\\u2AAC\",\"smtes\":\"\\u2AAC\\uFE00\",\"SOFTcy\":\"\\u042C\",\"softcy\":\"\\u044C\",\"solbar\":\"\\u233F\",\"solb\":\"\\u29C4\",\"sol\":\"/\",\"Sopf\":\"\\uD835\\uDD4A\",\"sopf\":\"\\uD835\\uDD64\",\"spades\":\"\\u2660\",\"spadesuit\":\"\\u2660\",\"spar\":\"\\u2225\",\"sqcap\":\"\\u2293\",\"sqcaps\":\"\\u2293\\uFE00\",\"sqcup\":\"\\u2294\",\"sqcups\":\"\\u2294\\uFE00\",\"Sqrt\":\"\\u221A\",\"sqsub\":\"\\u228F\",\"sqsube\":\"\\u2291\",\"sqsubset\":\"\\u228F\",\"sqsubseteq\":\"\\u2291\",\"sqsup\":\"\\u2290\",\"sqsupe\":\"\\u2292\",\"sqsupset\":\"\\u2290\",\"sqsupseteq\":\"\\u2292\",\"square\":\"\\u25A1\",\"Square\":\"\\u25A1\",\"SquareIntersection\":\"\\u2293\",\"SquareSubset\":\"\\u228F\",\"SquareSubsetEqual\":\"\\u2291\",\"SquareSuperset\":\"\\u2290\",\"SquareSupersetEqual\":\"\\u2292\",\"SquareUnion\":\"\\u2294\",\"squarf\":\"\\u25AA\",\"squ\":\"\\u25A1\",\"squf\":\"\\u25AA\",\"srarr\":\"\\u2192\",\"Sscr\":\"\\uD835\\uDCAE\",\"sscr\":\"\\uD835\\uDCC8\",\"ssetmn\":\"\\u2216\",\"ssmile\":\"\\u2323\",\"sstarf\":\"\\u22C6\",\"Star\":\"\\u22C6\",\"star\":\"\\u2606\",\"starf\":\"\\u2605\",\"straightepsilon\":\"\\u03F5\",\"straightphi\":\"\\u03D5\",\"strns\":\"\\xAF\",\"sub\":\"\\u2282\",\"Sub\":\"\\u22D0\",\"subdot\":\"\\u2ABD\",\"subE\":\"\\u2AC5\",\"sube\":\"\\u2286\",\"subedot\":\"\\u2AC3\",\"submult\":\"\\u2AC1\",\"subnE\":\"\\u2ACB\",\"subne\":\"\\u228A\",\"subplus\":\"\\u2ABF\",\"subrarr\":\"\\u2979\",\"subset\":\"\\u2282\",\"Subset\":\"\\u22D0\",\"subseteq\":\"\\u2286\",\"subseteqq\":\"\\u2AC5\",\"SubsetEqual\":\"\\u2286\",\"subsetneq\":\"\\u228A\",\"subsetneqq\":\"\\u2ACB\",\"subsim\":\"\\u2AC7\",\"subsub\":\"\\u2AD5\",\"subsup\":\"\\u2AD3\",\"succapprox\":\"\\u2AB8\",\"succ\":\"\\u227B\",\"succcurlyeq\":\"\\u227D\",\"Succeeds\":\"\\u227B\",\"SucceedsEqual\":\"\\u2AB0\",\"SucceedsSlantEqual\":\"\\u227D\",\"SucceedsTilde\":\"\\u227F\",\"succeq\":\"\\u2AB0\",\"succnapprox\":\"\\u2ABA\",\"succneqq\":\"\\u2AB6\",\"succnsim\":\"\\u22E9\",\"succsim\":\"\\u227F\",\"SuchThat\":\"\\u220B\",\"sum\":\"\\u2211\",\"Sum\":\"\\u2211\",\"sung\":\"\\u266A\",\"sup1\":\"\\xB9\",\"sup2\":\"\\xB2\",\"sup3\":\"\\xB3\",\"sup\":\"\\u2283\",\"Sup\":\"\\u22D1\",\"supdot\":\"\\u2ABE\",\"supdsub\":\"\\u2AD8\",\"supE\":\"\\u2AC6\",\"supe\":\"\\u2287\",\"supedot\":\"\\u2AC4\",\"Superset\":\"\\u2283\",\"SupersetEqual\":\"\\u2287\",\"suphsol\":\"\\u27C9\",\"suphsub\":\"\\u2AD7\",\"suplarr\":\"\\u297B\",\"supmult\":\"\\u2AC2\",\"supnE\":\"\\u2ACC\",\"supne\":\"\\u228B\",\"supplus\":\"\\u2AC0\",\"supset\":\"\\u2283\",\"Supset\":\"\\u22D1\",\"supseteq\":\"\\u2287\",\"supseteqq\":\"\\u2AC6\",\"supsetneq\":\"\\u228B\",\"supsetneqq\":\"\\u2ACC\",\"supsim\":\"\\u2AC8\",\"supsub\":\"\\u2AD4\",\"supsup\":\"\\u2AD6\",\"swarhk\":\"\\u2926\",\"swarr\":\"\\u2199\",\"swArr\":\"\\u21D9\",\"swarrow\":\"\\u2199\",\"swnwar\":\"\\u292A\",\"szlig\":\"\\xDF\",\"Tab\":\"\\t\",\"target\":\"\\u2316\",\"Tau\":\"\\u03A4\",\"tau\":\"\\u03C4\",\"tbrk\":\"\\u23B4\",\"Tcaron\":\"\\u0164\",\"tcaron\":\"\\u0165\",\"Tcedil\":\"\\u0162\",\"tcedil\":\"\\u0163\",\"Tcy\":\"\\u0422\",\"tcy\":\"\\u0442\",\"tdot\":\"\\u20DB\",\"telrec\":\"\\u2315\",\"Tfr\":\"\\uD835\\uDD17\",\"tfr\":\"\\uD835\\uDD31\",\"there4\":\"\\u2234\",\"therefore\":\"\\u2234\",\"Therefore\":\"\\u2234\",\"Theta\":\"\\u0398\",\"theta\":\"\\u03B8\",\"thetasym\":\"\\u03D1\",\"thetav\":\"\\u03D1\",\"thickapprox\":\"\\u2248\",\"thicksim\":\"\\u223C\",\"ThickSpace\":\"\\u205F\\u200A\",\"ThinSpace\":\"\\u2009\",\"thinsp\":\"\\u2009\",\"thkap\":\"\\u2248\",\"thksim\":\"\\u223C\",\"THORN\":\"\\xDE\",\"thorn\":\"\\xFE\",\"tilde\":\"\\u02DC\",\"Tilde\":\"\\u223C\",\"TildeEqual\":\"\\u2243\",\"TildeFullEqual\":\"\\u2245\",\"TildeTilde\":\"\\u2248\",\"timesbar\":\"\\u2A31\",\"timesb\":\"\\u22A0\",\"times\":\"\\xD7\",\"timesd\":\"\\u2A30\",\"tint\":\"\\u222D\",\"toea\":\"\\u2928\",\"topbot\":\"\\u2336\",\"topcir\":\"\\u2AF1\",\"top\":\"\\u22A4\",\"Topf\":\"\\uD835\\uDD4B\",\"topf\":\"\\uD835\\uDD65\",\"topfork\":\"\\u2ADA\",\"tosa\":\"\\u2929\",\"tprime\":\"\\u2034\",\"trade\":\"\\u2122\",\"TRADE\":\"\\u2122\",\"triangle\":\"\\u25B5\",\"triangledown\":\"\\u25BF\",\"triangleleft\":\"\\u25C3\",\"trianglelefteq\":\"\\u22B4\",\"triangleq\":\"\\u225C\",\"triangleright\":\"\\u25B9\",\"trianglerighteq\":\"\\u22B5\",\"tridot\":\"\\u25EC\",\"trie\":\"\\u225C\",\"triminus\":\"\\u2A3A\",\"TripleDot\":\"\\u20DB\",\"triplus\":\"\\u2A39\",\"trisb\":\"\\u29CD\",\"tritime\":\"\\u2A3B\",\"trpezium\":\"\\u23E2\",\"Tscr\":\"\\uD835\\uDCAF\",\"tscr\":\"\\uD835\\uDCC9\",\"TScy\":\"\\u0426\",\"tscy\":\"\\u0446\",\"TSHcy\":\"\\u040B\",\"tshcy\":\"\\u045B\",\"Tstrok\":\"\\u0166\",\"tstrok\":\"\\u0167\",\"twixt\":\"\\u226C\",\"twoheadleftarrow\":\"\\u219E\",\"twoheadrightarrow\":\"\\u21A0\",\"Uacute\":\"\\xDA\",\"uacute\":\"\\xFA\",\"uarr\":\"\\u2191\",\"Uarr\":\"\\u219F\",\"uArr\":\"\\u21D1\",\"Uarrocir\":\"\\u2949\",\"Ubrcy\":\"\\u040E\",\"ubrcy\":\"\\u045E\",\"Ubreve\":\"\\u016C\",\"ubreve\":\"\\u016D\",\"Ucirc\":\"\\xDB\",\"ucirc\":\"\\xFB\",\"Ucy\":\"\\u0423\",\"ucy\":\"\\u0443\",\"udarr\":\"\\u21C5\",\"Udblac\":\"\\u0170\",\"udblac\":\"\\u0171\",\"udhar\":\"\\u296E\",\"ufisht\":\"\\u297E\",\"Ufr\":\"\\uD835\\uDD18\",\"ufr\":\"\\uD835\\uDD32\",\"Ugrave\":\"\\xD9\",\"ugrave\":\"\\xF9\",\"uHar\":\"\\u2963\",\"uharl\":\"\\u21BF\",\"uharr\":\"\\u21BE\",\"uhblk\":\"\\u2580\",\"ulcorn\":\"\\u231C\",\"ulcorner\":\"\\u231C\",\"ulcrop\":\"\\u230F\",\"ultri\":\"\\u25F8\",\"Umacr\":\"\\u016A\",\"umacr\":\"\\u016B\",\"uml\":\"\\xA8\",\"UnderBar\":\"_\",\"UnderBrace\":\"\\u23DF\",\"UnderBracket\":\"\\u23B5\",\"UnderParenthesis\":\"\\u23DD\",\"Union\":\"\\u22C3\",\"UnionPlus\":\"\\u228E\",\"Uogon\":\"\\u0172\",\"uogon\":\"\\u0173\",\"Uopf\":\"\\uD835\\uDD4C\",\"uopf\":\"\\uD835\\uDD66\",\"UpArrowBar\":\"\\u2912\",\"uparrow\":\"\\u2191\",\"UpArrow\":\"\\u2191\",\"Uparrow\":\"\\u21D1\",\"UpArrowDownArrow\":\"\\u21C5\",\"updownarrow\":\"\\u2195\",\"UpDownArrow\":\"\\u2195\",\"Updownarrow\":\"\\u21D5\",\"UpEquilibrium\":\"\\u296E\",\"upharpoonleft\":\"\\u21BF\",\"upharpoonright\":\"\\u21BE\",\"uplus\":\"\\u228E\",\"UpperLeftArrow\":\"\\u2196\",\"UpperRightArrow\":\"\\u2197\",\"upsi\":\"\\u03C5\",\"Upsi\":\"\\u03D2\",\"upsih\":\"\\u03D2\",\"Upsilon\":\"\\u03A5\",\"upsilon\":\"\\u03C5\",\"UpTeeArrow\":\"\\u21A5\",\"UpTee\":\"\\u22A5\",\"upuparrows\":\"\\u21C8\",\"urcorn\":\"\\u231D\",\"urcorner\":\"\\u231D\",\"urcrop\":\"\\u230E\",\"Uring\":\"\\u016E\",\"uring\":\"\\u016F\",\"urtri\":\"\\u25F9\",\"Uscr\":\"\\uD835\\uDCB0\",\"uscr\":\"\\uD835\\uDCCA\",\"utdot\":\"\\u22F0\",\"Utilde\":\"\\u0168\",\"utilde\":\"\\u0169\",\"utri\":\"\\u25B5\",\"utrif\":\"\\u25B4\",\"uuarr\":\"\\u21C8\",\"Uuml\":\"\\xDC\",\"uuml\":\"\\xFC\",\"uwangle\":\"\\u29A7\",\"vangrt\":\"\\u299C\",\"varepsilon\":\"\\u03F5\",\"varkappa\":\"\\u03F0\",\"varnothing\":\"\\u2205\",\"varphi\":\"\\u03D5\",\"varpi\":\"\\u03D6\",\"varpropto\":\"\\u221D\",\"varr\":\"\\u2195\",\"vArr\":\"\\u21D5\",\"varrho\":\"\\u03F1\",\"varsigma\":\"\\u03C2\",\"varsubsetneq\":\"\\u228A\\uFE00\",\"varsubsetneqq\":\"\\u2ACB\\uFE00\",\"varsupsetneq\":\"\\u228B\\uFE00\",\"varsupsetneqq\":\"\\u2ACC\\uFE00\",\"vartheta\":\"\\u03D1\",\"vartriangleleft\":\"\\u22B2\",\"vartriangleright\":\"\\u22B3\",\"vBar\":\"\\u2AE8\",\"Vbar\":\"\\u2AEB\",\"vBarv\":\"\\u2AE9\",\"Vcy\":\"\\u0412\",\"vcy\":\"\\u0432\",\"vdash\":\"\\u22A2\",\"vDash\":\"\\u22A8\",\"Vdash\":\"\\u22A9\",\"VDash\":\"\\u22AB\",\"Vdashl\":\"\\u2AE6\",\"veebar\":\"\\u22BB\",\"vee\":\"\\u2228\",\"Vee\":\"\\u22C1\",\"veeeq\":\"\\u225A\",\"vellip\":\"\\u22EE\",\"verbar\":\"|\",\"Verbar\":\"\\u2016\",\"vert\":\"|\",\"Vert\":\"\\u2016\",\"VerticalBar\":\"\\u2223\",\"VerticalLine\":\"|\",\"VerticalSeparator\":\"\\u2758\",\"VerticalTilde\":\"\\u2240\",\"VeryThinSpace\":\"\\u200A\",\"Vfr\":\"\\uD835\\uDD19\",\"vfr\":\"\\uD835\\uDD33\",\"vltri\":\"\\u22B2\",\"vnsub\":\"\\u2282\\u20D2\",\"vnsup\":\"\\u2283\\u20D2\",\"Vopf\":\"\\uD835\\uDD4D\",\"vopf\":\"\\uD835\\uDD67\",\"vprop\":\"\\u221D\",\"vrtri\":\"\\u22B3\",\"Vscr\":\"\\uD835\\uDCB1\",\"vscr\":\"\\uD835\\uDCCB\",\"vsubnE\":\"\\u2ACB\\uFE00\",\"vsubne\":\"\\u228A\\uFE00\",\"vsupnE\":\"\\u2ACC\\uFE00\",\"vsupne\":\"\\u228B\\uFE00\",\"Vvdash\":\"\\u22AA\",\"vzigzag\":\"\\u299A\",\"Wcirc\":\"\\u0174\",\"wcirc\":\"\\u0175\",\"wedbar\":\"\\u2A5F\",\"wedge\":\"\\u2227\",\"Wedge\":\"\\u22C0\",\"wedgeq\":\"\\u2259\",\"weierp\":\"\\u2118\",\"Wfr\":\"\\uD835\\uDD1A\",\"wfr\":\"\\uD835\\uDD34\",\"Wopf\":\"\\uD835\\uDD4E\",\"wopf\":\"\\uD835\\uDD68\",\"wp\":\"\\u2118\",\"wr\":\"\\u2240\",\"wreath\":\"\\u2240\",\"Wscr\":\"\\uD835\\uDCB2\",\"wscr\":\"\\uD835\\uDCCC\",\"xcap\":\"\\u22C2\",\"xcirc\":\"\\u25EF\",\"xcup\":\"\\u22C3\",\"xdtri\":\"\\u25BD\",\"Xfr\":\"\\uD835\\uDD1B\",\"xfr\":\"\\uD835\\uDD35\",\"xharr\":\"\\u27F7\",\"xhArr\":\"\\u27FA\",\"Xi\":\"\\u039E\",\"xi\":\"\\u03BE\",\"xlarr\":\"\\u27F5\",\"xlArr\":\"\\u27F8\",\"xmap\":\"\\u27FC\",\"xnis\":\"\\u22FB\",\"xodot\":\"\\u2A00\",\"Xopf\":\"\\uD835\\uDD4F\",\"xopf\":\"\\uD835\\uDD69\",\"xoplus\":\"\\u2A01\",\"xotime\":\"\\u2A02\",\"xrarr\":\"\\u27F6\",\"xrArr\":\"\\u27F9\",\"Xscr\":\"\\uD835\\uDCB3\",\"xscr\":\"\\uD835\\uDCCD\",\"xsqcup\":\"\\u2A06\",\"xuplus\":\"\\u2A04\",\"xutri\":\"\\u25B3\",\"xvee\":\"\\u22C1\",\"xwedge\":\"\\u22C0\",\"Yacute\":\"\\xDD\",\"yacute\":\"\\xFD\",\"YAcy\":\"\\u042F\",\"yacy\":\"\\u044F\",\"Ycirc\":\"\\u0176\",\"ycirc\":\"\\u0177\",\"Ycy\":\"\\u042B\",\"ycy\":\"\\u044B\",\"yen\":\"\\xA5\",\"Yfr\":\"\\uD835\\uDD1C\",\"yfr\":\"\\uD835\\uDD36\",\"YIcy\":\"\\u0407\",\"yicy\":\"\\u0457\",\"Yopf\":\"\\uD835\\uDD50\",\"yopf\":\"\\uD835\\uDD6A\",\"Yscr\":\"\\uD835\\uDCB4\",\"yscr\":\"\\uD835\\uDCCE\",\"YUcy\":\"\\u042E\",\"yucy\":\"\\u044E\",\"yuml\":\"\\xFF\",\"Yuml\":\"\\u0178\",\"Zacute\":\"\\u0179\",\"zacute\":\"\\u017A\",\"Zcaron\":\"\\u017D\",\"zcaron\":\"\\u017E\",\"Zcy\":\"\\u0417\",\"zcy\":\"\\u0437\",\"Zdot\":\"\\u017B\",\"zdot\":\"\\u017C\",\"zeetrf\":\"\\u2128\",\"ZeroWidthSpace\":\"\\u200B\",\"Zeta\":\"\\u0396\",\"zeta\":\"\\u03B6\",\"zfr\":\"\\uD835\\uDD37\",\"Zfr\":\"\\u2128\",\"ZHcy\":\"\\u0416\",\"zhcy\":\"\\u0436\",\"zigrarr\":\"\\u21DD\",\"zopf\":\"\\uD835\\uDD6B\",\"Zopf\":\"\\u2124\",\"Zscr\":\"\\uD835\\uDCB5\",\"zscr\":\"\\uD835\\uDCCF\",\"zwj\":\"\\u200D\",\"zwnj\":\"\\u200C\"};},{}],23:[function(require,module,exports){module.exports={\"Aacute\":\"\\xC1\",\"aacute\":\"\\xE1\",\"Acirc\":\"\\xC2\",\"acirc\":\"\\xE2\",\"acute\":\"\\xB4\",\"AElig\":\"\\xC6\",\"aelig\":\"\\xE6\",\"Agrave\":\"\\xC0\",\"agrave\":\"\\xE0\",\"amp\":\"&\",\"AMP\":\"&\",\"Aring\":\"\\xC5\",\"aring\":\"\\xE5\",\"Atilde\":\"\\xC3\",\"atilde\":\"\\xE3\",\"Auml\":\"\\xC4\",\"auml\":\"\\xE4\",\"brvbar\":\"\\xA6\",\"Ccedil\":\"\\xC7\",\"ccedil\":\"\\xE7\",\"cedil\":\"\\xB8\",\"cent\":\"\\xA2\",\"copy\":\"\\xA9\",\"COPY\":\"\\xA9\",\"curren\":\"\\xA4\",\"deg\":\"\\xB0\",\"divide\":\"\\xF7\",\"Eacute\":\"\\xC9\",\"eacute\":\"\\xE9\",\"Ecirc\":\"\\xCA\",\"ecirc\":\"\\xEA\",\"Egrave\":\"\\xC8\",\"egrave\":\"\\xE8\",\"ETH\":\"\\xD0\",\"eth\":\"\\xF0\",\"Euml\":\"\\xCB\",\"euml\":\"\\xEB\",\"frac12\":\"\\xBD\",\"frac14\":\"\\xBC\",\"frac34\":\"\\xBE\",\"gt\":\">\",\"GT\":\">\",\"Iacute\":\"\\xCD\",\"iacute\":\"\\xED\",\"Icirc\":\"\\xCE\",\"icirc\":\"\\xEE\",\"iexcl\":\"\\xA1\",\"Igrave\":\"\\xCC\",\"igrave\":\"\\xEC\",\"iquest\":\"\\xBF\",\"Iuml\":\"\\xCF\",\"iuml\":\"\\xEF\",\"laquo\":\"\\xAB\",\"lt\":\"<\",\"LT\":\"<\",\"macr\":\"\\xAF\",\"micro\":\"\\xB5\",\"middot\":\"\\xB7\",\"nbsp\":\"\\xA0\",\"not\":\"\\xAC\",\"Ntilde\":\"\\xD1\",\"ntilde\":\"\\xF1\",\"Oacute\":\"\\xD3\",\"oacute\":\"\\xF3\",\"Ocirc\":\"\\xD4\",\"ocirc\":\"\\xF4\",\"Ograve\":\"\\xD2\",\"ograve\":\"\\xF2\",\"ordf\":\"\\xAA\",\"ordm\":\"\\xBA\",\"Oslash\":\"\\xD8\",\"oslash\":\"\\xF8\",\"Otilde\":\"\\xD5\",\"otilde\":\"\\xF5\",\"Ouml\":\"\\xD6\",\"ouml\":\"\\xF6\",\"para\":\"\\xB6\",\"plusmn\":\"\\xB1\",\"pound\":\"\\xA3\",\"quot\":\"\\\"\",\"QUOT\":\"\\\"\",\"raquo\":\"\\xBB\",\"reg\":\"\\xAE\",\"REG\":\"\\xAE\",\"sect\":\"\\xA7\",\"shy\":\"\\xAD\",\"sup1\":\"\\xB9\",\"sup2\":\"\\xB2\",\"sup3\":\"\\xB3\",\"szlig\":\"\\xDF\",\"THORN\":\"\\xDE\",\"thorn\":\"\\xFE\",\"times\":\"\\xD7\",\"Uacute\":\"\\xDA\",\"uacute\":\"\\xFA\",\"Ucirc\":\"\\xDB\",\"ucirc\":\"\\xFB\",\"Ugrave\":\"\\xD9\",\"ugrave\":\"\\xF9\",\"uml\":\"\\xA8\",\"Uuml\":\"\\xDC\",\"uuml\":\"\\xFC\",\"Yacute\":\"\\xDD\",\"yacute\":\"\\xFD\",\"yen\":\"\\xA5\",\"yuml\":\"\\xFF\"};},{}],24:[function(require,module,exports){module.exports={\"amp\":\"&\",\"apos\":\"'\",\"gt\":\">\",\"lt\":\"<\",\"quot\":\"\\\"\"};},{}],25:[function(require,module,exports){// 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.\nvar objectCreate=Object.create||objectCreatePolyfill;var objectKeys=Object.keys||objectKeysPolyfill;var bind=Function.prototype.bind||functionBindPolyfill;function EventEmitter(){if(!this._events||!Object.prototype.hasOwnProperty.call(this,'_events')){this._events=objectCreate(null);this._eventsCount=0;}this._maxListeners=this._maxListeners||undefined;}module.exports=EventEmitter;// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners=10;var hasDefineProperty;try{var o={};if(Object.defineProperty)Object.defineProperty(o,'x',{value:0});hasDefineProperty=o.x===0;}catch(err){hasDefineProperty=false;}if(hasDefineProperty){Object.defineProperty(EventEmitter,'defaultMaxListeners',{enumerable:true,get:function get(){return defaultMaxListeners;},set:function set(arg){// check whether the input is a positive number (whose value is zero or\n// greater and not a NaN).\nif(typeof arg!=='number'||arg<0||arg!==arg)throw new TypeError('\"defaultMaxListeners\" must be a positive number');defaultMaxListeners=arg;}});}else{EventEmitter.defaultMaxListeners=defaultMaxListeners;}// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners=function setMaxListeners(n){if(typeof n!=='number'||n<0||isNaN(n))throw new TypeError('\"n\" argument must be a positive number');this._maxListeners=n;return this;};function $getMaxListeners(that){if(that._maxListeners===undefined)return EventEmitter.defaultMaxListeners;return that._maxListeners;}EventEmitter.prototype.getMaxListeners=function getMaxListeners(){return $getMaxListeners(this);};// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler,isFn,self){if(isFn)handler.call(self);else{var len=handler.length;var listeners=arrayClone(handler,len);for(var i=0;i<len;++i){listeners[i].call(self);}}}function emitOne(handler,isFn,self,arg1){if(isFn)handler.call(self,arg1);else{var len=handler.length;var listeners=arrayClone(handler,len);for(var i=0;i<len;++i){listeners[i].call(self,arg1);}}}function emitTwo(handler,isFn,self,arg1,arg2){if(isFn)handler.call(self,arg1,arg2);else{var len=handler.length;var listeners=arrayClone(handler,len);for(var i=0;i<len;++i){listeners[i].call(self,arg1,arg2);}}}function emitThree(handler,isFn,self,arg1,arg2,arg3){if(isFn)handler.call(self,arg1,arg2,arg3);else{var len=handler.length;var listeners=arrayClone(handler,len);for(var i=0;i<len;++i){listeners[i].call(self,arg1,arg2,arg3);}}}function emitMany(handler,isFn,self,args){if(isFn)handler.apply(self,args);else{var len=handler.length;var listeners=arrayClone(handler,len);for(var i=0;i<len;++i){listeners[i].apply(self,args);}}}EventEmitter.prototype.emit=function emit(type){var er,handler,len,args,i,events;var doError=type==='error';events=this._events;if(events)doError=doError&&events.error==null;else if(!doError)return false;// If there is no 'error' event listener then throw.\nif(doError){if(arguments.length>1)er=arguments[1];if(er instanceof Error){throw er;// Unhandled 'error' event\n}else{// At least give some kind of context to the user\nvar err=new Error('Unhandled \"error\" event. ('+er+')');err.context=er;throw err;}return false;}handler=events[type];if(!handler)return false;var isFn=typeof handler==='function';len=arguments.length;switch(len){// fast cases\ncase 1:emitNone(handler,isFn,this);break;case 2:emitOne(handler,isFn,this,arguments[1]);break;case 3:emitTwo(handler,isFn,this,arguments[1],arguments[2]);break;case 4:emitThree(handler,isFn,this,arguments[1],arguments[2],arguments[3]);break;// slower\ndefault:args=new Array(len-1);for(i=1;i<len;i++){args[i-1]=arguments[i];}emitMany(handler,isFn,this,args);}return true;};function _addListener(target,type,listener,prepend){var m;var events;var existing;if(typeof listener!=='function')throw new TypeError('\"listener\" argument must be a function');events=target._events;if(!events){events=target._events=objectCreate(null);target._eventsCount=0;}else{// To avoid recursion in the case that type === \"newListener\"! Before\n// adding it to the listeners, first emit \"newListener\".\nif(events.newListener){target.emit('newListener',type,listener.listener?listener.listener:listener);// Re-assign `events` because a newListener handler could have caused the\n// this._events to be assigned to a new object\nevents=target._events;}existing=events[type];}if(!existing){// Optimize the case of one listener. Don't need the extra array object.\nexisting=events[type]=listener;++target._eventsCount;}else{if(typeof existing==='function'){// Adding the second element, need to change to array.\nexisting=events[type]=prepend?[listener,existing]:[existing,listener];}else{// If we've already got an array, just append.\nif(prepend){existing.unshift(listener);}else{existing.push(listener);}}// Check for listener leak\nif(!existing.warned){m=$getMaxListeners(target);if(m&&m>0&&existing.length>m){existing.warned=true;var w=new Error('Possible EventEmitter memory leak detected. '+existing.length+' \"'+String(type)+'\" listeners '+'added. Use emitter.setMaxListeners() to '+'increase limit.');w.name='MaxListenersExceededWarning';w.emitter=target;w.type=type;w.count=existing.length;if((typeof console===\"undefined\"?\"undefined\":_typeof(console))==='object'&&console.warn){console.warn('%s: %s',w.name,w.message);}}}}return target;}EventEmitter.prototype.addListener=function addListener(type,listener){return _addListener(this,type,listener,false);};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.prependListener=function prependListener(type,listener){return _addListener(this,type,listener,true);};function onceWrapper(){if(!this.fired){this.target.removeListener(this.type,this.wrapFn);this.fired=true;switch(arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:var args=new Array(arguments.length);for(var i=0;i<args.length;++i){args[i]=arguments[i];}this.listener.apply(this.target,args);}}}function _onceWrap(target,type,listener){var state={fired:false,wrapFn:undefined,target:target,type:type,listener:listener};var wrapped=bind.call(onceWrapper,state);wrapped.listener=listener;state.wrapFn=wrapped;return wrapped;}EventEmitter.prototype.once=function once(type,listener){if(typeof listener!=='function')throw new TypeError('\"listener\" argument must be a function');this.on(type,_onceWrap(this,type,listener));return this;};EventEmitter.prototype.prependOnceListener=function prependOnceListener(type,listener){if(typeof listener!=='function')throw new TypeError('\"listener\" argument must be a function');this.prependListener(type,_onceWrap(this,type,listener));return this;};// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener=function removeListener(type,listener){var list,events,position,i,originalListener;if(typeof listener!=='function')throw new TypeError('\"listener\" argument must be a function');events=this._events;if(!events)return this;list=events[type];if(!list)return this;if(list===listener||list.listener===listener){if(--this._eventsCount===0)this._events=objectCreate(null);else{delete events[type];if(events.removeListener)this.emit('removeListener',type,list.listener||listener);}}else if(typeof list!=='function'){position=-1;for(i=list.length-1;i>=0;i--){if(list[i]===listener||list[i].listener===listener){originalListener=list[i].listener;position=i;break;}}if(position<0)return this;if(position===0)list.shift();else spliceOne(list,position);if(list.length===1)events[type]=list[0];if(events.removeListener)this.emit('removeListener',type,originalListener||listener);}return this;};EventEmitter.prototype.removeAllListeners=function removeAllListeners(type){var listeners,events,i;events=this._events;if(!events)return this;// not listening for removeListener, no need to emit\nif(!events.removeListener){if(arguments.length===0){this._events=objectCreate(null);this._eventsCount=0;}else if(events[type]){if(--this._eventsCount===0)this._events=objectCreate(null);else delete events[type];}return this;}// emit removeListener for all listeners on all events\nif(arguments.length===0){var keys=objectKeys(events);var key;for(i=0;i<keys.length;++i){key=keys[i];if(key==='removeListener')continue;this.removeAllListeners(key);}this.removeAllListeners('removeListener');this._events=objectCreate(null);this._eventsCount=0;return this;}listeners=events[type];if(typeof listeners==='function'){this.removeListener(type,listeners);}else if(listeners){// LIFO order\nfor(i=listeners.length-1;i>=0;i--){this.removeListener(type,listeners[i]);}}return this;};function _listeners(target,type,unwrap){var events=target._events;if(!events)return[];var evlistener=events[type];if(!evlistener)return[];if(typeof evlistener==='function')return unwrap?[evlistener.listener||evlistener]:[evlistener];return unwrap?unwrapListeners(evlistener):arrayClone(evlistener,evlistener.length);}EventEmitter.prototype.listeners=function listeners(type){return _listeners(this,type,true);};EventEmitter.prototype.rawListeners=function rawListeners(type){return _listeners(this,type,false);};EventEmitter.listenerCount=function(emitter,type){if(typeof emitter.listenerCount==='function'){return emitter.listenerCount(type);}else{return listenerCount.call(emitter,type);}};EventEmitter.prototype.listenerCount=listenerCount;function listenerCount(type){var events=this._events;if(events){var evlistener=events[type];if(typeof evlistener==='function'){return 1;}else if(evlistener){return evlistener.length;}}return 0;}EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?Reflect.ownKeys(this._events):[];};// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list,index){for(var i=index,k=i+1,n=list.length;k<n;i+=1,k+=1){list[i]=list[k];}list.pop();}function arrayClone(arr,n){var copy=new Array(n);for(var i=0;i<n;++i){copy[i]=arr[i];}return copy;}function unwrapListeners(arr){var ret=new Array(arr.length);for(var i=0;i<ret.length;++i){ret[i]=arr[i].listener||arr[i];}return ret;}function objectCreatePolyfill(proto){var F=function F(){};F.prototype=proto;return new F();}function objectKeysPolyfill(obj){var keys=[];for(var k in obj){if(Object.prototype.hasOwnProperty.call(obj,k)){keys.push(k);}}return k;}function functionBindPolyfill(context){var fn=this;return function(){return fn.apply(context,arguments);};}},{}],26:[function(require,module,exports){\"use strict\";var __extends=this&&this.__extends||function(){var _extendStatics2=function extendStatics(d,b){_extendStatics2=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b;}||function(d,b){for(var p in b){if(b.hasOwnProperty(p))d[p]=b[p];}};return _extendStatics2(d,b);};return function(d,b){_extendStatics2(d,b);function __(){this.constructor=d;}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __());};}();var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{\"default\":mod};};Object.defineProperty(exports,\"__esModule\",{value:true});var MultiplexHandler_1=__importDefault(require(\"./MultiplexHandler\"));var CollectingHandler=/** @class */function(_super){__extends(CollectingHandler,_super);function CollectingHandler(cbs){if(cbs===void 0){cbs={};}var _this=_super.call(this,function(name){var _a;var args=[];for(var _i=1;_i<arguments.length;_i++){args[_i-1]=arguments[_i];}_this.events.push([name].concat(args));// @ts-ignore\nif(_this._cbs[name])(_a=_this._cbs)[name].apply(_a,args);})||this;_this._cbs=cbs;_this.events=[];return _this;}CollectingHandler.prototype.onreset=function(){this.events=[];if(this._cbs.onreset)this._cbs.onreset();};CollectingHandler.prototype.restart=function(){var _a;if(this._cbs.onreset)this._cbs.onreset();for(var i=0;i<this.events.length;i++){var _b=this.events[i],name_1=_b[0],args=_b.slice(1);if(!this._cbs[name_1]){continue;}// @ts-ignore\n(_a=this._cbs)[name_1].apply(_a,args);}};return CollectingHandler;}(MultiplexHandler_1[\"default\"]);exports.CollectingHandler=CollectingHandler;},{\"./MultiplexHandler\":28}],27:[function(require,module,exports){\"use strict\";var __extends=this&&this.__extends||function(){var _extendStatics3=function extendStatics(d,b){_extendStatics3=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b;}||function(d,b){for(var p in b){if(b.hasOwnProperty(p))d[p]=b[p];}};return _extendStatics3(d,b);};return function(d,b){_extendStatics3(d,b);function __(){this.constructor=d;}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __());};}();var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{\"default\":mod};};var __importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod){if(Object.hasOwnProperty.call(mod,k))result[k]=mod[k];}result[\"default\"]=mod;return result;};Object.defineProperty(exports,\"__esModule\",{value:true});var domhandler_1=__importDefault(require(\"domhandler\"));var DomUtils=__importStar(require(\"domutils\"));var Parser_1=require(\"./Parser\");//TODO: Consume data as it is coming in\nvar FeedHandler=/** @class */function(_super){__extends(FeedHandler,_super);/**\n     *\n     * @param callback\n     * @param options\n     */function FeedHandler(callback,options){var _this=this;if(_typeof(callback)===\"object\"&&callback!==null){callback=undefined;options=callback;}_this=_super.call(this,callback,options)||this;return _this;}FeedHandler.prototype.onend=function(){var feed={};var feedRoot=getOneElement(isValidFeed,this.dom);if(feedRoot){if(feedRoot.name===\"feed\"){var childs=feedRoot.children;feed.type=\"atom\";addConditionally(feed,\"id\",\"id\",childs);addConditionally(feed,\"title\",\"title\",childs);var href=getAttribute(\"href\",getOneElement(\"link\",childs));if(href){feed.link=href;}addConditionally(feed,\"description\",\"subtitle\",childs);var updated=fetch(\"updated\",childs);if(updated){feed.updated=new Date(updated);}addConditionally(feed,\"author\",\"email\",childs,true);feed.items=getElements(\"entry\",childs).map(function(item){var entry={};var children=item.children;addConditionally(entry,\"id\",\"id\",children);addConditionally(entry,\"title\",\"title\",children);var href=getAttribute(\"href\",getOneElement(\"link\",children));if(href){entry.link=href;}var description=fetch(\"summary\",children)||fetch(\"content\",children);if(description){entry.description=description;}var pubDate=fetch(\"updated\",children);if(pubDate){entry.pubDate=new Date(pubDate);}return entry;});}else{var childs=getOneElement(\"channel\",feedRoot.children).children;feed.type=feedRoot.name.substr(0,3);feed.id=\"\";addConditionally(feed,\"title\",\"title\",childs);addConditionally(feed,\"link\",\"link\",childs);addConditionally(feed,\"description\",\"description\",childs);var updated=fetch(\"lastBuildDate\",childs);if(updated){feed.updated=new Date(updated);}addConditionally(feed,\"author\",\"managingEditor\",childs,true);feed.items=getElements(\"item\",feedRoot.children).map(function(item){var entry={};var children=item.children;addConditionally(entry,\"id\",\"guid\",children);addConditionally(entry,\"title\",\"title\",children);addConditionally(entry,\"link\",\"link\",children);addConditionally(entry,\"description\",\"description\",children);var pubDate=fetch(\"pubDate\",children);if(pubDate)entry.pubDate=new Date(pubDate);return entry;});}}this.feed=feed;this.handleCallback(feedRoot?null:Error(\"couldn't find root of feed\"));};return FeedHandler;}(domhandler_1[\"default\"]);exports.FeedHandler=FeedHandler;function getElements(what,where){return DomUtils.getElementsByTagName(what,where,true);}function getOneElement(what,where){return DomUtils.getElementsByTagName(what,where,true,1)[0];}function fetch(what,where,recurse){if(recurse===void 0){recurse=false;}return DomUtils.getText(DomUtils.getElementsByTagName(what,where,recurse,1)).trim();}function getAttribute(name,elem){if(!elem){return null;}var attribs=elem.attribs;return attribs[name];}function addConditionally(obj,prop,what,where,recurse){if(recurse===void 0){recurse=false;}var tmp=fetch(what,where,recurse);// @ts-ignore\nif(tmp)obj[prop]=tmp;}function isValidFeed(value){return value===\"rss\"||value===\"feed\"||value===\"rdf:RDF\";}var defaultOptions={xmlMode:true};/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this option, you probably want to set `xmlMode` to `true`.\n */function parseFeed(feed,options){if(options===void 0){options=defaultOptions;}var handler=new FeedHandler(options);new Parser_1.Parser(handler,options).end(feed);return handler.feed;}exports.parseFeed=parseFeed;},{\"./Parser\":29,\"domhandler\":7,\"domutils\":10}],28:[function(require,module,exports){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});/**\n * Calls a specific handler function for all events that are encountered.\n *\n * @param func — The function to multiplex all events to.\n */var MultiplexHandler=/** @class */function(){function MultiplexHandler(func){this._func=func;}/* Format: eventname: number of arguments */MultiplexHandler.prototype.onattribute=function(name,value){this._func(\"onattribute\",name,value);};MultiplexHandler.prototype.oncdatastart=function(){this._func(\"oncdatastart\");};MultiplexHandler.prototype.oncdataend=function(){this._func(\"oncdataend\");};MultiplexHandler.prototype.ontext=function(text){this._func(\"ontext\",text);};MultiplexHandler.prototype.onprocessinginstruction=function(name,value){this._func(\"onprocessinginstruction\",name,value);};MultiplexHandler.prototype.oncomment=function(comment){this._func(\"oncomment\",comment);};MultiplexHandler.prototype.oncommentend=function(){this._func(\"oncommentend\");};MultiplexHandler.prototype.onclosetag=function(name){this._func(\"onclosetag\",name);};MultiplexHandler.prototype.onopentag=function(name,attribs){this._func(\"onopentag\",name,attribs);};MultiplexHandler.prototype.onopentagname=function(name){this._func(\"onopentagname\",name);};MultiplexHandler.prototype.onerror=function(error){this._func(\"onerror\",error);};MultiplexHandler.prototype.onend=function(){this._func(\"onend\");};MultiplexHandler.prototype.onparserinit=function(parser){this._func(\"onparserinit\",parser);};MultiplexHandler.prototype.onreset=function(){this._func(\"onreset\");};return MultiplexHandler;}();exports[\"default\"]=MultiplexHandler;},{}],29:[function(require,module,exports){\"use strict\";var __extends=this&&this.__extends||function(){var _extendStatics4=function extendStatics(d,b){_extendStatics4=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b;}||function(d,b){for(var p in b){if(b.hasOwnProperty(p))d[p]=b[p];}};return _extendStatics4(d,b);};return function(d,b){_extendStatics4(d,b);function __(){this.constructor=d;}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __());};}();var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{\"default\":mod};};Object.defineProperty(exports,\"__esModule\",{value:true});var Tokenizer_1=__importDefault(require(\"./Tokenizer\"));var events_1=require(\"events\");var formTags=new Set([\"input\",\"option\",\"optgroup\",\"select\",\"button\",\"datalist\",\"textarea\"]);var pTag=new Set([\"p\"]);var openImpliesClose={tr:new Set([\"tr\",\"th\",\"td\"]),th:new Set([\"th\"]),td:new Set([\"thead\",\"th\",\"td\"]),body:new Set([\"head\",\"link\",\"script\"]),li:new Set([\"li\"]),p:pTag,h1:pTag,h2:pTag,h3:pTag,h4:pTag,h5:pTag,h6:pTag,select:formTags,input:formTags,output:formTags,button:formTags,datalist:formTags,textarea:formTags,option:new Set([\"option\"]),optgroup:new Set([\"optgroup\",\"option\"]),dd:new Set([\"dt\",\"dd\"]),dt:new Set([\"dt\",\"dd\"]),address:pTag,article:pTag,aside:pTag,blockquote:pTag,details:pTag,div:pTag,dl:pTag,fieldset:pTag,figcaption:pTag,figure:pTag,footer:pTag,form:pTag,header:pTag,hr:pTag,main:pTag,nav:pTag,ol:pTag,pre:pTag,section:pTag,table:pTag,ul:pTag,rt:new Set([\"rt\",\"rp\"]),rp:new Set([\"rt\",\"rp\"]),tbody:new Set([\"thead\",\"tbody\"]),tfoot:new Set([\"thead\",\"tbody\"])};var voidElements=new Set([\"area\",\"base\",\"basefont\",\"br\",\"col\",\"command\",\"embed\",\"frame\",\"hr\",\"img\",\"input\",\"isindex\",\"keygen\",\"link\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"]);var foreignContextElements=new Set([\"math\",\"svg\"]);var htmlIntegrationElements=new Set([\"mi\",\"mo\",\"mn\",\"ms\",\"mtext\",\"annotation-xml\",\"foreignObject\",\"desc\",\"title\"]);var reNameEnd=/\\s|\\//;var Parser=/** @class */function(_super){__extends(Parser,_super);function Parser(cbs,options){var _this=_super.call(this)||this;_this._tagname=\"\";_this._attribname=\"\";_this._attribvalue=\"\";_this._attribs=null;_this._stack=[];_this._foreignContext=[];_this.startIndex=0;_this.endIndex=null;// Aliases for backwards compatibility\n_this.parseChunk=Parser.prototype.write;_this.done=Parser.prototype.end;_this._options=options||{};_this._cbs=cbs||{};_this._tagname=\"\";_this._attribname=\"\";_this._attribvalue=\"\";_this._attribs=null;_this._stack=[];_this._foreignContext=[];_this.startIndex=0;_this.endIndex=null;_this._lowerCaseTagNames=\"lowerCaseTags\"in _this._options?!!_this._options.lowerCaseTags:!_this._options.xmlMode;_this._lowerCaseAttributeNames=\"lowerCaseAttributeNames\"in _this._options?!!_this._options.lowerCaseAttributeNames:!_this._options.xmlMode;_this._tokenizer=new(_this._options.Tokenizer||Tokenizer_1[\"default\"])(_this._options,_this);if(_this._cbs.onparserinit)_this._cbs.onparserinit(_this);return _this;}Parser.prototype._updatePosition=function(initialOffset){if(this.endIndex===null){if(this._tokenizer._sectionStart<=initialOffset){this.startIndex=0;}else{this.startIndex=this._tokenizer._sectionStart-initialOffset;}}else this.startIndex=this.endIndex+1;this.endIndex=this._tokenizer.getAbsoluteIndex();};//Tokenizer event handlers\nParser.prototype.ontext=function(data){this._updatePosition(1);// @ts-ignore\nthis.endIndex--;if(this._cbs.ontext)this._cbs.ontext(data);};Parser.prototype.onopentagname=function(name){if(this._lowerCaseTagNames){name=name.toLowerCase();}this._tagname=name;if(!this._options.xmlMode&&Object.prototype.hasOwnProperty.call(openImpliesClose,name)){for(var el=void 0;// @ts-ignore\nopenImpliesClose[name].has(el=this._stack[this._stack.length-1]);this.onclosetag(el)){;}}if(this._options.xmlMode||!voidElements.has(name)){this._stack.push(name);if(foreignContextElements.has(name)){this._foreignContext.push(true);}else if(htmlIntegrationElements.has(name)){this._foreignContext.push(false);}}if(this._cbs.onopentagname)this._cbs.onopentagname(name);if(this._cbs.onopentag)this._attribs={};};Parser.prototype.onopentagend=function(){this._updatePosition(1);if(this._attribs){if(this._cbs.onopentag){this._cbs.onopentag(this._tagname,this._attribs);}this._attribs=null;}if(!this._options.xmlMode&&this._cbs.onclosetag&&voidElements.has(this._tagname)){this._cbs.onclosetag(this._tagname);}this._tagname=\"\";};Parser.prototype.onclosetag=function(name){this._updatePosition(1);if(this._lowerCaseTagNames){name=name.toLowerCase();}if(foreignContextElements.has(name)||htmlIntegrationElements.has(name)){this._foreignContext.pop();}if(this._stack.length&&(this._options.xmlMode||!voidElements.has(name))){var pos=this._stack.lastIndexOf(name);if(pos!==-1){if(this._cbs.onclosetag){pos=this._stack.length-pos;// @ts-ignore\nwhile(pos--){this._cbs.onclosetag(this._stack.pop());}}else this._stack.length=pos;}else if(name===\"p\"&&!this._options.xmlMode){this.onopentagname(name);this._closeCurrentTag();}}else if(!this._options.xmlMode&&(name===\"br\"||name===\"p\")){this.onopentagname(name);this._closeCurrentTag();}};Parser.prototype.onselfclosingtag=function(){if(this._options.xmlMode||this._options.recognizeSelfClosing||this._foreignContext[this._foreignContext.length-1]){this._closeCurrentTag();}else{this.onopentagend();}};Parser.prototype._closeCurrentTag=function(){var name=this._tagname;this.onopentagend();//self-closing tags will be on the top of the stack\n//(cheaper check than in onclosetag)\nif(this._stack[this._stack.length-1]===name){if(this._cbs.onclosetag){this._cbs.onclosetag(name);}this._stack.pop();}};Parser.prototype.onattribname=function(name){if(this._lowerCaseAttributeNames){name=name.toLowerCase();}this._attribname=name;};Parser.prototype.onattribdata=function(value){this._attribvalue+=value;};Parser.prototype.onattribend=function(){if(this._cbs.onattribute)this._cbs.onattribute(this._attribname,this._attribvalue);if(this._attribs&&!Object.prototype.hasOwnProperty.call(this._attribs,this._attribname)){this._attribs[this._attribname]=this._attribvalue;}this._attribname=\"\";this._attribvalue=\"\";};Parser.prototype._getInstructionName=function(value){var idx=value.search(reNameEnd);var name=idx<0?value:value.substr(0,idx);if(this._lowerCaseTagNames){name=name.toLowerCase();}return name;};Parser.prototype.ondeclaration=function(value){if(this._cbs.onprocessinginstruction){var name_1=this._getInstructionName(value);this._cbs.onprocessinginstruction(\"!\"+name_1,\"!\"+value);}};Parser.prototype.onprocessinginstruction=function(value){if(this._cbs.onprocessinginstruction){var name_2=this._getInstructionName(value);this._cbs.onprocessinginstruction(\"?\"+name_2,\"?\"+value);}};Parser.prototype.oncomment=function(value){this._updatePosition(4);if(this._cbs.oncomment)this._cbs.oncomment(value);if(this._cbs.oncommentend)this._cbs.oncommentend();};Parser.prototype.oncdata=function(value){this._updatePosition(1);if(this._options.xmlMode||this._options.recognizeCDATA){if(this._cbs.oncdatastart)this._cbs.oncdatastart();if(this._cbs.ontext)this._cbs.ontext(value);if(this._cbs.oncdataend)this._cbs.oncdataend();}else{this.oncomment(\"[CDATA[\"+value+\"]]\");}};Parser.prototype.onerror=function(err){if(this._cbs.onerror)this._cbs.onerror(err);};Parser.prototype.onend=function(){if(this._cbs.onclosetag){for(var i=this._stack.length;i>0;this._cbs.onclosetag(this._stack[--i])){;}}if(this._cbs.onend)this._cbs.onend();};//Resets the parser to a blank state, ready to parse a new HTML document\nParser.prototype.reset=function(){if(this._cbs.onreset)this._cbs.onreset();this._tokenizer.reset();this._tagname=\"\";this._attribname=\"\";this._attribs=null;this._stack=[];if(this._cbs.onparserinit)this._cbs.onparserinit(this);};//Parses a complete HTML document and pushes it to the handler\nParser.prototype.parseComplete=function(data){this.reset();this.end(data);};Parser.prototype.write=function(chunk){this._tokenizer.write(chunk);};Parser.prototype.end=function(chunk){this._tokenizer.end(chunk);};Parser.prototype.pause=function(){this._tokenizer.pause();};Parser.prototype.resume=function(){this._tokenizer.resume();};return Parser;}(events_1.EventEmitter);exports.Parser=Parser;},{\"./Tokenizer\":30,\"events\":25}],30:[function(require,module,exports){\"use strict\";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{\"default\":mod};};Object.defineProperty(exports,\"__esModule\",{value:true});var decode_codepoint_1=__importDefault(require(\"entities/lib/decode_codepoint\"));var entities_json_1=__importDefault(require(\"entities/lib/maps/entities.json\"));var legacy_json_1=__importDefault(require(\"entities/lib/maps/legacy.json\"));var xml_json_1=__importDefault(require(\"entities/lib/maps/xml.json\"));function whitespace(c){return c===\" \"||c===\"\\n\"||c===\"\\t\"||c===\"\\f\"||c===\"\\r\";}function ifElseState(upper,SUCCESS,FAILURE){var lower=upper.toLowerCase();if(upper===lower){return function(t,c){if(c===lower){t._state=SUCCESS;}else{t._state=FAILURE;t._index--;}};}else{return function(t,c){if(c===lower||c===upper){t._state=SUCCESS;}else{t._state=FAILURE;t._index--;}};}}function consumeSpecialNameChar(upper,NEXT_STATE){var lower=upper.toLowerCase();return function(t,c){if(c===lower||c===upper){t._state=NEXT_STATE;}else{t._state=3/* InTagName */;t._index--;//consume the token again\n}};}var stateBeforeCdata1=ifElseState(\"C\",23/* BeforeCdata2 */,16/* InDeclaration */);var stateBeforeCdata2=ifElseState(\"D\",24/* BeforeCdata3 */,16/* InDeclaration */);var stateBeforeCdata3=ifElseState(\"A\",25/* BeforeCdata4 */,16/* InDeclaration */);var stateBeforeCdata4=ifElseState(\"T\",26/* BeforeCdata5 */,16/* InDeclaration */);var stateBeforeCdata5=ifElseState(\"A\",27/* BeforeCdata6 */,16/* InDeclaration */);var stateBeforeScript1=consumeSpecialNameChar(\"R\",34/* BeforeScript2 */);var stateBeforeScript2=consumeSpecialNameChar(\"I\",35/* BeforeScript3 */);var stateBeforeScript3=consumeSpecialNameChar(\"P\",36/* BeforeScript4 */);var stateBeforeScript4=consumeSpecialNameChar(\"T\",37/* BeforeScript5 */);var stateAfterScript1=ifElseState(\"R\",39/* AfterScript2 */,1/* Text */);var stateAfterScript2=ifElseState(\"I\",40/* AfterScript3 */,1/* Text */);var stateAfterScript3=ifElseState(\"P\",41/* AfterScript4 */,1/* Text */);var stateAfterScript4=ifElseState(\"T\",42/* AfterScript5 */,1/* Text */);var stateBeforeStyle1=consumeSpecialNameChar(\"Y\",44/* BeforeStyle2 */);var stateBeforeStyle2=consumeSpecialNameChar(\"L\",45/* BeforeStyle3 */);var stateBeforeStyle3=consumeSpecialNameChar(\"E\",46/* BeforeStyle4 */);var stateAfterStyle1=ifElseState(\"Y\",48/* AfterStyle2 */,1/* Text */);var stateAfterStyle2=ifElseState(\"L\",49/* AfterStyle3 */,1/* Text */);var stateAfterStyle3=ifElseState(\"E\",50/* AfterStyle4 */,1/* Text */);var stateBeforeEntity=ifElseState(\"#\",52/* BeforeNumericEntity */,53/* InNamedEntity */);var stateBeforeNumericEntity=ifElseState(\"X\",55/* InHexEntity */,54/* InNumericEntity */);var Tokenizer=/** @class */function(){function Tokenizer(options,cbs){/** The current state the tokenizer is in. */this._state=1/* Text */;/** The read buffer. */this._buffer=\"\";/** The beginning of the section that is currently being read. */this._sectionStart=0;/** The index within the buffer that we are currently looking at. */this._index=0;/**\n         * Data that has already been processed will be removed from the buffer occasionally.\n         * `_bufferOffset` keeps track of how many characters have been removed, to make sure position information is accurate.\n         */this._bufferOffset=0;/** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */this._baseState=1/* Text */;/** For special parsing behavior inside of script and style tags. */this._special=1/* None */;/** Indicates whether the tokenizer has been paused. */this._running=true;/** Indicates whether the tokenizer has finished running / `.end` has been called. */this._ended=false;this._cbs=cbs;this._xmlMode=!!(options&&options.xmlMode);this._decodeEntities=!!(options&&options.decodeEntities);}Tokenizer.prototype.reset=function(){this._state=1/* Text */;this._buffer=\"\";this._sectionStart=0;this._index=0;this._bufferOffset=0;this._baseState=1/* Text */;this._special=1/* None */;this._running=true;this._ended=false;};Tokenizer.prototype._stateText=function(c){if(c===\"<\"){if(this._index>this._sectionStart){this._cbs.ontext(this._getSection());}this._state=2/* BeforeTagName */;this._sectionStart=this._index;}else if(this._decodeEntities&&this._special===1/* None */&&c===\"&\"){if(this._index>this._sectionStart){this._cbs.ontext(this._getSection());}this._baseState=1/* Text */;this._state=51/* BeforeEntity */;this._sectionStart=this._index;}};Tokenizer.prototype._stateBeforeTagName=function(c){if(c===\"/\"){this._state=5/* BeforeClosingTagName */;}else if(c===\"<\"){this._cbs.ontext(this._getSection());this._sectionStart=this._index;}else if(c===\">\"||this._special!==1/* None */||whitespace(c)){this._state=1/* Text */;}else if(c===\"!\"){this._state=15/* BeforeDeclaration */;this._sectionStart=this._index+1;}else if(c===\"?\"){this._state=17/* InProcessingInstruction */;this._sectionStart=this._index+1;}else{this._state=!this._xmlMode&&(c===\"s\"||c===\"S\")?31/* BeforeSpecial */:3/* InTagName */;this._sectionStart=this._index;}};Tokenizer.prototype._stateInTagName=function(c){if(c===\"/\"||c===\">\"||whitespace(c)){this._emitToken(\"onopentagname\");this._state=8/* BeforeAttributeName */;this._index--;}};Tokenizer.prototype._stateBeforeClosingTagName=function(c){if(whitespace(c)){// ignore\n}else if(c===\">\"){this._state=1/* Text */;}else if(this._special!==1/* None */){if(c===\"s\"||c===\"S\"){this._state=32/* BeforeSpecialEnd */;}else{this._state=1/* Text */;this._index--;}}else{this._state=6/* InClosingTagName */;this._sectionStart=this._index;}};Tokenizer.prototype._stateInClosingTagName=function(c){if(c===\">\"||whitespace(c)){this._emitToken(\"onclosetag\");this._state=7/* AfterClosingTagName */;this._index--;}};Tokenizer.prototype._stateAfterClosingTagName=function(c){//skip everything until \">\"\nif(c===\">\"){this._state=1/* Text */;this._sectionStart=this._index+1;}};Tokenizer.prototype._stateBeforeAttributeName=function(c){if(c===\">\"){this._cbs.onopentagend();this._state=1/* Text */;this._sectionStart=this._index+1;}else if(c===\"/\"){this._state=4/* InSelfClosingTag */;}else if(!whitespace(c)){this._state=9/* InAttributeName */;this._sectionStart=this._index;}};Tokenizer.prototype._stateInSelfClosingTag=function(c){if(c===\">\"){this._cbs.onselfclosingtag();this._state=1/* Text */;this._sectionStart=this._index+1;}else if(!whitespace(c)){this._state=8/* BeforeAttributeName */;this._index--;}};Tokenizer.prototype._stateInAttributeName=function(c){if(c===\"=\"||c===\"/\"||c===\">\"||whitespace(c)){this._cbs.onattribname(this._getSection());this._sectionStart=-1;this._state=10/* AfterAttributeName */;this._index--;}};Tokenizer.prototype._stateAfterAttributeName=function(c){if(c===\"=\"){this._state=11/* BeforeAttributeValue */;}else if(c===\"/\"||c===\">\"){this._cbs.onattribend();this._state=8/* BeforeAttributeName */;this._index--;}else if(!whitespace(c)){this._cbs.onattribend();this._state=9/* InAttributeName */;this._sectionStart=this._index;}};Tokenizer.prototype._stateBeforeAttributeValue=function(c){if(c==='\"'){this._state=12/* InAttributeValueDq */;this._sectionStart=this._index+1;}else if(c===\"'\"){this._state=13/* InAttributeValueSq */;this._sectionStart=this._index+1;}else if(!whitespace(c)){this._state=14/* InAttributeValueNq */;this._sectionStart=this._index;this._index--;//reconsume token\n}};Tokenizer.prototype._stateInAttributeValueDoubleQuotes=function(c){if(c==='\"'){this._emitToken(\"onattribdata\");this._cbs.onattribend();this._state=8/* BeforeAttributeName */;}else if(this._decodeEntities&&c===\"&\"){this._emitToken(\"onattribdata\");this._baseState=this._state;this._state=51/* BeforeEntity */;this._sectionStart=this._index;}};Tokenizer.prototype._stateInAttributeValueSingleQuotes=function(c){if(c===\"'\"){this._emitToken(\"onattribdata\");this._cbs.onattribend();this._state=8/* BeforeAttributeName */;}else if(this._decodeEntities&&c===\"&\"){this._emitToken(\"onattribdata\");this._baseState=this._state;this._state=51/* BeforeEntity */;this._sectionStart=this._index;}};Tokenizer.prototype._stateInAttributeValueNoQuotes=function(c){if(whitespace(c)||c===\">\"){this._emitToken(\"onattribdata\");this._cbs.onattribend();this._state=8/* BeforeAttributeName */;this._index--;}else if(this._decodeEntities&&c===\"&\"){this._emitToken(\"onattribdata\");this._baseState=this._state;this._state=51/* BeforeEntity */;this._sectionStart=this._index;}};Tokenizer.prototype._stateBeforeDeclaration=function(c){this._state=c===\"[\"?22/* BeforeCdata1 */:c===\"-\"?18/* BeforeComment */:16/* InDeclaration */;};Tokenizer.prototype._stateInDeclaration=function(c){if(c===\">\"){this._cbs.ondeclaration(this._getSection());this._state=1/* Text */;this._sectionStart=this._index+1;}};Tokenizer.prototype._stateInProcessingInstruction=function(c){if(c===\">\"){this._cbs.onprocessinginstruction(this._getSection());this._state=1/* Text */;this._sectionStart=this._index+1;}};Tokenizer.prototype._stateBeforeComment=function(c){if(c===\"-\"){this._state=19/* InComment */;this._sectionStart=this._index+1;}else{this._state=16/* InDeclaration */;}};Tokenizer.prototype._stateInComment=function(c){if(c===\"-\")this._state=20/* AfterComment1 */;};Tokenizer.prototype._stateAfterComment1=function(c){if(c===\"-\"){this._state=21/* AfterComment2 */;}else{this._state=19/* InComment */;}};Tokenizer.prototype._stateAfterComment2=function(c){if(c===\">\"){//remove 2 trailing chars\nthis._cbs.oncomment(this._buffer.substring(this._sectionStart,this._index-2));this._state=1/* Text */;this._sectionStart=this._index+1;}else if(c!==\"-\"){this._state=19/* InComment */;}// else: stay in AFTER_COMMENT_2 (`--->`)\n};Tokenizer.prototype._stateBeforeCdata6=function(c){if(c===\"[\"){this._state=28/* InCdata */;this._sectionStart=this._index+1;}else{this._state=16/* InDeclaration */;this._index--;}};Tokenizer.prototype._stateInCdata=function(c){if(c===\"]\")this._state=29/* AfterCdata1 */;};Tokenizer.prototype._stateAfterCdata1=function(c){if(c===\"]\")this._state=30/* AfterCdata2 */;else this._state=28/* InCdata */;};Tokenizer.prototype._stateAfterCdata2=function(c){if(c===\">\"){//remove 2 trailing chars\nthis._cbs.oncdata(this._buffer.substring(this._sectionStart,this._index-2));this._state=1/* Text */;this._sectionStart=this._index+1;}else if(c!==\"]\"){this._state=28/* InCdata */;}//else: stay in AFTER_CDATA_2 (`]]]>`)\n};Tokenizer.prototype._stateBeforeSpecial=function(c){if(c===\"c\"||c===\"C\"){this._state=33/* BeforeScript1 */;}else if(c===\"t\"||c===\"T\"){this._state=43/* BeforeStyle1 */;}else{this._state=3/* InTagName */;this._index--;//consume the token again\n}};Tokenizer.prototype._stateBeforeSpecialEnd=function(c){if(this._special===2/* Script */&&(c===\"c\"||c===\"C\")){this._state=38/* AfterScript1 */;}else if(this._special===3/* Style */&&(c===\"t\"||c===\"T\")){this._state=47/* AfterStyle1 */;}else this._state=1/* Text */;};Tokenizer.prototype._stateBeforeScript5=function(c){if(c===\"/\"||c===\">\"||whitespace(c)){this._special=2/* Script */;}this._state=3/* InTagName */;this._index--;//consume the token again\n};Tokenizer.prototype._stateAfterScript5=function(c){if(c===\">\"||whitespace(c)){this._special=1/* None */;this._state=6/* InClosingTagName */;this._sectionStart=this._index-6;this._index--;//reconsume the token\n}else this._state=1/* Text */;};Tokenizer.prototype._stateBeforeStyle4=function(c){if(c===\"/\"||c===\">\"||whitespace(c)){this._special=3/* Style */;}this._state=3/* InTagName */;this._index--;//consume the token again\n};Tokenizer.prototype._stateAfterStyle4=function(c){if(c===\">\"||whitespace(c)){this._special=1/* None */;this._state=6/* InClosingTagName */;this._sectionStart=this._index-5;this._index--;//reconsume the token\n}else this._state=1/* Text */;};//for entities terminated with a semicolon\nTokenizer.prototype._parseNamedEntityStrict=function(){//offset = 1\nif(this._sectionStart+1<this._index){var entity=this._buffer.substring(this._sectionStart+1,this._index),map=this._xmlMode?xml_json_1[\"default\"]:entities_json_1[\"default\"];if(Object.prototype.hasOwnProperty.call(map,entity)){// @ts-ignore\nthis._emitPartial(map[entity]);this._sectionStart=this._index+1;}}};//parses legacy entities (without trailing semicolon)\nTokenizer.prototype._parseLegacyEntity=function(){var start=this._sectionStart+1;var limit=this._index-start;if(limit>6)limit=6;// The max length of legacy entities is 6\nwhile(limit>=2){// The min length of legacy entities is 2\nvar entity=this._buffer.substr(start,limit);if(Object.prototype.hasOwnProperty.call(legacy_json_1[\"default\"],entity)){// @ts-ignore\nthis._emitPartial(legacy_json_1[\"default\"][entity]);this._sectionStart+=limit+1;return;}else{limit--;}}};Tokenizer.prototype._stateInNamedEntity=function(c){if(c===\";\"){this._parseNamedEntityStrict();if(this._sectionStart+1<this._index&&!this._xmlMode){this._parseLegacyEntity();}this._state=this._baseState;}else if((c<\"a\"||c>\"z\")&&(c<\"A\"||c>\"Z\")&&(c<\"0\"||c>\"9\")){if(this._xmlMode||this._sectionStart+1===this._index){// ignore\n}else if(this._baseState!==1/* Text */){if(c!==\"=\"){this._parseNamedEntityStrict();}}else{this._parseLegacyEntity();}this._state=this._baseState;this._index--;}};Tokenizer.prototype._decodeNumericEntity=function(offset,base){var sectionStart=this._sectionStart+offset;if(sectionStart!==this._index){//parse entity\nvar entity=this._buffer.substring(sectionStart,this._index);var parsed=parseInt(entity,base);this._emitPartial(decode_codepoint_1[\"default\"](parsed));this._sectionStart=this._index;}else{this._sectionStart--;}this._state=this._baseState;};Tokenizer.prototype._stateInNumericEntity=function(c){if(c===\";\"){this._decodeNumericEntity(2,10);this._sectionStart++;}else if(c<\"0\"||c>\"9\"){if(!this._xmlMode){this._decodeNumericEntity(2,10);}else{this._state=this._baseState;}this._index--;}};Tokenizer.prototype._stateInHexEntity=function(c){if(c===\";\"){this._decodeNumericEntity(3,16);this._sectionStart++;}else if((c<\"a\"||c>\"f\")&&(c<\"A\"||c>\"F\")&&(c<\"0\"||c>\"9\")){if(!this._xmlMode){this._decodeNumericEntity(3,16);}else{this._state=this._baseState;}this._index--;}};Tokenizer.prototype._cleanup=function(){if(this._sectionStart<0){this._buffer=\"\";this._bufferOffset+=this._index;this._index=0;}else if(this._running){if(this._state===1/* Text */){if(this._sectionStart!==this._index){this._cbs.ontext(this._buffer.substr(this._sectionStart));}this._buffer=\"\";this._bufferOffset+=this._index;this._index=0;}else if(this._sectionStart===this._index){//the section just started\nthis._buffer=\"\";this._bufferOffset+=this._index;this._index=0;}else{//remove everything unnecessary\nthis._buffer=this._buffer.substr(this._sectionStart);this._index-=this._sectionStart;this._bufferOffset+=this._sectionStart;}this._sectionStart=0;}};//TODO make events conditional\nTokenizer.prototype.write=function(chunk){if(this._ended)this._cbs.onerror(Error(\".write() after done!\"));this._buffer+=chunk;this._parse();};// Iterates through the buffer, calling the function corresponding to the current state.\n// States that are more likely to be hit are higher up, as a performance improvement.\nTokenizer.prototype._parse=function(){while(this._index<this._buffer.length&&this._running){var c=this._buffer.charAt(this._index);if(this._state===1/* Text */){this._stateText(c);}else if(this._state===12/* InAttributeValueDq */){this._stateInAttributeValueDoubleQuotes(c);}else if(this._state===9/* InAttributeName */){this._stateInAttributeName(c);}else if(this._state===19/* InComment */){this._stateInComment(c);}else if(this._state===8/* BeforeAttributeName */){this._stateBeforeAttributeName(c);}else if(this._state===3/* InTagName */){this._stateInTagName(c);}else if(this._state===6/* InClosingTagName */){this._stateInClosingTagName(c);}else if(this._state===2/* BeforeTagName */){this._stateBeforeTagName(c);}else if(this._state===10/* AfterAttributeName */){this._stateAfterAttributeName(c);}else if(this._state===13/* InAttributeValueSq */){this._stateInAttributeValueSingleQuotes(c);}else if(this._state===11/* BeforeAttributeValue */){this._stateBeforeAttributeValue(c);}else if(this._state===5/* BeforeClosingTagName */){this._stateBeforeClosingTagName(c);}else if(this._state===7/* AfterClosingTagName */){this._stateAfterClosingTagName(c);}else if(this._state===31/* BeforeSpecial */){this._stateBeforeSpecial(c);}else if(this._state===20/* AfterComment1 */){this._stateAfterComment1(c);}else if(this._state===14/* InAttributeValueNq */){this._stateInAttributeValueNoQuotes(c);}else if(this._state===4/* InSelfClosingTag */){this._stateInSelfClosingTag(c);}else if(this._state===16/* InDeclaration */){this._stateInDeclaration(c);}else if(this._state===15/* BeforeDeclaration */){this._stateBeforeDeclaration(c);}else if(this._state===21/* AfterComment2 */){this._stateAfterComment2(c);}else if(this._state===18/* BeforeComment */){this._stateBeforeComment(c);}else if(this._state===32/* BeforeSpecialEnd */){this._stateBeforeSpecialEnd(c);}else if(this._state===38/* AfterScript1 */){stateAfterScript1(this,c);}else if(this._state===39/* AfterScript2 */){stateAfterScript2(this,c);}else if(this._state===40/* AfterScript3 */){stateAfterScript3(this,c);}else if(this._state===33/* BeforeScript1 */){stateBeforeScript1(this,c);}else if(this._state===34/* BeforeScript2 */){stateBeforeScript2(this,c);}else if(this._state===35/* BeforeScript3 */){stateBeforeScript3(this,c);}else if(this._state===36/* BeforeScript4 */){stateBeforeScript4(this,c);}else if(this._state===37/* BeforeScript5 */){this._stateBeforeScript5(c);}else if(this._state===41/* AfterScript4 */){stateAfterScript4(this,c);}else if(this._state===42/* AfterScript5 */){this._stateAfterScript5(c);}else if(this._state===43/* BeforeStyle1 */){stateBeforeStyle1(this,c);}else if(this._state===28/* InCdata */){this._stateInCdata(c);}else if(this._state===44/* BeforeStyle2 */){stateBeforeStyle2(this,c);}else if(this._state===45/* BeforeStyle3 */){stateBeforeStyle3(this,c);}else if(this._state===46/* BeforeStyle4 */){this._stateBeforeStyle4(c);}else if(this._state===47/* AfterStyle1 */){stateAfterStyle1(this,c);}else if(this._state===48/* AfterStyle2 */){stateAfterStyle2(this,c);}else if(this._state===49/* AfterStyle3 */){stateAfterStyle3(this,c);}else if(this._state===50/* AfterStyle4 */){this._stateAfterStyle4(c);}else if(this._state===17/* InProcessingInstruction */){this._stateInProcessingInstruction(c);}else if(this._state===53/* InNamedEntity */){this._stateInNamedEntity(c);}else if(this._state===22/* BeforeCdata1 */){stateBeforeCdata1(this,c);}else if(this._state===51/* BeforeEntity */){stateBeforeEntity(this,c);}else if(this._state===23/* BeforeCdata2 */){stateBeforeCdata2(this,c);}else if(this._state===24/* BeforeCdata3 */){stateBeforeCdata3(this,c);}else if(this._state===29/* AfterCdata1 */){this._stateAfterCdata1(c);}else if(this._state===30/* AfterCdata2 */){this._stateAfterCdata2(c);}else if(this._state===25/* BeforeCdata4 */){stateBeforeCdata4(this,c);}else if(this._state===26/* BeforeCdata5 */){stateBeforeCdata5(this,c);}else if(this._state===27/* BeforeCdata6 */){this._stateBeforeCdata6(c);}else if(this._state===55/* InHexEntity */){this._stateInHexEntity(c);}else if(this._state===54/* InNumericEntity */){this._stateInNumericEntity(c);}else if(this._state===52/* BeforeNumericEntity */){stateBeforeNumericEntity(this,c);}else{this._cbs.onerror(Error(\"unknown _state\"),this._state);}this._index++;}this._cleanup();};Tokenizer.prototype.pause=function(){this._running=false;};Tokenizer.prototype.resume=function(){this._running=true;if(this._index<this._buffer.length){this._parse();}if(this._ended){this._finish();}};Tokenizer.prototype.end=function(chunk){if(this._ended)this._cbs.onerror(Error(\".end() after done!\"));if(chunk)this.write(chunk);this._ended=true;if(this._running)this._finish();};Tokenizer.prototype._finish=function(){//if there is remaining data, emit it in a reasonable way\nif(this._sectionStart<this._index){this._handleTrailingData();}this._cbs.onend();};Tokenizer.prototype._handleTrailingData=function(){var data=this._buffer.substr(this._sectionStart);if(this._state===28/* InCdata */||this._state===29/* AfterCdata1 */||this._state===30/* AfterCdata2 */){this._cbs.oncdata(data);}else if(this._state===19/* InComment */||this._state===20/* AfterComment1 */||this._state===21/* AfterComment2 */){this._cbs.oncomment(data);}else if(this._state===53/* InNamedEntity */&&!this._xmlMode){this._parseLegacyEntity();if(this._sectionStart<this._index){this._state=this._baseState;this._handleTrailingData();}}else if(this._state===54/* InNumericEntity */&&!this._xmlMode){this._decodeNumericEntity(2,10);if(this._sectionStart<this._index){this._state=this._baseState;this._handleTrailingData();}}else if(this._state===55/* InHexEntity */&&!this._xmlMode){this._decodeNumericEntity(3,16);if(this._sectionStart<this._index){this._state=this._baseState;this._handleTrailingData();}}else if(this._state!==3/* InTagName */&&this._state!==8/* BeforeAttributeName */&&this._state!==11/* BeforeAttributeValue */&&this._state!==10/* AfterAttributeName */&&this._state!==9/* InAttributeName */&&this._state!==13/* InAttributeValueSq */&&this._state!==12/* InAttributeValueDq */&&this._state!==14/* InAttributeValueNq */&&this._state!==6/* InClosingTagName */){this._cbs.ontext(data);}//else, ignore remaining data\n//TODO add a way to remove current tag\n};Tokenizer.prototype.getAbsoluteIndex=function(){return this._bufferOffset+this._index;};Tokenizer.prototype._getSection=function(){return this._buffer.substring(this._sectionStart,this._index);};Tokenizer.prototype._emitToken=function(name){this._cbs[name](this._getSection());this._sectionStart=-1;};Tokenizer.prototype._emitPartial=function(value){if(this._baseState!==1/* Text */){this._cbs.onattribdata(value);//TODO implement the new event\n}else{this._cbs.ontext(value);}};return Tokenizer;}();exports[\"default\"]=Tokenizer;},{\"entities/lib/decode_codepoint\":18,\"entities/lib/maps/entities.json\":22,\"entities/lib/maps/legacy.json\":23,\"entities/lib/maps/xml.json\":24}],31:[function(require,module,exports){\"use strict\";function __export(m){for(var p in m){if(!exports.hasOwnProperty(p))exports[p]=m[p];}}var __importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod){if(Object.hasOwnProperty.call(mod,k))result[k]=mod[k];}result[\"default\"]=mod;return result;};Object.defineProperty(exports,\"__esModule\",{value:true});var Parser_1=require(\"./Parser\");exports.Parser=Parser_1.Parser;var domhandler_1=require(\"domhandler\");exports.DomHandler=domhandler_1.DomHandler;exports.DefaultHandler=domhandler_1.DomHandler;// Helper methods\n/**\n * Parses data, returns the resulting DOM.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n */function parseDOM(data,options){var handler=new domhandler_1.DomHandler(void 0,options);new Parser_1.Parser(handler,options).end(data);return handler.dom;}exports.parseDOM=parseDOM;/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param cb A callback that will be called once parsing has been completed.\n * @param options Optional options for the parser and DOM builder.\n * @param elementCb An optional callback that will be called every time a tag has been completed inside of the DOM.\n */function createDomStream(cb,options,elementCb){var handler=new domhandler_1.DomHandler(cb,options,elementCb);return new Parser_1.Parser(handler,options);}exports.createDomStream=createDomStream;var Tokenizer_1=require(\"./Tokenizer\");exports.Tokenizer=Tokenizer_1[\"default\"];var ElementType=__importStar(require(\"domelementtype\"));exports.ElementType=ElementType;/**\n * List of all events that the parser emits.\n *\n * Format: eventname: number of arguments.\n */exports.EVENTS={attribute:2,cdatastart:0,cdataend:0,text:1,processinginstruction:2,comment:1,commentend:0,closetag:1,opentag:2,opentagname:1,error:1,end:0};/*\n    All of the following exports exist for backwards-compatibility.\n    They should probably be removed eventually.\n*/__export(require(\"./FeedHandler\"));__export(require(\"./WritableStream\"));__export(require(\"./CollectingHandler\"));var DomUtils=__importStar(require(\"domutils\"));exports.DomUtils=DomUtils;var FeedHandler_1=require(\"./FeedHandler\");exports.RssHandler=FeedHandler_1.FeedHandler;},{\"./CollectingHandler\":26,\"./FeedHandler\":27,\"./Parser\":29,\"./Tokenizer\":30,\"./WritableStream\":2,\"domelementtype\":6,\"domhandler\":7,\"domutils\":10}],32:[function(require,module,exports){exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias;}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity;}else{m=m+Math.pow(2,mLen);e=e-eBias;}return(s?-1:1)*m*Math.pow(2,e-mLen);};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax;}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2;}if(e+eBias>=1){value+=rt/c;}else{value+=rt*Math.pow(2,1-eBias);}if(value*c>=2){e++;c/=2;}if(e+eBias>=eMax){m=0;e=eMax;}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias;}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0;}}for(;mLen>=8;buffer[offset+i]=m&0xff,i+=d,m/=256,mLen-=8){}e=e<<mLen|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&0xff,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128;};},{}],33:[function(require,module,exports){var getNative=require('./_getNative'),root=require('./_root');/* Built-in method references that are verified to be native. */var DataView=getNative(root,'DataView');module.exports=DataView;},{\"./_getNative\":93,\"./_root\":130}],34:[function(require,module,exports){var hashClear=require('./_hashClear'),hashDelete=require('./_hashDelete'),hashGet=require('./_hashGet'),hashHas=require('./_hashHas'),hashSet=require('./_hashSet');/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */function Hash(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1]);}}// Add methods to `Hash`.\nHash.prototype.clear=hashClear;Hash.prototype['delete']=hashDelete;Hash.prototype.get=hashGet;Hash.prototype.has=hashHas;Hash.prototype.set=hashSet;module.exports=Hash;},{\"./_hashClear\":100,\"./_hashDelete\":101,\"./_hashGet\":102,\"./_hashHas\":103,\"./_hashSet\":104}],35:[function(require,module,exports){var listCacheClear=require('./_listCacheClear'),listCacheDelete=require('./_listCacheDelete'),listCacheGet=require('./_listCacheGet'),listCacheHas=require('./_listCacheHas'),listCacheSet=require('./_listCacheSet');/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */function ListCache(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1]);}}// Add methods to `ListCache`.\nListCache.prototype.clear=listCacheClear;ListCache.prototype['delete']=listCacheDelete;ListCache.prototype.get=listCacheGet;ListCache.prototype.has=listCacheHas;ListCache.prototype.set=listCacheSet;module.exports=ListCache;},{\"./_listCacheClear\":113,\"./_listCacheDelete\":114,\"./_listCacheGet\":115,\"./_listCacheHas\":116,\"./_listCacheSet\":117}],36:[function(require,module,exports){var getNative=require('./_getNative'),root=require('./_root');/* Built-in method references that are verified to be native. */var Map=getNative(root,'Map');module.exports=Map;},{\"./_getNative\":93,\"./_root\":130}],37:[function(require,module,exports){var mapCacheClear=require('./_mapCacheClear'),mapCacheDelete=require('./_mapCacheDelete'),mapCacheGet=require('./_mapCacheGet'),mapCacheHas=require('./_mapCacheHas'),mapCacheSet=require('./_mapCacheSet');/**\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 */function MapCache(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1]);}}// Add methods to `MapCache`.\nMapCache.prototype.clear=mapCacheClear;MapCache.prototype['delete']=mapCacheDelete;MapCache.prototype.get=mapCacheGet;MapCache.prototype.has=mapCacheHas;MapCache.prototype.set=mapCacheSet;module.exports=MapCache;},{\"./_mapCacheClear\":118,\"./_mapCacheDelete\":119,\"./_mapCacheGet\":120,\"./_mapCacheHas\":121,\"./_mapCacheSet\":122}],38:[function(require,module,exports){var getNative=require('./_getNative'),root=require('./_root');/* Built-in method references that are verified to be native. */var Promise=getNative(root,'Promise');module.exports=Promise;},{\"./_getNative\":93,\"./_root\":130}],39:[function(require,module,exports){var getNative=require('./_getNative'),root=require('./_root');/* Built-in method references that are verified to be native. */var Set=getNative(root,'Set');module.exports=Set;},{\"./_getNative\":93,\"./_root\":130}],40:[function(require,module,exports){var ListCache=require('./_ListCache'),stackClear=require('./_stackClear'),stackDelete=require('./_stackDelete'),stackGet=require('./_stackGet'),stackHas=require('./_stackHas'),stackSet=require('./_stackSet');/**\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 */function Stack(entries){var data=this.__data__=new ListCache(entries);this.size=data.size;}// Add methods to `Stack`.\nStack.prototype.clear=stackClear;Stack.prototype['delete']=stackDelete;Stack.prototype.get=stackGet;Stack.prototype.has=stackHas;Stack.prototype.set=stackSet;module.exports=Stack;},{\"./_ListCache\":35,\"./_stackClear\":134,\"./_stackDelete\":135,\"./_stackGet\":136,\"./_stackHas\":137,\"./_stackSet\":138}],41:[function(require,module,exports){var root=require('./_root');/** Built-in value references. */var _Symbol=root.Symbol;module.exports=_Symbol;},{\"./_root\":130}],42:[function(require,module,exports){var root=require('./_root');/** Built-in value references. */var Uint8Array=root.Uint8Array;module.exports=Uint8Array;},{\"./_root\":130}],43:[function(require,module,exports){var getNative=require('./_getNative'),root=require('./_root');/* Built-in method references that are verified to be native. */var WeakMap=getNative(root,'WeakMap');module.exports=WeakMap;},{\"./_getNative\":93,\"./_root\":130}],44:[function(require,module,exports){/**\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 */function apply(func,thisArg,args){switch(args.length){case 0:return func.call(thisArg);case 1:return func.call(thisArg,args[0]);case 2:return func.call(thisArg,args[0],args[1]);case 3:return func.call(thisArg,args[0],args[1],args[2]);}return func.apply(thisArg,args);}module.exports=apply;},{}],45:[function(require,module,exports){/**\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 */function arrayEach(array,iteratee){var index=-1,length=array==null?0:array.length;while(++index<length){if(iteratee(array[index],index,array)===false){break;}}return array;}module.exports=arrayEach;},{}],46:[function(require,module,exports){/**\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 */function arrayFilter(array,predicate){var index=-1,length=array==null?0:array.length,resIndex=0,result=[];while(++index<length){var value=array[index];if(predicate(value,index,array)){result[resIndex++]=value;}}return result;}module.exports=arrayFilter;},{}],47:[function(require,module,exports){var baseTimes=require('./_baseTimes'),isArguments=require('./isArguments'),isArray=require('./isArray'),isBuffer=require('./isBuffer'),isIndex=require('./_isIndex'),isTypedArray=require('./isTypedArray');/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/**\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 */function arrayLikeKeys(value,inherited){var isArr=isArray(value),isArg=!isArr&&isArguments(value),isBuff=!isArr&&!isArg&&isBuffer(value),isType=!isArr&&!isArg&&!isBuff&&isTypedArray(value),skipIndexes=isArr||isArg||isBuff||isType,result=skipIndexes?baseTimes(value.length,String):[],length=result.length;for(var key in value){if((inherited||hasOwnProperty.call(value,key))&&!(skipIndexes&&(// Safari 9 has enumerable `arguments.length` in strict mode.\nkey=='length'||// Node.js 0.10 has enumerable non-index properties on buffers.\nisBuff&&(key=='offset'||key=='parent')||// PhantomJS 2 has enumerable non-index properties on typed arrays.\nisType&&(key=='buffer'||key=='byteLength'||key=='byteOffset')||// Skip index properties.\nisIndex(key,length)))){result.push(key);}}return result;}module.exports=arrayLikeKeys;},{\"./_baseTimes\":72,\"./_isIndex\":108,\"./isArguments\":145,\"./isArray\":146,\"./isBuffer\":149,\"./isTypedArray\":159}],48:[function(require,module,exports){/**\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 */function arrayMap(array,iteratee){var index=-1,length=array==null?0:array.length,result=Array(length);while(++index<length){result[index]=iteratee(array[index],index,array);}return result;}module.exports=arrayMap;},{}],49:[function(require,module,exports){/**\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 */function arrayPush(array,values){var index=-1,length=values.length,offset=array.length;while(++index<length){array[offset+index]=values[index];}return array;}module.exports=arrayPush;},{}],50:[function(require,module,exports){var baseAssignValue=require('./_baseAssignValue'),eq=require('./eq');/**\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 */function assignMergeValue(object,key,value){if(value!==undefined&&!eq(object[key],value)||value===undefined&&!(key in object)){baseAssignValue(object,key,value);}}module.exports=assignMergeValue;},{\"./_baseAssignValue\":55,\"./eq\":142}],51:[function(require,module,exports){var baseAssignValue=require('./_baseAssignValue'),eq=require('./eq');/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/**\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 */function assignValue(object,key,value){var objValue=object[key];if(!(hasOwnProperty.call(object,key)&&eq(objValue,value))||value===undefined&&!(key in object)){baseAssignValue(object,key,value);}}module.exports=assignValue;},{\"./_baseAssignValue\":55,\"./eq\":142}],52:[function(require,module,exports){var eq=require('./eq');/**\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 */function assocIndexOf(array,key){var length=array.length;while(length--){if(eq(array[length][0],key)){return length;}}return-1;}module.exports=assocIndexOf;},{\"./eq\":142}],53:[function(require,module,exports){var copyObject=require('./_copyObject'),keys=require('./keys');/**\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 */function baseAssign(object,source){return object&&copyObject(source,keys(source),object);}module.exports=baseAssign;},{\"./_copyObject\":82,\"./keys\":160}],54:[function(require,module,exports){var copyObject=require('./_copyObject'),keysIn=require('./keysIn');/**\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 */function baseAssignIn(object,source){return object&&copyObject(source,keysIn(source),object);}module.exports=baseAssignIn;},{\"./_copyObject\":82,\"./keysIn\":161}],55:[function(require,module,exports){var defineProperty=require('./_defineProperty');/**\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 */function baseAssignValue(object,key,value){if(key=='__proto__'&&defineProperty){defineProperty(object,key,{'configurable':true,'enumerable':true,'value':value,'writable':true});}else{object[key]=value;}}module.exports=baseAssignValue;},{\"./_defineProperty\":88}],56:[function(require,module,exports){var Stack=require('./_Stack'),arrayEach=require('./_arrayEach'),assignValue=require('./_assignValue'),baseAssign=require('./_baseAssign'),baseAssignIn=require('./_baseAssignIn'),cloneBuffer=require('./_cloneBuffer'),copyArray=require('./_copyArray'),copySymbols=require('./_copySymbols'),copySymbolsIn=require('./_copySymbolsIn'),getAllKeys=require('./_getAllKeys'),getAllKeysIn=require('./_getAllKeysIn'),getTag=require('./_getTag'),initCloneArray=require('./_initCloneArray'),initCloneByTag=require('./_initCloneByTag'),initCloneObject=require('./_initCloneObject'),isArray=require('./isArray'),isBuffer=require('./isBuffer'),isMap=require('./isMap'),isObject=require('./isObject'),isSet=require('./isSet'),keys=require('./keys'),keysIn=require('./keysIn');/** Used to compose bitmasks for cloning. */var CLONE_DEEP_FLAG=1,CLONE_FLAT_FLAG=2,CLONE_SYMBOLS_FLAG=4;/** `Object#toString` result references. */var argsTag='[object Arguments]',arrayTag='[object Array]',boolTag='[object Boolean]',dateTag='[object Date]',errorTag='[object Error]',funcTag='[object Function]',genTag='[object GeneratorFunction]',mapTag='[object Map]',numberTag='[object Number]',objectTag='[object Object]',regexpTag='[object RegExp]',setTag='[object Set]',stringTag='[object String]',symbolTag='[object Symbol]',weakMapTag='[object WeakMap]';var arrayBufferTag='[object ArrayBuffer]',dataViewTag='[object DataView]',float32Tag='[object Float32Array]',float64Tag='[object Float64Array]',int8Tag='[object Int8Array]',int16Tag='[object Int16Array]',int32Tag='[object Int32Array]',uint8Tag='[object Uint8Array]',uint8ClampedTag='[object Uint8ClampedArray]',uint16Tag='[object Uint16Array]',uint32Tag='[object Uint32Array]';/** Used to identify `toStringTag` values supported by `_.clone`. */var cloneableTags={};cloneableTags[argsTag]=cloneableTags[arrayTag]=cloneableTags[arrayBufferTag]=cloneableTags[dataViewTag]=cloneableTags[boolTag]=cloneableTags[dateTag]=cloneableTags[float32Tag]=cloneableTags[float64Tag]=cloneableTags[int8Tag]=cloneableTags[int16Tag]=cloneableTags[int32Tag]=cloneableTags[mapTag]=cloneableTags[numberTag]=cloneableTags[objectTag]=cloneableTags[regexpTag]=cloneableTags[setTag]=cloneableTags[stringTag]=cloneableTags[symbolTag]=cloneableTags[uint8Tag]=cloneableTags[uint8ClampedTag]=cloneableTags[uint16Tag]=cloneableTags[uint32Tag]=true;cloneableTags[errorTag]=cloneableTags[funcTag]=cloneableTags[weakMapTag]=false;/**\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 */function baseClone(value,bitmask,customizer,key,object,stack){var result,isDeep=bitmask&CLONE_DEEP_FLAG,isFlat=bitmask&CLONE_FLAT_FLAG,isFull=bitmask&CLONE_SYMBOLS_FLAG;if(customizer){result=object?customizer(value,key,object,stack):customizer(value);}if(result!==undefined){return result;}if(!isObject(value)){return value;}var isArr=isArray(value);if(isArr){result=initCloneArray(value);if(!isDeep){return copyArray(value,result);}}else{var tag=getTag(value),isFunc=tag==funcTag||tag==genTag;if(isBuffer(value)){return cloneBuffer(value,isDeep);}if(tag==objectTag||tag==argsTag||isFunc&&!object){result=isFlat||isFunc?{}:initCloneObject(value);if(!isDeep){return isFlat?copySymbolsIn(value,baseAssignIn(result,value)):copySymbols(value,baseAssign(result,value));}}else{if(!cloneableTags[tag]){return object?value:{};}result=initCloneByTag(value,tag,isDeep);}}// Check for circular references and return its corresponding clone.\nstack||(stack=new Stack());var stacked=stack.get(value);if(stacked){return stacked;}stack.set(value,result);if(isSet(value)){value.forEach(function(subValue){result.add(baseClone(subValue,bitmask,customizer,subValue,value,stack));});}else if(isMap(value)){value.forEach(function(subValue,key){result.set(key,baseClone(subValue,bitmask,customizer,key,value,stack));});}var keysFunc=isFull?isFlat?getAllKeysIn:getAllKeys:isFlat?keysIn:keys;var props=isArr?undefined:keysFunc(value);arrayEach(props||value,function(subValue,key){if(props){key=subValue;subValue=value[key];}// Recursively populate clone (susceptible to call stack limits).\nassignValue(result,key,baseClone(subValue,bitmask,customizer,key,value,stack));});return result;}module.exports=baseClone;},{\"./_Stack\":40,\"./_arrayEach\":45,\"./_assignValue\":51,\"./_baseAssign\":53,\"./_baseAssignIn\":54,\"./_cloneBuffer\":76,\"./_copyArray\":81,\"./_copySymbols\":83,\"./_copySymbolsIn\":84,\"./_getAllKeys\":90,\"./_getAllKeysIn\":91,\"./_getTag\":98,\"./_initCloneArray\":105,\"./_initCloneByTag\":106,\"./_initCloneObject\":107,\"./isArray\":146,\"./isBuffer\":149,\"./isMap\":152,\"./isObject\":153,\"./isSet\":156,\"./keys\":160,\"./keysIn\":161}],57:[function(require,module,exports){var isObject=require('./isObject');/** Built-in value references. */var objectCreate=Object.create;/**\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 */var baseCreate=function(){function object(){}return function(proto){if(!isObject(proto)){return{};}if(objectCreate){return objectCreate(proto);}object.prototype=proto;var result=new object();object.prototype=undefined;return result;};}();module.exports=baseCreate;},{\"./isObject\":153}],58:[function(require,module,exports){var createBaseFor=require('./_createBaseFor');/**\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 */var baseFor=createBaseFor();module.exports=baseFor;},{\"./_createBaseFor\":87}],59:[function(require,module,exports){var arrayPush=require('./_arrayPush'),isArray=require('./isArray');/**\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 */function baseGetAllKeys(object,keysFunc,symbolsFunc){var result=keysFunc(object);return isArray(object)?result:arrayPush(result,symbolsFunc(object));}module.exports=baseGetAllKeys;},{\"./_arrayPush\":49,\"./isArray\":146}],60:[function(require,module,exports){var _Symbol2=require('./_Symbol'),getRawTag=require('./_getRawTag'),objectToString=require('./_objectToString');/** `Object#toString` result references. */var nullTag='[object Null]',undefinedTag='[object Undefined]';/** Built-in value references. */var symToStringTag=_Symbol2?_Symbol2.toStringTag:undefined;/**\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 */function baseGetTag(value){if(value==null){return value===undefined?undefinedTag:nullTag;}return symToStringTag&&symToStringTag in Object(value)?getRawTag(value):objectToString(value);}module.exports=baseGetTag;},{\"./_Symbol\":41,\"./_getRawTag\":95,\"./_objectToString\":127}],61:[function(require,module,exports){var baseGetTag=require('./_baseGetTag'),isObjectLike=require('./isObjectLike');/** `Object#toString` result references. */var argsTag='[object Arguments]';/**\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 */function baseIsArguments(value){return isObjectLike(value)&&baseGetTag(value)==argsTag;}module.exports=baseIsArguments;},{\"./_baseGetTag\":60,\"./isObjectLike\":154}],62:[function(require,module,exports){var getTag=require('./_getTag'),isObjectLike=require('./isObjectLike');/** `Object#toString` result references. */var mapTag='[object Map]';/**\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 */function baseIsMap(value){return isObjectLike(value)&&getTag(value)==mapTag;}module.exports=baseIsMap;},{\"./_getTag\":98,\"./isObjectLike\":154}],63:[function(require,module,exports){var isFunction=require('./isFunction'),isMasked=require('./_isMasked'),isObject=require('./isObject'),toSource=require('./_toSource');/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */var reRegExpChar=/[\\\\^$.*+?()[\\]{}|]/g;/** Used to detect host constructors (Safari). */var reIsHostCtor=/^\\[object .+?Constructor\\]$/;/** Used for built-in method references. */var funcProto=Function.prototype,objectProto=Object.prototype;/** Used to resolve the decompiled source of functions. */var funcToString=funcProto.toString;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/** Used to detect if a method is native. */var reIsNative=RegExp('^'+funcToString.call(hasOwnProperty).replace(reRegExpChar,'\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,'$1.*?')+'$');/**\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 */function baseIsNative(value){if(!isObject(value)||isMasked(value)){return false;}var pattern=isFunction(value)?reIsNative:reIsHostCtor;return pattern.test(toSource(value));}module.exports=baseIsNative;},{\"./_isMasked\":111,\"./_toSource\":139,\"./isFunction\":150,\"./isObject\":153}],64:[function(require,module,exports){var getTag=require('./_getTag'),isObjectLike=require('./isObjectLike');/** `Object#toString` result references. */var setTag='[object Set]';/**\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 */function baseIsSet(value){return isObjectLike(value)&&getTag(value)==setTag;}module.exports=baseIsSet;},{\"./_getTag\":98,\"./isObjectLike\":154}],65:[function(require,module,exports){var baseGetTag=require('./_baseGetTag'),isLength=require('./isLength'),isObjectLike=require('./isObjectLike');/** `Object#toString` result references. */var argsTag='[object Arguments]',arrayTag='[object Array]',boolTag='[object Boolean]',dateTag='[object Date]',errorTag='[object Error]',funcTag='[object Function]',mapTag='[object Map]',numberTag='[object Number]',objectTag='[object Object]',regexpTag='[object RegExp]',setTag='[object Set]',stringTag='[object String]',weakMapTag='[object WeakMap]';var arrayBufferTag='[object ArrayBuffer]',dataViewTag='[object DataView]',float32Tag='[object Float32Array]',float64Tag='[object Float64Array]',int8Tag='[object Int8Array]',int16Tag='[object Int16Array]',int32Tag='[object Int32Array]',uint8Tag='[object Uint8Array]',uint8ClampedTag='[object Uint8ClampedArray]',uint16Tag='[object Uint16Array]',uint32Tag='[object Uint32Array]';/** Used to identify `toStringTag` values of typed arrays. */var typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=true;typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=false;/**\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 */function baseIsTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[baseGetTag(value)];}module.exports=baseIsTypedArray;},{\"./_baseGetTag\":60,\"./isLength\":151,\"./isObjectLike\":154}],66:[function(require,module,exports){var isPrototype=require('./_isPrototype'),nativeKeys=require('./_nativeKeys');/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/**\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 */function baseKeys(object){if(!isPrototype(object)){return nativeKeys(object);}var result=[];for(var key in Object(object)){if(hasOwnProperty.call(object,key)&&key!='constructor'){result.push(key);}}return result;}module.exports=baseKeys;},{\"./_isPrototype\":112,\"./_nativeKeys\":124}],67:[function(require,module,exports){var isObject=require('./isObject'),isPrototype=require('./_isPrototype'),nativeKeysIn=require('./_nativeKeysIn');/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/**\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 */function baseKeysIn(object){if(!isObject(object)){return nativeKeysIn(object);}var isProto=isPrototype(object),result=[];for(var key in object){if(!(key=='constructor'&&(isProto||!hasOwnProperty.call(object,key)))){result.push(key);}}return result;}module.exports=baseKeysIn;},{\"./_isPrototype\":112,\"./_nativeKeysIn\":125,\"./isObject\":153}],68:[function(require,module,exports){var Stack=require('./_Stack'),assignMergeValue=require('./_assignMergeValue'),baseFor=require('./_baseFor'),baseMergeDeep=require('./_baseMergeDeep'),isObject=require('./isObject'),keysIn=require('./keysIn'),safeGet=require('./_safeGet');/**\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 */function baseMerge(object,source,srcIndex,customizer,stack){if(object===source){return;}baseFor(source,function(srcValue,key){stack||(stack=new Stack());if(isObject(srcValue)){baseMergeDeep(object,source,key,srcIndex,baseMerge,customizer,stack);}else{var newValue=customizer?customizer(safeGet(object,key),srcValue,key+'',object,source,stack):undefined;if(newValue===undefined){newValue=srcValue;}assignMergeValue(object,key,newValue);}},keysIn);}module.exports=baseMerge;},{\"./_Stack\":40,\"./_assignMergeValue\":50,\"./_baseFor\":58,\"./_baseMergeDeep\":69,\"./_safeGet\":131,\"./isObject\":153,\"./keysIn\":161}],69:[function(require,module,exports){var assignMergeValue=require('./_assignMergeValue'),cloneBuffer=require('./_cloneBuffer'),cloneTypedArray=require('./_cloneTypedArray'),copyArray=require('./_copyArray'),initCloneObject=require('./_initCloneObject'),isArguments=require('./isArguments'),isArray=require('./isArray'),isArrayLikeObject=require('./isArrayLikeObject'),isBuffer=require('./isBuffer'),isFunction=require('./isFunction'),isObject=require('./isObject'),isPlainObject=require('./isPlainObject'),isTypedArray=require('./isTypedArray'),safeGet=require('./_safeGet'),toPlainObject=require('./toPlainObject');/**\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 */function baseMergeDeep(object,source,key,srcIndex,mergeFunc,customizer,stack){var objValue=safeGet(object,key),srcValue=safeGet(source,key),stacked=stack.get(srcValue);if(stacked){assignMergeValue(object,key,stacked);return;}var newValue=customizer?customizer(objValue,srcValue,key+'',object,source,stack):undefined;var isCommon=newValue===undefined;if(isCommon){var isArr=isArray(srcValue),isBuff=!isArr&&isBuffer(srcValue),isTyped=!isArr&&!isBuff&&isTypedArray(srcValue);newValue=srcValue;if(isArr||isBuff||isTyped){if(isArray(objValue)){newValue=objValue;}else if(isArrayLikeObject(objValue)){newValue=copyArray(objValue);}else if(isBuff){isCommon=false;newValue=cloneBuffer(srcValue,true);}else if(isTyped){isCommon=false;newValue=cloneTypedArray(srcValue,true);}else{newValue=[];}}else if(isPlainObject(srcValue)||isArguments(srcValue)){newValue=objValue;if(isArguments(objValue)){newValue=toPlainObject(objValue);}else if(!isObject(objValue)||isFunction(objValue)){newValue=initCloneObject(srcValue);}}else{isCommon=false;}}if(isCommon){// Recursively merge objects and arrays (susceptible to call stack limits).\nstack.set(srcValue,newValue);mergeFunc(newValue,srcValue,srcIndex,customizer,stack);stack['delete'](srcValue);}assignMergeValue(object,key,newValue);}module.exports=baseMergeDeep;},{\"./_assignMergeValue\":50,\"./_cloneBuffer\":76,\"./_cloneTypedArray\":80,\"./_copyArray\":81,\"./_initCloneObject\":107,\"./_safeGet\":131,\"./isArguments\":145,\"./isArray\":146,\"./isArrayLikeObject\":148,\"./isBuffer\":149,\"./isFunction\":150,\"./isObject\":153,\"./isPlainObject\":155,\"./isTypedArray\":159,\"./toPlainObject\":165}],70:[function(require,module,exports){var identity=require('./identity'),overRest=require('./_overRest'),setToString=require('./_setToString');/**\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 */function baseRest(func,start){return setToString(overRest(func,start,identity),func+'');}module.exports=baseRest;},{\"./_overRest\":129,\"./_setToString\":132,\"./identity\":144}],71:[function(require,module,exports){var constant=require('./constant'),defineProperty=require('./_defineProperty'),identity=require('./identity');/**\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 */var baseSetToString=!defineProperty?identity:function(func,string){return defineProperty(func,'toString',{'configurable':true,'enumerable':false,'value':constant(string),'writable':true});};module.exports=baseSetToString;},{\"./_defineProperty\":88,\"./constant\":141,\"./identity\":144}],72:[function(require,module,exports){/**\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 */function baseTimes(n,iteratee){var index=-1,result=Array(n);while(++index<n){result[index]=iteratee(index);}return result;}module.exports=baseTimes;},{}],73:[function(require,module,exports){var _Symbol3=require('./_Symbol'),arrayMap=require('./_arrayMap'),isArray=require('./isArray'),isSymbol=require('./isSymbol');/** Used as references for various `Number` constants. */var INFINITY=1/0;/** Used to convert symbols to primitives and strings. */var symbolProto=_Symbol3?_Symbol3.prototype:undefined,symbolToString=symbolProto?symbolProto.toString:undefined;/**\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 */function baseToString(value){// Exit early for strings to avoid a performance hit in some environments.\nif(typeof value=='string'){return value;}if(isArray(value)){// Recursively convert values (susceptible to call stack limits).\nreturn arrayMap(value,baseToString)+'';}if(isSymbol(value)){return symbolToString?symbolToString.call(value):'';}var result=value+'';return result=='0'&&1/value==-INFINITY?'-0':result;}module.exports=baseToString;},{\"./_Symbol\":41,\"./_arrayMap\":48,\"./isArray\":146,\"./isSymbol\":158}],74:[function(require,module,exports){/**\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 */function baseUnary(func){return function(value){return func(value);};}module.exports=baseUnary;},{}],75:[function(require,module,exports){var Uint8Array=require('./_Uint8Array');/**\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 */function cloneArrayBuffer(arrayBuffer){var result=new arrayBuffer.constructor(arrayBuffer.byteLength);new Uint8Array(result).set(new Uint8Array(arrayBuffer));return result;}module.exports=cloneArrayBuffer;},{\"./_Uint8Array\":42}],76:[function(require,module,exports){var root=require('./_root');/** Detect free variable `exports`. */var freeExports=_typeof(exports)=='object'&&exports&&!exports.nodeType&&exports;/** Detect free variable `module`. */var freeModule=freeExports&&_typeof(module)=='object'&&module&&!module.nodeType&&module;/** Detect the popular CommonJS extension `module.exports`. */var moduleExports=freeModule&&freeModule.exports===freeExports;/** Built-in value references. */var Buffer=moduleExports?root.Buffer:undefined,allocUnsafe=Buffer?Buffer.allocUnsafe:undefined;/**\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 */function cloneBuffer(buffer,isDeep){if(isDeep){return buffer.slice();}var length=buffer.length,result=allocUnsafe?allocUnsafe(length):new buffer.constructor(length);buffer.copy(result);return result;}module.exports=cloneBuffer;},{\"./_root\":130}],77:[function(require,module,exports){var cloneArrayBuffer=require('./_cloneArrayBuffer');/**\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 */function cloneDataView(dataView,isDeep){var buffer=isDeep?cloneArrayBuffer(dataView.buffer):dataView.buffer;return new dataView.constructor(buffer,dataView.byteOffset,dataView.byteLength);}module.exports=cloneDataView;},{\"./_cloneArrayBuffer\":75}],78:[function(require,module,exports){/** Used to match `RegExp` flags from their coerced string values. */var reFlags=/\\w*$/;/**\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 */function cloneRegExp(regexp){var result=new regexp.constructor(regexp.source,reFlags.exec(regexp));result.lastIndex=regexp.lastIndex;return result;}module.exports=cloneRegExp;},{}],79:[function(require,module,exports){var _Symbol4=require('./_Symbol');/** Used to convert symbols to primitives and strings. */var symbolProto=_Symbol4?_Symbol4.prototype:undefined,symbolValueOf=symbolProto?symbolProto.valueOf:undefined;/**\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 */function cloneSymbol(symbol){return symbolValueOf?Object(symbolValueOf.call(symbol)):{};}module.exports=cloneSymbol;},{\"./_Symbol\":41}],80:[function(require,module,exports){var cloneArrayBuffer=require('./_cloneArrayBuffer');/**\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 */function cloneTypedArray(typedArray,isDeep){var buffer=isDeep?cloneArrayBuffer(typedArray.buffer):typedArray.buffer;return new typedArray.constructor(buffer,typedArray.byteOffset,typedArray.length);}module.exports=cloneTypedArray;},{\"./_cloneArrayBuffer\":75}],81:[function(require,module,exports){/**\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 */function copyArray(source,array){var index=-1,length=source.length;array||(array=Array(length));while(++index<length){array[index]=source[index];}return array;}module.exports=copyArray;},{}],82:[function(require,module,exports){var assignValue=require('./_assignValue'),baseAssignValue=require('./_baseAssignValue');/**\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 */function copyObject(source,props,object,customizer){var isNew=!object;object||(object={});var index=-1,length=props.length;while(++index<length){var key=props[index];var newValue=customizer?customizer(object[key],source[key],key,object,source):undefined;if(newValue===undefined){newValue=source[key];}if(isNew){baseAssignValue(object,key,newValue);}else{assignValue(object,key,newValue);}}return object;}module.exports=copyObject;},{\"./_assignValue\":51,\"./_baseAssignValue\":55}],83:[function(require,module,exports){var copyObject=require('./_copyObject'),getSymbols=require('./_getSymbols');/**\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 */function copySymbols(source,object){return copyObject(source,getSymbols(source),object);}module.exports=copySymbols;},{\"./_copyObject\":82,\"./_getSymbols\":96}],84:[function(require,module,exports){var copyObject=require('./_copyObject'),getSymbolsIn=require('./_getSymbolsIn');/**\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 */function copySymbolsIn(source,object){return copyObject(source,getSymbolsIn(source),object);}module.exports=copySymbolsIn;},{\"./_copyObject\":82,\"./_getSymbolsIn\":97}],85:[function(require,module,exports){var root=require('./_root');/** Used to detect overreaching core-js shims. */var coreJsData=root['__core-js_shared__'];module.exports=coreJsData;},{\"./_root\":130}],86:[function(require,module,exports){var baseRest=require('./_baseRest'),isIterateeCall=require('./_isIterateeCall');/**\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 */function createAssigner(assigner){return baseRest(function(object,sources){var index=-1,length=sources.length,customizer=length>1?sources[length-1]:undefined,guard=length>2?sources[2]:undefined;customizer=assigner.length>3&&typeof customizer=='function'?(length--,customizer):undefined;if(guard&&isIterateeCall(sources[0],sources[1],guard)){customizer=length<3?undefined:customizer;length=1;}object=Object(object);while(++index<length){var source=sources[index];if(source){assigner(object,source,index,customizer);}}return object;});}module.exports=createAssigner;},{\"./_baseRest\":70,\"./_isIterateeCall\":109}],87:[function(require,module,exports){/**\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 */function createBaseFor(fromRight){return function(object,iteratee,keysFunc){var index=-1,iterable=Object(object),props=keysFunc(object),length=props.length;while(length--){var key=props[fromRight?length:++index];if(iteratee(iterable[key],key,iterable)===false){break;}}return object;};}module.exports=createBaseFor;},{}],88:[function(require,module,exports){var getNative=require('./_getNative');var defineProperty=function(){try{var func=getNative(Object,'defineProperty');func({},'',{});return func;}catch(e){}}();module.exports=defineProperty;},{\"./_getNative\":93}],89:[function(require,module,exports){(function(global){/** Detect free variable `global` from Node.js. */var freeGlobal=_typeof(global)=='object'&&global&&global.Object===Object&&global;module.exports=freeGlobal;}).call(this,typeof global!==\"undefined\"?global:typeof self!==\"undefined\"?self:typeof window!==\"undefined\"?window:{});},{}],90:[function(require,module,exports){var baseGetAllKeys=require('./_baseGetAllKeys'),getSymbols=require('./_getSymbols'),keys=require('./keys');/**\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 */function getAllKeys(object){return baseGetAllKeys(object,keys,getSymbols);}module.exports=getAllKeys;},{\"./_baseGetAllKeys\":59,\"./_getSymbols\":96,\"./keys\":160}],91:[function(require,module,exports){var baseGetAllKeys=require('./_baseGetAllKeys'),getSymbolsIn=require('./_getSymbolsIn'),keysIn=require('./keysIn');/**\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 */function getAllKeysIn(object){return baseGetAllKeys(object,keysIn,getSymbolsIn);}module.exports=getAllKeysIn;},{\"./_baseGetAllKeys\":59,\"./_getSymbolsIn\":97,\"./keysIn\":161}],92:[function(require,module,exports){var isKeyable=require('./_isKeyable');/**\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 */function getMapData(map,key){var data=map.__data__;return isKeyable(key)?data[typeof key=='string'?'string':'hash']:data.map;}module.exports=getMapData;},{\"./_isKeyable\":110}],93:[function(require,module,exports){var baseIsNative=require('./_baseIsNative'),getValue=require('./_getValue');/**\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 */function getNative(object,key){var value=getValue(object,key);return baseIsNative(value)?value:undefined;}module.exports=getNative;},{\"./_baseIsNative\":63,\"./_getValue\":99}],94:[function(require,module,exports){var overArg=require('./_overArg');/** Built-in value references. */var getPrototype=overArg(Object.getPrototypeOf,Object);module.exports=getPrototype;},{\"./_overArg\":128}],95:[function(require,module,exports){var _Symbol5=require('./_Symbol');/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */var nativeObjectToString=objectProto.toString;/** Built-in value references. */var symToStringTag=_Symbol5?_Symbol5.toStringTag:undefined;/**\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 */function getRawTag(value){var isOwn=hasOwnProperty.call(value,symToStringTag),tag=value[symToStringTag];try{value[symToStringTag]=undefined;var unmasked=true;}catch(e){}var result=nativeObjectToString.call(value);if(unmasked){if(isOwn){value[symToStringTag]=tag;}else{delete value[symToStringTag];}}return result;}module.exports=getRawTag;},{\"./_Symbol\":41}],96:[function(require,module,exports){var arrayFilter=require('./_arrayFilter'),stubArray=require('./stubArray');/** Used for built-in method references. */var objectProto=Object.prototype;/** Built-in value references. */var propertyIsEnumerable=objectProto.propertyIsEnumerable;/* Built-in method references for those with the same name as other `lodash` methods. */var nativeGetSymbols=Object.getOwnPropertySymbols;/**\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 */var getSymbols=!nativeGetSymbols?stubArray:function(object){if(object==null){return[];}object=Object(object);return arrayFilter(nativeGetSymbols(object),function(symbol){return propertyIsEnumerable.call(object,symbol);});};module.exports=getSymbols;},{\"./_arrayFilter\":46,\"./stubArray\":163}],97:[function(require,module,exports){var arrayPush=require('./_arrayPush'),getPrototype=require('./_getPrototype'),getSymbols=require('./_getSymbols'),stubArray=require('./stubArray');/* Built-in method references for those with the same name as other `lodash` methods. */var nativeGetSymbols=Object.getOwnPropertySymbols;/**\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 */var getSymbolsIn=!nativeGetSymbols?stubArray:function(object){var result=[];while(object){arrayPush(result,getSymbols(object));object=getPrototype(object);}return result;};module.exports=getSymbolsIn;},{\"./_arrayPush\":49,\"./_getPrototype\":94,\"./_getSymbols\":96,\"./stubArray\":163}],98:[function(require,module,exports){var DataView=require('./_DataView'),Map=require('./_Map'),Promise=require('./_Promise'),Set=require('./_Set'),WeakMap=require('./_WeakMap'),baseGetTag=require('./_baseGetTag'),toSource=require('./_toSource');/** `Object#toString` result references. */var mapTag='[object Map]',objectTag='[object Object]',promiseTag='[object Promise]',setTag='[object Set]',weakMapTag='[object WeakMap]';var dataViewTag='[object DataView]';/** Used to detect maps, sets, and weakmaps. */var dataViewCtorString=toSource(DataView),mapCtorString=toSource(Map),promiseCtorString=toSource(Promise),setCtorString=toSource(Set),weakMapCtorString=toSource(WeakMap);/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */var getTag=baseGetTag;// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif(DataView&&getTag(new DataView(new ArrayBuffer(1)))!=dataViewTag||Map&&getTag(new Map())!=mapTag||Promise&&getTag(Promise.resolve())!=promiseTag||Set&&getTag(new Set())!=setTag||WeakMap&&getTag(new WeakMap())!=weakMapTag){getTag=function getTag(value){var result=baseGetTag(value),Ctor=result==objectTag?value.constructor:undefined,ctorString=Ctor?toSource(Ctor):'';if(ctorString){switch(ctorString){case dataViewCtorString:return dataViewTag;case mapCtorString:return mapTag;case promiseCtorString:return promiseTag;case setCtorString:return setTag;case weakMapCtorString:return weakMapTag;}}return result;};}module.exports=getTag;},{\"./_DataView\":33,\"./_Map\":36,\"./_Promise\":38,\"./_Set\":39,\"./_WeakMap\":43,\"./_baseGetTag\":60,\"./_toSource\":139}],99:[function(require,module,exports){/**\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 */function getValue(object,key){return object==null?undefined:object[key];}module.exports=getValue;},{}],100:[function(require,module,exports){var nativeCreate=require('./_nativeCreate');/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */function hashClear(){this.__data__=nativeCreate?nativeCreate(null):{};this.size=0;}module.exports=hashClear;},{\"./_nativeCreate\":123}],101:[function(require,module,exports){/**\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 */function hashDelete(key){var result=this.has(key)&&delete this.__data__[key];this.size-=result?1:0;return result;}module.exports=hashDelete;},{}],102:[function(require,module,exports){var nativeCreate=require('./_nativeCreate');/** Used to stand-in for `undefined` hash values. */var HASH_UNDEFINED='__lodash_hash_undefined__';/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/**\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 */function hashGet(key){var data=this.__data__;if(nativeCreate){var result=data[key];return result===HASH_UNDEFINED?undefined:result;}return hasOwnProperty.call(data,key)?data[key]:undefined;}module.exports=hashGet;},{\"./_nativeCreate\":123}],103:[function(require,module,exports){var nativeCreate=require('./_nativeCreate');/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/**\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 */function hashHas(key){var data=this.__data__;return nativeCreate?data[key]!==undefined:hasOwnProperty.call(data,key);}module.exports=hashHas;},{\"./_nativeCreate\":123}],104:[function(require,module,exports){var nativeCreate=require('./_nativeCreate');/** Used to stand-in for `undefined` hash values. */var HASH_UNDEFINED='__lodash_hash_undefined__';/**\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 */function hashSet(key,value){var data=this.__data__;this.size+=this.has(key)?0:1;data[key]=nativeCreate&&value===undefined?HASH_UNDEFINED:value;return this;}module.exports=hashSet;},{\"./_nativeCreate\":123}],105:[function(require,module,exports){/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */function initCloneArray(array){var length=array.length,result=new array.constructor(length);// Add properties assigned by `RegExp#exec`.\nif(length&&typeof array[0]=='string'&&hasOwnProperty.call(array,'index')){result.index=array.index;result.input=array.input;}return result;}module.exports=initCloneArray;},{}],106:[function(require,module,exports){var cloneArrayBuffer=require('./_cloneArrayBuffer'),cloneDataView=require('./_cloneDataView'),cloneRegExp=require('./_cloneRegExp'),cloneSymbol=require('./_cloneSymbol'),cloneTypedArray=require('./_cloneTypedArray');/** `Object#toString` result references. */var boolTag='[object Boolean]',dateTag='[object Date]',mapTag='[object Map]',numberTag='[object Number]',regexpTag='[object RegExp]',setTag='[object Set]',stringTag='[object String]',symbolTag='[object Symbol]';var arrayBufferTag='[object ArrayBuffer]',dataViewTag='[object DataView]',float32Tag='[object Float32Array]',float64Tag='[object Float64Array]',int8Tag='[object Int8Array]',int16Tag='[object Int16Array]',int32Tag='[object Int32Array]',uint8Tag='[object Uint8Array]',uint8ClampedTag='[object Uint8ClampedArray]',uint16Tag='[object Uint16Array]',uint32Tag='[object Uint32Array]';/**\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 */function initCloneByTag(object,tag,isDeep){var Ctor=object.constructor;switch(tag){case arrayBufferTag:return cloneArrayBuffer(object);case boolTag:case dateTag:return new Ctor(+object);case dataViewTag:return cloneDataView(object,isDeep);case float32Tag:case float64Tag:case int8Tag:case int16Tag:case int32Tag:case uint8Tag:case uint8ClampedTag:case uint16Tag:case uint32Tag:return cloneTypedArray(object,isDeep);case mapTag:return new Ctor();case numberTag:case stringTag:return new Ctor(object);case regexpTag:return cloneRegExp(object);case setTag:return new Ctor();case symbolTag:return cloneSymbol(object);}}module.exports=initCloneByTag;},{\"./_cloneArrayBuffer\":75,\"./_cloneDataView\":77,\"./_cloneRegExp\":78,\"./_cloneSymbol\":79,\"./_cloneTypedArray\":80}],107:[function(require,module,exports){var baseCreate=require('./_baseCreate'),getPrototype=require('./_getPrototype'),isPrototype=require('./_isPrototype');/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */function initCloneObject(object){return typeof object.constructor=='function'&&!isPrototype(object)?baseCreate(getPrototype(object)):{};}module.exports=initCloneObject;},{\"./_baseCreate\":57,\"./_getPrototype\":94,\"./_isPrototype\":112}],108:[function(require,module,exports){/** Used as references for various `Number` constants. */var MAX_SAFE_INTEGER=9007199254740991;/** Used to detect unsigned integer values. */var reIsUint=/^(?:0|[1-9]\\d*)$/;/**\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 */function isIndex(value,length){var type=_typeof(value);length=length==null?MAX_SAFE_INTEGER:length;return!!length&&(type=='number'||type!='symbol'&&reIsUint.test(value))&&value>-1&&value%1==0&&value<length;}module.exports=isIndex;},{}],109:[function(require,module,exports){var eq=require('./eq'),isArrayLike=require('./isArrayLike'),isIndex=require('./_isIndex'),isObject=require('./isObject');/**\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 */function isIterateeCall(value,index,object){if(!isObject(object)){return false;}var type=_typeof(index);if(type=='number'?isArrayLike(object)&&isIndex(index,object.length):type=='string'&&index in object){return eq(object[index],value);}return false;}module.exports=isIterateeCall;},{\"./_isIndex\":108,\"./eq\":142,\"./isArrayLike\":147,\"./isObject\":153}],110:[function(require,module,exports){/**\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 */function isKeyable(value){var type=_typeof(value);return type=='string'||type=='number'||type=='symbol'||type=='boolean'?value!=='__proto__':value===null;}module.exports=isKeyable;},{}],111:[function(require,module,exports){var coreJsData=require('./_coreJsData');/** Used to detect methods masquerading as native. */var maskSrcKey=function(){var uid=/[^.]+$/.exec(coreJsData&&coreJsData.keys&&coreJsData.keys.IE_PROTO||'');return uid?'Symbol(src)_1.'+uid:'';}();/**\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 */function isMasked(func){return!!maskSrcKey&&maskSrcKey in func;}module.exports=isMasked;},{\"./_coreJsData\":85}],112:[function(require,module,exports){/** Used for built-in method references. */var objectProto=Object.prototype;/**\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 */function isPrototype(value){var Ctor=value&&value.constructor,proto=typeof Ctor=='function'&&Ctor.prototype||objectProto;return value===proto;}module.exports=isPrototype;},{}],113:[function(require,module,exports){/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */function listCacheClear(){this.__data__=[];this.size=0;}module.exports=listCacheClear;},{}],114:[function(require,module,exports){var assocIndexOf=require('./_assocIndexOf');/** Used for built-in method references. */var arrayProto=Array.prototype;/** Built-in value references. */var splice=arrayProto.splice;/**\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 */function listCacheDelete(key){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){return false;}var lastIndex=data.length-1;if(index==lastIndex){data.pop();}else{splice.call(data,index,1);}--this.size;return true;}module.exports=listCacheDelete;},{\"./_assocIndexOf\":52}],115:[function(require,module,exports){var assocIndexOf=require('./_assocIndexOf');/**\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 */function listCacheGet(key){var data=this.__data__,index=assocIndexOf(data,key);return index<0?undefined:data[index][1];}module.exports=listCacheGet;},{\"./_assocIndexOf\":52}],116:[function(require,module,exports){var assocIndexOf=require('./_assocIndexOf');/**\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 */function listCacheHas(key){return assocIndexOf(this.__data__,key)>-1;}module.exports=listCacheHas;},{\"./_assocIndexOf\":52}],117:[function(require,module,exports){var assocIndexOf=require('./_assocIndexOf');/**\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 */function listCacheSet(key,value){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){++this.size;data.push([key,value]);}else{data[index][1]=value;}return this;}module.exports=listCacheSet;},{\"./_assocIndexOf\":52}],118:[function(require,module,exports){var Hash=require('./_Hash'),ListCache=require('./_ListCache'),Map=require('./_Map');/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */function mapCacheClear(){this.size=0;this.__data__={'hash':new Hash(),'map':new(Map||ListCache)(),'string':new Hash()};}module.exports=mapCacheClear;},{\"./_Hash\":34,\"./_ListCache\":35,\"./_Map\":36}],119:[function(require,module,exports){var getMapData=require('./_getMapData');/**\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 */function mapCacheDelete(key){var result=getMapData(this,key)['delete'](key);this.size-=result?1:0;return result;}module.exports=mapCacheDelete;},{\"./_getMapData\":92}],120:[function(require,module,exports){var getMapData=require('./_getMapData');/**\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 */function mapCacheGet(key){return getMapData(this,key).get(key);}module.exports=mapCacheGet;},{\"./_getMapData\":92}],121:[function(require,module,exports){var getMapData=require('./_getMapData');/**\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 */function mapCacheHas(key){return getMapData(this,key).has(key);}module.exports=mapCacheHas;},{\"./_getMapData\":92}],122:[function(require,module,exports){var getMapData=require('./_getMapData');/**\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 */function mapCacheSet(key,value){var data=getMapData(this,key),size=data.size;data.set(key,value);this.size+=data.size==size?0:1;return this;}module.exports=mapCacheSet;},{\"./_getMapData\":92}],123:[function(require,module,exports){var getNative=require('./_getNative');/* Built-in method references that are verified to be native. */var nativeCreate=getNative(Object,'create');module.exports=nativeCreate;},{\"./_getNative\":93}],124:[function(require,module,exports){var overArg=require('./_overArg');/* Built-in method references for those with the same name as other `lodash` methods. */var nativeKeys=overArg(Object.keys,Object);module.exports=nativeKeys;},{\"./_overArg\":128}],125:[function(require,module,exports){/**\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 */function nativeKeysIn(object){var result=[];if(object!=null){for(var key in Object(object)){result.push(key);}}return result;}module.exports=nativeKeysIn;},{}],126:[function(require,module,exports){var freeGlobal=require('./_freeGlobal');/** Detect free variable `exports`. */var freeExports=_typeof(exports)=='object'&&exports&&!exports.nodeType&&exports;/** Detect free variable `module`. */var freeModule=freeExports&&_typeof(module)=='object'&&module&&!module.nodeType&&module;/** Detect the popular CommonJS extension `module.exports`. */var moduleExports=freeModule&&freeModule.exports===freeExports;/** Detect free variable `process` from Node.js. */var freeProcess=moduleExports&&freeGlobal.process;/** Used to access faster Node.js helpers. */var nodeUtil=function(){try{// Use `util.types` for Node.js 10+.\nvar types=freeModule&&freeModule.require&&freeModule.require('util').types;if(types){return types;}// Legacy `process.binding('util')` for Node.js < 10.\nreturn freeProcess&&freeProcess.binding&&freeProcess.binding('util');}catch(e){}}();module.exports=nodeUtil;},{\"./_freeGlobal\":89}],127:[function(require,module,exports){/** Used for built-in method references. */var objectProto=Object.prototype;/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */var nativeObjectToString=objectProto.toString;/**\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 */function objectToString(value){return nativeObjectToString.call(value);}module.exports=objectToString;},{}],128:[function(require,module,exports){/**\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 */function overArg(func,transform){return function(arg){return func(transform(arg));};}module.exports=overArg;},{}],129:[function(require,module,exports){var apply=require('./_apply');/* Built-in method references for those with the same name as other `lodash` methods. */var nativeMax=Math.max;/**\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 */function overRest(func,start,transform){start=nativeMax(start===undefined?func.length-1:start,0);return function(){var args=arguments,index=-1,length=nativeMax(args.length-start,0),array=Array(length);while(++index<length){array[index]=args[start+index];}index=-1;var otherArgs=Array(start+1);while(++index<start){otherArgs[index]=args[index];}otherArgs[start]=transform(array);return apply(func,this,otherArgs);};}module.exports=overRest;},{\"./_apply\":44}],130:[function(require,module,exports){var freeGlobal=require('./_freeGlobal');/** Detect free variable `self`. */var freeSelf=(typeof self===\"undefined\"?\"undefined\":_typeof(self))=='object'&&self&&self.Object===Object&&self;/** Used as a reference to the global object. */var root=freeGlobal||freeSelf||Function('return this')();module.exports=root;},{\"./_freeGlobal\":89}],131:[function(require,module,exports){/**\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 */function safeGet(object,key){if(key==='constructor'&&typeof object[key]==='function'){return;}if(key=='__proto__'){return;}return object[key];}module.exports=safeGet;},{}],132:[function(require,module,exports){var baseSetToString=require('./_baseSetToString'),shortOut=require('./_shortOut');/**\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 */var setToString=shortOut(baseSetToString);module.exports=setToString;},{\"./_baseSetToString\":71,\"./_shortOut\":133}],133:[function(require,module,exports){/** Used to detect hot functions by number of calls within a span of milliseconds. */var HOT_COUNT=800,HOT_SPAN=16;/* Built-in method references for those with the same name as other `lodash` methods. */var nativeNow=Date.now;/**\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 */function shortOut(func){var count=0,lastCalled=0;return function(){var stamp=nativeNow(),remaining=HOT_SPAN-(stamp-lastCalled);lastCalled=stamp;if(remaining>0){if(++count>=HOT_COUNT){return arguments[0];}}else{count=0;}return func.apply(undefined,arguments);};}module.exports=shortOut;},{}],134:[function(require,module,exports){var ListCache=require('./_ListCache');/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */function stackClear(){this.__data__=new ListCache();this.size=0;}module.exports=stackClear;},{\"./_ListCache\":35}],135:[function(require,module,exports){/**\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 */function stackDelete(key){var data=this.__data__,result=data['delete'](key);this.size=data.size;return result;}module.exports=stackDelete;},{}],136:[function(require,module,exports){/**\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 */function stackGet(key){return this.__data__.get(key);}module.exports=stackGet;},{}],137:[function(require,module,exports){/**\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 */function stackHas(key){return this.__data__.has(key);}module.exports=stackHas;},{}],138:[function(require,module,exports){var ListCache=require('./_ListCache'),Map=require('./_Map'),MapCache=require('./_MapCache');/** Used as the size to enable large array optimizations. */var LARGE_ARRAY_SIZE=200;/**\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 */function stackSet(key,value){var data=this.__data__;if(data instanceof ListCache){var pairs=data.__data__;if(!Map||pairs.length<LARGE_ARRAY_SIZE-1){pairs.push([key,value]);this.size=++data.size;return this;}data=this.__data__=new MapCache(pairs);}data.set(key,value);this.size=data.size;return this;}module.exports=stackSet;},{\"./_ListCache\":35,\"./_Map\":36,\"./_MapCache\":37}],139:[function(require,module,exports){/** Used for built-in method references. */var funcProto=Function.prototype;/** Used to resolve the decompiled source of functions. */var funcToString=funcProto.toString;/**\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 */function toSource(func){if(func!=null){try{return funcToString.call(func);}catch(e){}try{return func+'';}catch(e){}}return'';}module.exports=toSource;},{}],140:[function(require,module,exports){var baseClone=require('./_baseClone');/** Used to compose bitmasks for cloning. */var CLONE_DEEP_FLAG=1,CLONE_SYMBOLS_FLAG=4;/**\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 */function cloneDeep(value){return baseClone(value,CLONE_DEEP_FLAG|CLONE_SYMBOLS_FLAG);}module.exports=cloneDeep;},{\"./_baseClone\":56}],141:[function(require,module,exports){/**\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 */function constant(value){return function(){return value;};}module.exports=constant;},{}],142:[function(require,module,exports){/**\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 */function eq(value,other){return value===other||value!==value&&other!==other;}module.exports=eq;},{}],143:[function(require,module,exports){var toString=require('./toString');/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */var reRegExpChar=/[\\\\^$.*+?()[\\]{}|]/g,reHasRegExpChar=RegExp(reRegExpChar.source);/**\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 */function escapeRegExp(string){string=toString(string);return string&&reHasRegExpChar.test(string)?string.replace(reRegExpChar,'\\\\$&'):string;}module.exports=escapeRegExp;},{\"./toString\":166}],144:[function(require,module,exports){/**\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 */function identity(value){return value;}module.exports=identity;},{}],145:[function(require,module,exports){var baseIsArguments=require('./_baseIsArguments'),isObjectLike=require('./isObjectLike');/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/** Built-in value references. */var propertyIsEnumerable=objectProto.propertyIsEnumerable;/**\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 */var isArguments=baseIsArguments(function(){return arguments;}())?baseIsArguments:function(value){return isObjectLike(value)&&hasOwnProperty.call(value,'callee')&&!propertyIsEnumerable.call(value,'callee');};module.exports=isArguments;},{\"./_baseIsArguments\":61,\"./isObjectLike\":154}],146:[function(require,module,exports){/**\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 */var isArray=Array.isArray;module.exports=isArray;},{}],147:[function(require,module,exports){var isFunction=require('./isFunction'),isLength=require('./isLength');/**\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 */function isArrayLike(value){return value!=null&&isLength(value.length)&&!isFunction(value);}module.exports=isArrayLike;},{\"./isFunction\":150,\"./isLength\":151}],148:[function(require,module,exports){var isArrayLike=require('./isArrayLike'),isObjectLike=require('./isObjectLike');/**\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 */function isArrayLikeObject(value){return isObjectLike(value)&&isArrayLike(value);}module.exports=isArrayLikeObject;},{\"./isArrayLike\":147,\"./isObjectLike\":154}],149:[function(require,module,exports){var root=require('./_root'),stubFalse=require('./stubFalse');/** Detect free variable `exports`. */var freeExports=_typeof(exports)=='object'&&exports&&!exports.nodeType&&exports;/** Detect free variable `module`. */var freeModule=freeExports&&_typeof(module)=='object'&&module&&!module.nodeType&&module;/** Detect the popular CommonJS extension `module.exports`. */var moduleExports=freeModule&&freeModule.exports===freeExports;/** Built-in value references. */var Buffer=moduleExports?root.Buffer:undefined;/* Built-in method references for those with the same name as other `lodash` methods. */var nativeIsBuffer=Buffer?Buffer.isBuffer:undefined;/**\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 */var isBuffer=nativeIsBuffer||stubFalse;module.exports=isBuffer;},{\"./_root\":130,\"./stubFalse\":164}],150:[function(require,module,exports){var baseGetTag=require('./_baseGetTag'),isObject=require('./isObject');/** `Object#toString` result references. */var asyncTag='[object AsyncFunction]',funcTag='[object Function]',genTag='[object GeneratorFunction]',proxyTag='[object Proxy]';/**\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 */function isFunction(value){if(!isObject(value)){return false;}// The use of `Object#toString` avoids issues with the `typeof` operator\n// in Safari 9 which returns 'object' for typed arrays and other constructors.\nvar tag=baseGetTag(value);return tag==funcTag||tag==genTag||tag==asyncTag||tag==proxyTag;}module.exports=isFunction;},{\"./_baseGetTag\":60,\"./isObject\":153}],151:[function(require,module,exports){/** Used as references for various `Number` constants. */var MAX_SAFE_INTEGER=9007199254740991;/**\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 */function isLength(value){return typeof value=='number'&&value>-1&&value%1==0&&value<=MAX_SAFE_INTEGER;}module.exports=isLength;},{}],152:[function(require,module,exports){var baseIsMap=require('./_baseIsMap'),baseUnary=require('./_baseUnary'),nodeUtil=require('./_nodeUtil');/* Node.js helper references. */var nodeIsMap=nodeUtil&&nodeUtil.isMap;/**\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 */var isMap=nodeIsMap?baseUnary(nodeIsMap):baseIsMap;module.exports=isMap;},{\"./_baseIsMap\":62,\"./_baseUnary\":74,\"./_nodeUtil\":126}],153:[function(require,module,exports){/**\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 */function isObject(value){var type=_typeof(value);return value!=null&&(type=='object'||type=='function');}module.exports=isObject;},{}],154:[function(require,module,exports){/**\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 */function isObjectLike(value){return value!=null&&_typeof(value)=='object';}module.exports=isObjectLike;},{}],155:[function(require,module,exports){var baseGetTag=require('./_baseGetTag'),getPrototype=require('./_getPrototype'),isObjectLike=require('./isObjectLike');/** `Object#toString` result references. */var objectTag='[object Object]';/** Used for built-in method references. */var funcProto=Function.prototype,objectProto=Object.prototype;/** Used to resolve the decompiled source of functions. */var funcToString=funcProto.toString;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/** Used to infer the `Object` constructor. */var objectCtorString=funcToString.call(Object);/**\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 */function isPlainObject(value){if(!isObjectLike(value)||baseGetTag(value)!=objectTag){return false;}var proto=getPrototype(value);if(proto===null){return true;}var Ctor=hasOwnProperty.call(proto,'constructor')&&proto.constructor;return typeof Ctor=='function'&&Ctor instanceof Ctor&&funcToString.call(Ctor)==objectCtorString;}module.exports=isPlainObject;},{\"./_baseGetTag\":60,\"./_getPrototype\":94,\"./isObjectLike\":154}],156:[function(require,module,exports){var baseIsSet=require('./_baseIsSet'),baseUnary=require('./_baseUnary'),nodeUtil=require('./_nodeUtil');/* Node.js helper references. */var nodeIsSet=nodeUtil&&nodeUtil.isSet;/**\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 */var isSet=nodeIsSet?baseUnary(nodeIsSet):baseIsSet;module.exports=isSet;},{\"./_baseIsSet\":64,\"./_baseUnary\":74,\"./_nodeUtil\":126}],157:[function(require,module,exports){var baseGetTag=require('./_baseGetTag'),isArray=require('./isArray'),isObjectLike=require('./isObjectLike');/** `Object#toString` result references. */var stringTag='[object String]';/**\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 */function isString(value){return typeof value=='string'||!isArray(value)&&isObjectLike(value)&&baseGetTag(value)==stringTag;}module.exports=isString;},{\"./_baseGetTag\":60,\"./isArray\":146,\"./isObjectLike\":154}],158:[function(require,module,exports){var baseGetTag=require('./_baseGetTag'),isObjectLike=require('./isObjectLike');/** `Object#toString` result references. */var symbolTag='[object Symbol]';/**\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 */function isSymbol(value){return _typeof(value)=='symbol'||isObjectLike(value)&&baseGetTag(value)==symbolTag;}module.exports=isSymbol;},{\"./_baseGetTag\":60,\"./isObjectLike\":154}],159:[function(require,module,exports){var baseIsTypedArray=require('./_baseIsTypedArray'),baseUnary=require('./_baseUnary'),nodeUtil=require('./_nodeUtil');/* Node.js helper references. */var nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray;/**\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 */var isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;module.exports=isTypedArray;},{\"./_baseIsTypedArray\":65,\"./_baseUnary\":74,\"./_nodeUtil\":126}],160:[function(require,module,exports){var arrayLikeKeys=require('./_arrayLikeKeys'),baseKeys=require('./_baseKeys'),isArrayLike=require('./isArrayLike');/**\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 */function keys(object){return isArrayLike(object)?arrayLikeKeys(object):baseKeys(object);}module.exports=keys;},{\"./_arrayLikeKeys\":47,\"./_baseKeys\":66,\"./isArrayLike\":147}],161:[function(require,module,exports){var arrayLikeKeys=require('./_arrayLikeKeys'),baseKeysIn=require('./_baseKeysIn'),isArrayLike=require('./isArrayLike');/**\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 */function keysIn(object){return isArrayLike(object)?arrayLikeKeys(object,true):baseKeysIn(object);}module.exports=keysIn;},{\"./_arrayLikeKeys\":47,\"./_baseKeysIn\":67,\"./isArrayLike\":147}],162:[function(require,module,exports){var baseMerge=require('./_baseMerge'),createAssigner=require('./_createAssigner');/**\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 */var mergeWith=createAssigner(function(object,source,srcIndex,customizer){baseMerge(object,source,srcIndex,customizer);});module.exports=mergeWith;},{\"./_baseMerge\":68,\"./_createAssigner\":86}],163:[function(require,module,exports){/**\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 */function stubArray(){return[];}module.exports=stubArray;},{}],164:[function(require,module,exports){/**\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 */function stubFalse(){return false;}module.exports=stubFalse;},{}],165:[function(require,module,exports){var copyObject=require('./_copyObject'),keysIn=require('./keysIn');/**\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 */function toPlainObject(value){return copyObject(value,keysIn(value));}module.exports=toPlainObject;},{\"./_copyObject\":82,\"./keysIn\":161}],166:[function(require,module,exports){var baseToString=require('./_baseToString');/**\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 */function toString(value){return value==null?'':baseToString(value);}module.exports=toString;},{\"./_baseToString\":73}],167:[function(require,module,exports){/**\n * Srcset Parser\n *\n * By Alex Bell |  MIT License\n *\n * JS Parser for the string value that appears in markup <img srcset=\"here\">\n *\n * @returns Array [{url: _, d: _, w: _, h:_}, ...]\n *\n * Based super duper closely on the reference algorithm at:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n *\n * Most comments are copied in directly from the spec\n * (except for comments in parens).\n */(function(root,factory){if(typeof define==='function'&&define.amd){// AMD. Register as an anonymous module.\ndefine([],factory);}else if(_typeof(module)==='object'&&module.exports){// Node. Does not work with strict CommonJS, but\n// only CommonJS-like environments that support module.exports,\n// like Node.\nmodule.exports=factory();}else{// Browser globals (root is window)\nroot.parseSrcset=factory();}})(this,function(){// 1. Let input be the value passed to this algorithm.\nreturn function(input){// UTILITY FUNCTIONS\n// Manual is faster than RegEx\n// http://bjorn.tipling.com/state-and-regular-expressions-in-javascript\n// http://jsperf.com/whitespace-character/5\nfunction isSpace(c){return c===\" \"||// space\nc===\"\\t\"||// horizontal tab\nc===\"\\n\"||// new line\nc===\"\\f\"||// form feed\nc===\"\\r\";// carriage return\n}function collectCharacters(regEx){var chars,match=regEx.exec(input.substring(pos));if(match){chars=match[0];pos+=chars.length;return chars;}}var inputLength=input.length,// (Don't use \\s, to avoid matching non-breaking space)\nregexLeadingSpaces=/^[ \\t\\n\\r\\u000c]+/,regexLeadingCommasOrSpaces=/^[, \\t\\n\\r\\u000c]+/,regexLeadingNotSpaces=/^[^ \\t\\n\\r\\u000c]+/,regexTrailingCommas=/[,]+$/,regexNonNegativeInteger=/^\\d+$/,// ( Positive or negative or unsigned integers or decimals, without or without exponents.\n// Must include at least one digit.\n// According to spec tests any decimal point must be followed by a digit.\n// No leading plus sign is allowed.)\n// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\nregexFloatingPoint=/^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,url,descriptors,currentDescriptor,state,c,// 2. Let position be a pointer into input, initially pointing at the start\n//    of the string.\npos=0,// 3. Let candidates be an initially empty source set.\ncandidates=[];// 4. Splitting loop: Collect a sequence of characters that are space\n//    characters or U+002C COMMA characters. If any U+002C COMMA characters\n//    were collected, that is a parse error.\nwhile(true){collectCharacters(regexLeadingCommasOrSpaces);// 5. If position is past the end of input, return candidates and abort these steps.\nif(pos>=inputLength){return candidates;// (we're done, this is the sole return path)\n}// 6. Collect a sequence of characters that are not space characters,\n//    and let that be url.\nurl=collectCharacters(regexLeadingNotSpaces);// 7. Let descriptors be a new empty list.\ndescriptors=[];// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n//         more than one character, that is a parse error.\nif(url.slice(-1)===\",\"){url=url.replace(regexTrailingCommas,\"\");// (Jump ahead to step 9 to skip tokenization and just push the candidate).\nparseDescriptors();//\tOtherwise, follow these substeps:\n}else{tokenize();}// (close else of step 8)\n// 16. Return to the step labeled splitting loop.\n}// (Close of big while loop.)\n/**\n\t\t * Tokenizes descriptor properties prior to parsing\n\t\t * Returns undefined.\n\t\t */function tokenize(){// 8.1. Descriptor tokeniser: Skip whitespace\ncollectCharacters(regexLeadingSpaces);// 8.2. Let current descriptor be the empty string.\ncurrentDescriptor=\"\";// 8.3. Let state be in descriptor.\nstate=\"in descriptor\";while(true){// 8.4. Let c be the character at position.\nc=input.charAt(pos);//  Do the following depending on the value of state.\n//  For the purpose of this step, \"EOF\" is a special character representing\n//  that position is past the end of input.\n// In descriptor\nif(state===\"in descriptor\"){// Do the following, depending on the value of c:\n// Space character\n// If current descriptor is not empty, append current descriptor to\n// descriptors and let current descriptor be the empty string.\n// Set state to after descriptor.\nif(isSpace(c)){if(currentDescriptor){descriptors.push(currentDescriptor);currentDescriptor=\"\";state=\"after descriptor\";}// U+002C COMMA (,)\n// Advance position to the next character in input. If current descriptor\n// is not empty, append current descriptor to descriptors. Jump to the step\n// labeled descriptor parser.\n}else if(c===\",\"){pos+=1;if(currentDescriptor){descriptors.push(currentDescriptor);}parseDescriptors();return;// U+0028 LEFT PARENTHESIS (()\n// Append c to current descriptor. Set state to in parens.\n}else if(c===\"(\"){currentDescriptor=currentDescriptor+c;state=\"in parens\";// EOF\n// If current descriptor is not empty, append current descriptor to\n// descriptors. Jump to the step labeled descriptor parser.\n}else if(c===\"\"){if(currentDescriptor){descriptors.push(currentDescriptor);}parseDescriptors();return;// Anything else\n// Append c to current descriptor.\n}else{currentDescriptor=currentDescriptor+c;}// (end \"in descriptor\"\n// In parens\n}else if(state===\"in parens\"){// U+0029 RIGHT PARENTHESIS ())\n// Append c to current descriptor. Set state to in descriptor.\nif(c===\")\"){currentDescriptor=currentDescriptor+c;state=\"in descriptor\";// EOF\n// Append current descriptor to descriptors. Jump to the step labeled\n// descriptor parser.\n}else if(c===\"\"){descriptors.push(currentDescriptor);parseDescriptors();return;// Anything else\n// Append c to current descriptor.\n}else{currentDescriptor=currentDescriptor+c;}// After descriptor\n}else if(state===\"after descriptor\"){// Do the following, depending on the value of c:\n// Space character: Stay in this state.\nif(isSpace(c)){// EOF: Jump to the step labeled descriptor parser.\n}else if(c===\"\"){parseDescriptors();return;// Anything else\n// Set state to in descriptor. Set position to the previous character in input.\n}else{state=\"in descriptor\";pos-=1;}}// Advance position to the next character in input.\npos+=1;// Repeat this step.\n}// (close while true loop)\n}/**\n\t\t * Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t * @return undefined\n\t\t */ // Declared outside of the while loop so that it's only created once.\nfunction parseDescriptors(){// 9. Descriptor parser: Let error be no.\nvar pError=false,// 10. Let width be absent.\n// 11. Let density be absent.\n// 12. Let future-compat-h be absent. (We're implementing it now as h)\nw,d,h,i,candidate={},desc,lastChar,value,intVal,floatVal;// 13. For each descriptor in descriptors, run the appropriate set of steps\n// from the following list:\nfor(i=0;i<descriptors.length;i++){desc=descriptors[i];lastChar=desc[desc.length-1];value=desc.substring(0,desc.length-1);intVal=parseInt(value,10);floatVal=parseFloat(value);// If the descriptor consists of a valid non-negative integer followed by\n// a U+0077 LATIN SMALL LETTER W character\nif(regexNonNegativeInteger.test(value)&&lastChar===\"w\"){// If width and density are not both absent, then let error be yes.\nif(w||d){pError=true;}// Apply the rules for parsing non-negative integers to the descriptor.\n// If the result is zero, let error be yes.\n// Otherwise, let width be the result.\nif(intVal===0){pError=true;}else{w=intVal;}// If the descriptor consists of a valid floating-point number followed by\n// a U+0078 LATIN SMALL LETTER X character\n}else if(regexFloatingPoint.test(value)&&lastChar===\"x\"){// If width, density and future-compat-h are not all absent, then let error\n// be yes.\nif(w||d||h){pError=true;}// Apply the rules for parsing floating-point number values to the descriptor.\n// If the result is less than zero, let error be yes. Otherwise, let density\n// be the result.\nif(floatVal<0){pError=true;}else{d=floatVal;}// If the descriptor consists of a valid non-negative integer followed by\n// a U+0068 LATIN SMALL LETTER H character\n}else if(regexNonNegativeInteger.test(value)&&lastChar===\"h\"){// If height and density are not both absent, then let error be yes.\nif(h||d){pError=true;}// Apply the rules for parsing non-negative integers to the descriptor.\n// If the result is zero, let error be yes. Otherwise, let future-compat-h\n// be the result.\nif(intVal===0){pError=true;}else{h=intVal;}// Anything else, Let error be yes.\n}else{pError=true;}}// (close step 13 for loop)\n// 15. If error is still no, then append a new image source to candidates whose\n// URL is url, associated with a width width if not absent and a pixel\n// density density if not absent. Otherwise, there is a parse error.\nif(!pError){candidate.url=url;if(w){candidate.w=w;}if(d){candidate.d=d;}if(h){candidate.h=h;}candidates.push(candidate);}else if(console&&console.log){console.log(\"Invalid srcset descriptor found in '\"+input+\"' at '\"+desc+\"'.\");}}// (close parseDescriptors fn)\n};});},{}],168:[function(require,module,exports){(function(process){// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\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// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts,allowAboveRoot){// if the path tries to go above the root, `up` ends up > 0\nvar up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==='.'){parts.splice(i,1);}else if(last==='..'){parts.splice(i,1);up++;}else if(up){parts.splice(i,1);up--;}}// if the path is allowed to go above the root, restore leading ..s\nif(allowAboveRoot){for(;up--;up){parts.unshift('..');}}return parts;}// path.resolve([from ...], to)\n// posix version\nexports.resolve=function(){var resolvedPath='',resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();// Skip empty and invalid entries\nif(typeof path!=='string'){throw new TypeError('Arguments to path.resolve must be strings');}else if(!path){continue;}resolvedPath=path+'/'+resolvedPath;resolvedAbsolute=path.charAt(0)==='/';}// 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// Normalize the path\nresolvedPath=normalizeArray(filter(resolvedPath.split('/'),function(p){return!!p;}),!resolvedAbsolute).join('/');return(resolvedAbsolute?'/':'')+resolvedPath||'.';};// path.normalize(path)\n// posix version\nexports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash=substr(path,-1)==='/';// Normalize the path\npath=normalizeArray(filter(path.split('/'),function(p){return!!p;}),!isAbsolute).join('/');if(!path&&!isAbsolute){path='.';}if(path&&trailingSlash){path+='/';}return(isAbsolute?'/':'')+path;};// posix version\nexports.isAbsolute=function(path){return path.charAt(0)==='/';};// posix version\nexports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if(typeof p!=='string'){throw new TypeError('Arguments to path.join must be strings');}return p;}).join('/'));};// path.relative(from, to)\n// posix version\nexports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=='')break;}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=='')break;}if(start>end)return[];return arr.slice(start,end-start+1);}var fromParts=trim(from.split('/'));var toParts=trim(to.split('/'));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break;}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push('..');}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join('/');};exports.sep='/';exports.delimiter=':';exports.dirname=function(path){if(typeof path!=='string')path=path+'';if(path.length===0)return'.';var code=path.charCodeAt(0);var hasRoot=code===47/*/*/;var end=-1;var matchedSlash=true;for(var i=path.length-1;i>=1;--i){code=path.charCodeAt(i);if(code===47/*/*/){if(!matchedSlash){end=i;break;}}else{// We saw the first non-path separator\nmatchedSlash=false;}}if(end===-1)return hasRoot?'/':'.';if(hasRoot&&end===1){// return '//';\n// Backwards-compat fix:\nreturn'/';}return path.slice(0,end);};function basename(path){if(typeof path!=='string')path=path+'';var start=0;var end=-1;var matchedSlash=true;var i;for(i=path.length-1;i>=0;--i){if(path.charCodeAt(i)===47/*/*/){// If we reached a path separator that was not part of a set of path\n// separators at the end of the string, stop now\nif(!matchedSlash){start=i+1;break;}}else if(end===-1){// We saw the first non-path separator, mark this as the end of our\n// path component\nmatchedSlash=false;end=i+1;}}if(end===-1)return'';return path.slice(start,end);}// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename=function(path,ext){var f=basename(path);if(ext&&f.substr(-1*ext.length)===ext){f=f.substr(0,f.length-ext.length);}return f;};exports.extname=function(path){if(typeof path!=='string')path=path+'';var startDot=-1;var startPart=0;var end=-1;var matchedSlash=true;// Track the state of characters (if any) we see before our first dot and\n// after any path separator we find\nvar preDotState=0;for(var i=path.length-1;i>=0;--i){var code=path.charCodeAt(i);if(code===47/*/*/){// If we reached a path separator that was not part of a set of path\n// separators at the end of the string, stop now\nif(!matchedSlash){startPart=i+1;break;}continue;}if(end===-1){// We saw the first non-path separator, mark this as the end of our\n// extension\nmatchedSlash=false;end=i+1;}if(code===46/*.*/){// If this is our first dot, mark it as the start of our extension\nif(startDot===-1)startDot=i;else if(preDotState!==1)preDotState=1;}else if(startDot!==-1){// We saw a non-dot and non-path separator before our dot, so we should\n// have a good chance at having a non-empty extension\npreDotState=-1;}}if(startDot===-1||end===-1||// We saw a non-dot character immediately before the dot\npreDotState===0||// The (right-most) trimmed path component is exactly '..'\npreDotState===1&&startDot===end-1&&startDot===startPart+1){return'';}return path.slice(startDot,end);};function filter(xs,f){if(xs.filter)return xs.filter(f);var res=[];for(var i=0;i<xs.length;i++){if(f(xs[i],i,xs))res.push(xs[i]);}return res;}// String.prototype.substr - negative index don't work in IE8\nvar substr='ab'.substr(-1)==='b'?function(str,start,len){return str.substr(start,len);}:function(str,start,len){if(start<0)start=str.length+start;return str.substr(start,len);};}).call(this,require('_process'));},{\"_process\":193}],169:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _container=_interopRequireDefault(require(\"./container\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass;}/**\n * Represents an at-rule.\n *\n * If it’s followed in the CSS by a {} block, this node will have\n * a nodes property representing its children.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('@charset \"UTF-8\"; @media print {}')\n *\n * const charset = root.first\n * charset.type  //=> 'atrule'\n * charset.nodes //=> undefined\n *\n * const media = root.last\n * media.nodes   //=> []\n */var AtRule=/*#__PURE__*/function(_Container){_inheritsLoose(AtRule,_Container);function AtRule(defaults){var _this;_this=_Container.call(this,defaults)||this;_this.type='atrule';return _this;}var _proto=AtRule.prototype;_proto.append=function append(){var _Container$prototype$;if(!this.nodes)this.nodes=[];for(var _len=arguments.length,children=new Array(_len),_key=0;_key<_len;_key++){children[_key]=arguments[_key];}return(_Container$prototype$=_Container.prototype.append).call.apply(_Container$prototype$,[this].concat(children));};_proto.prepend=function prepend(){var _Container$prototype$2;if(!this.nodes)this.nodes=[];for(var _len2=arguments.length,children=new Array(_len2),_key2=0;_key2<_len2;_key2++){children[_key2]=arguments[_key2];}return(_Container$prototype$2=_Container.prototype.prepend).call.apply(_Container$prototype$2,[this].concat(children));}/**\n   * @memberof AtRule#\n   * @member {string} name The at-rule’s name immediately follows the `@`.\n   *\n   * @example\n   * const root  = postcss.parse('@media print {}')\n   * media.name //=> 'media'\n   * const media = root.first\n   */ /**\n   * @memberof AtRule#\n   * @member {string} params The at-rule’s parameters, the values\n   *                         that follow the at-rule’s name but precede\n   *                         any {} block.\n   *\n   * @example\n   * const root  = postcss.parse('@media print, screen {}')\n   * const media = root.first\n   * media.params //=> 'print, screen'\n   */ /**\n   * @memberof AtRule#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                        node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node. It also stores `*`\n   *   and `_` symbols before the declaration (IE hack).\n   * * `after`: the space symbols after the last child of the node\n   *   to the end of the node.\n   * * `between`: the symbols between the property and value\n   *   for declarations, selector and `{` for rules, or last parameter\n   *   and `{` for at-rules.\n   * * `semicolon`: contains true if the last child has\n   *   an (optional) semicolon.\n   * * `afterName`: the space between the at-rule name and its parameters.\n   *\n   * PostCSS cleans at-rule parameters from comments and extra spaces,\n   * but it stores origin content in raws properties.\n   * As such, if you don’t change a declaration’s value,\n   * PostCSS will use the raw value with comments.\n   *\n   * @example\n   * const root = postcss.parse('  @media\\nprint {\\n}')\n   * root.first.first.raws //=> { before: '  ',\n   *                       //     between: ' ',\n   *                       //     afterName: '\\n',\n   *                       //     after: '\\n' }\n   */;return AtRule;}(_container[\"default\"]);var _default=AtRule;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./container\":171}],170:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _node=_interopRequireDefault(require(\"./node\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass;}/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */var Comment=/*#__PURE__*/function(_Node){_inheritsLoose(Comment,_Node);function Comment(defaults){var _this;_this=_Node.call(this,defaults)||this;_this.type='comment';return _this;}/**\n   * @memberof Comment#\n   * @member {string} text The comment’s text.\n   */ /**\n   * @memberof Comment#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node.\n   * * `left`: the space symbols between `/*` and the comment’s text.\n   * * `right`: the space symbols between the comment’s text.\n   */return Comment;}(_node[\"default\"]);var _default=Comment;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./node\":178}],171:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _declaration=_interopRequireDefault(require(\"./declaration\"));var _comment=_interopRequireDefault(require(\"./comment\"));var _node=_interopRequireDefault(require(\"./node\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _createForOfIteratorHelperLoose(o,allowArrayLike){var it;if(typeof Symbol===\"undefined\"||o[Symbol.iterator]==null){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length===\"number\"){if(it)o=it;var i=0;return function(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]};};}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}it=o[Symbol.iterator]();return it.next.bind(it);}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o===\"string\")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n===\"Object\"&&o.constructor)n=o.constructor.name;if(n===\"Map\"||n===\"Set\")return Array.from(o);if(n===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++){arr2[i]=arr[i];}return arr2;}function _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);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass;}function cleanSource(nodes){return nodes.map(function(i){if(i.nodes)i.nodes=cleanSource(i.nodes);delete i.source;return i;});}/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */var Container=/*#__PURE__*/function(_Node){_inheritsLoose(Container,_Node);function Container(){return _Node.apply(this,arguments)||this;}var _proto=Container.prototype;_proto.push=function push(child){child.parent=this;this.nodes.push(child);return this;}/**\n   * Iterates through the container’s immediate children,\n   * calling `callback` for each child.\n   *\n   * Returning `false` in the callback will break iteration.\n   *\n   * This method only iterates through the container’s immediate children.\n   * If you need to recursively iterate through all the container’s descendant\n   * nodes, use {@link Container#walk}.\n   *\n   * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n   * if you are mutating the array of child nodes during iteration.\n   * PostCSS will adjust the current index to match the mutations.\n   *\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black; z-index: 1 }')\n   * const rule = root.first\n   *\n   * for (const decl of rule.nodes) {\n   *   decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n   *   // Cycle will be infinite, because cloneBefore moves the current node\n   *   // to the next index\n   * }\n   *\n   * rule.each(decl => {\n   *   decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n   *   // Will be executed only for color and z-index\n   * })\n   */;_proto.each=function each(callback){if(!this.lastEach)this.lastEach=0;if(!this.indexes)this.indexes={};this.lastEach+=1;var id=this.lastEach;this.indexes[id]=0;if(!this.nodes)return undefined;var index,result;while(this.indexes[id]<this.nodes.length){index=this.indexes[id];result=callback(this.nodes[index],index);if(result===false)break;this.indexes[id]+=1;}delete this.indexes[id];return result;}/**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each node.\n   *\n   * Like container.each(), this method is safe to use\n   * if you are mutating arrays during iteration.\n   *\n   * If you only need to iterate through the container’s immediate children,\n   * use {@link Container#each}.\n   *\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walk(node => {\n   *   // Traverses all descendant nodes.\n   * })\n   */;_proto.walk=function walk(callback){return this.each(function(child,i){var result;try{result=callback(child,i);}catch(e){e.postcssNode=child;if(e.stack&&child.source&&/\\n\\s{4}at /.test(e.stack)){var s=child.source;e.stack=e.stack.replace(/\\n\\s{4}at /,\"$&\"+s.input.from+\":\"+s.start.line+\":\"+s.start.column+\"$&\");}throw e;}if(result!==false&&child.walk){result=child.walk(callback);}return result;});}/**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each declaration node.\n   *\n   * If you pass a filter, iteration will only happen over declarations\n   * with matching properties.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {string|RegExp} [prop]   String or regular expression\n   *                                 to filter declarations by property name.\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walkDecls(decl => {\n   *   checkPropertySupport(decl.prop)\n   * })\n   *\n   * root.walkDecls('border-radius', decl => {\n   *   decl.remove()\n   * })\n   *\n   * root.walkDecls(/^background/, decl => {\n   *   decl.value = takeFirstColorFromGradient(decl.value)\n   * })\n   */;_proto.walkDecls=function walkDecls(prop,callback){if(!callback){callback=prop;return this.walk(function(child,i){if(child.type==='decl'){return callback(child,i);}});}if(prop instanceof RegExp){return this.walk(function(child,i){if(child.type==='decl'&&prop.test(child.prop)){return callback(child,i);}});}return this.walk(function(child,i){if(child.type==='decl'&&child.prop===prop){return callback(child,i);}});}/**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each rule node.\n   *\n   * If you pass a filter, iteration will only happen over rules\n   * with matching selectors.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {string|RegExp} [selector] String or regular expression\n   *                                   to filter rules by selector.\n   * @param {childIterator} callback   Iterator receives each node and index.\n   *\n   * @return {false|undefined} returns `false` if iteration was broke.\n   *\n   * @example\n   * const selectors = []\n   * root.walkRules(rule => {\n   *   selectors.push(rule.selector)\n   * })\n   * console.log(`Your CSS uses ${ selectors.length } selectors`)\n   */;_proto.walkRules=function walkRules(selector,callback){if(!callback){callback=selector;return this.walk(function(child,i){if(child.type==='rule'){return callback(child,i);}});}if(selector instanceof RegExp){return this.walk(function(child,i){if(child.type==='rule'&&selector.test(child.selector)){return callback(child,i);}});}return this.walk(function(child,i){if(child.type==='rule'&&child.selector===selector){return callback(child,i);}});}/**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each at-rule node.\n   *\n   * If you pass a filter, iteration will only happen over at-rules\n   * that have matching names.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {string|RegExp} [name]   String or regular expression\n   *                                 to filter at-rules by name.\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walkAtRules(rule => {\n   *   if (isOld(rule.name)) rule.remove()\n   * })\n   *\n   * let first = false\n   * root.walkAtRules('charset', rule => {\n   *   if (!first) {\n   *     first = true\n   *   } else {\n   *     rule.remove()\n   *   }\n   * })\n   */;_proto.walkAtRules=function walkAtRules(name,callback){if(!callback){callback=name;return this.walk(function(child,i){if(child.type==='atrule'){return callback(child,i);}});}if(name instanceof RegExp){return this.walk(function(child,i){if(child.type==='atrule'&&name.test(child.name)){return callback(child,i);}});}return this.walk(function(child,i){if(child.type==='atrule'&&child.name===name){return callback(child,i);}});}/**\n   * Traverses the container’s descendant nodes, calling callback\n   * for each comment node.\n   *\n   * Like {@link Container#each}, this method is safe\n   * to use if you are mutating arrays during iteration.\n   *\n   * @param {childIterator} callback Iterator receives each node and index.\n   *\n   * @return {false|undefined} Returns `false` if iteration was broke.\n   *\n   * @example\n   * root.walkComments(comment => {\n   *   comment.remove()\n   * })\n   */;_proto.walkComments=function walkComments(callback){return this.walk(function(child,i){if(child.type==='comment'){return callback(child,i);}});}/**\n   * Inserts new nodes to the end of the container.\n   *\n   * @param {...(Node|object|string|Node[])} children New nodes.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n   * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n   * rule.append(decl1, decl2)\n   *\n   * root.append({ name: 'charset', params: '\"UTF-8\"' })  // at-rule\n   * root.append({ selector: 'a' })                       // rule\n   * rule.append({ prop: 'color', value: 'black' })       // declaration\n   * rule.append({ text: 'Comment' })                     // comment\n   *\n   * root.append('a {}')\n   * root.first.append('color: black; z-index: 1')\n   */;_proto.append=function append(){for(var _len=arguments.length,children=new Array(_len),_key=0;_key<_len;_key++){children[_key]=arguments[_key];}for(var _i=0,_children=children;_i<_children.length;_i++){var child=_children[_i];var nodes=this.normalize(child,this.last);for(var _iterator=_createForOfIteratorHelperLoose(nodes),_step;!(_step=_iterator()).done;){var node=_step.value;this.nodes.push(node);}}return this;}/**\n   * Inserts new nodes to the start of the container.\n   *\n   * @param {...(Node|object|string|Node[])} children New nodes.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n   * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n   * rule.prepend(decl1, decl2)\n   *\n   * root.append({ name: 'charset', params: '\"UTF-8\"' })  // at-rule\n   * root.append({ selector: 'a' })                       // rule\n   * rule.append({ prop: 'color', value: 'black' })       // declaration\n   * rule.append({ text: 'Comment' })                     // comment\n   *\n   * root.append('a {}')\n   * root.first.append('color: black; z-index: 1')\n   */;_proto.prepend=function prepend(){for(var _len2=arguments.length,children=new Array(_len2),_key2=0;_key2<_len2;_key2++){children[_key2]=arguments[_key2];}children=children.reverse();for(var _iterator2=_createForOfIteratorHelperLoose(children),_step2;!(_step2=_iterator2()).done;){var child=_step2.value;var nodes=this.normalize(child,this.first,'prepend').reverse();for(var _iterator3=_createForOfIteratorHelperLoose(nodes),_step3;!(_step3=_iterator3()).done;){var node=_step3.value;this.nodes.unshift(node);}for(var id in this.indexes){this.indexes[id]=this.indexes[id]+nodes.length;}}return this;};_proto.cleanRaws=function cleanRaws(keepBetween){_Node.prototype.cleanRaws.call(this,keepBetween);if(this.nodes){for(var _iterator4=_createForOfIteratorHelperLoose(this.nodes),_step4;!(_step4=_iterator4()).done;){var node=_step4.value;node.cleanRaws(keepBetween);}}}/**\n   * Insert new node before old node within the container.\n   *\n   * @param {Node|number} exist             Child or child’s index.\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))\n   */;_proto.insertBefore=function insertBefore(exist,add){exist=this.index(exist);var type=exist===0?'prepend':false;var nodes=this.normalize(add,this.nodes[exist],type).reverse();for(var _iterator5=_createForOfIteratorHelperLoose(nodes),_step5;!(_step5=_iterator5()).done;){var node=_step5.value;this.nodes.splice(exist,0,node);}var index;for(var id in this.indexes){index=this.indexes[id];if(exist<=index){this.indexes[id]=index+nodes.length;}}return this;}/**\n   * Insert new node after old node within the container.\n   *\n   * @param {Node|number} exist             Child or child’s index.\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   */;_proto.insertAfter=function insertAfter(exist,add){exist=this.index(exist);var nodes=this.normalize(add,this.nodes[exist]).reverse();for(var _iterator6=_createForOfIteratorHelperLoose(nodes),_step6;!(_step6=_iterator6()).done;){var node=_step6.value;this.nodes.splice(exist+1,0,node);}var index;for(var id in this.indexes){index=this.indexes[id];if(exist<index){this.indexes[id]=index+nodes.length;}}return this;}/**\n   * Removes node from the container and cleans the parent properties\n   * from the node and its children.\n   *\n   * @param {Node|number} child Child or child’s index.\n   *\n   * @return {Node} This node for methods chain\n   *\n   * @example\n   * rule.nodes.length  //=> 5\n   * rule.removeChild(decl)\n   * rule.nodes.length  //=> 4\n   * decl.parent        //=> undefined\n   */;_proto.removeChild=function removeChild(child){child=this.index(child);this.nodes[child].parent=undefined;this.nodes.splice(child,1);var index;for(var id in this.indexes){index=this.indexes[id];if(index>=child){this.indexes[id]=index-1;}}return this;}/**\n   * Removes all children from the container\n   * and cleans their parent properties.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * rule.removeAll()\n   * rule.nodes.length //=> 0\n   */;_proto.removeAll=function removeAll(){for(var _iterator7=_createForOfIteratorHelperLoose(this.nodes),_step7;!(_step7=_iterator7()).done;){var node=_step7.value;node.parent=undefined;}this.nodes=[];return this;}/**\n   * Passes all declaration values within the container that match pattern\n   * through callback, replacing those values with the returned result\n   * of callback.\n   *\n   * This method is useful if you are using a custom unit or function\n   * and need to iterate through all values.\n   *\n   * @param {string|RegExp} pattern      Replace pattern.\n   * @param {object} opts                Options to speed up the search.\n   * @param {string|string[]} opts.props An array of property names.\n   * @param {string} opts.fast           String that’s used to narrow down\n   *                                     values and speed up the regexp search.\n   * @param {function|string} callback   String to replace pattern or callback\n   *                                     that returns a new value. The callback\n   *                                     will receive the same arguments\n   *                                     as those passed to a function parameter\n   *                                     of `String#replace`.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n   *   return 15 * parseInt(string) + 'px'\n   * })\n   */;_proto.replaceValues=function replaceValues(pattern,opts,callback){if(!callback){callback=opts;opts={};}this.walkDecls(function(decl){if(opts.props&&opts.props.indexOf(decl.prop)===-1)return;if(opts.fast&&decl.value.indexOf(opts.fast)===-1)return;decl.value=decl.value.replace(pattern,callback);});return this;}/**\n   * Returns `true` if callback returns `true`\n   * for all of the container’s children.\n   *\n   * @param {childCondition} condition Iterator returns true or false.\n   *\n   * @return {boolean} Is every child pass condition.\n   *\n   * @example\n   * const noPrefixes = rule.every(i => i.prop[0] !== '-')\n   */;_proto.every=function every(condition){return this.nodes.every(condition);}/**\n   * Returns `true` if callback returns `true` for (at least) one\n   * of the container’s children.\n   *\n   * @param {childCondition} condition Iterator returns true or false.\n   *\n   * @return {boolean} Is some child pass condition.\n   *\n   * @example\n   * const hasPrefix = rule.some(i => i.prop[0] === '-')\n   */;_proto.some=function some(condition){return this.nodes.some(condition);}/**\n   * Returns a `child`’s index within the {@link Container#nodes} array.\n   *\n   * @param {Node} child Child of the current container.\n   *\n   * @return {number} Child index.\n   *\n   * @example\n   * rule.index( rule.nodes[2] ) //=> 2\n   */;_proto.index=function index(child){if(typeof child==='number'){return child;}return this.nodes.indexOf(child);}/**\n   * The container’s first child.\n   *\n   * @type {Node}\n   *\n   * @example\n   * rule.first === rules.nodes[0]\n   */;_proto.normalize=function normalize(nodes,sample){var _this=this;if(typeof nodes==='string'){var parse=require('./parse');nodes=cleanSource(parse(nodes).nodes);}else if(Array.isArray(nodes)){nodes=nodes.slice(0);for(var _iterator8=_createForOfIteratorHelperLoose(nodes),_step8;!(_step8=_iterator8()).done;){var i=_step8.value;if(i.parent)i.parent.removeChild(i,'ignore');}}else if(nodes.type==='root'){nodes=nodes.nodes.slice(0);for(var _iterator9=_createForOfIteratorHelperLoose(nodes),_step9;!(_step9=_iterator9()).done;){var _i2=_step9.value;if(_i2.parent)_i2.parent.removeChild(_i2,'ignore');}}else if(nodes.type){nodes=[nodes];}else if(nodes.prop){if(typeof nodes.value==='undefined'){throw new Error('Value field is missed in node creation');}else if(typeof nodes.value!=='string'){nodes.value=String(nodes.value);}nodes=[new _declaration[\"default\"](nodes)];}else if(nodes.selector){var Rule=require('./rule');nodes=[new Rule(nodes)];}else if(nodes.name){var AtRule=require('./at-rule');nodes=[new AtRule(nodes)];}else if(nodes.text){nodes=[new _comment[\"default\"](nodes)];}else{throw new Error('Unknown node type in node creation');}var processed=nodes.map(function(i){if(i.parent)i.parent.removeChild(i);if(typeof i.raws.before==='undefined'){if(sample&&typeof sample.raws.before!=='undefined'){i.raws.before=sample.raws.before.replace(/[^\\s]/g,'');}}i.parent=_this;return i;});return processed;}/**\n   * @memberof Container#\n   * @member {Node[]} nodes An array containing the container’s children.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black }')\n   * root.nodes.length           //=> 1\n   * root.nodes[0].selector      //=> 'a'\n   * root.nodes[0].nodes[0].prop //=> 'color'\n   */;_createClass(Container,[{key:\"first\",get:function get(){if(!this.nodes)return undefined;return this.nodes[0];}/**\n     * The container’s last child.\n     *\n     * @type {Node}\n     *\n     * @example\n     * rule.last === rule.nodes[rule.nodes.length - 1]\n     */},{key:\"last\",get:function get(){if(!this.nodes)return undefined;return this.nodes[this.nodes.length-1];}}]);return Container;}(_node[\"default\"]);var _default=Container;/**\n * @callback childCondition\n * @param {Node} node    Container child.\n * @param {number} index Child index.\n * @param {Node[]} nodes All container children.\n * @return {boolean}\n */ /**\n * @callback childIterator\n * @param {Node} node    Container child.\n * @param {number} index Child index.\n * @return {false|undefined} Returning `false` will break iteration.\n */exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./at-rule\":169,\"./comment\":170,\"./declaration\":173,\"./node\":178,\"./parse\":179,\"./rule\":186}],172:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _supportsColor=_interopRequireDefault(require(\"supports-color\"));var _chalk=_interopRequireDefault(require(\"chalk\"));var _terminalHighlight=_interopRequireDefault(require(\"./terminal-highlight\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");}return self;}function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass;}function _wrapNativeSuper(Class){var _cache=typeof Map===\"function\"?new Map():undefined;_wrapNativeSuper=function _wrapNativeSuper(Class){if(Class===null||!_isNativeFunction(Class))return Class;if(typeof Class!==\"function\"){throw new TypeError(\"Super expression must either be null or a function\");}if(typeof _cache!==\"undefined\"){if(_cache.has(Class))return _cache.get(Class);_cache.set(Class,Wrapper);}function Wrapper(){return _construct(Class,arguments,_getPrototypeOf(this).constructor);}Wrapper.prototype=Object.create(Class.prototype,{constructor:{value:Wrapper,enumerable:false,writable:true,configurable:true}});return _setPrototypeOf(Wrapper,Class);};return _wrapNativeSuper(Class);}function _construct(Parent,args,Class){if(_isNativeReflectConstruct()){_construct=Reflect.construct;}else{_construct=function _construct(Parent,args,Class){var a=[null];a.push.apply(a,args);var Constructor=Function.bind.apply(Parent,a);var instance=new Constructor();if(Class)_setPrototypeOf(instance,Class.prototype);return instance;};}return _construct.apply(null,arguments);}function _isNativeReflectConstruct(){if(typeof Reflect===\"undefined\"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy===\"function\")return true;try{Date.prototype.toString.call(Reflect.construct(Date,[],function(){}));return true;}catch(e){return false;}}function _isNativeFunction(fn){return Function.toString.call(fn).indexOf(\"[native code]\")!==-1;}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n *   postcss.parse('a{')\n * } catch (error) {\n *   if (error.name === 'CssSyntaxError') {\n *     error //=> CssSyntaxError\n *   }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' })\n */var CssSyntaxError=/*#__PURE__*/function(_Error){_inheritsLoose(CssSyntaxError,_Error);/**\n   * @param {string} message  Error message.\n   * @param {number} [line]   Source line of the error.\n   * @param {number} [column] Source column of the error.\n   * @param {string} [source] Source code of the broken file.\n   * @param {string} [file]   Absolute path to the broken file.\n   * @param {string} [plugin] PostCSS plugin name, if error came from plugin.\n   */function CssSyntaxError(message,line,column,source,file,plugin){var _this;_this=_Error.call(this,message)||this;/**\n     * Always equal to `'CssSyntaxError'`. You should always check error type\n     * by `error.name === 'CssSyntaxError'`\n     * instead of `error instanceof CssSyntaxError`,\n     * because npm could have several PostCSS versions.\n     *\n     * @type {string}\n     *\n     * @example\n     * if (error.name === 'CssSyntaxError') {\n     *   error //=> CssSyntaxError\n     * }\n     */_this.name='CssSyntaxError';/**\n     * Error message.\n     *\n     * @type {string}\n     *\n     * @example\n     * error.message //=> 'Unclosed block'\n     */_this.reason=message;if(file){/**\n       * Absolute path to the broken file.\n       *\n       * @type {string}\n       *\n       * @example\n       * error.file       //=> 'a.sass'\n       * error.input.file //=> 'a.css'\n       */_this.file=file;}if(source){/**\n       * Source code of the broken file.\n       *\n       * @type {string}\n       *\n       * @example\n       * error.source       //=> 'a { b {} }'\n       * error.input.column //=> 'a b { }'\n       */_this.source=source;}if(plugin){/**\n       * Plugin name, if error came from plugin.\n       *\n       * @type {string}\n       *\n       * @example\n       * error.plugin //=> 'postcss-vars'\n       */_this.plugin=plugin;}if(typeof line!=='undefined'&&typeof column!=='undefined'){/**\n       * Source line of the error.\n       *\n       * @type {number}\n       *\n       * @example\n       * error.line       //=> 2\n       * error.input.line //=> 4\n       */_this.line=line;/**\n       * Source column of the error.\n       *\n       * @type {number}\n       *\n       * @example\n       * error.column       //=> 1\n       * error.input.column //=> 4\n       */_this.column=column;}_this.setMessage();if(Error.captureStackTrace){Error.captureStackTrace(_assertThisInitialized(_this),CssSyntaxError);}return _this;}var _proto=CssSyntaxError.prototype;_proto.setMessage=function setMessage(){/**\n     * Full error text in the GNU error format\n     * with plugin, file, line and column.\n     *\n     * @type {string}\n     *\n     * @example\n     * error.message //=> 'a.css:1:1: Unclosed block'\n     */this.message=this.plugin?this.plugin+': ':'';this.message+=this.file?this.file:'<css input>';if(typeof this.line!=='undefined'){this.message+=':'+this.line+':'+this.column;}this.message+=': '+this.reason;}/**\n   * Returns a few lines of CSS source that caused the error.\n   *\n   * If the CSS has an input source map without `sourceContent`,\n   * this method will return an empty string.\n   *\n   * @param {boolean} [color] Whether arrow will be colored red by terminal\n   *                          color codes. By default, PostCSS will detect\n   *                          color support by `process.stdout.isTTY`\n   *                          and `process.env.NODE_DISABLE_COLORS`.\n   *\n   * @example\n   * error.showSourceCode() //=> \"  4 | }\n   *                        //      5 | a {\n   *                        //    > 6 |   bad\n   *                        //        |   ^\n   *                        //      7 | }\n   *                        //      8 | b {\"\n   *\n   * @return {string} Few lines of CSS source that caused the error.\n   */;_proto.showSourceCode=function showSourceCode(color){var _this2=this;if(!this.source)return'';var css=this.source;if(_terminalHighlight[\"default\"]){if(typeof color==='undefined')color=_supportsColor[\"default\"].stdout;if(color)css=(0,_terminalHighlight[\"default\"])(css);}var lines=css.split(/\\r?\\n/);var start=Math.max(this.line-3,0);var end=Math.min(this.line+2,lines.length);var maxWidth=String(end).length;function mark(text){if(color&&_chalk[\"default\"].red){return _chalk[\"default\"].red.bold(text);}return text;}function aside(text){if(color&&_chalk[\"default\"].gray){return _chalk[\"default\"].gray(text);}return text;}return lines.slice(start,end).map(function(line,index){var number=start+1+index;var gutter=' '+(' '+number).slice(-maxWidth)+' | ';if(number===_this2.line){var spacing=aside(gutter.replace(/\\d/g,' '))+line.slice(0,_this2.column-1).replace(/[^\\t]/g,' ');return mark('>')+aside(gutter)+line+'\\n '+spacing+mark('^');}return' '+aside(gutter)+line;}).join('\\n');}/**\n   * Returns error position, message and source code of the broken part.\n   *\n   * @example\n   * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n   *                  //    > 1 | a {\n   *                  //        | ^\"\n   *\n   * @return {string} Error position, message and source code.\n   */;_proto.toString=function toString(){var code=this.showSourceCode();if(code){code='\\n\\n'+code+'\\n';}return this.name+': '+this.message+code;}/**\n   * @memberof CssSyntaxError#\n   * @member {Input} input Input object with PostCSS internal information\n   *                       about input file. If input has source map\n   *                       from previous tool, PostCSS will use origin\n   *                       (for example, Sass) source. You can use this\n   *                       object to get PostCSS input source.\n   *\n   * @example\n   * error.input.file //=> 'a.css'\n   * error.file       //=> 'a.sass'\n   */;return CssSyntaxError;}(/*#__PURE__*/_wrapNativeSuper(Error));var _default=CssSyntaxError;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./terminal-highlight\":2,\"chalk\":2,\"supports-color\":2}],173:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _node=_interopRequireDefault(require(\"./node\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass;}/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.type       //=> 'decl'\n * decl.toString() //=> ' color: black'\n */var Declaration=/*#__PURE__*/function(_Node){_inheritsLoose(Declaration,_Node);function Declaration(defaults){var _this;_this=_Node.call(this,defaults)||this;_this.type='decl';return _this;}/**\n   * @memberof Declaration#\n   * @member {string} prop The declaration’s property name.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black }')\n   * const decl = root.first.first\n   * decl.prop //=> 'color'\n   */ /**\n   * @memberof Declaration#\n   * @member {string} value The declaration’s value.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black }')\n   * const decl = root.first.first\n   * decl.value //=> 'black'\n   */ /**\n   * @memberof Declaration#\n   * @member {boolean} important `true` if the declaration\n   *                             has an !important annotation.\n   *\n   * @example\n   * const root = postcss.parse('a { color: black !important; color: red }')\n   * root.first.first.important //=> true\n   * root.first.last.important  //=> undefined\n   */ /**\n   * @memberof Declaration#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node. It also stores `*`\n   *   and `_` symbols before the declaration (IE hack).\n   * * `between`: the symbols between the property and value\n   *   for declarations.\n   * * `important`: the content of the important statement,\n   *   if it is not just `!important`.\n   *\n   * PostCSS cleans declaration from comments and extra spaces,\n   * but it stores origin content in raws properties.\n   * As such, if you don’t change a declaration’s value,\n   * PostCSS will use the raw value with comments.\n   *\n   * @example\n   * const root = postcss.parse('a {\\n  color:black\\n}')\n   * root.first.first.raws //=> { before: '\\n  ', between: ':' }\n   */return Declaration;}(_node[\"default\"]);var _default=Declaration;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./node\":178}],174:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _path=_interopRequireDefault(require(\"path\"));var _cssSyntaxError=_interopRequireDefault(require(\"./css-syntax-error\"));var _previousMap=_interopRequireDefault(require(\"./previous-map\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _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);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}var sequence=0;/**\n * Represents the source CSS.\n *\n * @example\n * const root  = postcss.parse(css, { from: file })\n * const input = root.source.input\n */var Input=/*#__PURE__*/function(){/**\n   * @param {string} css    Input CSS source.\n   * @param {object} [opts] {@link Processor#process} options.\n   */function Input(css,opts){if(opts===void 0){opts={};}if(css===null||typeof css==='undefined'||_typeof(css)==='object'&&!css.toString){throw new Error(\"PostCSS received \"+css+\" instead of CSS string\");}/**\n     * Input CSS source\n     *\n     * @type {string}\n     *\n     * @example\n     * const input = postcss.parse('a{}', { from: file }).input\n     * input.css //=> \"a{}\"\n     */this.css=css.toString();if(this.css[0]===\"\\uFEFF\"||this.css[0]===\"\\uFFFE\"){this.hasBOM=true;this.css=this.css.slice(1);}else{this.hasBOM=false;}if(opts.from){if(/^\\w+:\\/\\//.test(opts.from)||_path[\"default\"].isAbsolute(opts.from)){/**\n         * The absolute path to the CSS source file defined\n         * with the `from` option.\n         *\n         * @type {string}\n         *\n         * @example\n         * const root = postcss.parse(css, { from: 'a.css' })\n         * root.source.input.file //=> '/home/ai/a.css'\n         */this.file=opts.from;}else{this.file=_path[\"default\"].resolve(opts.from);}}var map=new _previousMap[\"default\"](this.css,opts);if(map.text){/**\n       * The input source map passed from a compilation step before PostCSS\n       * (for example, from Sass compiler).\n       *\n       * @type {PreviousMap}\n       *\n       * @example\n       * root.source.input.map.consumer().sources //=> ['a.sass']\n       */this.map=map;var file=map.consumer().file;if(!this.file&&file)this.file=this.mapResolve(file);}if(!this.file){sequence+=1;/**\n       * The unique ID of the CSS source. It will be created if `from` option\n       * is not provided (because PostCSS does not know the file path).\n       *\n       * @type {string}\n       *\n       * @example\n       * const root = postcss.parse(css)\n       * root.source.input.file //=> undefined\n       * root.source.input.id   //=> \"<input css 1>\"\n       */this.id='<input css '+sequence+'>';}if(this.map)this.map.file=this.from;}var _proto=Input.prototype;_proto.error=function error(message,line,column,opts){if(opts===void 0){opts={};}var result;var origin=this.origin(line,column);if(origin){result=new _cssSyntaxError[\"default\"](message,origin.line,origin.column,origin.source,origin.file,opts.plugin);}else{result=new _cssSyntaxError[\"default\"](message,line,column,this.css,this.file,opts.plugin);}result.input={line:line,column:column,source:this.css};if(this.file)result.input.file=this.file;return result;}/**\n   * Reads the input source map and returns a symbol position\n   * in the input source (e.g., in a Sass file that was compiled\n   * to CSS before being passed to PostCSS).\n   *\n   * @param {number} line   Line in input CSS.\n   * @param {number} column Column in input CSS.\n   *\n   * @return {filePosition} Position in input source.\n   *\n   * @example\n   * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }\n   */;_proto.origin=function origin(line,column){if(!this.map)return false;var consumer=this.map.consumer();var from=consumer.originalPositionFor({line:line,column:column});if(!from.source)return false;var result={file:this.mapResolve(from.source),line:from.line,column:from.column};var source=consumer.sourceContentFor(from.source);if(source)result.source=source;return result;};_proto.mapResolve=function mapResolve(file){if(/^\\w+:\\/\\//.test(file)){return file;}return _path[\"default\"].resolve(this.map.consumer().sourceRoot||'.',file);}/**\n   * The CSS source identifier. Contains {@link Input#file} if the user\n   * set the `from` option, or {@link Input#id} if they did not.\n   *\n   * @type {string}\n   *\n   * @example\n   * const root = postcss.parse(css, { from: 'a.css' })\n   * root.source.input.from //=> \"/home/ai/a.css\"\n   *\n   * const root = postcss.parse(css)\n   * root.source.input.from //=> \"<input css 1>\"\n   */;_createClass(Input,[{key:\"from\",get:function get(){return this.file||this.id;}}]);return Input;}();var _default=Input;/**\n * @typedef  {object} filePosition\n * @property {string} file   Path to file.\n * @property {number} line   Source line in file.\n * @property {number} column Source column in file.\n */exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./css-syntax-error\":172,\"./previous-map\":182,\"path\":168}],175:[function(require,module,exports){(function(process){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _mapGenerator=_interopRequireDefault(require(\"./map-generator\"));var _stringify2=_interopRequireDefault(require(\"./stringify\"));var _warnOnce=_interopRequireDefault(require(\"./warn-once\"));var _result=_interopRequireDefault(require(\"./result\"));var _parse=_interopRequireDefault(require(\"./parse\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _createForOfIteratorHelperLoose(o,allowArrayLike){var it;if(typeof Symbol===\"undefined\"||o[Symbol.iterator]==null){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length===\"number\"){if(it)o=it;var i=0;return function(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]};};}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}it=o[Symbol.iterator]();return it.next.bind(it);}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o===\"string\")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n===\"Object\"&&o.constructor)n=o.constructor.name;if(n===\"Map\"||n===\"Set\")return Array.from(o);if(n===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++){arr2[i]=arr[i];}return arr2;}function _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);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function isPromise(obj){return _typeof(obj)==='object'&&typeof obj.then==='function';}/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([autoprefixer]).process(css)\n */var LazyResult=/*#__PURE__*/function(){function LazyResult(processor,css,opts){this.stringified=false;this.processed=false;var root;if(_typeof(css)==='object'&&css!==null&&css.type==='root'){root=css;}else if(css instanceof LazyResult||css instanceof _result[\"default\"]){root=css.root;if(css.map){if(typeof opts.map==='undefined')opts.map={};if(!opts.map.inline)opts.map.inline=false;opts.map.prev=css.map;}}else{var parser=_parse[\"default\"];if(opts.syntax)parser=opts.syntax.parse;if(opts.parser)parser=opts.parser;if(parser.parse)parser=parser.parse;try{root=parser(css,opts);}catch(error){this.error=error;}}this.result=new _result[\"default\"](processor,root,opts);}/**\n   * Returns a {@link Processor} instance, which will be used\n   * for CSS transformations.\n   *\n   * @type {Processor}\n   */var _proto=LazyResult.prototype;/**\n   * Processes input CSS through synchronous plugins\n   * and calls {@link Result#warnings()}.\n   *\n   * @return {Warning[]} Warnings from plugins.\n   */_proto.warnings=function warnings(){return this.sync().warnings();}/**\n   * Alias for the {@link LazyResult#css} property.\n   *\n   * @example\n   * lazy + '' === lazy.css\n   *\n   * @return {string} Output CSS.\n   */;_proto.toString=function toString(){return this.css;}/**\n   * Processes input CSS through synchronous and asynchronous plugins\n   * and calls `onFulfilled` with a Result instance. If a plugin throws\n   * an error, the `onRejected` callback will be executed.\n   *\n   * It implements standard Promise API.\n   *\n   * @param {onFulfilled} onFulfilled Callback will be executed\n   *                                  when all plugins will finish work.\n   * @param {onRejected}  onRejected  Callback will be executed on any error.\n   *\n   * @return {Promise} Promise API to make queue.\n   *\n   * @example\n   * postcss([autoprefixer]).process(css, { from: cssPath }).then(result => {\n   *   console.log(result.css)\n   * })\n   */;_proto.then=function then(onFulfilled,onRejected){if(process.env.NODE_ENV!=='production'){if(!('from'in this.opts)){(0,_warnOnce[\"default\"])('Without `from` option PostCSS could generate wrong source map '+'and will not find Browserslist config. Set it to CSS file path '+'or to `undefined` to prevent this warning.');}}return this.async().then(onFulfilled,onRejected);}/**\n   * Processes input CSS through synchronous and asynchronous plugins\n   * and calls onRejected for each error thrown in any plugin.\n   *\n   * It implements standard Promise API.\n   *\n   * @param {onRejected} onRejected Callback will be executed on any error.\n   *\n   * @return {Promise} Promise API to make queue.\n   *\n   * @example\n   * postcss([autoprefixer]).process(css).then(result => {\n   *   console.log(result.css)\n   * }).catch(error => {\n   *   console.error(error)\n   * })\n   */;_proto[\"catch\"]=function _catch(onRejected){return this.async()[\"catch\"](onRejected);}/**\n   * Processes input CSS through synchronous and asynchronous plugins\n   * and calls onFinally on any error or when all plugins will finish work.\n   *\n   * It implements standard Promise API.\n   *\n   * @param {onFinally} onFinally Callback will be executed on any error or\n   *                              when all plugins will finish work.\n   *\n   * @return {Promise} Promise API to make queue.\n   *\n   * @example\n   * postcss([autoprefixer]).process(css).finally(() => {\n   *   console.log('processing ended')\n   * })\n   */;_proto[\"finally\"]=function _finally(onFinally){return this.async().then(onFinally,onFinally);};_proto.handleError=function handleError(error,plugin){try{this.error=error;if(error.name==='CssSyntaxError'&&!error.plugin){error.plugin=plugin.postcssPlugin;error.setMessage();}else if(plugin.postcssVersion){if(process.env.NODE_ENV!=='production'){var pluginName=plugin.postcssPlugin;var pluginVer=plugin.postcssVersion;var runtimeVer=this.result.processor.version;var a=pluginVer.split('.');var b=runtimeVer.split('.');if(a[0]!==b[0]||parseInt(a[1])>parseInt(b[1])){console.error('Unknown error from PostCSS plugin. Your current PostCSS '+'version is '+runtimeVer+', but '+pluginName+' uses '+pluginVer+'. Perhaps this is the source of the error below.');}}}}catch(err){if(console&&console.error)console.error(err);}};_proto.asyncTick=function asyncTick(resolve,reject){var _this=this;if(this.plugin>=this.processor.plugins.length){this.processed=true;return resolve();}try{var plugin=this.processor.plugins[this.plugin];var promise=this.run(plugin);this.plugin+=1;if(isPromise(promise)){promise.then(function(){_this.asyncTick(resolve,reject);})[\"catch\"](function(error){_this.handleError(error,plugin);_this.processed=true;reject(error);});}else{this.asyncTick(resolve,reject);}}catch(error){this.processed=true;reject(error);}};_proto.async=function async(){var _this2=this;if(this.processed){return new Promise(function(resolve,reject){if(_this2.error){reject(_this2.error);}else{resolve(_this2.stringify());}});}if(this.processing){return this.processing;}this.processing=new Promise(function(resolve,reject){if(_this2.error)return reject(_this2.error);_this2.plugin=0;_this2.asyncTick(resolve,reject);}).then(function(){_this2.processed=true;return _this2.stringify();});return this.processing;};_proto.sync=function sync(){if(this.processed)return this.result;this.processed=true;if(this.processing){throw new Error('Use process(css).then(cb) to work with async plugins');}if(this.error)throw this.error;for(var _iterator=_createForOfIteratorHelperLoose(this.result.processor.plugins),_step;!(_step=_iterator()).done;){var plugin=_step.value;var promise=this.run(plugin);if(isPromise(promise)){throw new Error('Use process(css).then(cb) to work with async plugins');}}return this.result;};_proto.run=function run(plugin){this.result.lastPlugin=plugin;try{return plugin(this.result.root,this.result);}catch(error){this.handleError(error,plugin);throw error;}};_proto.stringify=function stringify(){if(this.stringified)return this.result;this.stringified=true;this.sync();var opts=this.result.opts;var str=_stringify2[\"default\"];if(opts.syntax)str=opts.syntax.stringify;if(opts.stringifier)str=opts.stringifier;if(str.stringify)str=str.stringify;var map=new _mapGenerator[\"default\"](str,this.result.root,this.result.opts);var data=map.generate();this.result.css=data[0];this.result.map=data[1];return this.result;};_createClass(LazyResult,[{key:\"processor\",get:function get(){return this.result.processor;}/**\n     * Options from the {@link Processor#process} call.\n     *\n     * @type {processOptions}\n     */},{key:\"opts\",get:function get(){return this.result.opts;}/**\n     * Processes input CSS through synchronous plugins, converts `Root`\n     * to a CSS string and returns {@link Result#css}.\n     *\n     * This property will only work with synchronous plugins.\n     * If the processor contains any asynchronous plugins\n     * it will throw an error. This is why this method is only\n     * for debug purpose, you should always use {@link LazyResult#then}.\n     *\n     * @type {string}\n     * @see Result#css\n     */},{key:\"css\",get:function get(){return this.stringify().css;}/**\n     * An alias for the `css` property. Use it with syntaxes\n     * that generate non-CSS output.\n     *\n     * This property will only work with synchronous plugins.\n     * If the processor contains any asynchronous plugins\n     * it will throw an error. This is why this method is only\n     * for debug purpose, you should always use {@link LazyResult#then}.\n     *\n     * @type {string}\n     * @see Result#content\n     */},{key:\"content\",get:function get(){return this.stringify().content;}/**\n     * Processes input CSS through synchronous plugins\n     * and returns {@link Result#map}.\n     *\n     * This property will only work with synchronous plugins.\n     * If the processor contains any asynchronous plugins\n     * it will throw an error. This is why this method is only\n     * for debug purpose, you should always use {@link LazyResult#then}.\n     *\n     * @type {SourceMapGenerator}\n     * @see Result#map\n     */},{key:\"map\",get:function get(){return this.stringify().map;}/**\n     * Processes input CSS through synchronous plugins\n     * and returns {@link Result#root}.\n     *\n     * This property will only work with synchronous plugins. If the processor\n     * contains any asynchronous plugins it will throw an error.\n     *\n     * This is why this method is only for debug purpose,\n     * you should always use {@link LazyResult#then}.\n     *\n     * @type {Root}\n     * @see Result#root\n     */},{key:\"root\",get:function get(){return this.sync().root;}/**\n     * Processes input CSS through synchronous plugins\n     * and returns {@link Result#messages}.\n     *\n     * This property will only work with synchronous plugins. If the processor\n     * contains any asynchronous plugins it will throw an error.\n     *\n     * This is why this method is only for debug purpose,\n     * you should always use {@link LazyResult#then}.\n     *\n     * @type {Message[]}\n     * @see Result#messages\n     */},{key:\"messages\",get:function get(){return this.sync().messages;}}]);return LazyResult;}();var _default=LazyResult;/**\n * @callback onFulfilled\n * @param {Result} result\n */ /**\n * @callback onRejected\n * @param {Error} error\n */exports[\"default\"]=_default;module.exports=exports[\"default\"];}).call(this,require('_process'));},{\"./map-generator\":177,\"./parse\":179,\"./result\":184,\"./stringify\":188,\"./warn-once\":191,\"_process\":193}],176:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list\n *\n * @namespace list\n */var list={split:function split(string,separators,last){var array=[];var current='';var split=false;var func=0;var quote=false;var escape=false;for(var i=0;i<string.length;i++){var letter=string[i];if(quote){if(escape){escape=false;}else if(letter==='\\\\'){escape=true;}else if(letter===quote){quote=false;}}else if(letter==='\"'||letter==='\\''){quote=letter;}else if(letter==='('){func+=1;}else if(letter===')'){if(func>0)func-=1;}else if(func===0){if(separators.indexOf(letter)!==-1)split=true;}if(split){if(current!=='')array.push(current.trim());current='';split=false;}else{current+=letter;}}if(last||current!=='')array.push(current.trim());return array;},/**\n   * Safely splits space-separated values (such as those for `background`,\n   * `border-radius`, and other shorthand properties).\n   *\n   * @param {string} string Space-separated values.\n   *\n   * @return {string[]} Split values.\n   *\n   * @example\n   * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n   */space:function space(string){var spaces=[' ','\\n','\\t'];return list.split(string,spaces);},/**\n   * Safely splits comma-separated values (such as those for `transition-*`\n   * and `background` properties).\n   *\n   * @param {string} string Comma-separated values.\n   *\n   * @return {string[]} Split values.\n   *\n   * @example\n   * postcss.list.comma('black, linear-gradient(white, black)')\n   * //=> ['black', 'linear-gradient(white, black)']\n   */comma:function comma(string){return list.split(string,[','],true);}};var _default=list;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{}],177:[function(require,module,exports){(function(Buffer){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _sourceMap=_interopRequireDefault(require(\"source-map\"));var _path=_interopRequireDefault(require(\"path\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _createForOfIteratorHelperLoose(o,allowArrayLike){var it;if(typeof Symbol===\"undefined\"||o[Symbol.iterator]==null){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length===\"number\"){if(it)o=it;var i=0;return function(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]};};}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}it=o[Symbol.iterator]();return it.next.bind(it);}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o===\"string\")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n===\"Object\"&&o.constructor)n=o.constructor.name;if(n===\"Map\"||n===\"Set\")return Array.from(o);if(n===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++){arr2[i]=arr[i];}return arr2;}var MapGenerator=/*#__PURE__*/function(){function MapGenerator(stringify,root,opts){this.stringify=stringify;this.mapOpts=opts.map||{};this.root=root;this.opts=opts;}var _proto=MapGenerator.prototype;_proto.isMap=function isMap(){if(typeof this.opts.map!=='undefined'){return!!this.opts.map;}return this.previous().length>0;};_proto.previous=function previous(){var _this=this;if(!this.previousMaps){this.previousMaps=[];this.root.walk(function(node){if(node.source&&node.source.input.map){var map=node.source.input.map;if(_this.previousMaps.indexOf(map)===-1){_this.previousMaps.push(map);}}});}return this.previousMaps;};_proto.isInline=function isInline(){if(typeof this.mapOpts.inline!=='undefined'){return this.mapOpts.inline;}var annotation=this.mapOpts.annotation;if(typeof annotation!=='undefined'&&annotation!==true){return false;}if(this.previous().length){return this.previous().some(function(i){return i.inline;});}return true;};_proto.isSourcesContent=function isSourcesContent(){if(typeof this.mapOpts.sourcesContent!=='undefined'){return this.mapOpts.sourcesContent;}if(this.previous().length){return this.previous().some(function(i){return i.withContent();});}return true;};_proto.clearAnnotation=function clearAnnotation(){if(this.mapOpts.annotation===false)return;var node;for(var i=this.root.nodes.length-1;i>=0;i--){node=this.root.nodes[i];if(node.type!=='comment')continue;if(node.text.indexOf('# sourceMappingURL=')===0){this.root.removeChild(i);}}};_proto.setSourcesContent=function setSourcesContent(){var _this2=this;var already={};this.root.walk(function(node){if(node.source){var from=node.source.input.from;if(from&&!already[from]){already[from]=true;var relative=_this2.relative(from);_this2.map.setSourceContent(relative,node.source.input.css);}}});};_proto.applyPrevMaps=function applyPrevMaps(){for(var _iterator=_createForOfIteratorHelperLoose(this.previous()),_step;!(_step=_iterator()).done;){var prev=_step.value;var from=this.relative(prev.file);var root=prev.root||_path[\"default\"].dirname(prev.file);var map=void 0;if(this.mapOpts.sourcesContent===false){map=new _sourceMap[\"default\"].SourceMapConsumer(prev.text);if(map.sourcesContent){map.sourcesContent=map.sourcesContent.map(function(){return null;});}}else{map=prev.consumer();}this.map.applySourceMap(map,from,this.relative(root));}};_proto.isAnnotation=function isAnnotation(){if(this.isInline()){return true;}if(typeof this.mapOpts.annotation!=='undefined'){return this.mapOpts.annotation;}if(this.previous().length){return this.previous().some(function(i){return i.annotation;});}return true;};_proto.toBase64=function toBase64(str){if(Buffer){return Buffer.from(str).toString('base64');}return window.btoa(unescape(encodeURIComponent(str)));};_proto.addAnnotation=function addAnnotation(){var content;if(this.isInline()){content='data:application/json;base64,'+this.toBase64(this.map.toString());}else if(typeof this.mapOpts.annotation==='string'){content=this.mapOpts.annotation;}else{content=this.outputFile()+'.map';}var eol='\\n';if(this.css.indexOf('\\r\\n')!==-1)eol='\\r\\n';this.css+=eol+'/*# sourceMappingURL='+content+' */';};_proto.outputFile=function outputFile(){if(this.opts.to){return this.relative(this.opts.to);}if(this.opts.from){return this.relative(this.opts.from);}return'to.css';};_proto.generateMap=function generateMap(){this.generateString();if(this.isSourcesContent())this.setSourcesContent();if(this.previous().length>0)this.applyPrevMaps();if(this.isAnnotation())this.addAnnotation();if(this.isInline()){return[this.css];}return[this.css,this.map];};_proto.relative=function relative(file){if(file.indexOf('<')===0)return file;if(/^\\w+:\\/\\//.test(file))return file;var from=this.opts.to?_path[\"default\"].dirname(this.opts.to):'.';if(typeof this.mapOpts.annotation==='string'){from=_path[\"default\"].dirname(_path[\"default\"].resolve(from,this.mapOpts.annotation));}file=_path[\"default\"].relative(from,file);if(_path[\"default\"].sep==='\\\\'){return file.replace(/\\\\/g,'/');}return file;};_proto.sourcePath=function sourcePath(node){if(this.mapOpts.from){return this.mapOpts.from;}return this.relative(node.source.input.from);};_proto.generateString=function generateString(){var _this3=this;this.css='';this.map=new _sourceMap[\"default\"].SourceMapGenerator({file:this.outputFile()});var line=1;var column=1;var lines,last;this.stringify(this.root,function(str,node,type){_this3.css+=str;if(node&&type!=='end'){if(node.source&&node.source.start){_this3.map.addMapping({source:_this3.sourcePath(node),generated:{line:line,column:column-1},original:{line:node.source.start.line,column:node.source.start.column-1}});}else{_this3.map.addMapping({source:'<no source>',original:{line:1,column:0},generated:{line:line,column:column-1}});}}lines=str.match(/\\n/g);if(lines){line+=lines.length;last=str.lastIndexOf('\\n');column=str.length-last;}else{column+=str.length;}if(node&&type!=='start'){var p=node.parent||{raws:{}};if(node.type!=='decl'||node!==p.last||p.raws.semicolon){if(node.source&&node.source.end){_this3.map.addMapping({source:_this3.sourcePath(node),generated:{line:line,column:column-2},original:{line:node.source.end.line,column:node.source.end.column-1}});}else{_this3.map.addMapping({source:'<no source>',original:{line:1,column:0},generated:{line:line,column:column-1}});}}}});};_proto.generate=function generate(){this.clearAnnotation();if(this.isMap()){return this.generateMap();}var result='';this.stringify(this.root,function(i){result+=i;});return[result];};return MapGenerator;}();var _default=MapGenerator;exports[\"default\"]=_default;module.exports=exports[\"default\"];}).call(this,require(\"buffer\").Buffer);},{\"buffer\":3,\"path\":168,\"source-map\":208}],178:[function(require,module,exports){(function(process){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _cssSyntaxError=_interopRequireDefault(require(\"./css-syntax-error\"));var _stringifier=_interopRequireDefault(require(\"./stringifier\"));var _stringify=_interopRequireDefault(require(\"./stringify\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function cloneNode(obj,parent){var cloned=new obj.constructor();for(var i in obj){if(!obj.hasOwnProperty(i))continue;var value=obj[i];var type=_typeof(value);if(i==='parent'&&type==='object'){if(parent)cloned[i]=parent;}else if(i==='source'){cloned[i]=value;}else if(value instanceof Array){cloned[i]=value.map(function(j){return cloneNode(j,cloned);});}else{if(type==='object'&&value!==null)value=cloneNode(value);cloned[i]=value;}}return cloned;}/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */var Node=/*#__PURE__*/function(){/**\n   * @param {object} [defaults] Value for node properties.\n   */function Node(defaults){if(defaults===void 0){defaults={};}this.raws={};if(process.env.NODE_ENV!=='production'){if(_typeof(defaults)!=='object'&&typeof defaults!=='undefined'){throw new Error('PostCSS nodes constructor accepts object, not '+JSON.stringify(defaults));}}for(var name in defaults){this[name]=defaults[name];}}/**\n   * Returns a `CssSyntaxError` instance containing the original position\n   * of the node in the source, showing line and column numbers and also\n   * a small excerpt to facilitate debugging.\n   *\n   * If present, an input source map will be used to get the original position\n   * of the source, even from a previous compilation step\n   * (e.g., from Sass compilation).\n   *\n   * This method produces very useful error messages.\n   *\n   * @param {string} message     Error description.\n   * @param {object} [opts]      Options.\n   * @param {string} opts.plugin Plugin name that created this error.\n   *                             PostCSS will set it automatically.\n   * @param {string} opts.word   A word inside a node’s string that should\n   *                             be highlighted as the source of the error.\n   * @param {number} opts.index  An index inside a node’s string that should\n   *                             be highlighted as the source of the error.\n   *\n   * @return {CssSyntaxError} Error object to throw it.\n   *\n   * @example\n   * if (!variables[name]) {\n   *   throw decl.error('Unknown variable ' + name, { word: name })\n   *   // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n   *   //   color: $black\n   *   // a\n   *   //          ^\n   *   //   background: white\n   * }\n   */var _proto=Node.prototype;_proto.error=function error(message,opts){if(opts===void 0){opts={};}if(this.source){var pos=this.positionBy(opts);return this.source.input.error(message,pos.line,pos.column,opts);}return new _cssSyntaxError[\"default\"](message);}/**\n   * This method is provided as a convenience wrapper for {@link Result#warn}.\n   *\n   * @param {Result} result      The {@link Result} instance\n   *                             that will receive the warning.\n   * @param {string} text        Warning message.\n   * @param {object} [opts]      Options\n   * @param {string} opts.plugin Plugin name that created this warning.\n   *                             PostCSS will set it automatically.\n   * @param {string} opts.word   A word inside a node’s string that should\n   *                             be highlighted as the source of the warning.\n   * @param {number} opts.index  An index inside a node’s string that should\n   *                             be highlighted as the source of the warning.\n   *\n   * @return {Warning} Created warning object.\n   *\n   * @example\n   * const plugin = postcss.plugin('postcss-deprecated', () => {\n   *   return (root, result) => {\n   *     root.walkDecls('bad', decl => {\n   *       decl.warn(result, 'Deprecated property bad')\n   *     })\n   *   }\n   * })\n   */;_proto.warn=function warn(result,text,opts){var data={node:this};for(var i in opts){data[i]=opts[i];}return result.warn(text,data);}/**\n   * Removes the node from its parent and cleans the parent properties\n   * from the node and its children.\n   *\n   * @example\n   * if (decl.prop.match(/^-webkit-/)) {\n   *   decl.remove()\n   * }\n   *\n   * @return {Node} Node to make calls chain.\n   */;_proto.remove=function remove(){if(this.parent){this.parent.removeChild(this);}this.parent=undefined;return this;}/**\n   * Returns a CSS string representing the node.\n   *\n   * @param {stringifier|syntax} [stringifier] A syntax to use\n   *                                           in string generation.\n   *\n   * @return {string} CSS string of this node.\n   *\n   * @example\n   * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n   */;_proto.toString=function toString(stringifier){if(stringifier===void 0){stringifier=_stringify[\"default\"];}if(stringifier.stringify)stringifier=stringifier.stringify;var result='';stringifier(this,function(i){result+=i;});return result;}/**\n   * Returns an exact clone of the node.\n   *\n   * The resulting cloned node and its (cloned) children will retain\n   * code style properties.\n   *\n   * @param {object} [overrides] New properties to override in the clone.\n   *\n   * @example\n   * decl.raws.before    //=> \"\\n  \"\n   * const cloned = decl.clone({ prop: '-moz-' + decl.prop })\n   * cloned.raws.before  //=> \"\\n  \"\n   * cloned.toString()   //=> -moz-transform: scale(0)\n   *\n   * @return {Node} Clone of the node.\n   */;_proto.clone=function clone(overrides){if(overrides===void 0){overrides={};}var cloned=cloneNode(this);for(var name in overrides){cloned[name]=overrides[name];}return cloned;}/**\n   * Shortcut to clone the node and insert the resulting cloned node\n   * before the current node.\n   *\n   * @param {object} [overrides] Mew properties to override in the clone.\n   *\n   * @example\n   * decl.cloneBefore({ prop: '-moz-' + decl.prop })\n   *\n   * @return {Node} New node\n   */;_proto.cloneBefore=function cloneBefore(overrides){if(overrides===void 0){overrides={};}var cloned=this.clone(overrides);this.parent.insertBefore(this,cloned);return cloned;}/**\n   * Shortcut to clone the node and insert the resulting cloned node\n   * after the current node.\n   *\n   * @param {object} [overrides] New properties to override in the clone.\n   *\n   * @return {Node} New node.\n   */;_proto.cloneAfter=function cloneAfter(overrides){if(overrides===void 0){overrides={};}var cloned=this.clone(overrides);this.parent.insertAfter(this,cloned);return cloned;}/**\n   * Inserts node(s) before the current node and removes the current node.\n   *\n   * @param {...Node} nodes Mode(s) to replace current one.\n   *\n   * @example\n   * if (atrule.name === 'mixin') {\n   *   atrule.replaceWith(mixinRules[atrule.params])\n   * }\n   *\n   * @return {Node} Current node to methods chain.\n   */;_proto.replaceWith=function replaceWith(){if(this.parent){for(var _len=arguments.length,nodes=new Array(_len),_key=0;_key<_len;_key++){nodes[_key]=arguments[_key];}for(var _i=0,_nodes=nodes;_i<_nodes.length;_i++){var node=_nodes[_i];this.parent.insertBefore(this,node);}this.remove();}return this;}/**\n   * Returns the next child of the node’s parent.\n   * Returns `undefined` if the current node is the last child.\n   *\n   * @return {Node|undefined} Next node.\n   *\n   * @example\n   * if (comment.text === 'delete next') {\n   *   const next = comment.next()\n   *   if (next) {\n   *     next.remove()\n   *   }\n   * }\n   */;_proto.next=function next(){if(!this.parent)return undefined;var index=this.parent.index(this);return this.parent.nodes[index+1];}/**\n   * Returns the previous child of the node’s parent.\n   * Returns `undefined` if the current node is the first child.\n   *\n   * @return {Node|undefined} Previous node.\n   *\n   * @example\n   * const annotation = decl.prev()\n   * if (annotation.type === 'comment') {\n   *   readAnnotation(annotation.text)\n   * }\n   */;_proto.prev=function prev(){if(!this.parent)return undefined;var index=this.parent.index(this);return this.parent.nodes[index-1];}/**\n   * Insert new node before current node to current node’s parent.\n   *\n   * Just alias for `node.parent.insertBefore(node, add)`.\n   *\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * decl.before('content: \"\"')\n   */;_proto.before=function before(add){this.parent.insertBefore(this,add);return this;}/**\n   * Insert new node after current node to current node’s parent.\n   *\n   * Just alias for `node.parent.insertAfter(node, add)`.\n   *\n   * @param {Node|object|string|Node[]} add New node.\n   *\n   * @return {Node} This node for methods chain.\n   *\n   * @example\n   * decl.after('color: black')\n   */;_proto.after=function after(add){this.parent.insertAfter(this,add);return this;};_proto.toJSON=function toJSON(){var fixed={};for(var name in this){if(!this.hasOwnProperty(name))continue;if(name==='parent')continue;var value=this[name];if(value instanceof Array){fixed[name]=value.map(function(i){if(_typeof(i)==='object'&&i.toJSON){return i.toJSON();}else{return i;}});}else if(_typeof(value)==='object'&&value.toJSON){fixed[name]=value.toJSON();}else{fixed[name]=value;}}return fixed;}/**\n   * Returns a {@link Node#raws} value. If the node is missing\n   * the code style property (because the node was manually built or cloned),\n   * PostCSS will try to autodetect the code style property by looking\n   * at other nodes in the tree.\n   *\n   * @param {string} prop          Name of code style property.\n   * @param {string} [defaultType] Name of default value, it can be missed\n   *                               if the value is the same as prop.\n   *\n   * @example\n   * const root = postcss.parse('a { background: white }')\n   * root.nodes[0].append({ prop: 'color', value: 'black' })\n   * root.nodes[0].nodes[1].raws.before   //=> undefined\n   * root.nodes[0].nodes[1].raw('before') //=> ' '\n   *\n   * @return {string} Code style value.\n   */;_proto.raw=function raw(prop,defaultType){var str=new _stringifier[\"default\"]();return str.raw(this,prop,defaultType);}/**\n   * Finds the Root instance of the node’s tree.\n   *\n   * @example\n   * root.nodes[0].nodes[0].root() === root\n   *\n   * @return {Root} Root parent.\n   */;_proto.root=function root(){var result=this;while(result.parent){result=result.parent;}return result;}/**\n   * Clear the code style properties for the node and its children.\n   *\n   * @param {boolean} [keepBetween] Keep the raws.between symbols.\n   *\n   * @return {undefined}\n   *\n   * @example\n   * node.raws.before  //=> ' '\n   * node.cleanRaws()\n   * node.raws.before  //=> undefined\n   */;_proto.cleanRaws=function cleanRaws(keepBetween){delete this.raws.before;delete this.raws.after;if(!keepBetween)delete this.raws.between;};_proto.positionInside=function positionInside(index){var string=this.toString();var column=this.source.start.column;var line=this.source.start.line;for(var i=0;i<index;i++){if(string[i]==='\\n'){column=1;line+=1;}else{column+=1;}}return{line:line,column:column};};_proto.positionBy=function positionBy(opts){var pos=this.source.start;if(opts.index){pos=this.positionInside(opts.index);}else if(opts.word){var index=this.toString().indexOf(opts.word);if(index!==-1)pos=this.positionInside(index);}return pos;}/**\n   * @memberof Node#\n   * @member {string} type String representing the node’s type.\n   *                       Possible values are `root`, `atrule`, `rule`,\n   *                       `decl`, or `comment`.\n   *\n   * @example\n   * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n   */ /**\n   * @memberof Node#\n   * @member {Container} parent The node’s parent node.\n   *\n   * @example\n   * root.nodes[0].parent === root\n   */ /**\n   * @memberof Node#\n   * @member {source} source The input source of the node.\n   *\n   * The property is used in source map generation.\n   *\n   * If you create a node manually (e.g., with `postcss.decl()`),\n   * that node will not have a `source` property and will be absent\n   * from the source map. For this reason, the plugin developer should\n   * consider cloning nodes to create new ones (in which case the new node’s\n   * source will reference the original, cloned node) or setting\n   * the `source` property manually.\n   *\n   * ```js\n   * // Bad\n   * const prefixed = postcss.decl({\n   *   prop: '-moz-' + decl.prop,\n   *   value: decl.value\n   * })\n   *\n   * // Good\n   * const prefixed = decl.clone({ prop: '-moz-' + decl.prop })\n   * ```\n   *\n   * ```js\n   * if (atrule.name === 'add-link') {\n   *   const rule = postcss.rule({ selector: 'a', source: atrule.source })\n   *   atrule.parent.insertBefore(atrule, rule)\n   * }\n   * ```\n   *\n   * @example\n   * decl.source.input.from //=> '/home/ai/a.sass'\n   * decl.source.start      //=> { line: 10, column: 2 }\n   * decl.source.end        //=> { line: 10, column: 12 }\n   */ /**\n   * @memberof Node#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `before`: the space symbols before the node. It also stores `*`\n   *   and `_` symbols before the declaration (IE hack).\n   * * `after`: the space symbols after the last child of the node\n   *   to the end of the node.\n   * * `between`: the symbols between the property and value\n   *   for declarations, selector and `{` for rules, or last parameter\n   *   and `{` for at-rules.\n   * * `semicolon`: contains true if the last child has\n   *   an (optional) semicolon.\n   * * `afterName`: the space between the at-rule name and its parameters.\n   * * `left`: the space symbols between `/*` and the comment’s text.\n   * * `right`: the space symbols between the comment’s text\n   *   and <code>*&#47;</code>.\n   * * `important`: the content of the important statement,\n   *   if it is not just `!important`.\n   *\n   * PostCSS cleans selectors, declaration values and at-rule parameters\n   * from comments and extra spaces, but it stores origin content in raws\n   * properties. As such, if you don’t change a declaration’s value,\n   * PostCSS will use the raw value with comments.\n   *\n   * @example\n   * const root = postcss.parse('a {\\n  color:black\\n}')\n   * root.first.first.raws //=> { before: '\\n  ', between: ':' }\n   */;return Node;}();var _default=Node;/**\n * @typedef {object} position\n * @property {number} line   Source line in file.\n * @property {number} column Source column in file.\n */ /**\n * @typedef {object} source\n * @property {Input} input    {@link Input} with input file\n * @property {position} start The starting position of the node’s source.\n * @property {position} end   The ending position of the node’s source.\n */exports[\"default\"]=_default;module.exports=exports[\"default\"];}).call(this,require('_process'));},{\"./css-syntax-error\":172,\"./stringifier\":187,\"./stringify\":188,\"_process\":193}],179:[function(require,module,exports){(function(process){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _parser=_interopRequireDefault(require(\"./parser\"));var _input=_interopRequireDefault(require(\"./input\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function parse(css,opts){var input=new _input[\"default\"](css,opts);var parser=new _parser[\"default\"](input);try{parser.parse();}catch(e){if(process.env.NODE_ENV!=='production'){if(e.name==='CssSyntaxError'&&opts&&opts.from){if(/\\.scss$/i.test(opts.from)){e.message+='\\nYou tried to parse SCSS with '+'the standard CSS parser; '+'try again with the postcss-scss parser';}else if(/\\.sass/i.test(opts.from)){e.message+='\\nYou tried to parse Sass with '+'the standard CSS parser; '+'try again with the postcss-sass parser';}else if(/\\.less$/i.test(opts.from)){e.message+='\\nYou tried to parse Less with '+'the standard CSS parser; '+'try again with the postcss-less parser';}}}throw e;}return parser.root;}var _default=parse;exports[\"default\"]=_default;module.exports=exports[\"default\"];}).call(this,require('_process'));},{\"./input\":174,\"./parser\":180,\"_process\":193}],180:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _declaration=_interopRequireDefault(require(\"./declaration\"));var _tokenize=_interopRequireDefault(require(\"./tokenize\"));var _comment=_interopRequireDefault(require(\"./comment\"));var _atRule=_interopRequireDefault(require(\"./at-rule\"));var _root=_interopRequireDefault(require(\"./root\"));var _rule=_interopRequireDefault(require(\"./rule\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}var Parser=/*#__PURE__*/function(){function Parser(input){this.input=input;this.root=new _root[\"default\"]();this.current=this.root;this.spaces='';this.semicolon=false;this.createTokenizer();this.root.source={input:input,start:{line:1,column:1}};}var _proto=Parser.prototype;_proto.createTokenizer=function createTokenizer(){this.tokenizer=(0,_tokenize[\"default\"])(this.input);};_proto.parse=function parse(){var token;while(!this.tokenizer.endOfFile()){token=this.tokenizer.nextToken();switch(token[0]){case'space':this.spaces+=token[1];break;case';':this.freeSemicolon(token);break;case'}':this.end(token);break;case'comment':this.comment(token);break;case'at-word':this.atrule(token);break;case'{':this.emptyRule(token);break;default:this.other(token);break;}}this.endFile();};_proto.comment=function comment(token){var node=new _comment[\"default\"]();this.init(node,token[2],token[3]);node.source.end={line:token[4],column:token[5]};var text=token[1].slice(2,-2);if(/^\\s*$/.test(text)){node.text='';node.raws.left=text;node.raws.right='';}else{var match=text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);node.text=match[2];node.raws.left=match[1];node.raws.right=match[3];}};_proto.emptyRule=function emptyRule(token){var node=new _rule[\"default\"]();this.init(node,token[2],token[3]);node.selector='';node.raws.between='';this.current=node;};_proto.other=function other(start){var end=false;var type=null;var colon=false;var bracket=null;var brackets=[];var tokens=[];var token=start;while(token){type=token[0];tokens.push(token);if(type==='('||type==='['){if(!bracket)bracket=token;brackets.push(type==='('?')':']');}else if(brackets.length===0){if(type===';'){if(colon){this.decl(tokens);return;}else{break;}}else if(type==='{'){this.rule(tokens);return;}else if(type==='}'){this.tokenizer.back(tokens.pop());end=true;break;}else if(type===':'){colon=true;}}else if(type===brackets[brackets.length-1]){brackets.pop();if(brackets.length===0)bracket=null;}token=this.tokenizer.nextToken();}if(this.tokenizer.endOfFile())end=true;if(brackets.length>0)this.unclosedBracket(bracket);if(end&&colon){while(tokens.length){token=tokens[tokens.length-1][0];if(token!=='space'&&token!=='comment')break;this.tokenizer.back(tokens.pop());}this.decl(tokens);}else{this.unknownWord(tokens);}};_proto.rule=function rule(tokens){tokens.pop();var node=new _rule[\"default\"]();this.init(node,tokens[0][2],tokens[0][3]);node.raws.between=this.spacesAndCommentsFromEnd(tokens);this.raw(node,'selector',tokens);this.current=node;};_proto.decl=function decl(tokens){var node=new _declaration[\"default\"]();this.init(node);var last=tokens[tokens.length-1];if(last[0]===';'){this.semicolon=true;tokens.pop();}if(last[4]){node.source.end={line:last[4],column:last[5]};}else{node.source.end={line:last[2],column:last[3]};}while(tokens[0][0]!=='word'){if(tokens.length===1)this.unknownWord(tokens);node.raws.before+=tokens.shift()[1];}node.source.start={line:tokens[0][2],column:tokens[0][3]};node.prop='';while(tokens.length){var type=tokens[0][0];if(type===':'||type==='space'||type==='comment'){break;}node.prop+=tokens.shift()[1];}node.raws.between='';var token;while(tokens.length){token=tokens.shift();if(token[0]===':'){node.raws.between+=token[1];break;}else{if(token[0]==='word'&&/\\w/.test(token[1])){this.unknownWord([token]);}node.raws.between+=token[1];}}if(node.prop[0]==='_'||node.prop[0]==='*'){node.raws.before+=node.prop[0];node.prop=node.prop.slice(1);}node.raws.between+=this.spacesAndCommentsFromStart(tokens);this.precheckMissedSemicolon(tokens);for(var i=tokens.length-1;i>0;i--){token=tokens[i];if(token[1].toLowerCase()==='!important'){node.important=true;var string=this.stringFrom(tokens,i);string=this.spacesFromEnd(tokens)+string;if(string!==' !important')node.raws.important=string;break;}else if(token[1].toLowerCase()==='important'){var cache=tokens.slice(0);var str='';for(var j=i;j>0;j--){var _type=cache[j][0];if(str.trim().indexOf('!')===0&&_type!=='space'){break;}str=cache.pop()[1]+str;}if(str.trim().indexOf('!')===0){node.important=true;node.raws.important=str;tokens=cache;}}if(token[0]!=='space'&&token[0]!=='comment'){break;}}this.raw(node,'value',tokens);if(node.value.indexOf(':')!==-1)this.checkMissedSemicolon(tokens);};_proto.atrule=function atrule(token){var node=new _atRule[\"default\"]();node.name=token[1].slice(1);if(node.name===''){this.unnamedAtrule(node,token);}this.init(node,token[2],token[3]);var prev;var shift;var last=false;var open=false;var params=[];while(!this.tokenizer.endOfFile()){token=this.tokenizer.nextToken();if(token[0]===';'){node.source.end={line:token[2],column:token[3]};this.semicolon=true;break;}else if(token[0]==='{'){open=true;break;}else if(token[0]==='}'){if(params.length>0){shift=params.length-1;prev=params[shift];while(prev&&prev[0]==='space'){prev=params[--shift];}if(prev){node.source.end={line:prev[4],column:prev[5]};}}this.end(token);break;}else{params.push(token);}if(this.tokenizer.endOfFile()){last=true;break;}}node.raws.between=this.spacesAndCommentsFromEnd(params);if(params.length){node.raws.afterName=this.spacesAndCommentsFromStart(params);this.raw(node,'params',params);if(last){token=params[params.length-1];node.source.end={line:token[4],column:token[5]};this.spaces=node.raws.between;node.raws.between='';}}else{node.raws.afterName='';node.params='';}if(open){node.nodes=[];this.current=node;}};_proto.end=function end(token){if(this.current.nodes&&this.current.nodes.length){this.current.raws.semicolon=this.semicolon;}this.semicolon=false;this.current.raws.after=(this.current.raws.after||'')+this.spaces;this.spaces='';if(this.current.parent){this.current.source.end={line:token[2],column:token[3]};this.current=this.current.parent;}else{this.unexpectedClose(token);}};_proto.endFile=function endFile(){if(this.current.parent)this.unclosedBlock();if(this.current.nodes&&this.current.nodes.length){this.current.raws.semicolon=this.semicolon;}this.current.raws.after=(this.current.raws.after||'')+this.spaces;};_proto.freeSemicolon=function freeSemicolon(token){this.spaces+=token[1];if(this.current.nodes){var prev=this.current.nodes[this.current.nodes.length-1];if(prev&&prev.type==='rule'&&!prev.raws.ownSemicolon){prev.raws.ownSemicolon=this.spaces;this.spaces='';}}}// Helpers\n;_proto.init=function init(node,line,column){this.current.push(node);node.source={start:{line:line,column:column},input:this.input};node.raws.before=this.spaces;this.spaces='';if(node.type!=='comment')this.semicolon=false;};_proto.raw=function raw(node,prop,tokens){var token,type;var length=tokens.length;var value='';var clean=true;var next,prev;var pattern=/^([.|#])?([\\w])+/i;for(var i=0;i<length;i+=1){token=tokens[i];type=token[0];if(type==='comment'&&node.type==='rule'){prev=tokens[i-1];next=tokens[i+1];if(prev[0]!=='space'&&next[0]!=='space'&&pattern.test(prev[1])&&pattern.test(next[1])){value+=token[1];}else{clean=false;}continue;}if(type==='comment'||type==='space'&&i===length-1){clean=false;}else{value+=token[1];}}if(!clean){var raw=tokens.reduce(function(all,i){return all+i[1];},'');node.raws[prop]={value:value,raw:raw};}node[prop]=value;};_proto.spacesAndCommentsFromEnd=function spacesAndCommentsFromEnd(tokens){var lastTokenType;var spaces='';while(tokens.length){lastTokenType=tokens[tokens.length-1][0];if(lastTokenType!=='space'&&lastTokenType!=='comment')break;spaces=tokens.pop()[1]+spaces;}return spaces;};_proto.spacesAndCommentsFromStart=function spacesAndCommentsFromStart(tokens){var next;var spaces='';while(tokens.length){next=tokens[0][0];if(next!=='space'&&next!=='comment')break;spaces+=tokens.shift()[1];}return spaces;};_proto.spacesFromEnd=function spacesFromEnd(tokens){var lastTokenType;var spaces='';while(tokens.length){lastTokenType=tokens[tokens.length-1][0];if(lastTokenType!=='space')break;spaces=tokens.pop()[1]+spaces;}return spaces;};_proto.stringFrom=function stringFrom(tokens,from){var result='';for(var i=from;i<tokens.length;i++){result+=tokens[i][1];}tokens.splice(from,tokens.length-from);return result;};_proto.colon=function colon(tokens){var brackets=0;var token,type,prev;for(var i=0;i<tokens.length;i++){token=tokens[i];type=token[0];if(type==='('){brackets+=1;}if(type===')'){brackets-=1;}if(brackets===0&&type===':'){if(!prev){this.doubleColon(token);}else if(prev[0]==='word'&&prev[1]==='progid'){continue;}else{return i;}}prev=token;}return false;}// Errors\n;_proto.unclosedBracket=function unclosedBracket(bracket){throw this.input.error('Unclosed bracket',bracket[2],bracket[3]);};_proto.unknownWord=function unknownWord(tokens){throw this.input.error('Unknown word',tokens[0][2],tokens[0][3]);};_proto.unexpectedClose=function unexpectedClose(token){throw this.input.error('Unexpected }',token[2],token[3]);};_proto.unclosedBlock=function unclosedBlock(){var pos=this.current.source.start;throw this.input.error('Unclosed block',pos.line,pos.column);};_proto.doubleColon=function doubleColon(token){throw this.input.error('Double colon',token[2],token[3]);};_proto.unnamedAtrule=function unnamedAtrule(node,token){throw this.input.error('At-rule without name',token[2],token[3]);};_proto.precheckMissedSemicolon=function precheckMissedSemicolon()/* tokens */{// Hook for Safe Parser\n};_proto.checkMissedSemicolon=function checkMissedSemicolon(tokens){var colon=this.colon(tokens);if(colon===false)return;var founded=0;var token;for(var j=colon-1;j>=0;j--){token=tokens[j];if(token[0]!=='space'){founded+=1;if(founded===2)break;}}throw this.input.error('Missed semicolon',token[2],token[3]);};return Parser;}();exports[\"default\"]=Parser;module.exports=exports[\"default\"];},{\"./at-rule\":169,\"./comment\":170,\"./declaration\":173,\"./root\":185,\"./rule\":186,\"./tokenize\":189}],181:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _declaration=_interopRequireDefault(require(\"./declaration\"));var _processor=_interopRequireDefault(require(\"./processor\"));var _stringify=_interopRequireDefault(require(\"./stringify\"));var _comment=_interopRequireDefault(require(\"./comment\"));var _atRule=_interopRequireDefault(require(\"./at-rule\"));var _vendor=_interopRequireDefault(require(\"./vendor\"));var _parse=_interopRequireDefault(require(\"./parse\"));var _list=_interopRequireDefault(require(\"./list\"));var _rule=_interopRequireDefault(require(\"./rule\"));var _root=_interopRequireDefault(require(\"./root\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}/**\n * Create a new {@link Processor} instance that will apply `plugins`\n * as CSS processors.\n *\n * @param {Array.<Plugin|pluginFunction>|Processor} plugins PostCSS plugins.\n *        See {@link Processor#use} for plugin format.\n *\n * @return {Processor} Processor to process multiple CSS.\n *\n * @example\n * import postcss from 'postcss'\n *\n * postcss(plugins).process(css, { from, to }).then(result => {\n *   console.log(result.css)\n * })\n *\n * @namespace postcss\n */function postcss(){for(var _len=arguments.length,plugins=new Array(_len),_key=0;_key<_len;_key++){plugins[_key]=arguments[_key];}if(plugins.length===1&&Array.isArray(plugins[0])){plugins=plugins[0];}return new _processor[\"default\"](plugins);}/**\n * Creates a PostCSS plugin with a standard API.\n *\n * The newly-wrapped function will provide both the name and PostCSS\n * version of the plugin.\n *\n * ```js\n * const processor = postcss([replace])\n * processor.plugins[0].postcssPlugin  //=> 'postcss-replace'\n * processor.plugins[0].postcssVersion //=> '6.0.0'\n * ```\n *\n * The plugin function receives 2 arguments: {@link Root}\n * and {@link Result} instance. The function should mutate the provided\n * `Root` node. Alternatively, you can create a new `Root` node\n * and override the `result.root` property.\n *\n * ```js\n * const cleaner = postcss.plugin('postcss-cleaner', () => {\n *   return (root, result) => {\n *     result.root = postcss.root()\n *   }\n * })\n * ```\n *\n * As a convenience, plugins also expose a `process` method so that you can use\n * them as standalone tools.\n *\n * ```js\n * cleaner.process(css, processOpts, pluginOpts)\n * // This is equivalent to:\n * postcss([ cleaner(pluginOpts) ]).process(css, processOpts)\n * ```\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * ```js\n * postcss.plugin('postcss-import', () => {\n *   return (root, result) => {\n *     return new Promise( (resolve, reject) => {\n *       fs.readFile('base.css', (base) => {\n *         root.prepend(base)\n *         resolve()\n *       })\n *     })\n *   }\n * })\n * ```\n *\n * Add warnings using the {@link Node#warn} method.\n * Send data to other plugins using the {@link Result#messages} array.\n *\n * ```js\n * postcss.plugin('postcss-caniuse-test', () => {\n *   return (root, result) => {\n *     root.walkDecls(decl => {\n *       if (!caniuse.support(decl.prop)) {\n *         decl.warn(result, 'Some browsers do not support ' + decl.prop)\n *       }\n *     })\n *   }\n * })\n * ```\n *\n * @param {string} name          PostCSS plugin name. Same as in `name`\n *                               property in `package.json`. It will be saved\n *                               in `plugin.postcssPlugin` property.\n * @param {function} initializer Will receive plugin options\n *                               and should return {@link pluginFunction}\n *\n * @return {Plugin} PostCSS plugin.\n */postcss.plugin=function plugin(name,initializer){function creator(){var transformer=initializer.apply(void 0,arguments);transformer.postcssPlugin=name;transformer.postcssVersion=new _processor[\"default\"]().version;return transformer;}var cache;Object.defineProperty(creator,'postcss',{get:function get(){if(!cache)cache=creator();return cache;}});creator.process=function(css,processOpts,pluginOpts){return postcss([creator(pluginOpts)]).process(css,processOpts);};return creator;};/**\n * Default function to convert a node tree into a CSS string.\n *\n * @param {Node} node       Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n *                          or generate string and source map.\n *\n * @return {void}\n *\n * @function\n */postcss.stringify=_stringify[\"default\"];/**\n * Parses source css and returns a new {@link Root} node,\n * which contains the source CSS nodes.\n *\n * @param {string|toString} css   String with input CSS or any object\n *                                with toString() method, like a Buffer\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST.\n *\n * @example\n * // Simple CSS concatenation with source map support\n * const root1 = postcss.parse(css1, { from: file1 })\n * const root2 = postcss.parse(css2, { from: file2 })\n * root1.append(root2).toResult().css\n *\n * @function\n */postcss.parse=_parse[\"default\"];/**\n * Contains the {@link vendor} module.\n *\n * @type {vendor}\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab') //=> ['tab']\n */postcss.vendor=_vendor[\"default\"];/**\n * Contains the {@link list} module.\n *\n * @member {list}\n *\n * @example\n * postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']\n */postcss.list=_list[\"default\"];/**\n * Creates a new {@link Comment} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Comment} New comment node\n *\n * @example\n * postcss.comment({ text: 'test' })\n */postcss.comment=function(defaults){return new _comment[\"default\"](defaults);};/**\n * Creates a new {@link AtRule} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {AtRule} new at-rule node\n *\n * @example\n * postcss.atRule({ name: 'charset' }).toString() //=> \"@charset\"\n */postcss.atRule=function(defaults){return new _atRule[\"default\"](defaults);};/**\n * Creates a new {@link Declaration} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Declaration} new declaration node\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'red' }).toString() //=> \"color: red\"\n */postcss.decl=function(defaults){return new _declaration[\"default\"](defaults);};/**\n * Creates a new {@link Rule} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Rule} new rule node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {\\n}\"\n */postcss.rule=function(defaults){return new _rule[\"default\"](defaults);};/**\n * Creates a new {@link Root} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Root} new root node.\n *\n * @example\n * postcss.root({ after: '\\n' }).toString() //=> \"\\n\"\n */postcss.root=function(defaults){return new _root[\"default\"](defaults);};var _default=postcss;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./at-rule\":169,\"./comment\":170,\"./declaration\":173,\"./list\":176,\"./parse\":179,\"./processor\":183,\"./root\":185,\"./rule\":186,\"./stringify\":188,\"./vendor\":190}],182:[function(require,module,exports){(function(Buffer){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _sourceMap=_interopRequireDefault(require(\"source-map\"));var _path=_interopRequireDefault(require(\"path\"));var _fs=_interopRequireDefault(require(\"fs\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function fromBase64(str){if(Buffer){return Buffer.from(str,'base64').toString();}else{return window.atob(str);}}/**\n * Source map information from input CSS.\n * For example, source map after Sass compiler.\n *\n * This class will automatically find source map in input CSS or in file system\n * near input file (according `from` option).\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.sass.css' })\n * root.input.map //=> PreviousMap\n */var PreviousMap=/*#__PURE__*/function(){/**\n   * @param {string}         css    Input CSS source.\n   * @param {processOptions} [opts] {@link Processor#process} options.\n   */function PreviousMap(css,opts){this.loadAnnotation(css);/**\n     * Was source map inlined by data-uri to input CSS.\n     *\n     * @type {boolean}\n     */this.inline=this.startWith(this.annotation,'data:');var prev=opts.map?opts.map.prev:undefined;var text=this.loadMap(opts.from,prev);if(text)this.text=text;}/**\n   * Create a instance of `SourceMapGenerator` class\n   * from the `source-map` library to work with source map information.\n   *\n   * It is lazy method, so it will create object only on first call\n   * and then it will use cache.\n   *\n   * @return {SourceMapGenerator} Object with source map information.\n   */var _proto=PreviousMap.prototype;_proto.consumer=function consumer(){if(!this.consumerCache){this.consumerCache=new _sourceMap[\"default\"].SourceMapConsumer(this.text);}return this.consumerCache;}/**\n   * Does source map contains `sourcesContent` with input source text.\n   *\n   * @return {boolean} Is `sourcesContent` present.\n   */;_proto.withContent=function withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0);};_proto.startWith=function startWith(string,start){if(!string)return false;return string.substr(0,start.length)===start;};_proto.getAnnotationURL=function getAnnotationURL(sourceMapString){return sourceMapString.match(/\\/\\*\\s*# sourceMappingURL=(.*)\\s*\\*\\//)[1].trim();};_proto.loadAnnotation=function loadAnnotation(css){var annotations=css.match(/\\/\\*\\s*# sourceMappingURL=(.*)\\s*\\*\\//mg);if(annotations&&annotations.length>0){// Locate the last sourceMappingURL to avoid picking up\n// sourceMappingURLs from comments, strings, etc.\nvar lastAnnotation=annotations[annotations.length-1];if(lastAnnotation){this.annotation=this.getAnnotationURL(lastAnnotation);}}};_proto.decodeInline=function decodeInline(text){var baseCharsetUri=/^data:application\\/json;charset=utf-?8;base64,/;var baseUri=/^data:application\\/json;base64,/;var uri='data:application/json,';if(this.startWith(text,uri)){return decodeURIComponent(text.substr(uri.length));}if(baseCharsetUri.test(text)||baseUri.test(text)){return fromBase64(text.substr(RegExp.lastMatch.length));}var encoding=text.match(/data:application\\/json;([^,]+),/)[1];throw new Error('Unsupported source map encoding '+encoding);};_proto.loadMap=function loadMap(file,prev){if(prev===false)return false;if(prev){if(typeof prev==='string'){return prev;}else if(typeof prev==='function'){var prevPath=prev(file);if(prevPath&&_fs[\"default\"].existsSync&&_fs[\"default\"].existsSync(prevPath)){return _fs[\"default\"].readFileSync(prevPath,'utf-8').toString().trim();}else{throw new Error('Unable to load previous source map: '+prevPath.toString());}}else if(prev instanceof _sourceMap[\"default\"].SourceMapConsumer){return _sourceMap[\"default\"].SourceMapGenerator.fromSourceMap(prev).toString();}else if(prev instanceof _sourceMap[\"default\"].SourceMapGenerator){return prev.toString();}else if(this.isMap(prev)){return JSON.stringify(prev);}else{throw new Error('Unsupported previous source map format: '+prev.toString());}}else if(this.inline){return this.decodeInline(this.annotation);}else if(this.annotation){var map=this.annotation;if(file)map=_path[\"default\"].join(_path[\"default\"].dirname(file),map);this.root=_path[\"default\"].dirname(map);if(_fs[\"default\"].existsSync&&_fs[\"default\"].existsSync(map)){return _fs[\"default\"].readFileSync(map,'utf-8').toString().trim();}else{return false;}}};_proto.isMap=function isMap(map){if(_typeof(map)!=='object')return false;return typeof map.mappings==='string'||typeof map._mappings==='string';};return PreviousMap;}();var _default=PreviousMap;exports[\"default\"]=_default;module.exports=exports[\"default\"];}).call(this,require(\"buffer\").Buffer);},{\"buffer\":3,\"fs\":2,\"path\":168,\"source-map\":208}],183:[function(require,module,exports){(function(process){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _lazyResult=_interopRequireDefault(require(\"./lazy-result\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _createForOfIteratorHelperLoose(o,allowArrayLike){var it;if(typeof Symbol===\"undefined\"||o[Symbol.iterator]==null){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length===\"number\"){if(it)o=it;var i=0;return function(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]};};}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}it=o[Symbol.iterator]();return it.next.bind(it);}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o===\"string\")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n===\"Object\"&&o.constructor)n=o.constructor.name;if(n===\"Map\"||n===\"Set\")return Array.from(o);if(n===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++){arr2[i]=arr[i];}return arr2;}/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss])\n * processor.process(css1).then(result => console.log(result.css))\n * processor.process(css2).then(result => console.log(result.css))\n */var Processor=/*#__PURE__*/function(){/**\n   * @param {Array.<Plugin|pluginFunction>|Processor} plugins PostCSS plugins.\n   *        See {@link Processor#use} for plugin format.\n   */function Processor(plugins){if(plugins===void 0){plugins=[];}/**\n     * Current PostCSS version.\n     *\n     * @type {string}\n     *\n     * @example\n     * if (result.processor.version.split('.')[0] !== '6') {\n     *   throw new Error('This plugin works only with PostCSS 6')\n     * }\n     */this.version='7.0.34';/**\n     * Plugins added to this processor.\n     *\n     * @type {pluginFunction[]}\n     *\n     * @example\n     * const processor = postcss([autoprefixer, precss])\n     * processor.plugins.length //=> 2\n     */this.plugins=this.normalize(plugins);}/**\n   * Adds a plugin to be used as a CSS processor.\n   *\n   * PostCSS plugin can be in 4 formats:\n   * * A plugin created by {@link postcss.plugin} method.\n   * * A function. PostCSS will pass the function a @{link Root}\n   *   as the first argument and current {@link Result} instance\n   *   as the second.\n   * * An object with a `postcss` method. PostCSS will use that method\n   *   as described in #2.\n   * * Another {@link Processor} instance. PostCSS will copy plugins\n   *   from that instance into this one.\n   *\n   * Plugins can also be added by passing them as arguments when creating\n   * a `postcss` instance (see [`postcss(plugins)`]).\n   *\n   * Asynchronous plugins should return a `Promise` instance.\n   *\n   * @param {Plugin|pluginFunction|Processor} plugin PostCSS plugin\n   *                                                 or {@link Processor}\n   *                                                 with plugins.\n   *\n   * @example\n   * const processor = postcss()\n   *   .use(autoprefixer)\n   *   .use(precss)\n   *\n   * @return {Processes} Current processor to make methods chain.\n   */var _proto=Processor.prototype;_proto.use=function use(plugin){this.plugins=this.plugins.concat(this.normalize([plugin]));return this;}/**\n   * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n   * Because some plugins can be asynchronous it doesn’t make\n   * any transformations. Transformations will be applied\n   * in the {@link LazyResult} methods.\n   *\n   * @param {string|toString|Result} css String with input CSS or any object\n   *                                     with a `toString()` method,\n   *                                     like a Buffer. Optionally, send\n   *                                     a {@link Result} instance\n   *                                     and the processor will take\n   *                                     the {@link Root} from it.\n   * @param {processOptions} [opts]      Options.\n   *\n   * @return {LazyResult} Promise proxy.\n   *\n   * @example\n   * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n   *   .then(result => {\n   *      console.log(result.css)\n   *   })\n   */;_proto.process=function(_process){function process(_x){return _process.apply(this,arguments);}process.toString=function(){return _process.toString();};return process;}(function(css,opts){if(opts===void 0){opts={};}if(this.plugins.length===0&&opts.parser===opts.stringifier){if(process.env.NODE_ENV!=='production'){if(typeof console!=='undefined'&&console.warn){console.warn('You did not set any plugins, parser, or stringifier. '+'Right now, PostCSS does nothing. Pick plugins for your case '+'on https://www.postcss.parts/ and use them in postcss.config.js.');}}}return new _lazyResult[\"default\"](this,css,opts);});_proto.normalize=function normalize(plugins){var normalized=[];for(var _iterator=_createForOfIteratorHelperLoose(plugins),_step;!(_step=_iterator()).done;){var i=_step.value;if(i.postcss===true){var plugin=i();throw new Error('PostCSS plugin '+plugin.postcssPlugin+' requires PostCSS 8. Update PostCSS or downgrade this plugin.');}if(i.postcss)i=i.postcss;if(_typeof(i)==='object'&&Array.isArray(i.plugins)){normalized=normalized.concat(i.plugins);}else if(typeof i==='function'){normalized.push(i);}else if(_typeof(i)==='object'&&(i.parse||i.stringify)){if(process.env.NODE_ENV!=='production'){throw new Error('PostCSS syntaxes cannot be used as plugins. Instead, please use '+'one of the syntax/parser/stringifier options as outlined '+'in your PostCSS runner documentation.');}}else if(_typeof(i)==='object'&&i.postcssPlugin){throw new Error('PostCSS plugin '+i.postcssPlugin+' requires PostCSS 8. Update PostCSS or downgrade this plugin.');}else{throw new Error(i+' is not a PostCSS plugin');}}return normalized;};return Processor;}();var _default=Processor;/**\n * @callback builder\n * @param {string} part          Part of generated CSS connected to this node.\n * @param {Node}   node          AST node.\n * @param {\"start\"|\"end\"} [type] Node’s part type.\n */ /**\n * @callback parser\n *\n * @param {string|toString} css   String with input CSS or any object\n *                                with toString() method, like a Buffer.\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST\n */ /**\n * @callback stringifier\n *\n * @param {Node} node       Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n *                          or generate string and source map.\n *\n * @return {void}\n */ /**\n * @typedef {object} syntax\n * @property {parser} parse          Function to generate AST by string.\n * @property {stringifier} stringify Function to generate string by AST.\n */ /**\n * @typedef {object} toString\n * @property {function} toString\n */ /**\n * @callback pluginFunction\n * @param {Root} root     Parsed input CSS.\n * @param {Result} result Result to set warnings or check other plugins.\n */ /**\n * @typedef {object} Plugin\n * @property {function} postcss PostCSS plugin function.\n */ /**\n * @typedef {object} processOptions\n * @property {string} from             The path of the CSS source file.\n *                                     You should always set `from`,\n *                                     because it is used in source map\n *                                     generation and syntax error messages.\n * @property {string} to               The path where you’ll put the output\n *                                     CSS file. You should always set `to`\n *                                     to generate correct source maps.\n * @property {parser} parser           Function to generate AST by string.\n * @property {stringifier} stringifier Class to generate string by AST.\n * @property {syntax} syntax           Object with `parse` and `stringify`.\n * @property {object} map              Source map options.\n * @property {boolean} map.inline                    Does source map should\n *                                                   be embedded in the output\n *                                                   CSS as a base64-encoded\n *                                                   comment.\n * @property {string|object|false|function} map.prev Source map content\n *                                                   from a previous\n *                                                   processing step\n *                                                   (for example, Sass).\n *                                                   PostCSS will try to find\n *                                                   previous map automatically,\n *                                                   so you could disable it by\n *                                                   `false` value.\n * @property {boolean} map.sourcesContent            Does PostCSS should set\n *                                                   the origin content to map.\n * @property {string|false} map.annotation           Does PostCSS should set\n *                                                   annotation comment to map.\n * @property {string} map.from                       Override `from` in map’s\n *                                                   sources`.\n */exports[\"default\"]=_default;module.exports=exports[\"default\"];}).call(this,require('_process'));},{\"./lazy-result\":175,\"_process\":193}],184:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _warning=_interopRequireDefault(require(\"./warning\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _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);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}/**\n * Provides the result of the PostCSS transformations.\n *\n * A Result instance is returned by {@link LazyResult#then}\n * or {@link Root#toResult} methods.\n *\n * @example\n * postcss([autoprefixer]).process(css).then(result => {\n *  console.log(result.css)\n * })\n *\n * @example\n * const result2 = postcss.parse(css).toResult()\n */var Result=/*#__PURE__*/function(){/**\n   * @param {Processor} processor Processor used for this transformation.\n   * @param {Root}      root      Root node after all transformations.\n   * @param {processOptions} opts Options from the {@link Processor#process}\n   *                              or {@link Root#toResult}.\n   */function Result(processor,root,opts){/**\n     * The Processor instance used for this transformation.\n     *\n     * @type {Processor}\n     *\n     * @example\n     * for (const plugin of result.processor.plugins) {\n     *   if (plugin.postcssPlugin === 'postcss-bad') {\n     *     throw 'postcss-good is incompatible with postcss-bad'\n     *   }\n     * })\n     */this.processor=processor;/**\n     * Contains messages from plugins (e.g., warnings or custom messages).\n     * Each message should have type and plugin properties.\n     *\n     * @type {Message[]}\n     *\n     * @example\n     * postcss.plugin('postcss-min-browser', () => {\n     *   return (root, result) => {\n     *     const browsers = detectMinBrowsersByCanIUse(root)\n     *     result.messages.push({\n     *       type: 'min-browser',\n     *       plugin: 'postcss-min-browser',\n     *       browsers\n     *     })\n     *   }\n     * })\n     */this.messages=[];/**\n     * Root node after all transformations.\n     *\n     * @type {Root}\n     *\n     * @example\n     * root.toResult().root === root\n     */this.root=root;/**\n     * Options from the {@link Processor#process} or {@link Root#toResult} call\n     * that produced this Result instance.\n     *\n     * @type {processOptions}\n     *\n     * @example\n     * root.toResult(opts).opts === opts\n     */this.opts=opts;/**\n     * A CSS string representing of {@link Result#root}.\n     *\n     * @type {string}\n     *\n     * @example\n     * postcss.parse('a{}').toResult().css //=> \"a{}\"\n     */this.css=undefined;/**\n     * An instance of `SourceMapGenerator` class from the `source-map` library,\n     * representing changes to the {@link Result#root} instance.\n     *\n     * @type {SourceMapGenerator}\n     *\n     * @example\n     * result.map.toJSON() //=> { version: 3, file: 'a.css', … }\n     *\n     * @example\n     * if (result.map) {\n     *   fs.writeFileSync(result.opts.to + '.map', result.map.toString())\n     * }\n     */this.map=undefined;}/**\n   * Returns for @{link Result#css} content.\n   *\n   * @example\n   * result + '' === result.css\n   *\n   * @return {string} String representing of {@link Result#root}.\n   */var _proto=Result.prototype;_proto.toString=function toString(){return this.css;}/**\n   * Creates an instance of {@link Warning} and adds it\n   * to {@link Result#messages}.\n   *\n   * @param {string} text        Warning message.\n   * @param {Object} [opts]      Warning options.\n   * @param {Node}   opts.node   CSS node that caused the warning.\n   * @param {string} opts.word   Word in CSS source that caused the warning.\n   * @param {number} opts.index  Index in CSS node string that caused\n   *                             the warning.\n   * @param {string} opts.plugin Name of the plugin that created\n   *                             this warning. {@link Result#warn} fills\n   *                             this property automatically.\n   *\n   * @return {Warning} Created warning.\n   */;_proto.warn=function warn(text,opts){if(opts===void 0){opts={};}if(!opts.plugin){if(this.lastPlugin&&this.lastPlugin.postcssPlugin){opts.plugin=this.lastPlugin.postcssPlugin;}}var warning=new _warning[\"default\"](text,opts);this.messages.push(warning);return warning;}/**\n     * Returns warnings from plugins. Filters {@link Warning} instances\n     * from {@link Result#messages}.\n     *\n     * @example\n     * result.warnings().forEach(warn => {\n     *   console.warn(warn.toString())\n     * })\n     *\n     * @return {Warning[]} Warnings from plugins.\n     */;_proto.warnings=function warnings(){return this.messages.filter(function(i){return i.type==='warning';});}/**\n   * An alias for the {@link Result#css} property.\n   * Use it with syntaxes that generate non-CSS output.\n   *\n   * @type {string}\n   *\n   * @example\n   * result.css === result.content\n   */;_createClass(Result,[{key:\"content\",get:function get(){return this.css;}}]);return Result;}();var _default=Result;/**\n * @typedef  {object} Message\n * @property {string} type   Message type.\n * @property {string} plugin Source PostCSS plugin name.\n */exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./warning\":192}],185:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _container=_interopRequireDefault(require(\"./container\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _createForOfIteratorHelperLoose(o,allowArrayLike){var it;if(typeof Symbol===\"undefined\"||o[Symbol.iterator]==null){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length===\"number\"){if(it)o=it;var i=0;return function(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]};};}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}it=o[Symbol.iterator]();return it.next.bind(it);}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o===\"string\")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n===\"Object\"&&o.constructor)n=o.constructor.name;if(n===\"Map\"||n===\"Set\")return Array.from(o);if(n===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++){arr2[i]=arr[i];}return arr2;}function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass;}/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}')\n * root.type         //=> 'root'\n * root.nodes.length //=> 2\n */var Root=/*#__PURE__*/function(_Container){_inheritsLoose(Root,_Container);function Root(defaults){var _this;_this=_Container.call(this,defaults)||this;_this.type='root';if(!_this.nodes)_this.nodes=[];return _this;}var _proto=Root.prototype;_proto.removeChild=function removeChild(child,ignore){var index=this.index(child);if(!ignore&&index===0&&this.nodes.length>1){this.nodes[1].raws.before=this.nodes[index].raws.before;}return _Container.prototype.removeChild.call(this,child);};_proto.normalize=function normalize(child,sample,type){var nodes=_Container.prototype.normalize.call(this,child);if(sample){if(type==='prepend'){if(this.nodes.length>1){sample.raws.before=this.nodes[1].raws.before;}else{delete sample.raws.before;}}else if(this.first!==sample){for(var _iterator=_createForOfIteratorHelperLoose(nodes),_step;!(_step=_iterator()).done;){var node=_step.value;node.raws.before=sample.raws.before;}}}return nodes;}/**\n   * Returns a {@link Result} instance representing the root’s CSS.\n   *\n   * @param {processOptions} [opts] Options with only `to` and `map` keys.\n   *\n   * @return {Result} Result with current root’s CSS.\n   *\n   * @example\n   * const root1 = postcss.parse(css1, { from: 'a.css' })\n   * const root2 = postcss.parse(css2, { from: 'b.css' })\n   * root1.append(root2)\n   * const result = root1.toResult({ to: 'all.css', map: true })\n   */;_proto.toResult=function toResult(opts){if(opts===void 0){opts={};}var LazyResult=require('./lazy-result');var Processor=require('./processor');var lazy=new LazyResult(new Processor(),this,opts);return lazy.stringify();}/**\n   * @memberof Root#\n   * @member {object} raws Information to generate byte-to-byte equal\n   *                       node string as it was in the origin input.\n   *\n   * Every parser saves its own properties,\n   * but the default CSS parser uses:\n   *\n   * * `after`: the space symbols after the last child to the end of file.\n   * * `semicolon`: is the last child has an (optional) semicolon.\n   *\n   * @example\n   * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n   * postcss.parse('a {}').raws   //=> { after: '' }\n   */;return Root;}(_container[\"default\"]);var _default=Root;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./container\":171,\"./lazy-result\":175,\"./processor\":183}],186:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _container=_interopRequireDefault(require(\"./container\"));var _list=_interopRequireDefault(require(\"./list\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function _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);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;subClass.__proto__=superClass;}/**\n * Represents a CSS rule: a selector followed by a declaration block.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{}')\n * const rule = root.first\n * rule.type       //=> 'rule'\n * rule.toString() //=> 'a{}'\n */var Rule=/*#__PURE__*/function(_Container){_inheritsLoose(Rule,_Container);function Rule(defaults){var _this;_this=_Container.call(this,defaults)||this;_this.type='rule';if(!_this.nodes)_this.nodes=[];return _this;}/**\n   * An array containing the rule’s individual selectors.\n   * Groups of selectors are split at commas.\n   *\n   * @type {string[]}\n   *\n   * @example\n   * const root = postcss.parse('a, b { }')\n   * const rule = root.first\n   *\n   * rule.selector  //=> 'a, b'\n   * rule.selectors //=> ['a', 'b']\n   *\n   * rule.selectors = ['a', 'strong']\n   * rule.selector //=> 'a, strong'\n   */_createClass(Rule,[{key:\"selectors\",get:function get(){return _list[\"default\"].comma(this.selector);},set:function set(values){var match=this.selector?this.selector.match(/,\\s*/):null;var sep=match?match[0]:','+this.raw('between','beforeOpen');this.selector=values.join(sep);}/**\n     * @memberof Rule#\n     * @member {string} selector The rule’s full selector represented\n     *                           as a string.\n     *\n     * @example\n     * const root = postcss.parse('a, b { }')\n     * const rule = root.first\n     * rule.selector //=> 'a, b'\n     */ /**\n     * @memberof Rule#\n     * @member {object} raws Information to generate byte-to-byte equal\n     *                       node string as it was in the origin input.\n     *\n     * Every parser saves its own properties,\n     * but the default CSS parser uses:\n     *\n     * * `before`: the space symbols before the node. It also stores `*`\n     *   and `_` symbols before the declaration (IE hack).\n     * * `after`: the space symbols after the last child of the node\n     *   to the end of the node.\n     * * `between`: the symbols between the property and value\n     *   for declarations, selector and `{` for rules, or last parameter\n     *   and `{` for at-rules.\n     * * `semicolon`: contains `true` if the last child has\n     *   an (optional) semicolon.\n     * * `ownSemicolon`: contains `true` if there is semicolon after rule.\n     *\n     * PostCSS cleans selectors from comments and extra spaces,\n     * but it stores origin content in raws properties.\n     * As such, if you don’t change a declaration’s value,\n     * PostCSS will use the raw value with comments.\n     *\n     * @example\n     * const root = postcss.parse('a {\\n  color:black\\n}')\n     * root.first.first.raws //=> { before: '', between: ' ', after: '\\n' }\n     */}]);return Rule;}(_container[\"default\"]);var _default=Rule;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./container\":171,\"./list\":176}],187:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var DEFAULT_RAW={colon:': ',indent:'    ',beforeDecl:'\\n',beforeRule:'\\n',beforeOpen:' ',beforeClose:'\\n',beforeComment:'\\n',after:'\\n',emptyBody:'',commentLeft:' ',commentRight:' ',semicolon:false};function capitalize(str){return str[0].toUpperCase()+str.slice(1);}var Stringifier=/*#__PURE__*/function(){function Stringifier(builder){this.builder=builder;}var _proto=Stringifier.prototype;_proto.stringify=function stringify(node,semicolon){this[node.type](node,semicolon);};_proto.root=function root(node){this.body(node);if(node.raws.after)this.builder(node.raws.after);};_proto.comment=function comment(node){var left=this.raw(node,'left','commentLeft');var right=this.raw(node,'right','commentRight');this.builder('/*'+left+node.text+right+'*/',node);};_proto.decl=function decl(node,semicolon){var between=this.raw(node,'between','colon');var string=node.prop+between+this.rawValue(node,'value');if(node.important){string+=node.raws.important||' !important';}if(semicolon)string+=';';this.builder(string,node);};_proto.rule=function rule(node){this.block(node,this.rawValue(node,'selector'));if(node.raws.ownSemicolon){this.builder(node.raws.ownSemicolon,node,'end');}};_proto.atrule=function atrule(node,semicolon){var name='@'+node.name;var params=node.params?this.rawValue(node,'params'):'';if(typeof node.raws.afterName!=='undefined'){name+=node.raws.afterName;}else if(params){name+=' ';}if(node.nodes){this.block(node,name+params);}else{var end=(node.raws.between||'')+(semicolon?';':'');this.builder(name+params+end,node);}};_proto.body=function body(node){var last=node.nodes.length-1;while(last>0){if(node.nodes[last].type!=='comment')break;last-=1;}var semicolon=this.raw(node,'semicolon');for(var i=0;i<node.nodes.length;i++){var child=node.nodes[i];var before=this.raw(child,'before');if(before)this.builder(before);this.stringify(child,last!==i||semicolon);}};_proto.block=function block(node,start){var between=this.raw(node,'between','beforeOpen');this.builder(start+between+'{',node,'start');var after;if(node.nodes&&node.nodes.length){this.body(node);after=this.raw(node,'after');}else{after=this.raw(node,'after','emptyBody');}if(after)this.builder(after);this.builder('}',node,'end');};_proto.raw=function raw(node,own,detect){var value;if(!detect)detect=own;// Already had\nif(own){value=node.raws[own];if(typeof value!=='undefined')return value;}var parent=node.parent;// Hack for first rule in CSS\nif(detect==='before'){if(!parent||parent.type==='root'&&parent.first===node){return'';}}// Floating child without parent\nif(!parent)return DEFAULT_RAW[detect];// Detect style by other nodes\nvar root=node.root();if(!root.rawCache)root.rawCache={};if(typeof root.rawCache[detect]!=='undefined'){return root.rawCache[detect];}if(detect==='before'||detect==='after'){return this.beforeAfter(node,detect);}else{var method='raw'+capitalize(detect);if(this[method]){value=this[method](root,node);}else{root.walk(function(i){value=i.raws[own];if(typeof value!=='undefined')return false;});}}if(typeof value==='undefined')value=DEFAULT_RAW[detect];root.rawCache[detect]=value;return value;};_proto.rawSemicolon=function rawSemicolon(root){var value;root.walk(function(i){if(i.nodes&&i.nodes.length&&i.last.type==='decl'){value=i.raws.semicolon;if(typeof value!=='undefined')return false;}});return value;};_proto.rawEmptyBody=function rawEmptyBody(root){var value;root.walk(function(i){if(i.nodes&&i.nodes.length===0){value=i.raws.after;if(typeof value!=='undefined')return false;}});return value;};_proto.rawIndent=function rawIndent(root){if(root.raws.indent)return root.raws.indent;var value;root.walk(function(i){var p=i.parent;if(p&&p!==root&&p.parent&&p.parent===root){if(typeof i.raws.before!=='undefined'){var parts=i.raws.before.split('\\n');value=parts[parts.length-1];value=value.replace(/[^\\s]/g,'');return false;}}});return value;};_proto.rawBeforeComment=function rawBeforeComment(root,node){var value;root.walkComments(function(i){if(typeof i.raws.before!=='undefined'){value=i.raws.before;if(value.indexOf('\\n')!==-1){value=value.replace(/[^\\n]+$/,'');}return false;}});if(typeof value==='undefined'){value=this.raw(node,null,'beforeDecl');}else if(value){value=value.replace(/[^\\s]/g,'');}return value;};_proto.rawBeforeDecl=function rawBeforeDecl(root,node){var value;root.walkDecls(function(i){if(typeof i.raws.before!=='undefined'){value=i.raws.before;if(value.indexOf('\\n')!==-1){value=value.replace(/[^\\n]+$/,'');}return false;}});if(typeof value==='undefined'){value=this.raw(node,null,'beforeRule');}else if(value){value=value.replace(/[^\\s]/g,'');}return value;};_proto.rawBeforeRule=function rawBeforeRule(root){var value;root.walk(function(i){if(i.nodes&&(i.parent!==root||root.first!==i)){if(typeof i.raws.before!=='undefined'){value=i.raws.before;if(value.indexOf('\\n')!==-1){value=value.replace(/[^\\n]+$/,'');}return false;}}});if(value)value=value.replace(/[^\\s]/g,'');return value;};_proto.rawBeforeClose=function rawBeforeClose(root){var value;root.walk(function(i){if(i.nodes&&i.nodes.length>0){if(typeof i.raws.after!=='undefined'){value=i.raws.after;if(value.indexOf('\\n')!==-1){value=value.replace(/[^\\n]+$/,'');}return false;}}});if(value)value=value.replace(/[^\\s]/g,'');return value;};_proto.rawBeforeOpen=function rawBeforeOpen(root){var value;root.walk(function(i){if(i.type!=='decl'){value=i.raws.between;if(typeof value!=='undefined')return false;}});return value;};_proto.rawColon=function rawColon(root){var value;root.walkDecls(function(i){if(typeof i.raws.between!=='undefined'){value=i.raws.between.replace(/[^\\s:]/g,'');return false;}});return value;};_proto.beforeAfter=function beforeAfter(node,detect){var value;if(node.type==='decl'){value=this.raw(node,null,'beforeDecl');}else if(node.type==='comment'){value=this.raw(node,null,'beforeComment');}else if(detect==='before'){value=this.raw(node,null,'beforeRule');}else{value=this.raw(node,null,'beforeClose');}var buf=node.parent;var depth=0;while(buf&&buf.type!=='root'){depth+=1;buf=buf.parent;}if(value.indexOf('\\n')!==-1){var indent=this.raw(node,null,'indent');if(indent.length){for(var step=0;step<depth;step++){value+=indent;}}}return value;};_proto.rawValue=function rawValue(node,prop){var value=node[prop];var raw=node.raws[prop];if(raw&&raw.value===value){return raw.raw;}return value;};return Stringifier;}();var _default=Stringifier;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{}],188:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;var _stringifier=_interopRequireDefault(require(\"./stringifier\"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{\"default\":obj};}function stringify(node,builder){var str=new _stringifier[\"default\"](builder);str.stringify(node);}var _default=stringify;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{\"./stringifier\":187}],189:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=tokenizer;var SINGLE_QUOTE='\\''.charCodeAt(0);var DOUBLE_QUOTE='\"'.charCodeAt(0);var BACKSLASH='\\\\'.charCodeAt(0);var SLASH='/'.charCodeAt(0);var NEWLINE='\\n'.charCodeAt(0);var SPACE=' '.charCodeAt(0);var FEED='\\f'.charCodeAt(0);var TAB='\\t'.charCodeAt(0);var CR='\\r'.charCodeAt(0);var OPEN_SQUARE='['.charCodeAt(0);var CLOSE_SQUARE=']'.charCodeAt(0);var OPEN_PARENTHESES='('.charCodeAt(0);var CLOSE_PARENTHESES=')'.charCodeAt(0);var OPEN_CURLY='{'.charCodeAt(0);var CLOSE_CURLY='}'.charCodeAt(0);var SEMICOLON=';'.charCodeAt(0);var ASTERISK='*'.charCodeAt(0);var COLON=':'.charCodeAt(0);var AT='@'.charCodeAt(0);var RE_AT_END=/[ \\n\\t\\r\\f{}()'\"\\\\;/[\\]#]/g;var RE_WORD_END=/[ \\n\\t\\r\\f(){}:;@!'\"\\\\\\][#]|\\/(?=\\*)/g;var RE_BAD_BRACKET=/.[\\\\/(\"'\\n]/;var RE_HEX_ESCAPE=/[a-f0-9]/i;function tokenizer(input,options){if(options===void 0){options={};}var css=input.css.valueOf();var ignore=options.ignoreErrors;var code,next,quote,lines,last,content,escape;var nextLine,nextOffset,escaped,escapePos,prev,n,currentToken;var length=css.length;var offset=-1;var line=1;var pos=0;var buffer=[];var returned=[];function position(){return pos;}function unclosed(what){throw input.error('Unclosed '+what,line,pos-offset);}function endOfFile(){return returned.length===0&&pos>=length;}function nextToken(opts){if(returned.length)return returned.pop();if(pos>=length)return;var ignoreUnclosed=opts?opts.ignoreUnclosed:false;code=css.charCodeAt(pos);if(code===NEWLINE||code===FEED||code===CR&&css.charCodeAt(pos+1)!==NEWLINE){offset=pos;line+=1;}switch(code){case NEWLINE:case SPACE:case TAB:case CR:case FEED:next=pos;do{next+=1;code=css.charCodeAt(next);if(code===NEWLINE){offset=next;line+=1;}}while(code===SPACE||code===NEWLINE||code===TAB||code===CR||code===FEED);currentToken=['space',css.slice(pos,next)];pos=next-1;break;case OPEN_SQUARE:case CLOSE_SQUARE:case OPEN_CURLY:case CLOSE_CURLY:case COLON:case SEMICOLON:case CLOSE_PARENTHESES:var controlChar=String.fromCharCode(code);currentToken=[controlChar,controlChar,line,pos-offset];break;case OPEN_PARENTHESES:prev=buffer.length?buffer.pop()[1]:'';n=css.charCodeAt(pos+1);if(prev==='url'&&n!==SINGLE_QUOTE&&n!==DOUBLE_QUOTE&&n!==SPACE&&n!==NEWLINE&&n!==TAB&&n!==FEED&&n!==CR){next=pos;do{escaped=false;next=css.indexOf(')',next+1);if(next===-1){if(ignore||ignoreUnclosed){next=pos;break;}else{unclosed('bracket');}}escapePos=next;while(css.charCodeAt(escapePos-1)===BACKSLASH){escapePos-=1;escaped=!escaped;}}while(escaped);currentToken=['brackets',css.slice(pos,next+1),line,pos-offset,line,next-offset];pos=next;}else{next=css.indexOf(')',pos+1);content=css.slice(pos,next+1);if(next===-1||RE_BAD_BRACKET.test(content)){currentToken=['(','(',line,pos-offset];}else{currentToken=['brackets',content,line,pos-offset,line,next-offset];pos=next;}}break;case SINGLE_QUOTE:case DOUBLE_QUOTE:quote=code===SINGLE_QUOTE?'\\'':'\"';next=pos;do{escaped=false;next=css.indexOf(quote,next+1);if(next===-1){if(ignore||ignoreUnclosed){next=pos+1;break;}else{unclosed('string');}}escapePos=next;while(css.charCodeAt(escapePos-1)===BACKSLASH){escapePos-=1;escaped=!escaped;}}while(escaped);content=css.slice(pos,next+1);lines=content.split('\\n');last=lines.length-1;if(last>0){nextLine=line+last;nextOffset=next-lines[last].length;}else{nextLine=line;nextOffset=offset;}currentToken=['string',css.slice(pos,next+1),line,pos-offset,nextLine,next-nextOffset];offset=nextOffset;line=nextLine;pos=next;break;case AT:RE_AT_END.lastIndex=pos+1;RE_AT_END.test(css);if(RE_AT_END.lastIndex===0){next=css.length-1;}else{next=RE_AT_END.lastIndex-2;}currentToken=['at-word',css.slice(pos,next+1),line,pos-offset,line,next-offset];pos=next;break;case BACKSLASH:next=pos;escape=true;while(css.charCodeAt(next+1)===BACKSLASH){next+=1;escape=!escape;}code=css.charCodeAt(next+1);if(escape&&code!==SLASH&&code!==SPACE&&code!==NEWLINE&&code!==TAB&&code!==CR&&code!==FEED){next+=1;if(RE_HEX_ESCAPE.test(css.charAt(next))){while(RE_HEX_ESCAPE.test(css.charAt(next+1))){next+=1;}if(css.charCodeAt(next+1)===SPACE){next+=1;}}}currentToken=['word',css.slice(pos,next+1),line,pos-offset,line,next-offset];pos=next;break;default:if(code===SLASH&&css.charCodeAt(pos+1)===ASTERISK){next=css.indexOf('*/',pos+2)+1;if(next===0){if(ignore||ignoreUnclosed){next=css.length;}else{unclosed('comment');}}content=css.slice(pos,next+1);lines=content.split('\\n');last=lines.length-1;if(last>0){nextLine=line+last;nextOffset=next-lines[last].length;}else{nextLine=line;nextOffset=offset;}currentToken=['comment',content,line,pos-offset,nextLine,next-nextOffset];offset=nextOffset;line=nextLine;pos=next;}else{RE_WORD_END.lastIndex=pos+1;RE_WORD_END.test(css);if(RE_WORD_END.lastIndex===0){next=css.length-1;}else{next=RE_WORD_END.lastIndex-2;}currentToken=['word',css.slice(pos,next+1),line,pos-offset,line,next-offset];buffer.push(currentToken);pos=next;}break;}pos++;return currentToken;}function back(token){returned.push(token);}return{back:back,nextToken:nextToken,endOfFile:endOfFile,position:position};}module.exports=exports[\"default\"];},{}],190:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;/**\n * Contains helpers for working with vendor prefixes.\n *\n * @example\n * const vendor = postcss.vendor\n *\n * @namespace vendor\n */var vendor={/**\n   * Returns the vendor prefix extracted from an input string.\n   *\n   * @param {string} prop String with or without vendor prefix.\n   *\n   * @return {string} vendor prefix or empty string\n   *\n   * @example\n   * postcss.vendor.prefix('-moz-tab-size') //=> '-moz-'\n   * postcss.vendor.prefix('tab-size')      //=> ''\n   */prefix:function prefix(prop){var match=prop.match(/^(-\\w+-)/);if(match){return match[0];}return'';},/**\n     * Returns the input string stripped of its vendor prefix.\n     *\n     * @param {string} prop String with or without vendor prefix.\n     *\n     * @return {string} String name without vendor prefixes.\n     *\n     * @example\n     * postcss.vendor.unprefixed('-moz-tab-size') //=> 'tab-size'\n     */unprefixed:function unprefixed(prop){return prop.replace(/^-\\w+-/,'');}};var _default=vendor;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{}],191:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=warnOnce;var printed={};function warnOnce(message){if(printed[message])return;printed[message]=true;if(typeof console!=='undefined'&&console.warn){console.warn(message);}}module.exports=exports[\"default\"];},{}],192:[function(require,module,exports){\"use strict\";exports.__esModule=true;exports[\"default\"]=void 0;/**\n * Represents a plugin’s warning. It can be created using {@link Node#warn}.\n *\n * @example\n * if (decl.important) {\n *   decl.warn(result, 'Avoid !important', { word: '!important' })\n * }\n */var Warning=/*#__PURE__*/function(){/**\n   * @param {string} text        Warning message.\n   * @param {Object} [opts]      Warning options.\n   * @param {Node}   opts.node   CSS node that caused the warning.\n   * @param {string} opts.word   Word in CSS source that caused the warning.\n   * @param {number} opts.index  Index in CSS node string that caused\n   *                             the warning.\n   * @param {string} opts.plugin Name of the plugin that created\n   *                             this warning. {@link Result#warn} fills\n   *                             this property automatically.\n   */function Warning(text,opts){if(opts===void 0){opts={};}/**\n     * Type to filter warnings from {@link Result#messages}.\n     * Always equal to `\"warning\"`.\n     *\n     * @type {string}\n     *\n     * @example\n     * const nonWarning = result.messages.filter(i => i.type !== 'warning')\n     */this.type='warning';/**\n     * The warning message.\n     *\n     * @type {string}\n     *\n     * @example\n     * warning.text //=> 'Try to avoid !important'\n     */this.text=text;if(opts.node&&opts.node.source){var pos=opts.node.positionBy(opts);/**\n       * Line in the input file with this warning’s source.\n       * @type {number}\n       *\n       * @example\n       * warning.line //=> 5\n       */this.line=pos.line;/**\n       * Column in the input file with this warning’s source.\n       *\n       * @type {number}\n       *\n       * @example\n       * warning.column //=> 6\n       */this.column=pos.column;}for(var opt in opts){this[opt]=opts[opt];}}/**\n   * Returns a warning position and message.\n   *\n   * @example\n   * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'\n   *\n   * @return {string} Warning position and message.\n   */var _proto=Warning.prototype;_proto.toString=function toString(){if(this.node){return this.node.error(this.text,{plugin:this.plugin,index:this.index,word:this.word}).message;}if(this.plugin){return this.plugin+': '+this.text;}return this.text;}/**\n   * @memberof Warning#\n   * @member {string} plugin The name of the plugin that created\n   *                         it will fill this property automatically.\n   *                         this warning. When you call {@link Node#warn}\n   *\n   * @example\n   * warning.plugin //=> 'postcss-important'\n   */ /**\n   * @memberof Warning#\n   * @member {Node} node Contains the CSS node that caused the warning.\n   *\n   * @example\n   * warning.node.toString() //=> 'color: white !important'\n   */;return Warning;}();var _default=Warning;exports[\"default\"]=_default;module.exports=exports[\"default\"];},{}],193:[function(require,module,exports){// shim for using process in browser\nvar process=module.exports={};// 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.\nvar cachedSetTimeout;var cachedClearTimeout;function defaultSetTimout(){throw new Error('setTimeout has not been defined');}function defaultClearTimeout(){throw new Error('clearTimeout has not been defined');}(function(){try{if(typeof setTimeout==='function'){cachedSetTimeout=setTimeout;}else{cachedSetTimeout=defaultSetTimout;}}catch(e){cachedSetTimeout=defaultSetTimout;}try{if(typeof clearTimeout==='function'){cachedClearTimeout=clearTimeout;}else{cachedClearTimeout=defaultClearTimeout;}}catch(e){cachedClearTimeout=defaultClearTimeout;}})();function runTimeout(fun){if(cachedSetTimeout===setTimeout){//normal enviroments in sane situations\nreturn setTimeout(fun,0);}// if setTimeout wasn't available but was latter defined\nif((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout){cachedSetTimeout=setTimeout;return setTimeout(fun,0);}try{// when when somebody has screwed with setTimeout but no I.E. maddness\nreturn cachedSetTimeout(fun,0);}catch(e){try{// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\nreturn cachedSetTimeout.call(null,fun,0);}catch(e){// 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\nreturn cachedSetTimeout.call(this,fun,0);}}}function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout){//normal enviroments in sane situations\nreturn clearTimeout(marker);}// if clearTimeout wasn't available but was latter defined\nif((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout){cachedClearTimeout=clearTimeout;return clearTimeout(marker);}try{// when when somebody has screwed with setTimeout but no I.E. maddness\nreturn cachedClearTimeout(marker);}catch(e){try{// When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\nreturn cachedClearTimeout.call(null,marker);}catch(e){// 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\nreturn cachedClearTimeout.call(this,marker);}}}var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){if(!draining||!currentQueue){return;}draining=false;if(currentQueue.length){queue=currentQueue.concat(queue);}else{queueIndex=-1;}if(queue.length){drainQueue();}}function drainQueue(){if(draining){return;}var timeout=runTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){if(currentQueue){currentQueue[queueIndex].run();}}queueIndex=-1;len=queue.length;}currentQueue=null;draining=false;runClearTimeout(timeout);}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i];}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){runTimeout(drainQueue);}};// v8 likes predictible objects\nfunction Item(fun,array){this.fun=fun;this.array=array;}Item.prototype.run=function(){this.fun.apply(null,this.array);};process.title='browser';process.browser=true;process.env={};process.argv=[];process.version='';// empty string to avoid regexp issues\nprocess.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.prependListener=noop;process.prependOnceListener=noop;process.listeners=function(name){return[];};process.binding=function(name){throw new Error('process.binding is not supported');};process.cwd=function(){return'/';};process.chdir=function(dir){throw new Error('process.chdir is not supported');};process.umask=function(){return 0;};},{}],194:[function(require,module,exports){(function(global){/*! https://mths.be/punycode v1.4.1 by @mathias */;(function(root){/** Detect free variables */var freeExports=_typeof(exports)=='object'&&exports&&!exports.nodeType&&exports;var freeModule=_typeof(module)=='object'&&module&&!module.nodeType&&module;var freeGlobal=_typeof(global)=='object'&&global;if(freeGlobal.global===freeGlobal||freeGlobal.window===freeGlobal||freeGlobal.self===freeGlobal){root=freeGlobal;}/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */var punycode,/** Highest positive signed 32-bit float value */maxInt=2147483647,// aka. 0x7FFFFFFF or 2^31-1\n/** Bootstring parameters */base=36,tMin=1,tMax=26,skew=38,damp=700,initialBias=72,initialN=128,// 0x80\ndelimiter='-',// '\\x2D'\n/** Regular expressions */regexPunycode=/^xn--/,regexNonASCII=/[^\\x20-\\x7E]/,// unprintable ASCII chars + non-ASCII chars\nregexSeparators=/[\\x2E\\u3002\\uFF0E\\uFF61]/g,// RFC 3490 separators\n/** Error messages */errors={'overflow':'Overflow: input needs wider integers to process','not-basic':'Illegal input >= 0x80 (not a basic code point)','invalid-input':'Invalid input'},/** Convenience shortcuts */baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode,/** Temporary variable */key;/*--------------------------------------------------------------------------*/ /**\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 */function error(type){throw new RangeError(errors[type]);}/**\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 */function map(array,fn){var length=array.length;var result=[];while(length--){result[length]=fn(array[length]);}return result;}/**\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 */function mapDomain(string,fn){var parts=string.split('@');var result='';if(parts.length>1){// In email addresses, only the domain name should be punycoded. Leave\n// the local part (i.e. everything up to `@`) intact.\nresult=parts[0]+'@';string=parts[1];}// Avoid `split(regex)` for IE8 compatibility. See #17.\nstring=string.replace(regexSeparators,'\\x2E');var labels=string.split('.');var encoded=map(labels,fn).join('.');return result+encoded;}/**\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 */function ucs2decode(string){var output=[],counter=0,length=string.length,value,extra;while(counter<length){value=string.charCodeAt(counter++);if(value>=0xD800&&value<=0xDBFF&&counter<length){// high surrogate, and there is a next character\nextra=string.charCodeAt(counter++);if((extra&0xFC00)==0xDC00){// low surrogate\noutput.push(((value&0x3FF)<<10)+(extra&0x3FF)+0x10000);}else{// unmatched surrogate; only append this code unit, in case the next\n// code unit is the high surrogate of a surrogate pair\noutput.push(value);counter--;}}else{output.push(value);}}return output;}/**\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 */function ucs2encode(array){return map(array,function(value){var output='';if(value>0xFFFF){value-=0x10000;output+=stringFromCharCode(value>>>10&0x3FF|0xD800);value=0xDC00|value&0x3FF;}output+=stringFromCharCode(value);return output;}).join('');}/**\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 */function basicToDigit(codePoint){if(codePoint-48<10){return codePoint-22;}if(codePoint-65<26){return codePoint-65;}if(codePoint-97<26){return codePoint-97;}return base;}/**\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 */function digitToBasic(digit,flag){//  0..25 map to ASCII a..z or A..Z\n// 26..35 map to ASCII 0..9\nreturn digit+22+75*(digit<26)-((flag!=0)<<5);}/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */function adapt(delta,numPoints,firstTime){var k=0;delta=firstTime?floor(delta/damp):delta>>1;delta+=floor(delta/numPoints);for(;/* no initialization */delta>baseMinusTMin*tMax>>1;k+=base){delta=floor(delta/baseMinusTMin);}return floor(k+(baseMinusTMin+1)*delta/(delta+skew));}/**\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 */function decode(input){// Don't use UCS-2\nvar output=[],inputLength=input.length,out,i=0,n=initialN,bias=initialBias,basic,j,index,oldi,w,k,digit,t,/** Cached calculation results */baseMinusT;// Handle the basic code points: let `basic` be the number of input code\n// points before the last delimiter, or `0` if there is none, then copy\n// the first basic code points to the output.\nbasic=input.lastIndexOf(delimiter);if(basic<0){basic=0;}for(j=0;j<basic;++j){// if it's not a basic code point\nif(input.charCodeAt(j)>=0x80){error('not-basic');}output.push(input.charCodeAt(j));}// Main decoding loop: start just after the last delimiter if any basic code\n// points were copied; start at the beginning otherwise.\nfor(index=basic>0?basic+1:0;index<inputLength;)/* no final expression */{// `index` is the index of the next character to be consumed.\n// Decode a generalized variable-length integer into `delta`,\n// which gets added to `i`. The overflow checking is easier\n// if we increase `i` as we go, then subtract off its starting\n// value at the end to obtain `delta`.\nfor(oldi=i,w=1,k=base;;/* no condition */k+=base){if(index>=inputLength){error('invalid-input');}digit=basicToDigit(input.charCodeAt(index++));if(digit>=base||digit>floor((maxInt-i)/w)){error('overflow');}i+=digit*w;t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digit<t){break;}baseMinusT=base-t;if(w>floor(maxInt/baseMinusT)){error('overflow');}w*=baseMinusT;}out=output.length+1;bias=adapt(i-oldi,out,oldi==0);// `i` was supposed to wrap around from `out` to `0`,\n// incrementing `n` each time, so we'll fix that now:\nif(floor(i/out)>maxInt-n){error('overflow');}n+=floor(i/out);i%=out;// Insert `n` at position `i` of the output\noutput.splice(i++,0,n);}return ucs2encode(output);}/**\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 */function encode(input){var n,delta,handledCPCount,basicLength,bias,j,m,q,k,t,currentValue,output=[],/** `inputLength` will hold the number of code points in `input`. */inputLength,/** Cached calculation results */handledCPCountPlusOne,baseMinusT,qMinusT;// Convert the input in UCS-2 to Unicode\ninput=ucs2decode(input);// Cache the length\ninputLength=input.length;// Initialize the state\nn=initialN;delta=0;bias=initialBias;// Handle the basic code points\nfor(j=0;j<inputLength;++j){currentValue=input[j];if(currentValue<0x80){output.push(stringFromCharCode(currentValue));}}handledCPCount=basicLength=output.length;// `handledCPCount` is the number of code points that have been handled;\n// `basicLength` is the number of basic code points.\n// Finish the basic string - if it is not empty - with a delimiter\nif(basicLength){output.push(delimiter);}// Main encoding loop:\nwhile(handledCPCount<inputLength){// All non-basic code points < n have been handled already. Find the next\n// larger one:\nfor(m=maxInt,j=0;j<inputLength;++j){currentValue=input[j];if(currentValue>=n&&currentValue<m){m=currentValue;}}// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n// but guard against overflow\nhandledCPCountPlusOne=handledCPCount+1;if(m-n>floor((maxInt-delta)/handledCPCountPlusOne)){error('overflow');}delta+=(m-n)*handledCPCountPlusOne;n=m;for(j=0;j<inputLength;++j){currentValue=input[j];if(currentValue<n&&++delta>maxInt){error('overflow');}if(currentValue==n){// Represent delta as a generalized variable-length integer\nfor(q=delta,k=base;;/* no condition */k+=base){t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q<t){break;}qMinusT=q-t;baseMinusT=base-t;output.push(stringFromCharCode(digitToBasic(t+qMinusT%baseMinusT,0)));q=floor(qMinusT/baseMinusT);}output.push(stringFromCharCode(digitToBasic(q,0)));bias=adapt(delta,handledCPCountPlusOne,handledCPCount==basicLength);delta=0;++handledCPCount;}}++delta;++n;}return output.join('');}/**\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 */function toUnicode(input){return mapDomain(input,function(string){return regexPunycode.test(string)?decode(string.slice(4).toLowerCase()):string;});}/**\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 */function toASCII(input){return mapDomain(input,function(string){return regexNonASCII.test(string)?'xn--'+encode(string):string;});}/*--------------------------------------------------------------------------*/ /** Define the public API */punycode={/**\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 */'version':'1.4.1',/**\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 */'ucs2':{'decode':ucs2decode,'encode':ucs2encode},'decode':decode,'encode':encode,'toASCII':toASCII,'toUnicode':toUnicode};/** Expose `punycode` */ // Some AMD build optimizers, like r.js, check for specific condition patterns\n// like the following:\nif(typeof define=='function'&&_typeof(define.amd)=='object'&&define.amd){define('punycode',function(){return punycode;});}else if(freeExports&&freeModule){if(module.exports==freeExports){// in Node.js, io.js, or RingoJS v0.8.0+\nfreeModule.exports=punycode;}else{// in Narwhal or RingoJS v0.7.0-\nfor(key in punycode){punycode.hasOwnProperty(key)&&(freeExports[key]=punycode[key]);}}}else{// in Rhino or a web browser\nroot.punycode=punycode;}})(this);}).call(this,typeof global!==\"undefined\"?global:typeof self!==\"undefined\"?self:typeof window!==\"undefined\"?window:{});},{}],195:[function(require,module,exports){// 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'use strict';// 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){return Object.prototype.hasOwnProperty.call(obj,prop);}module.exports=function(qs,sep,eq,options){sep=sep||'&';eq=eq||'=';var obj={};if(typeof qs!=='string'||qs.length===0){return obj;}var regexp=/\\+/g;qs=qs.split(sep);var maxKeys=1000;if(options&&typeof options.maxKeys==='number'){maxKeys=options.maxKeys;}var len=qs.length;// maxKeys <= 0 means that we should not limit keys count\nif(maxKeys>0&&len>maxKeys){len=maxKeys;}for(var i=0;i<len;++i){var x=qs[i].replace(regexp,'%20'),idx=x.indexOf(eq),kstr,vstr,k,v;if(idx>=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1);}else{kstr=x;vstr='';}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v;}else if(isArray(obj[k])){obj[k].push(v);}else{obj[k]=[obj[k],v];}}return obj;};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};},{}],196:[function(require,module,exports){// 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'use strict';var stringifyPrimitive=function stringifyPrimitive(v){switch(_typeof(v)){case'string':return v;case'boolean':return v?'true':'false';case'number':return isFinite(v)?v:'';default:return'';}};module.exports=function(obj,sep,eq,name){sep=sep||'&';eq=eq||'=';if(obj===null){obj=undefined;}if(_typeof(obj)==='object'){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v));}).join(sep);}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]));}}).join(sep);}if(!name)return'';return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj));};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==='[object Array]';};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i<xs.length;i++){res.push(f(xs[i],i));}return res;}var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))res.push(key);}return res;};},{}],197:[function(require,module,exports){'use strict';exports.decode=exports.parse=require('./decode');exports.encode=exports.stringify=require('./encode');},{\"./decode\":195,\"./encode\":196}],198:[function(require,module,exports){/* -*- Mode: js; js-indent-level: 2; -*- */ /*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */var util=require('./util');var has=Object.prototype.hasOwnProperty;var hasNativeMap=typeof Map!==\"undefined\";/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */function ArraySet(){this._array=[];this._set=hasNativeMap?new Map():Object.create(null);}/**\n * Static method for creating ArraySet instances from an existing array.\n */ArraySet.fromArray=function ArraySet_fromArray(aArray,aAllowDuplicates){var set=new ArraySet();for(var i=0,len=aArray.length;i<len;i++){set.add(aArray[i],aAllowDuplicates);}return set;};/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */ArraySet.prototype.size=function ArraySet_size(){return hasNativeMap?this._set.size:Object.getOwnPropertyNames(this._set).length;};/**\n * Add the given string to this set.\n *\n * @param String aStr\n */ArraySet.prototype.add=function ArraySet_add(aStr,aAllowDuplicates){var sStr=hasNativeMap?aStr:util.toSetString(aStr);var isDuplicate=hasNativeMap?this.has(aStr):has.call(this._set,sStr);var idx=this._array.length;if(!isDuplicate||aAllowDuplicates){this._array.push(aStr);}if(!isDuplicate){if(hasNativeMap){this._set.set(aStr,idx);}else{this._set[sStr]=idx;}}};/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */ArraySet.prototype.has=function ArraySet_has(aStr){if(hasNativeMap){return this._set.has(aStr);}else{var sStr=util.toSetString(aStr);return has.call(this._set,sStr);}};/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */ArraySet.prototype.indexOf=function ArraySet_indexOf(aStr){if(hasNativeMap){var idx=this._set.get(aStr);if(idx>=0){return idx;}}else{var sStr=util.toSetString(aStr);if(has.call(this._set,sStr)){return this._set[sStr];}}throw new Error('\"'+aStr+'\" is not in the set.');};/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */ArraySet.prototype.at=function ArraySet_at(aIdx){if(aIdx>=0&&aIdx<this._array.length){return this._array[aIdx];}throw new Error('No element indexed by '+aIdx);};/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */ArraySet.prototype.toArray=function ArraySet_toArray(){return this._array.slice();};exports.ArraySet=ArraySet;},{\"./util\":207}],199:[function(require,module,exports){/* -*- Mode: js; js-indent-level: 2; -*- */ /*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n *  * Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials provided\n *    with the distribution.\n *  * Neither the name of Google Inc. nor the names of its\n *    contributors may be used to endorse or promote products derived\n *    from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */var base64=require('./base64');// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n//   Continuation\n//   |    Sign\n//   |    |\n//   V    V\n//   101011\nvar VLQ_BASE_SHIFT=5;// binary: 100000\nvar VLQ_BASE=1<<VLQ_BASE_SHIFT;// binary: 011111\nvar VLQ_BASE_MASK=VLQ_BASE-1;// binary: 100000\nvar VLQ_CONTINUATION_BIT=VLQ_BASE;/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */function toVLQSigned(aValue){return aValue<0?(-aValue<<1)+1:(aValue<<1)+0;}/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */function fromVLQSigned(aValue){var isNegative=(aValue&1)===1;var shifted=aValue>>1;return isNegative?-shifted:shifted;}/**\n * Returns the base 64 VLQ encoded value.\n */exports.encode=function base64VLQ_encode(aValue){var encoded=\"\";var digit;var vlq=toVLQSigned(aValue);do{digit=vlq&VLQ_BASE_MASK;vlq>>>=VLQ_BASE_SHIFT;if(vlq>0){// There are still more digits in this value, so we must make sure the\n// continuation bit is marked.\ndigit|=VLQ_CONTINUATION_BIT;}encoded+=base64.encode(digit);}while(vlq>0);return encoded;};/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */exports.decode=function base64VLQ_decode(aStr,aIndex,aOutParam){var strLen=aStr.length;var result=0;var shift=0;var continuation,digit;do{if(aIndex>=strLen){throw new Error(\"Expected more digits in base 64 VLQ value.\");}digit=base64.decode(aStr.charCodeAt(aIndex++));if(digit===-1){throw new Error(\"Invalid base64 digit: \"+aStr.charAt(aIndex-1));}continuation=!!(digit&VLQ_CONTINUATION_BIT);digit&=VLQ_BASE_MASK;result=result+(digit<<shift);shift+=VLQ_BASE_SHIFT;}while(continuation);aOutParam.value=fromVLQSigned(result);aOutParam.rest=aIndex;};},{\"./base64\":200}],200:[function(require,module,exports){/* -*- Mode: js; js-indent-level: 2; -*- */ /*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */var intToCharMap='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */exports.encode=function(number){if(0<=number&&number<intToCharMap.length){return intToCharMap[number];}throw new TypeError(\"Must be between 0 and 63: \"+number);};/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */exports.decode=function(charCode){var bigA=65;// 'A'\nvar bigZ=90;// 'Z'\nvar littleA=97;// 'a'\nvar littleZ=122;// 'z'\nvar zero=48;// '0'\nvar nine=57;// '9'\nvar plus=43;// '+'\nvar slash=47;// '/'\nvar littleOffset=26;var numberOffset=52;// 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\nif(bigA<=charCode&&charCode<=bigZ){return charCode-bigA;}// 26 - 51: abcdefghijklmnopqrstuvwxyz\nif(littleA<=charCode&&charCode<=littleZ){return charCode-littleA+littleOffset;}// 52 - 61: 0123456789\nif(zero<=charCode&&charCode<=nine){return charCode-zero+numberOffset;}// 62: +\nif(charCode==plus){return 62;}// 63: /\nif(charCode==slash){return 63;}// Invalid base64 digit.\nreturn-1;};},{}],201:[function(require,module,exports){/* -*- Mode: js; js-indent-level: 2; -*- */ /*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */exports.GREATEST_LOWER_BOUND=1;exports.LEAST_UPPER_BOUND=2;/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n */function recursiveSearch(aLow,aHigh,aNeedle,aHaystack,aCompare,aBias){// This function terminates when one of the following is true:\n//\n//   1. We find the exact element we are looking for.\n//\n//   2. We did not find the exact element, but we can return the index of\n//      the next-closest element.\n//\n//   3. We did not find the exact element, and there is no next-closest\n//      element than the one we are searching for, so we return -1.\nvar mid=Math.floor((aHigh-aLow)/2)+aLow;var cmp=aCompare(aNeedle,aHaystack[mid],true);if(cmp===0){// Found the element we are looking for.\nreturn mid;}else if(cmp>0){// Our needle is greater than aHaystack[mid].\nif(aHigh-mid>1){// The element is in the upper half.\nreturn recursiveSearch(mid,aHigh,aNeedle,aHaystack,aCompare,aBias);}// The exact needle element was not found in this haystack. Determine if\n// we are in termination case (3) or (2) and return the appropriate thing.\nif(aBias==exports.LEAST_UPPER_BOUND){return aHigh<aHaystack.length?aHigh:-1;}else{return mid;}}else{// Our needle is less than aHaystack[mid].\nif(mid-aLow>1){// The element is in the lower half.\nreturn recursiveSearch(aLow,mid,aNeedle,aHaystack,aCompare,aBias);}// we are in termination case (3) or (2) and return the appropriate thing.\nif(aBias==exports.LEAST_UPPER_BOUND){return mid;}else{return aLow<0?-1:aLow;}}}/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n *     array and returns -1, 0, or 1 depending on whether the needle is less\n *     than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */exports.search=function search(aNeedle,aHaystack,aCompare,aBias){if(aHaystack.length===0){return-1;}var index=recursiveSearch(-1,aHaystack.length,aNeedle,aHaystack,aCompare,aBias||exports.GREATEST_LOWER_BOUND);if(index<0){return-1;}// We have found either the exact element, or the next-closest element than\n// the one we are searching for. However, there may be more than one such\n// element. Make sure we always return the smallest of these.\nwhile(index-1>=0){if(aCompare(aHaystack[index],aHaystack[index-1],true)!==0){break;}--index;}return index;};},{}],202:[function(require,module,exports){/* -*- Mode: js; js-indent-level: 2; -*- */ /*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */var util=require('./util');/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */function generatedPositionAfter(mappingA,mappingB){// Optimized for most common case\nvar lineA=mappingA.generatedLine;var lineB=mappingB.generatedLine;var columnA=mappingA.generatedColumn;var columnB=mappingB.generatedColumn;return lineB>lineA||lineB==lineA&&columnB>=columnA||util.compareByGeneratedPositionsInflated(mappingA,mappingB)<=0;}/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */function MappingList(){this._array=[];this._sorted=true;// Serves as infimum\nthis._last={generatedLine:-1,generatedColumn:0};}/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */MappingList.prototype.unsortedForEach=function MappingList_forEach(aCallback,aThisArg){this._array.forEach(aCallback,aThisArg);};/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */MappingList.prototype.add=function MappingList_add(aMapping){if(generatedPositionAfter(this._last,aMapping)){this._last=aMapping;this._array.push(aMapping);}else{this._sorted=false;this._array.push(aMapping);}};/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */MappingList.prototype.toArray=function MappingList_toArray(){if(!this._sorted){this._array.sort(util.compareByGeneratedPositionsInflated);this._sorted=true;}return this._array;};exports.MappingList=MappingList;},{\"./util\":207}],203:[function(require,module,exports){/* -*- Mode: js; js-indent-level: 2; -*- */ /*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */ // It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n *        The array.\n * @param {Number} x\n *        The index of the first item.\n * @param {Number} y\n *        The index of the second item.\n */function swap(ary,x,y){var temp=ary[x];ary[x]=ary[y];ary[y]=temp;}/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n *        The lower bound on the range.\n * @param {Number} high\n *        The upper bound on the range.\n */function randomIntInRange(low,high){return Math.round(low+Math.random()*(high-low));}/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n * @param {Number} p\n *        Start index of the array\n * @param {Number} r\n *        End index of the array\n */function doQuickSort(ary,comparator,p,r){// If our lower bound is less than our upper bound, we (1) partition the\n// array into two pieces and (2) recurse on each half. If it is not, this is\n// the empty array and our base case.\nif(p<r){// (1) Partitioning.\n//\n// The partitioning chooses a pivot between `p` and `r` and moves all\n// elements that are less than or equal to the pivot to the before it, and\n// all the elements that are greater than it after it. The effect is that\n// once partition is done, the pivot is in the exact place it will be when\n// the array is put in sorted order, and it will not need to be moved\n// again. This runs in O(n) time.\n// Always choose a random pivot so that an input array which is reverse\n// sorted does not cause O(n^2) running time.\nvar pivotIndex=randomIntInRange(p,r);var i=p-1;swap(ary,pivotIndex,r);var pivot=ary[r];// Immediately after `j` is incremented in this loop, the following hold\n// true:\n//\n//   * Every element in `ary[p .. i]` is less than or equal to the pivot.\n//\n//   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\nfor(var j=p;j<r;j++){if(comparator(ary[j],pivot)<=0){i+=1;swap(ary,i,j);}}swap(ary,i+1,j);var q=i+1;// (2) Recurse on each half.\ndoQuickSort(ary,comparator,p,q-1);doQuickSort(ary,comparator,q+1,r);}}/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n */exports.quickSort=function(ary,comparator){doQuickSort(ary,comparator,0,ary.length-1);};},{}],204:[function(require,module,exports){/* -*- Mode: js; js-indent-level: 2; -*- */ /*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */var util=require('./util');var binarySearch=require('./binary-search');var ArraySet=require('./array-set').ArraySet;var base64VLQ=require('./base64-vlq');var quickSort=require('./quick-sort').quickSort;function SourceMapConsumer(aSourceMap,aSourceMapURL){var sourceMap=aSourceMap;if(typeof aSourceMap==='string'){sourceMap=util.parseSourceMapInput(aSourceMap);}return sourceMap.sections!=null?new IndexedSourceMapConsumer(sourceMap,aSourceMapURL):new BasicSourceMapConsumer(sourceMap,aSourceMapURL);}SourceMapConsumer.fromSourceMap=function(aSourceMap,aSourceMapURL){return BasicSourceMapConsumer.fromSourceMap(aSourceMap,aSourceMapURL);};/**\n * The version of the source mapping spec that we are consuming.\n */SourceMapConsumer.prototype._version=3;// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n//     {\n//       generatedLine: The line number in the generated code,\n//       generatedColumn: The column number in the generated code,\n//       source: The path to the original source file that generated this\n//               chunk of code,\n//       originalLine: The line number in the original source that\n//                     corresponds to this chunk of generated code,\n//       originalColumn: The column number in the original source that\n//                       corresponds to this chunk of generated code,\n//       name: The name of the original symbol which generated this chunk of\n//             code.\n//     }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\nSourceMapConsumer.prototype.__generatedMappings=null;Object.defineProperty(SourceMapConsumer.prototype,'_generatedMappings',{configurable:true,enumerable:true,get:function get(){if(!this.__generatedMappings){this._parseMappings(this._mappings,this.sourceRoot);}return this.__generatedMappings;}});SourceMapConsumer.prototype.__originalMappings=null;Object.defineProperty(SourceMapConsumer.prototype,'_originalMappings',{configurable:true,enumerable:true,get:function get(){if(!this.__originalMappings){this._parseMappings(this._mappings,this.sourceRoot);}return this.__originalMappings;}});SourceMapConsumer.prototype._charIsMappingSeparator=function SourceMapConsumer_charIsMappingSeparator(aStr,index){var c=aStr.charAt(index);return c===\";\"||c===\",\";};/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */SourceMapConsumer.prototype._parseMappings=function SourceMapConsumer_parseMappings(aStr,aSourceRoot){throw new Error(\"Subclasses must implement _parseMappings\");};SourceMapConsumer.GENERATED_ORDER=1;SourceMapConsumer.ORIGINAL_ORDER=2;SourceMapConsumer.GREATEST_LOWER_BOUND=1;SourceMapConsumer.LEAST_UPPER_BOUND=2;/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n *        The function that is called with each mapping.\n * @param Object aContext\n *        Optional. If specified, this object will be the value of `this` every\n *        time that `aCallback` is called.\n * @param aOrder\n *        Either `SourceMapConsumer.GENERATED_ORDER` or\n *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n *        iterate over the mappings sorted by the generated file's line/column\n *        order or the original's source/line/column order, respectively. Defaults to\n *        `SourceMapConsumer.GENERATED_ORDER`.\n */SourceMapConsumer.prototype.eachMapping=function SourceMapConsumer_eachMapping(aCallback,aContext,aOrder){var context=aContext||null;var order=aOrder||SourceMapConsumer.GENERATED_ORDER;var mappings;switch(order){case SourceMapConsumer.GENERATED_ORDER:mappings=this._generatedMappings;break;case SourceMapConsumer.ORIGINAL_ORDER:mappings=this._originalMappings;break;default:throw new Error(\"Unknown order of iteration.\");}var sourceRoot=this.sourceRoot;mappings.map(function(mapping){var source=mapping.source===null?null:this._sources.at(mapping.source);source=util.computeSourceURL(sourceRoot,source,this._sourceMapURL);return{source:source,generatedLine:mapping.generatedLine,generatedColumn:mapping.generatedColumn,originalLine:mapping.originalLine,originalColumn:mapping.originalColumn,name:mapping.name===null?null:this._names.at(mapping.name)};},this).forEach(aCallback,context);};/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number is 1-based.\n *   - column: Optional. the column number in the original source.\n *    The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *    line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *    The column number is 0-based.\n */SourceMapConsumer.prototype.allGeneratedPositionsFor=function SourceMapConsumer_allGeneratedPositionsFor(aArgs){var line=util.getArg(aArgs,'line');// When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n// returns the index of the closest mapping less than the needle. By\n// setting needle.originalColumn to 0, we thus find the last mapping for\n// the given line, provided such a mapping exists.\nvar needle={source:util.getArg(aArgs,'source'),originalLine:line,originalColumn:util.getArg(aArgs,'column',0)};needle.source=this._findSourceIndex(needle.source);if(needle.source<0){return[];}var mappings=[];var index=this._findMapping(needle,this._originalMappings,\"originalLine\",\"originalColumn\",util.compareByOriginalPositions,binarySearch.LEAST_UPPER_BOUND);if(index>=0){var mapping=this._originalMappings[index];if(aArgs.column===undefined){var originalLine=mapping.originalLine;// Iterate until either we run out of mappings, or we run into\n// a mapping for a different line than the one we found. Since\n// mappings are sorted, this is guaranteed to find all mappings for\n// the line we found.\nwhile(mapping&&mapping.originalLine===originalLine){mappings.push({line:util.getArg(mapping,'generatedLine',null),column:util.getArg(mapping,'generatedColumn',null),lastColumn:util.getArg(mapping,'lastGeneratedColumn',null)});mapping=this._originalMappings[++index];}}else{var originalColumn=mapping.originalColumn;// Iterate until either we run out of mappings, or we run into\n// a mapping for a different line than the one we were searching for.\n// Since mappings are sorted, this is guaranteed to find all mappings for\n// the line we are searching for.\nwhile(mapping&&mapping.originalLine===line&&mapping.originalColumn==originalColumn){mappings.push({line:util.getArg(mapping,'generatedLine',null),column:util.getArg(mapping,'generatedColumn',null),lastColumn:util.getArg(mapping,'lastGeneratedColumn',null)});mapping=this._originalMappings[++index];}}}return mappings;};exports.SourceMapConsumer=SourceMapConsumer;/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - sources: An array of URLs to the original source files.\n *   - names: An array of identifiers which can be referrenced by individual mappings.\n *   - sourceRoot: Optional. The URL root from which all sources are relative.\n *   - sourcesContent: Optional. An array of contents of the original source files.\n *   - mappings: A string of base64 VLQs which contain the actual mappings.\n *   - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n *     {\n *       version : 3,\n *       file: \"out.js\",\n *       sourceRoot : \"\",\n *       sources: [\"foo.js\", \"bar.js\"],\n *       names: [\"src\", \"maps\", \"are\", \"fun\"],\n *       mappings: \"AA,AB;;ABCDE;\"\n *     }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */function BasicSourceMapConsumer(aSourceMap,aSourceMapURL){var sourceMap=aSourceMap;if(typeof aSourceMap==='string'){sourceMap=util.parseSourceMapInput(aSourceMap);}var version=util.getArg(sourceMap,'version');var sources=util.getArg(sourceMap,'sources');// Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n// requires the array) to play nice here.\nvar names=util.getArg(sourceMap,'names',[]);var sourceRoot=util.getArg(sourceMap,'sourceRoot',null);var sourcesContent=util.getArg(sourceMap,'sourcesContent',null);var mappings=util.getArg(sourceMap,'mappings');var file=util.getArg(sourceMap,'file',null);// Once again, Sass deviates from the spec and supplies the version as a\n// string rather than a number, so we use loose equality checking here.\nif(version!=this._version){throw new Error('Unsupported version: '+version);}if(sourceRoot){sourceRoot=util.normalize(sourceRoot);}sources=sources.map(String)// Some source maps produce relative source paths like \"./foo.js\" instead of\n// \"foo.js\".  Normalize these first so that future comparisons will succeed.\n// See bugzil.la/1090768.\n.map(util.normalize)// Always ensure that absolute sources are internally stored relative to\n// the source root, if the source root is absolute. Not doing this would\n// be particularly problematic when the source root is a prefix of the\n// source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n.map(function(source){return sourceRoot&&util.isAbsolute(sourceRoot)&&util.isAbsolute(source)?util.relative(sourceRoot,source):source;});// Pass `true` below to allow duplicate names and sources. While source maps\n// are intended to be compressed and deduplicated, the TypeScript compiler\n// sometimes generates source maps with duplicates in them. See Github issue\n// #72 and bugzil.la/889492.\nthis._names=ArraySet.fromArray(names.map(String),true);this._sources=ArraySet.fromArray(sources,true);this._absoluteSources=this._sources.toArray().map(function(s){return util.computeSourceURL(sourceRoot,s,aSourceMapURL);});this.sourceRoot=sourceRoot;this.sourcesContent=sourcesContent;this._mappings=mappings;this._sourceMapURL=aSourceMapURL;this.file=file;}BasicSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype);BasicSourceMapConsumer.prototype.consumer=SourceMapConsumer;/**\n * Utility function to find the index of a source.  Returns -1 if not\n * found.\n */BasicSourceMapConsumer.prototype._findSourceIndex=function(aSource){var relativeSource=aSource;if(this.sourceRoot!=null){relativeSource=util.relative(this.sourceRoot,relativeSource);}if(this._sources.has(relativeSource)){return this._sources.indexOf(relativeSource);}// Maybe aSource is an absolute URL as returned by |sources|.  In\n// this case we can't simply undo the transform.\nvar i;for(i=0;i<this._absoluteSources.length;++i){if(this._absoluteSources[i]==aSource){return i;}}return-1;};/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n *        The source map that will be consumed.\n * @param String aSourceMapURL\n *        The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */BasicSourceMapConsumer.fromSourceMap=function SourceMapConsumer_fromSourceMap(aSourceMap,aSourceMapURL){var smc=Object.create(BasicSourceMapConsumer.prototype);var names=smc._names=ArraySet.fromArray(aSourceMap._names.toArray(),true);var sources=smc._sources=ArraySet.fromArray(aSourceMap._sources.toArray(),true);smc.sourceRoot=aSourceMap._sourceRoot;smc.sourcesContent=aSourceMap._generateSourcesContent(smc._sources.toArray(),smc.sourceRoot);smc.file=aSourceMap._file;smc._sourceMapURL=aSourceMapURL;smc._absoluteSources=smc._sources.toArray().map(function(s){return util.computeSourceURL(smc.sourceRoot,s,aSourceMapURL);});// Because we are modifying the entries (by converting string sources and\n// names to indices into the sources and names ArraySets), we have to make\n// a copy of the entry or else bad things happen. Shared mutable state\n// strikes again! See github issue #191.\nvar generatedMappings=aSourceMap._mappings.toArray().slice();var destGeneratedMappings=smc.__generatedMappings=[];var destOriginalMappings=smc.__originalMappings=[];for(var i=0,length=generatedMappings.length;i<length;i++){var srcMapping=generatedMappings[i];var destMapping=new Mapping();destMapping.generatedLine=srcMapping.generatedLine;destMapping.generatedColumn=srcMapping.generatedColumn;if(srcMapping.source){destMapping.source=sources.indexOf(srcMapping.source);destMapping.originalLine=srcMapping.originalLine;destMapping.originalColumn=srcMapping.originalColumn;if(srcMapping.name){destMapping.name=names.indexOf(srcMapping.name);}destOriginalMappings.push(destMapping);}destGeneratedMappings.push(destMapping);}quickSort(smc.__originalMappings,util.compareByOriginalPositions);return smc;};/**\n * The version of the source mapping spec that we are consuming.\n */BasicSourceMapConsumer.prototype._version=3;/**\n * The list of original sources.\n */Object.defineProperty(BasicSourceMapConsumer.prototype,'sources',{get:function get(){return this._absoluteSources.slice();}});/**\n * Provide the JIT with a nice shape / hidden class.\n */function Mapping(){this.generatedLine=0;this.generatedColumn=0;this.source=null;this.originalLine=null;this.originalColumn=null;this.name=null;}/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */BasicSourceMapConsumer.prototype._parseMappings=function SourceMapConsumer_parseMappings(aStr,aSourceRoot){var generatedLine=1;var previousGeneratedColumn=0;var previousOriginalLine=0;var previousOriginalColumn=0;var previousSource=0;var previousName=0;var length=aStr.length;var index=0;var cachedSegments={};var temp={};var originalMappings=[];var generatedMappings=[];var mapping,str,segment,end,value;while(index<length){if(aStr.charAt(index)===';'){generatedLine++;index++;previousGeneratedColumn=0;}else if(aStr.charAt(index)===','){index++;}else{mapping=new Mapping();mapping.generatedLine=generatedLine;// Because each offset is encoded relative to the previous one,\n// many segments often have the same encoding. We can exploit this\n// fact by caching the parsed variable length fields of each segment,\n// allowing us to avoid a second parse if we encounter the same\n// segment again.\nfor(end=index;end<length;end++){if(this._charIsMappingSeparator(aStr,end)){break;}}str=aStr.slice(index,end);segment=cachedSegments[str];if(segment){index+=str.length;}else{segment=[];while(index<end){base64VLQ.decode(aStr,index,temp);value=temp.value;index=temp.rest;segment.push(value);}if(segment.length===2){throw new Error('Found a source, but no line and column');}if(segment.length===3){throw new Error('Found a source and line, but no column');}cachedSegments[str]=segment;}// Generated column.\nmapping.generatedColumn=previousGeneratedColumn+segment[0];previousGeneratedColumn=mapping.generatedColumn;if(segment.length>1){// Original source.\nmapping.source=previousSource+segment[1];previousSource+=segment[1];// Original line.\nmapping.originalLine=previousOriginalLine+segment[2];previousOriginalLine=mapping.originalLine;// Lines are stored 0-based\nmapping.originalLine+=1;// Original column.\nmapping.originalColumn=previousOriginalColumn+segment[3];previousOriginalColumn=mapping.originalColumn;if(segment.length>4){// Original name.\nmapping.name=previousName+segment[4];previousName+=segment[4];}}generatedMappings.push(mapping);if(typeof mapping.originalLine==='number'){originalMappings.push(mapping);}}}quickSort(generatedMappings,util.compareByGeneratedPositionsDeflated);this.__generatedMappings=generatedMappings;quickSort(originalMappings,util.compareByOriginalPositions);this.__originalMappings=originalMappings;};/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */BasicSourceMapConsumer.prototype._findMapping=function SourceMapConsumer_findMapping(aNeedle,aMappings,aLineName,aColumnName,aComparator,aBias){// To return the position we are searching for, we must first find the\n// mapping for the given position and then return the opposite position it\n// points to. Because the mappings are sorted, we can use binary search to\n// find the best mapping.\nif(aNeedle[aLineName]<=0){throw new TypeError('Line must be greater than or equal to 1, got '+aNeedle[aLineName]);}if(aNeedle[aColumnName]<0){throw new TypeError('Column must be greater than or equal to 0, got '+aNeedle[aColumnName]);}return binarySearch.search(aNeedle,aMappings,aComparator,aBias);};/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */BasicSourceMapConsumer.prototype.computeColumnSpans=function SourceMapConsumer_computeColumnSpans(){for(var index=0;index<this._generatedMappings.length;++index){var mapping=this._generatedMappings[index];// Mappings do not contain a field for the last generated columnt. We\n// can come up with an optimistic estimate, however, by assuming that\n// mappings are contiguous (i.e. given two consecutive mappings, the\n// first mapping ends where the second one starts).\nif(index+1<this._generatedMappings.length){var nextMapping=this._generatedMappings[index+1];if(mapping.generatedLine===nextMapping.generatedLine){mapping.lastGeneratedColumn=nextMapping.generatedColumn-1;continue;}}// The last mapping for each line spans the entire line.\nmapping.lastGeneratedColumn=Infinity;}};/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */BasicSourceMapConsumer.prototype.originalPositionFor=function SourceMapConsumer_originalPositionFor(aArgs){var needle={generatedLine:util.getArg(aArgs,'line'),generatedColumn:util.getArg(aArgs,'column')};var index=this._findMapping(needle,this._generatedMappings,\"generatedLine\",\"generatedColumn\",util.compareByGeneratedPositionsDeflated,util.getArg(aArgs,'bias',SourceMapConsumer.GREATEST_LOWER_BOUND));if(index>=0){var mapping=this._generatedMappings[index];if(mapping.generatedLine===needle.generatedLine){var source=util.getArg(mapping,'source',null);if(source!==null){source=this._sources.at(source);source=util.computeSourceURL(this.sourceRoot,source,this._sourceMapURL);}var name=util.getArg(mapping,'name',null);if(name!==null){name=this._names.at(name);}return{source:source,line:util.getArg(mapping,'originalLine',null),column:util.getArg(mapping,'originalColumn',null),name:name};}}return{source:null,line:null,column:null,name:null};};/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */BasicSourceMapConsumer.prototype.hasContentsOfAllSources=function BasicSourceMapConsumer_hasContentsOfAllSources(){if(!this.sourcesContent){return false;}return this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(sc){return sc==null;});};/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */BasicSourceMapConsumer.prototype.sourceContentFor=function SourceMapConsumer_sourceContentFor(aSource,nullOnMissing){if(!this.sourcesContent){return null;}var index=this._findSourceIndex(aSource);if(index>=0){return this.sourcesContent[index];}var relativeSource=aSource;if(this.sourceRoot!=null){relativeSource=util.relative(this.sourceRoot,relativeSource);}var url;if(this.sourceRoot!=null&&(url=util.urlParse(this.sourceRoot))){// XXX: file:// URIs and absolute paths lead to unexpected behavior for\n// many users. We can help them out when they expect file:// URIs to\n// behave like it would if they were running a local HTTP server. See\n// https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\nvar fileUriAbsPath=relativeSource.replace(/^file:\\/\\//,\"\");if(url.scheme==\"file\"&&this._sources.has(fileUriAbsPath)){return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];}if((!url.path||url.path==\"/\")&&this._sources.has(\"/\"+relativeSource)){return this.sourcesContent[this._sources.indexOf(\"/\"+relativeSource)];}}// This function is used recursively from\n// IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n// don't want to throw if we can't find the source - we just want to\n// return null, so we provide a flag to exit gracefully.\nif(nullOnMissing){return null;}else{throw new Error('\"'+relativeSource+'\" is not in the SourceMap.');}};/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */BasicSourceMapConsumer.prototype.generatedPositionFor=function SourceMapConsumer_generatedPositionFor(aArgs){var source=util.getArg(aArgs,'source');source=this._findSourceIndex(source);if(source<0){return{line:null,column:null,lastColumn:null};}var needle={source:source,originalLine:util.getArg(aArgs,'line'),originalColumn:util.getArg(aArgs,'column')};var index=this._findMapping(needle,this._originalMappings,\"originalLine\",\"originalColumn\",util.compareByOriginalPositions,util.getArg(aArgs,'bias',SourceMapConsumer.GREATEST_LOWER_BOUND));if(index>=0){var mapping=this._originalMappings[index];if(mapping.source===needle.source){return{line:util.getArg(mapping,'generatedLine',null),column:util.getArg(mapping,'generatedColumn',null),lastColumn:util.getArg(mapping,'lastGeneratedColumn',null)};}}return{line:null,column:null,lastColumn:null};};exports.BasicSourceMapConsumer=BasicSourceMapConsumer;/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - file: Optional. The generated file this source map is associated with.\n *   - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n *   - offset: The offset into the original specified at which this section\n *       begins to apply, defined as an object with a \"line\" and \"column\"\n *       field.\n *   - map: A source map definition. This source map could also be indexed,\n *       but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n *  {\n *    version : 3,\n *    file: \"app.js\",\n *    sections: [{\n *      offset: {line:100, column:10},\n *      map: {\n *        version : 3,\n *        file: \"section.js\",\n *        sources: [\"foo.js\", \"bar.js\"],\n *        names: [\"src\", \"maps\", \"are\", \"fun\"],\n *        mappings: \"AAAA,E;;ABCDE;\"\n *      }\n *    }],\n *  }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */function IndexedSourceMapConsumer(aSourceMap,aSourceMapURL){var sourceMap=aSourceMap;if(typeof aSourceMap==='string'){sourceMap=util.parseSourceMapInput(aSourceMap);}var version=util.getArg(sourceMap,'version');var sections=util.getArg(sourceMap,'sections');if(version!=this._version){throw new Error('Unsupported version: '+version);}this._sources=new ArraySet();this._names=new ArraySet();var lastOffset={line:-1,column:0};this._sections=sections.map(function(s){if(s.url){// The url field will require support for asynchronicity.\n// See https://github.com/mozilla/source-map/issues/16\nthrow new Error('Support for url field in sections not implemented.');}var offset=util.getArg(s,'offset');var offsetLine=util.getArg(offset,'line');var offsetColumn=util.getArg(offset,'column');if(offsetLine<lastOffset.line||offsetLine===lastOffset.line&&offsetColumn<lastOffset.column){throw new Error('Section offsets must be ordered and non-overlapping.');}lastOffset=offset;return{generatedOffset:{// The offset fields are 0-based, but we use 1-based indices when\n// encoding/decoding from VLQ.\ngeneratedLine:offsetLine+1,generatedColumn:offsetColumn+1},consumer:new SourceMapConsumer(util.getArg(s,'map'),aSourceMapURL)};});}IndexedSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype);IndexedSourceMapConsumer.prototype.constructor=SourceMapConsumer;/**\n * The version of the source mapping spec that we are consuming.\n */IndexedSourceMapConsumer.prototype._version=3;/**\n * The list of original sources.\n */Object.defineProperty(IndexedSourceMapConsumer.prototype,'sources',{get:function get(){var sources=[];for(var i=0;i<this._sections.length;i++){for(var j=0;j<this._sections[i].consumer.sources.length;j++){sources.push(this._sections[i].consumer.sources[j]);}}return sources;}});/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */IndexedSourceMapConsumer.prototype.originalPositionFor=function IndexedSourceMapConsumer_originalPositionFor(aArgs){var needle={generatedLine:util.getArg(aArgs,'line'),generatedColumn:util.getArg(aArgs,'column')};// Find the section containing the generated position we're trying to map\n// to an original position.\nvar sectionIndex=binarySearch.search(needle,this._sections,function(needle,section){var cmp=needle.generatedLine-section.generatedOffset.generatedLine;if(cmp){return cmp;}return needle.generatedColumn-section.generatedOffset.generatedColumn;});var section=this._sections[sectionIndex];if(!section){return{source:null,line:null,column:null,name:null};}return section.consumer.originalPositionFor({line:needle.generatedLine-(section.generatedOffset.generatedLine-1),column:needle.generatedColumn-(section.generatedOffset.generatedLine===needle.generatedLine?section.generatedOffset.generatedColumn-1:0),bias:aArgs.bias});};/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */IndexedSourceMapConsumer.prototype.hasContentsOfAllSources=function IndexedSourceMapConsumer_hasContentsOfAllSources(){return this._sections.every(function(s){return s.consumer.hasContentsOfAllSources();});};/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */IndexedSourceMapConsumer.prototype.sourceContentFor=function IndexedSourceMapConsumer_sourceContentFor(aSource,nullOnMissing){for(var i=0;i<this._sections.length;i++){var section=this._sections[i];var content=section.consumer.sourceContentFor(aSource,true);if(content){return content;}}if(nullOnMissing){return null;}else{throw new Error('\"'+aSource+'\" is not in the SourceMap.');}};/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based. \n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */IndexedSourceMapConsumer.prototype.generatedPositionFor=function IndexedSourceMapConsumer_generatedPositionFor(aArgs){for(var i=0;i<this._sections.length;i++){var section=this._sections[i];// Only consider this section if the requested source is in the list of\n// sources of the consumer.\nif(section.consumer._findSourceIndex(util.getArg(aArgs,'source'))===-1){continue;}var generatedPosition=section.consumer.generatedPositionFor(aArgs);if(generatedPosition){var ret={line:generatedPosition.line+(section.generatedOffset.generatedLine-1),column:generatedPosition.column+(section.generatedOffset.generatedLine===generatedPosition.line?section.generatedOffset.generatedColumn-1:0)};return ret;}}return{line:null,column:null};};/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */IndexedSourceMapConsumer.prototype._parseMappings=function IndexedSourceMapConsumer_parseMappings(aStr,aSourceRoot){this.__generatedMappings=[];this.__originalMappings=[];for(var i=0;i<this._sections.length;i++){var section=this._sections[i];var sectionMappings=section.consumer._generatedMappings;for(var j=0;j<sectionMappings.length;j++){var mapping=sectionMappings[j];var source=section.consumer._sources.at(mapping.source);source=util.computeSourceURL(section.consumer.sourceRoot,source,this._sourceMapURL);this._sources.add(source);source=this._sources.indexOf(source);var name=null;if(mapping.name){name=section.consumer._names.at(mapping.name);this._names.add(name);name=this._names.indexOf(name);}// The mappings coming from the consumer for the section have\n// generated positions relative to the start of the section, so we\n// need to offset them to be relative to the start of the concatenated\n// generated file.\nvar adjustedMapping={source:source,generatedLine:mapping.generatedLine+(section.generatedOffset.generatedLine-1),generatedColumn:mapping.generatedColumn+(section.generatedOffset.generatedLine===mapping.generatedLine?section.generatedOffset.generatedColumn-1:0),originalLine:mapping.originalLine,originalColumn:mapping.originalColumn,name:name};this.__generatedMappings.push(adjustedMapping);if(typeof adjustedMapping.originalLine==='number'){this.__originalMappings.push(adjustedMapping);}}}quickSort(this.__generatedMappings,util.compareByGeneratedPositionsDeflated);quickSort(this.__originalMappings,util.compareByOriginalPositions);};exports.IndexedSourceMapConsumer=IndexedSourceMapConsumer;},{\"./array-set\":198,\"./base64-vlq\":199,\"./binary-search\":201,\"./quick-sort\":203,\"./util\":207}],205:[function(require,module,exports){/* -*- Mode: js; js-indent-level: 2; -*- */ /*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */var base64VLQ=require('./base64-vlq');var util=require('./util');var ArraySet=require('./array-set').ArraySet;var MappingList=require('./mapping-list').MappingList;/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n *   - file: The filename of the generated source.\n *   - sourceRoot: A root for all relative URLs in this source map.\n */function SourceMapGenerator(aArgs){if(!aArgs){aArgs={};}this._file=util.getArg(aArgs,'file',null);this._sourceRoot=util.getArg(aArgs,'sourceRoot',null);this._skipValidation=util.getArg(aArgs,'skipValidation',false);this._sources=new ArraySet();this._names=new ArraySet();this._mappings=new MappingList();this._sourcesContents=null;}SourceMapGenerator.prototype._version=3;/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */SourceMapGenerator.fromSourceMap=function SourceMapGenerator_fromSourceMap(aSourceMapConsumer){var sourceRoot=aSourceMapConsumer.sourceRoot;var generator=new SourceMapGenerator({file:aSourceMapConsumer.file,sourceRoot:sourceRoot});aSourceMapConsumer.eachMapping(function(mapping){var newMapping={generated:{line:mapping.generatedLine,column:mapping.generatedColumn}};if(mapping.source!=null){newMapping.source=mapping.source;if(sourceRoot!=null){newMapping.source=util.relative(sourceRoot,newMapping.source);}newMapping.original={line:mapping.originalLine,column:mapping.originalColumn};if(mapping.name!=null){newMapping.name=mapping.name;}}generator.addMapping(newMapping);});aSourceMapConsumer.sources.forEach(function(sourceFile){var sourceRelative=sourceFile;if(sourceRoot!==null){sourceRelative=util.relative(sourceRoot,sourceFile);}if(!generator._sources.has(sourceRelative)){generator._sources.add(sourceRelative);}var content=aSourceMapConsumer.sourceContentFor(sourceFile);if(content!=null){generator.setSourceContent(sourceFile,content);}});return generator;};/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n *   - generated: An object with the generated line and column positions.\n *   - original: An object with the original line and column positions.\n *   - source: The original source file (relative to the sourceRoot).\n *   - name: An optional original token name for this mapping.\n */SourceMapGenerator.prototype.addMapping=function SourceMapGenerator_addMapping(aArgs){var generated=util.getArg(aArgs,'generated');var original=util.getArg(aArgs,'original',null);var source=util.getArg(aArgs,'source',null);var name=util.getArg(aArgs,'name',null);if(!this._skipValidation){this._validateMapping(generated,original,source,name);}if(source!=null){source=String(source);if(!this._sources.has(source)){this._sources.add(source);}}if(name!=null){name=String(name);if(!this._names.has(name)){this._names.add(name);}}this._mappings.add({generatedLine:generated.line,generatedColumn:generated.column,originalLine:original!=null&&original.line,originalColumn:original!=null&&original.column,source:source,name:name});};/**\n * Set the source content for a source file.\n */SourceMapGenerator.prototype.setSourceContent=function SourceMapGenerator_setSourceContent(aSourceFile,aSourceContent){var source=aSourceFile;if(this._sourceRoot!=null){source=util.relative(this._sourceRoot,source);}if(aSourceContent!=null){// Add the source content to the _sourcesContents map.\n// Create a new _sourcesContents map if the property is null.\nif(!this._sourcesContents){this._sourcesContents=Object.create(null);}this._sourcesContents[util.toSetString(source)]=aSourceContent;}else if(this._sourcesContents){// Remove the source file from the _sourcesContents map.\n// If the _sourcesContents map is empty, set the property to null.\ndelete this._sourcesContents[util.toSetString(source)];if(Object.keys(this._sourcesContents).length===0){this._sourcesContents=null;}}};/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n *        If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n *        to be applied. If relative, it is relative to the SourceMapConsumer.\n *        This parameter is needed when the two source maps aren't in the same\n *        directory, and the source map to be applied contains relative source\n *        paths. If so, those relative source paths need to be rewritten\n *        relative to the SourceMapGenerator.\n */SourceMapGenerator.prototype.applySourceMap=function SourceMapGenerator_applySourceMap(aSourceMapConsumer,aSourceFile,aSourceMapPath){var sourceFile=aSourceFile;// If aSourceFile is omitted, we will use the file property of the SourceMap\nif(aSourceFile==null){if(aSourceMapConsumer.file==null){throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, '+'or the source map\\'s \"file\" property. Both were omitted.');}sourceFile=aSourceMapConsumer.file;}var sourceRoot=this._sourceRoot;// Make \"sourceFile\" relative if an absolute Url is passed.\nif(sourceRoot!=null){sourceFile=util.relative(sourceRoot,sourceFile);}// Applying the SourceMap can add and remove items from the sources and\n// the names array.\nvar newSources=new ArraySet();var newNames=new ArraySet();// Find mappings for the \"sourceFile\"\nthis._mappings.unsortedForEach(function(mapping){if(mapping.source===sourceFile&&mapping.originalLine!=null){// Check if it can be mapped by the source map, then update the mapping.\nvar original=aSourceMapConsumer.originalPositionFor({line:mapping.originalLine,column:mapping.originalColumn});if(original.source!=null){// Copy mapping\nmapping.source=original.source;if(aSourceMapPath!=null){mapping.source=util.join(aSourceMapPath,mapping.source);}if(sourceRoot!=null){mapping.source=util.relative(sourceRoot,mapping.source);}mapping.originalLine=original.line;mapping.originalColumn=original.column;if(original.name!=null){mapping.name=original.name;}}}var source=mapping.source;if(source!=null&&!newSources.has(source)){newSources.add(source);}var name=mapping.name;if(name!=null&&!newNames.has(name)){newNames.add(name);}},this);this._sources=newSources;this._names=newNames;// Copy sourcesContents of applied map.\naSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);if(content!=null){if(aSourceMapPath!=null){sourceFile=util.join(aSourceMapPath,sourceFile);}if(sourceRoot!=null){sourceFile=util.relative(sourceRoot,sourceFile);}this.setSourceContent(sourceFile,content);}},this);};/**\n * A mapping can have one of the three levels of data:\n *\n *   1. Just the generated position.\n *   2. The Generated position, original position, and original source.\n *   3. Generated and original position, original source, as well as a name\n *      token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */SourceMapGenerator.prototype._validateMapping=function SourceMapGenerator_validateMapping(aGenerated,aOriginal,aSource,aName){// When aOriginal is truthy but has empty values for .line and .column,\n// it is most likely a programmer error. In this case we throw a very\n// specific error message to try to guide them the right way.\n// For example: https://github.com/Polymer/polymer-bundler/pull/519\nif(aOriginal&&typeof aOriginal.line!=='number'&&typeof aOriginal.column!=='number'){throw new Error('original.line and original.column are not numbers -- you probably meant to omit '+'the original mapping entirely and only map the generated position. If so, pass '+'null for the original mapping instead of an object with empty or null values.');}if(aGenerated&&'line'in aGenerated&&'column'in aGenerated&&aGenerated.line>0&&aGenerated.column>=0&&!aOriginal&&!aSource&&!aName){// Case 1.\nreturn;}else if(aGenerated&&'line'in aGenerated&&'column'in aGenerated&&aOriginal&&'line'in aOriginal&&'column'in aOriginal&&aGenerated.line>0&&aGenerated.column>=0&&aOriginal.line>0&&aOriginal.column>=0&&aSource){// Cases 2 and 3.\nreturn;}else{throw new Error('Invalid mapping: '+JSON.stringify({generated:aGenerated,source:aSource,original:aOriginal,name:aName}));}};/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */SourceMapGenerator.prototype._serializeMappings=function SourceMapGenerator_serializeMappings(){var previousGeneratedColumn=0;var previousGeneratedLine=1;var previousOriginalColumn=0;var previousOriginalLine=0;var previousName=0;var previousSource=0;var result='';var next;var mapping;var nameIdx;var sourceIdx;var mappings=this._mappings.toArray();for(var i=0,len=mappings.length;i<len;i++){mapping=mappings[i];next='';if(mapping.generatedLine!==previousGeneratedLine){previousGeneratedColumn=0;while(mapping.generatedLine!==previousGeneratedLine){next+=';';previousGeneratedLine++;}}else{if(i>0){if(!util.compareByGeneratedPositionsInflated(mapping,mappings[i-1])){continue;}next+=',';}}next+=base64VLQ.encode(mapping.generatedColumn-previousGeneratedColumn);previousGeneratedColumn=mapping.generatedColumn;if(mapping.source!=null){sourceIdx=this._sources.indexOf(mapping.source);next+=base64VLQ.encode(sourceIdx-previousSource);previousSource=sourceIdx;// lines are stored 0-based in SourceMap spec version 3\nnext+=base64VLQ.encode(mapping.originalLine-1-previousOriginalLine);previousOriginalLine=mapping.originalLine-1;next+=base64VLQ.encode(mapping.originalColumn-previousOriginalColumn);previousOriginalColumn=mapping.originalColumn;if(mapping.name!=null){nameIdx=this._names.indexOf(mapping.name);next+=base64VLQ.encode(nameIdx-previousName);previousName=nameIdx;}}result+=next;}return result;};SourceMapGenerator.prototype._generateSourcesContent=function SourceMapGenerator_generateSourcesContent(aSources,aSourceRoot){return aSources.map(function(source){if(!this._sourcesContents){return null;}if(aSourceRoot!=null){source=util.relative(aSourceRoot,source);}var key=util.toSetString(source);return Object.prototype.hasOwnProperty.call(this._sourcesContents,key)?this._sourcesContents[key]:null;},this);};/**\n * Externalize the source map.\n */SourceMapGenerator.prototype.toJSON=function SourceMapGenerator_toJSON(){var map={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};if(this._file!=null){map.file=this._file;}if(this._sourceRoot!=null){map.sourceRoot=this._sourceRoot;}if(this._sourcesContents){map.sourcesContent=this._generateSourcesContent(map.sources,map.sourceRoot);}return map;};/**\n * Render the source map being generated to a string.\n */SourceMapGenerator.prototype.toString=function SourceMapGenerator_toString(){return JSON.stringify(this.toJSON());};exports.SourceMapGenerator=SourceMapGenerator;},{\"./array-set\":198,\"./base64-vlq\":199,\"./mapping-list\":202,\"./util\":207}],206:[function(require,module,exports){/* -*- Mode: js; js-indent-level: 2; -*- */ /*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */var SourceMapGenerator=require('./source-map-generator').SourceMapGenerator;var util=require('./util');// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE=/(\\r?\\n)/;// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE=10;// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode=\"$$$isSourceNode$$$\";/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n *        generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */function SourceNode(aLine,aColumn,aSource,aChunks,aName){this.children=[];this.sourceContents={};this.line=aLine==null?null:aLine;this.column=aColumn==null?null:aColumn;this.source=aSource==null?null:aSource;this.name=aName==null?null:aName;this[isSourceNode]=true;if(aChunks!=null)this.add(aChunks);}/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n *        SourceMapConsumer should be relative to.\n */SourceNode.fromStringWithSourceMap=function SourceNode_fromStringWithSourceMap(aGeneratedCode,aSourceMapConsumer,aRelativePath){// The SourceNode we want to fill with the generated code\n// and the SourceMap\nvar node=new SourceNode();// All even indices of this array are one line of the generated code,\n// while all odd indices are the newlines between two adjacent lines\n// (since `REGEX_NEWLINE` captures its match).\n// Processed fragments are accessed by calling `shiftNextLine`.\nvar remainingLines=aGeneratedCode.split(REGEX_NEWLINE);var remainingLinesIndex=0;var shiftNextLine=function shiftNextLine(){var lineContents=getNextLine();// The last line of a file might not have a newline.\nvar newLine=getNextLine()||\"\";return lineContents+newLine;function getNextLine(){return remainingLinesIndex<remainingLines.length?remainingLines[remainingLinesIndex++]:undefined;}};// We need to remember the position of \"remainingLines\"\nvar lastGeneratedLine=1,lastGeneratedColumn=0;// The generate SourceNodes we need a code range.\n// To extract it current and last mapping is used.\n// Here we store the last mapping.\nvar lastMapping=null;aSourceMapConsumer.eachMapping(function(mapping){if(lastMapping!==null){// We add the code from \"lastMapping\" to \"mapping\":\n// First check if there is a new line in between.\nif(lastGeneratedLine<mapping.generatedLine){// Associate first line with \"lastMapping\"\naddMappingWithCode(lastMapping,shiftNextLine());lastGeneratedLine++;lastGeneratedColumn=0;// The remaining code is added without mapping\n}else{// There is no new line in between.\n// Associate the code between \"lastGeneratedColumn\" and\n// \"mapping.generatedColumn\" with \"lastMapping\"\nvar nextLine=remainingLines[remainingLinesIndex]||'';var code=nextLine.substr(0,mapping.generatedColumn-lastGeneratedColumn);remainingLines[remainingLinesIndex]=nextLine.substr(mapping.generatedColumn-lastGeneratedColumn);lastGeneratedColumn=mapping.generatedColumn;addMappingWithCode(lastMapping,code);// No more remaining code, continue\nlastMapping=mapping;return;}}// We add the generated code until the first mapping\n// to the SourceNode without any mapping.\n// Each line is added as separate string.\nwhile(lastGeneratedLine<mapping.generatedLine){node.add(shiftNextLine());lastGeneratedLine++;}if(lastGeneratedColumn<mapping.generatedColumn){var nextLine=remainingLines[remainingLinesIndex]||'';node.add(nextLine.substr(0,mapping.generatedColumn));remainingLines[remainingLinesIndex]=nextLine.substr(mapping.generatedColumn);lastGeneratedColumn=mapping.generatedColumn;}lastMapping=mapping;},this);// We have processed all mappings.\nif(remainingLinesIndex<remainingLines.length){if(lastMapping){// Associate the remaining code in the current line with \"lastMapping\"\naddMappingWithCode(lastMapping,shiftNextLine());}// and add the remaining lines without any mapping\nnode.add(remainingLines.splice(remainingLinesIndex).join(\"\"));}// Copy sourcesContent into SourceNode\naSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);if(content!=null){if(aRelativePath!=null){sourceFile=util.join(aRelativePath,sourceFile);}node.setSourceContent(sourceFile,content);}});return node;function addMappingWithCode(mapping,code){if(mapping===null||mapping.source===undefined){node.add(code);}else{var source=aRelativePath?util.join(aRelativePath,mapping.source):mapping.source;node.add(new SourceNode(mapping.originalLine,mapping.originalColumn,source,code,mapping.name));}}};/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */SourceNode.prototype.add=function SourceNode_add(aChunk){if(Array.isArray(aChunk)){aChunk.forEach(function(chunk){this.add(chunk);},this);}else if(aChunk[isSourceNode]||typeof aChunk===\"string\"){if(aChunk){this.children.push(aChunk);}}else{throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \"+aChunk);}return this;};/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */SourceNode.prototype.prepend=function SourceNode_prepend(aChunk){if(Array.isArray(aChunk)){for(var i=aChunk.length-1;i>=0;i--){this.prepend(aChunk[i]);}}else if(aChunk[isSourceNode]||typeof aChunk===\"string\"){this.children.unshift(aChunk);}else{throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \"+aChunk);}return this;};/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */SourceNode.prototype.walk=function SourceNode_walk(aFn){var chunk;for(var i=0,len=this.children.length;i<len;i++){chunk=this.children[i];if(chunk[isSourceNode]){chunk.walk(aFn);}else{if(chunk!==''){aFn(chunk,{source:this.source,line:this.line,column:this.column,name:this.name});}}}};/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */SourceNode.prototype.join=function SourceNode_join(aSep){var newChildren;var i;var len=this.children.length;if(len>0){newChildren=[];for(i=0;i<len-1;i++){newChildren.push(this.children[i]);newChildren.push(aSep);}newChildren.push(this.children[i]);this.children=newChildren;}return this;};/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */SourceNode.prototype.replaceRight=function SourceNode_replaceRight(aPattern,aReplacement){var lastChild=this.children[this.children.length-1];if(lastChild[isSourceNode]){lastChild.replaceRight(aPattern,aReplacement);}else if(typeof lastChild==='string'){this.children[this.children.length-1]=lastChild.replace(aPattern,aReplacement);}else{this.children.push(''.replace(aPattern,aReplacement));}return this;};/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */SourceNode.prototype.setSourceContent=function SourceNode_setSourceContent(aSourceFile,aSourceContent){this.sourceContents[util.toSetString(aSourceFile)]=aSourceContent;};/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */SourceNode.prototype.walkSourceContents=function SourceNode_walkSourceContents(aFn){for(var i=0,len=this.children.length;i<len;i++){if(this.children[i][isSourceNode]){this.children[i].walkSourceContents(aFn);}}var sources=Object.keys(this.sourceContents);for(var i=0,len=sources.length;i<len;i++){aFn(util.fromSetString(sources[i]),this.sourceContents[sources[i]]);}};/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */SourceNode.prototype.toString=function SourceNode_toString(){var str=\"\";this.walk(function(chunk){str+=chunk;});return str;};/**\n * Returns the string representation of this source node along with a source\n * map.\n */SourceNode.prototype.toStringWithSourceMap=function SourceNode_toStringWithSourceMap(aArgs){var generated={code:\"\",line:1,column:0};var map=new SourceMapGenerator(aArgs);var sourceMappingActive=false;var lastOriginalSource=null;var lastOriginalLine=null;var lastOriginalColumn=null;var lastOriginalName=null;this.walk(function(chunk,original){generated.code+=chunk;if(original.source!==null&&original.line!==null&&original.column!==null){if(lastOriginalSource!==original.source||lastOriginalLine!==original.line||lastOriginalColumn!==original.column||lastOriginalName!==original.name){map.addMapping({source:original.source,original:{line:original.line,column:original.column},generated:{line:generated.line,column:generated.column},name:original.name});}lastOriginalSource=original.source;lastOriginalLine=original.line;lastOriginalColumn=original.column;lastOriginalName=original.name;sourceMappingActive=true;}else if(sourceMappingActive){map.addMapping({generated:{line:generated.line,column:generated.column}});lastOriginalSource=null;sourceMappingActive=false;}for(var idx=0,length=chunk.length;idx<length;idx++){if(chunk.charCodeAt(idx)===NEWLINE_CODE){generated.line++;generated.column=0;// Mappings end at eol\nif(idx+1===length){lastOriginalSource=null;sourceMappingActive=false;}else if(sourceMappingActive){map.addMapping({source:original.source,original:{line:original.line,column:original.column},generated:{line:generated.line,column:generated.column},name:original.name});}}else{generated.column++;}}});this.walkSourceContents(function(sourceFile,sourceContent){map.setSourceContent(sourceFile,sourceContent);});return{code:generated.code,map:map};};exports.SourceNode=SourceNode;},{\"./source-map-generator\":205,\"./util\":207}],207:[function(require,module,exports){/* -*- Mode: js; js-indent-level: 2; -*- */ /*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */ /**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */function getArg(aArgs,aName,aDefaultValue){if(aName in aArgs){return aArgs[aName];}else if(arguments.length===3){return aDefaultValue;}else{throw new Error('\"'+aName+'\" is a required argument.');}}exports.getArg=getArg;var urlRegexp=/^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;var dataUrlRegexp=/^data:.+\\,.+$/;function urlParse(aUrl){var match=aUrl.match(urlRegexp);if(!match){return null;}return{scheme:match[1],auth:match[2],host:match[3],port:match[4],path:match[5]};}exports.urlParse=urlParse;function urlGenerate(aParsedUrl){var url='';if(aParsedUrl.scheme){url+=aParsedUrl.scheme+':';}url+='//';if(aParsedUrl.auth){url+=aParsedUrl.auth+'@';}if(aParsedUrl.host){url+=aParsedUrl.host;}if(aParsedUrl.port){url+=\":\"+aParsedUrl.port;}if(aParsedUrl.path){url+=aParsedUrl.path;}return url;}exports.urlGenerate=urlGenerate;/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */function normalize(aPath){var path=aPath;var url=urlParse(aPath);if(url){if(!url.path){return aPath;}path=url.path;}var isAbsolute=exports.isAbsolute(path);var parts=path.split(/\\/+/);for(var part,up=0,i=parts.length-1;i>=0;i--){part=parts[i];if(part==='.'){parts.splice(i,1);}else if(part==='..'){up++;}else if(up>0){if(part===''){// The first part is blank if the path is absolute. Trying to go\n// above the root is a no-op. Therefore we can remove all '..' parts\n// directly after the root.\nparts.splice(i+1,up);up=0;}else{parts.splice(i,2);up--;}}}path=parts.join('/');if(path===''){path=isAbsolute?'/':'.';}if(url){url.path=path;return urlGenerate(url);}return path;}exports.normalize=normalize;/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n *   first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n *   is updated with the result and aRoot is returned. Otherwise the result\n *   is returned.\n *   - If aPath is absolute, the result is aPath.\n *   - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */function join(aRoot,aPath){if(aRoot===\"\"){aRoot=\".\";}if(aPath===\"\"){aPath=\".\";}var aPathUrl=urlParse(aPath);var aRootUrl=urlParse(aRoot);if(aRootUrl){aRoot=aRootUrl.path||'/';}// `join(foo, '//www.example.org')`\nif(aPathUrl&&!aPathUrl.scheme){if(aRootUrl){aPathUrl.scheme=aRootUrl.scheme;}return urlGenerate(aPathUrl);}if(aPathUrl||aPath.match(dataUrlRegexp)){return aPath;}// `join('http://', 'www.example.com')`\nif(aRootUrl&&!aRootUrl.host&&!aRootUrl.path){aRootUrl.host=aPath;return urlGenerate(aRootUrl);}var joined=aPath.charAt(0)==='/'?aPath:normalize(aRoot.replace(/\\/+$/,'')+'/'+aPath);if(aRootUrl){aRootUrl.path=joined;return urlGenerate(aRootUrl);}return joined;}exports.join=join;exports.isAbsolute=function(aPath){return aPath.charAt(0)==='/'||urlRegexp.test(aPath);};/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */function relative(aRoot,aPath){if(aRoot===\"\"){aRoot=\".\";}aRoot=aRoot.replace(/\\/$/,'');// It is possible for the path to be above the root. In this case, simply\n// checking whether the root is a prefix of the path won't work. Instead, we\n// need to remove components from the root one by one, until either we find\n// a prefix that fits, or we run out of components to remove.\nvar level=0;while(aPath.indexOf(aRoot+'/')!==0){var index=aRoot.lastIndexOf(\"/\");if(index<0){return aPath;}// If the only part of the root that is left is the scheme (i.e. http://,\n// file:///, etc.), one or more slashes (/), or simply nothing at all, we\n// have exhausted all components, so the path is not relative to the root.\naRoot=aRoot.slice(0,index);if(aRoot.match(/^([^\\/]+:\\/)?\\/*$/)){return aPath;}++level;}// Make sure we add a \"../\" for each component we removed from the root.\nreturn Array(level+1).join(\"../\")+aPath.substr(aRoot.length+1);}exports.relative=relative;var supportsNullProto=function(){var obj=Object.create(null);return!('__proto__'in obj);}();function identity(s){return s;}/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */function toSetString(aStr){if(isProtoString(aStr)){return'$'+aStr;}return aStr;}exports.toSetString=supportsNullProto?identity:toSetString;function fromSetString(aStr){if(isProtoString(aStr)){return aStr.slice(1);}return aStr;}exports.fromSetString=supportsNullProto?identity:fromSetString;function isProtoString(s){if(!s){return false;}var length=s.length;if(length<9/* \"__proto__\".length */){return false;}if(s.charCodeAt(length-1)!==95/* '_' */||s.charCodeAt(length-2)!==95/* '_' */||s.charCodeAt(length-3)!==111/* 'o' */||s.charCodeAt(length-4)!==116/* 't' */||s.charCodeAt(length-5)!==111/* 'o' */||s.charCodeAt(length-6)!==114/* 'r' */||s.charCodeAt(length-7)!==112/* 'p' */||s.charCodeAt(length-8)!==95/* '_' */||s.charCodeAt(length-9)!==95/* '_' */){return false;}for(var i=length-10;i>=0;i--){if(s.charCodeAt(i)!==36/* '$' */){return false;}}return true;}/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */function compareByOriginalPositions(mappingA,mappingB,onlyCompareOriginal){var cmp=strcmp(mappingA.source,mappingB.source);if(cmp!==0){return cmp;}cmp=mappingA.originalLine-mappingB.originalLine;if(cmp!==0){return cmp;}cmp=mappingA.originalColumn-mappingB.originalColumn;if(cmp!==0||onlyCompareOriginal){return cmp;}cmp=mappingA.generatedColumn-mappingB.generatedColumn;if(cmp!==0){return cmp;}cmp=mappingA.generatedLine-mappingB.generatedLine;if(cmp!==0){return cmp;}return strcmp(mappingA.name,mappingB.name);}exports.compareByOriginalPositions=compareByOriginalPositions;/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */function compareByGeneratedPositionsDeflated(mappingA,mappingB,onlyCompareGenerated){var cmp=mappingA.generatedLine-mappingB.generatedLine;if(cmp!==0){return cmp;}cmp=mappingA.generatedColumn-mappingB.generatedColumn;if(cmp!==0||onlyCompareGenerated){return cmp;}cmp=strcmp(mappingA.source,mappingB.source);if(cmp!==0){return cmp;}cmp=mappingA.originalLine-mappingB.originalLine;if(cmp!==0){return cmp;}cmp=mappingA.originalColumn-mappingB.originalColumn;if(cmp!==0){return cmp;}return strcmp(mappingA.name,mappingB.name);}exports.compareByGeneratedPositionsDeflated=compareByGeneratedPositionsDeflated;function strcmp(aStr1,aStr2){if(aStr1===aStr2){return 0;}if(aStr1===null){return 1;// aStr2 !== null\n}if(aStr2===null){return-1;// aStr1 !== null\n}if(aStr1>aStr2){return 1;}return-1;}/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */function compareByGeneratedPositionsInflated(mappingA,mappingB){var cmp=mappingA.generatedLine-mappingB.generatedLine;if(cmp!==0){return cmp;}cmp=mappingA.generatedColumn-mappingB.generatedColumn;if(cmp!==0){return cmp;}cmp=strcmp(mappingA.source,mappingB.source);if(cmp!==0){return cmp;}cmp=mappingA.originalLine-mappingB.originalLine;if(cmp!==0){return cmp;}cmp=mappingA.originalColumn-mappingB.originalColumn;if(cmp!==0){return cmp;}return strcmp(mappingA.name,mappingB.name);}exports.compareByGeneratedPositionsInflated=compareByGeneratedPositionsInflated;/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */function parseSourceMapInput(str){return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/,''));}exports.parseSourceMapInput=parseSourceMapInput;/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */function computeSourceURL(sourceRoot,sourceURL,sourceMapURL){sourceURL=sourceURL||'';if(sourceRoot){// This follows what Chrome does.\nif(sourceRoot[sourceRoot.length-1]!=='/'&&sourceURL[0]!=='/'){sourceRoot+='/';}// The spec says:\n//   Line 4: An optional source root, useful for relocating source\n//   files on a server or removing repeated values in the\n//   “sources” entry.  This value is prepended to the individual\n//   entries in the “source” field.\nsourceURL=sourceRoot+sourceURL;}// Historically, SourceMapConsumer did not take the sourceMapURL as\n// a parameter.  This mode is still somewhat supported, which is why\n// this code block is conditional.  However, it's preferable to pass\n// the source map URL to SourceMapConsumer, so that this function\n// can implement the source URL resolution algorithm as outlined in\n// the spec.  This block is basically the equivalent of:\n//    new URL(sourceURL, sourceMapURL).toString()\n// ... except it avoids using URL, which wasn't available in the\n// older releases of node still supported by this library.\n//\n// The spec says:\n//   If the sources are not absolute URLs after prepending of the\n//   “sourceRoot”, the sources are resolved relative to the\n//   SourceMap (like resolving script src in a html document).\nif(sourceMapURL){var parsed=urlParse(sourceMapURL);if(!parsed){throw new Error(\"sourceMapURL could not be parsed\");}if(parsed.path){// Strip the last path component, but keep the \"/\".\nvar index=parsed.path.lastIndexOf('/');if(index>=0){parsed.path=parsed.path.substring(0,index+1);}}sourceURL=join(urlGenerate(parsed),sourceURL);}return normalize(sourceURL);}exports.computeSourceURL=computeSourceURL;},{}],208:[function(require,module,exports){/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */exports.SourceMapGenerator=require('./lib/source-map-generator').SourceMapGenerator;exports.SourceMapConsumer=require('./lib/source-map-consumer').SourceMapConsumer;exports.SourceNode=require('./lib/source-node').SourceNode;},{\"./lib/source-map-consumer\":204,\"./lib/source-map-generator\":205,\"./lib/source-node\":206}],209:[function(require,module,exports){// 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'use strict';var punycode=require('punycode');var util=require('./util');exports.parse=urlParse;exports.resolve=urlResolve;exports.resolveObject=urlResolveObject;exports.format=urlFormat;exports.Url=Url;function Url(){this.protocol=null;this.slashes=null;this.auth=null;this.host=null;this.port=null;this.hostname=null;this.hash=null;this.search=null;this.query=null;this.pathname=null;this.path=null;this.href=null;}// Reference: RFC 3986, RFC 1808, RFC 2396\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,portPattern=/:[0-9]*$/,// Special case for a simple path URL\nsimplePathPattern=/^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\ndelims=['<','>','\"','`',' ','\\r','\\n','\\t'],// RFC 2396: characters not allowed for various reasons.\nunwise=['{','}','|','\\\\','^','`'].concat(delims),// Allowed by RFCs, but cause of XSS attacks.  Always escape these.\nautoEscape=['\\''].concat(unwise),// 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.\nnonHostChars=['%','/','?',';','#'].concat(autoEscape),hostEndingChars=['/','?','#'],hostnameMaxLen=255,hostnamePartPattern=/^[+a-z0-9A-Z_-]{0,63}$/,hostnamePartStart=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,// protocols that can allow \"unsafe\" and \"unwise\" chars.\nunsafeProtocol={'javascript':true,'javascript:':true},// protocols that never have a hostname.\nhostlessProtocol={'javascript':true,'javascript:':true},// protocols that always contain a // bit.\nslashedProtocol={'http':true,'https':true,'ftp':true,'gopher':true,'file':true,'http:':true,'https:':true,'ftp:':true,'gopher:':true,'file:':true},querystring=require('querystring');function urlParse(url,parseQueryString,slashesDenoteHost){if(url&&util.isObject(url)&&url instanceof Url)return url;var u=new Url();u.parse(url,parseQueryString,slashesDenoteHost);return u;}Url.prototype.parse=function(url,parseQueryString,slashesDenoteHost){if(!util.isString(url)){throw new TypeError(\"Parameter 'url' must be a string, not \"+_typeof(url));}// 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\nvar queryIndex=url.indexOf('?'),splitter=queryIndex!==-1&&queryIndex<url.indexOf('#')?'?':'#',uSplit=url.split(splitter),slashRegex=/\\\\/g;uSplit[0]=uSplit[0].replace(slashRegex,'/');url=uSplit.join(splitter);var rest=url;// trim before proceeding.\n// This is to support parse stuff like \"  http://foo.com  \\n\"\nrest=rest.trim();if(!slashesDenoteHost&&url.split('#').length===1){// Try fast path regexp\nvar simplePath=simplePathPattern.exec(rest);if(simplePath){this.path=rest;this.href=rest;this.pathname=simplePath[1];if(simplePath[2]){this.search=simplePath[2];if(parseQueryString){this.query=querystring.parse(this.search.substr(1));}else{this.query=this.search.substr(1);}}else if(parseQueryString){this.search='';this.query={};}return this;}}var proto=protocolPattern.exec(rest);if(proto){proto=proto[0];var lowerProto=proto.toLowerCase();this.protocol=lowerProto;rest=rest.substr(proto.length);}// 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.\nif(slashesDenoteHost||proto||rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)){var slashes=rest.substr(0,2)==='//';if(slashes&&!(proto&&hostlessProtocol[proto])){rest=rest.substr(2);this.slashes=true;}}if(!hostlessProtocol[proto]&&(slashes||proto&&!slashedProtocol[proto])){// 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// v0.12 TODO(isaacs): This is not quite how Chrome does things.\n// Review our test case against browsers more comprehensively.\n// find the first instance of any hostEndingChars\nvar hostEnd=-1;for(var i=0;i<hostEndingChars.length;i++){var hec=rest.indexOf(hostEndingChars[i]);if(hec!==-1&&(hostEnd===-1||hec<hostEnd))hostEnd=hec;}// at this point, either we have an explicit point where the\n// auth portion cannot go past, or the last @ char is the decider.\nvar auth,atSign;if(hostEnd===-1){// atSign can be anywhere.\natSign=rest.lastIndexOf('@');}else{// atSign must be in auth portion.\n// http://a@b/c@d => host:b auth:a path:/c@d\natSign=rest.lastIndexOf('@',hostEnd);}// Now we have a portion which is definitely the auth.\n// Pull that off.\nif(atSign!==-1){auth=rest.slice(0,atSign);rest=rest.slice(atSign+1);this.auth=decodeURIComponent(auth);}// the host is the remaining to the left of the first non-host char\nhostEnd=-1;for(var i=0;i<nonHostChars.length;i++){var hec=rest.indexOf(nonHostChars[i]);if(hec!==-1&&(hostEnd===-1||hec<hostEnd))hostEnd=hec;}// if we still have not hit it, then the entire thing is a host.\nif(hostEnd===-1)hostEnd=rest.length;this.host=rest.slice(0,hostEnd);rest=rest.slice(hostEnd);// pull out port.\nthis.parseHost();// we've indicated that there is a hostname,\n// so even if it's empty, it has to be present.\nthis.hostname=this.hostname||'';// if hostname begins with [ and ends with ]\n// assume that it's an IPv6 address.\nvar ipv6Hostname=this.hostname[0]==='['&&this.hostname[this.hostname.length-1]===']';// validate a little.\nif(!ipv6Hostname){var hostparts=this.hostname.split(/\\./);for(var i=0,l=hostparts.length;i<l;i++){var part=hostparts[i];if(!part)continue;if(!part.match(hostnamePartPattern)){var newpart='';for(var j=0,k=part.length;j<k;j++){if(part.charCodeAt(j)>127){// 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\nnewpart+='x';}else{newpart+=part[j];}}// we test again with ASCII char only\nif(!newpart.match(hostnamePartPattern)){var validParts=hostparts.slice(0,i);var notHost=hostparts.slice(i+1);var bit=part.match(hostnamePartStart);if(bit){validParts.push(bit[1]);notHost.unshift(bit[2]);}if(notHost.length){rest='/'+notHost.join('.')+rest;}this.hostname=validParts.join('.');break;}}}}if(this.hostname.length>hostnameMaxLen){this.hostname='';}else{// hostnames are always lower case.\nthis.hostname=this.hostname.toLowerCase();}if(!ipv6Hostname){// 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.\nthis.hostname=punycode.toASCII(this.hostname);}var p=this.port?':'+this.port:'';var h=this.hostname||'';this.host=h+p;this.href+=this.host;// strip [ and ] from the hostname\n// the host field still retains them, though\nif(ipv6Hostname){this.hostname=this.hostname.substr(1,this.hostname.length-2);if(rest[0]!=='/'){rest='/'+rest;}}}// now rest is set to the post-host stuff.\n// chop off any delim chars.\nif(!unsafeProtocol[lowerProto]){// First, make 100% sure that any \"autoEscape\" chars get\n// escaped, even if encodeURIComponent doesn't think they\n// need to be.\nfor(var i=0,l=autoEscape.length;i<l;i++){var ae=autoEscape[i];if(rest.indexOf(ae)===-1)continue;var esc=encodeURIComponent(ae);if(esc===ae){esc=escape(ae);}rest=rest.split(ae).join(esc);}}// chop off from the tail first.\nvar hash=rest.indexOf('#');if(hash!==-1){// got a fragment string.\nthis.hash=rest.substr(hash);rest=rest.slice(0,hash);}var qm=rest.indexOf('?');if(qm!==-1){this.search=rest.substr(qm);this.query=rest.substr(qm+1);if(parseQueryString){this.query=querystring.parse(this.query);}rest=rest.slice(0,qm);}else if(parseQueryString){// no query string, but parseQueryString still requested\nthis.search='';this.query={};}if(rest)this.pathname=rest;if(slashedProtocol[lowerProto]&&this.hostname&&!this.pathname){this.pathname='/';}//to support http.request\nif(this.pathname||this.search){var p=this.pathname||'';var s=this.search||'';this.path=p+s;}// finally, reconstruct the href based on what has been validated.\nthis.href=this.format();return this;};// format a parsed object into a url string\nfunction urlFormat(obj){// 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.\nif(util.isString(obj))obj=urlParse(obj);if(!(obj instanceof Url))return Url.prototype.format.call(obj);return obj.format();}Url.prototype.format=function(){var auth=this.auth||'';if(auth){auth=encodeURIComponent(auth);auth=auth.replace(/%3A/i,':');auth+='@';}var protocol=this.protocol||'',pathname=this.pathname||'',hash=this.hash||'',host=false,query='';if(this.host){host=auth+this.host;}else if(this.hostname){host=auth+(this.hostname.indexOf(':')===-1?this.hostname:'['+this.hostname+']');if(this.port){host+=':'+this.port;}}if(this.query&&util.isObject(this.query)&&Object.keys(this.query).length){query=querystring.stringify(this.query);}var search=this.search||query&&'?'+query||'';if(protocol&&protocol.substr(-1)!==':')protocol+=':';// only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n// unless they had them to begin with.\nif(this.slashes||(!protocol||slashedProtocol[protocol])&&host!==false){host='//'+(host||'');if(pathname&&pathname.charAt(0)!=='/')pathname='/'+pathname;}else if(!host){host='';}if(hash&&hash.charAt(0)!=='#')hash='#'+hash;if(search&&search.charAt(0)!=='?')search='?'+search;pathname=pathname.replace(/[?#]/g,function(match){return encodeURIComponent(match);});search=search.replace('#','%23');return protocol+host+pathname+search+hash;};function urlResolve(source,relative){return urlParse(source,false,true).resolve(relative);}Url.prototype.resolve=function(relative){return this.resolveObject(urlParse(relative,false,true)).format();};function urlResolveObject(source,relative){if(!source)return relative;return urlParse(source,false,true).resolveObject(relative);}Url.prototype.resolveObject=function(relative){if(util.isString(relative)){var rel=new Url();rel.parse(relative,false,true);relative=rel;}var result=new Url();var tkeys=Object.keys(this);for(var tk=0;tk<tkeys.length;tk++){var tkey=tkeys[tk];result[tkey]=this[tkey];}// hash is always overridden, no matter what.\n// even href=\"\" will remove it.\nresult.hash=relative.hash;// if the relative url is empty, then there's nothing left to do here.\nif(relative.href===''){result.href=result.format();return result;}// hrefs like //foo/bar always cut to the protocol.\nif(relative.slashes&&!relative.protocol){// take everything except the protocol from relative\nvar rkeys=Object.keys(relative);for(var rk=0;rk<rkeys.length;rk++){var rkey=rkeys[rk];if(rkey!=='protocol')result[rkey]=relative[rkey];}//urlParse appends trailing / to urls like http://www.example.com\nif(slashedProtocol[result.protocol]&&result.hostname&&!result.pathname){result.path=result.pathname='/';}result.href=result.format();return result;}if(relative.protocol&&relative.protocol!==result.protocol){// 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.\nif(!slashedProtocol[relative.protocol]){var keys=Object.keys(relative);for(var v=0;v<keys.length;v++){var k=keys[v];result[k]=relative[k];}result.href=result.format();return result;}result.protocol=relative.protocol;if(!relative.host&&!hostlessProtocol[relative.protocol]){var relPath=(relative.pathname||'').split('/');while(relPath.length&&!(relative.host=relPath.shift())){;}if(!relative.host)relative.host='';if(!relative.hostname)relative.hostname='';if(relPath[0]!=='')relPath.unshift('');if(relPath.length<2)relPath.unshift('');result.pathname=relPath.join('/');}else{result.pathname=relative.pathname;}result.search=relative.search;result.query=relative.query;result.host=relative.host||'';result.auth=relative.auth;result.hostname=relative.hostname||relative.host;result.port=relative.port;// to support http.request\nif(result.pathname||result.search){var p=result.pathname||'';var s=result.search||'';result.path=p+s;}result.slashes=result.slashes||relative.slashes;result.href=result.format();return result;}var isSourceAbs=result.pathname&&result.pathname.charAt(0)==='/',isRelAbs=relative.host||relative.pathname&&relative.pathname.charAt(0)==='/',mustEndAbs=isRelAbs||isSourceAbs||result.host&&relative.pathname,removeAllDots=mustEndAbs,srcPath=result.pathname&&result.pathname.split('/')||[],relPath=relative.pathname&&relative.pathname.split('/')||[],psychotic=result.protocol&&!slashedProtocol[result.protocol];// 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.\nif(psychotic){result.hostname='';result.port=null;if(result.host){if(srcPath[0]==='')srcPath[0]=result.host;else srcPath.unshift(result.host);}result.host='';if(relative.protocol){relative.hostname=null;relative.port=null;if(relative.host){if(relPath[0]==='')relPath[0]=relative.host;else relPath.unshift(relative.host);}relative.host=null;}mustEndAbs=mustEndAbs&&(relPath[0]===''||srcPath[0]==='');}if(isRelAbs){// it's absolute.\nresult.host=relative.host||relative.host===''?relative.host:result.host;result.hostname=relative.hostname||relative.hostname===''?relative.hostname:result.hostname;result.search=relative.search;result.query=relative.query;srcPath=relPath;// fall through to the dot-handling below.\n}else if(relPath.length){// it's relative\n// throw away the existing file, and take the new path instead.\nif(!srcPath)srcPath=[];srcPath.pop();srcPath=srcPath.concat(relPath);result.search=relative.search;result.query=relative.query;}else if(!util.isNullOrUndefined(relative.search)){// just pull out the search.\n// like href='?foo'.\n// Put this after the other two cases because it simplifies the booleans\nif(psychotic){result.hostname=result.host=srcPath.shift();//occationaly the auth can get stuck only in host\n//this especially happens in cases like\n//url.resolveObject('mailto:local1@domain1', 'local2@domain2')\nvar authInHost=result.host&&result.host.indexOf('@')>0?result.host.split('@'):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift();}}result.search=relative.search;result.query=relative.query;//to support http.request\nif(!util.isNull(result.pathname)||!util.isNull(result.search)){result.path=(result.pathname?result.pathname:'')+(result.search?result.search:'');}result.href=result.format();return result;}if(!srcPath.length){// no path at all.  easy.\n// we've already handled the other stuff above.\nresult.pathname=null;//to support http.request\nif(result.search){result.path='/'+result.search;}else{result.path=null;}result.href=result.format();return result;}// 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.\nvar last=srcPath.slice(-1)[0];var hasTrailingSlash=(result.host||relative.host||srcPath.length>1)&&(last==='.'||last==='..')||last==='';// strip single dots, resolve double dots to parent dir\n// if the path tries to go above the root, `up` ends up > 0\nvar up=0;for(var i=srcPath.length;i>=0;i--){last=srcPath[i];if(last==='.'){srcPath.splice(i,1);}else if(last==='..'){srcPath.splice(i,1);up++;}else if(up){srcPath.splice(i,1);up--;}}// if the path is allowed to go above the root, restore leading ..s\nif(!mustEndAbs&&!removeAllDots){for(;up--;up){srcPath.unshift('..');}}if(mustEndAbs&&srcPath[0]!==''&&(!srcPath[0]||srcPath[0].charAt(0)!=='/')){srcPath.unshift('');}if(hasTrailingSlash&&srcPath.join('/').substr(-1)!=='/'){srcPath.push('');}var isAbsolute=srcPath[0]===''||srcPath[0]&&srcPath[0].charAt(0)==='/';// put the host back\nif(psychotic){result.hostname=result.host=isAbsolute?'':srcPath.length?srcPath.shift():'';//occationaly the auth can get stuck only in host\n//this especially happens in cases like\n//url.resolveObject('mailto:local1@domain1', 'local2@domain2')\nvar authInHost=result.host&&result.host.indexOf('@')>0?result.host.split('@'):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift();}}mustEndAbs=mustEndAbs||result.host&&srcPath.length;if(mustEndAbs&&!isAbsolute){srcPath.unshift('');}if(!srcPath.length){result.pathname=null;result.path=null;}else{result.pathname=srcPath.join('/');}//to support request.http\nif(!util.isNull(result.pathname)||!util.isNull(result.search)){result.path=(result.pathname?result.pathname:'')+(result.search?result.search:'');}result.auth=relative.auth||result.auth;result.slashes=result.slashes||relative.slashes;result.href=result.format();return result;};Url.prototype.parseHost=function(){var host=this.host;var port=portPattern.exec(host);if(port){port=port[0];if(port!==':'){this.port=port.substr(1);}host=host.substr(0,host.length-port.length);}if(host)this.hostname=host;};},{\"./util\":210,\"punycode\":194,\"querystring\":197}],210:[function(require,module,exports){'use strict';module.exports={isString:function isString(arg){return typeof arg==='string';},isObject:function isObject(arg){return _typeof(arg)==='object'&&arg!==null;},isNull:function isNull(arg){return arg===null;},isNullOrUndefined:function isNullOrUndefined(arg){return arg==null;}};},{}],211:[function(require,module,exports){/* eslint-disable no-useless-escape */var htmlparser=require('htmlparser2');var quoteRegexp=require('lodash/escapeRegExp');var cloneDeep=require('lodash/cloneDeep');var mergeWith=require('lodash/mergeWith');var isString=require('lodash/isString');var isPlainObject=require('lodash/isPlainObject');var parseSrcset=require('parse-srcset');var postcss=require('postcss');var url=require('url');// Tags that can conceivably represent stand-alone media.\nvar mediaTags=['img','audio','video','picture','svg','object','map','iframe','embed'];// Tags that are inherently vulnerable to being used in XSS attacks.\nvar vulnerableTags=['script','style'];function each(obj,cb){if(obj){Object.keys(obj).forEach(function(key){cb(obj[key],key);});}}// Avoid false positives with .__proto__, .hasOwnProperty, etc.\nfunction has(obj,key){return{}.hasOwnProperty.call(obj,key);}// Returns those elements of `a` for which `cb(a)` returns truthy\nfunction filter(a,cb){var n=[];each(a,function(v){if(cb(v)){n.push(v);}});return n;}function isEmptyObject(obj){for(var key in obj){if(has(obj,key)){return false;}}return true;}function stringifySrcset(parsedSrcset){return parsedSrcset.map(function(part){if(!part.url){throw new Error('URL missing');}return part.url+(part.w?\" \".concat(part.w,\"w\"):'')+(part.h?\" \".concat(part.h,\"h\"):'')+(part.d?\" \".concat(part.d,\"x\"):'');}).join(', ');}module.exports=sanitizeHtml;// A valid attribute name.\n// We use a tolerant definition based on the set of strings defined by\n// html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n// and html.spec.whatwg.org/multipage/parsing.html#attribute-name-state .\n// The characters accepted are ones which can be appended to the attribute\n// name buffer without triggering a parse error:\n//   * unexpected-equals-sign-before-attribute-name\n//   * unexpected-null-character\n//   * unexpected-character-in-attribute-name\n// We exclude the empty string because it's impossible to get to the after\n// attribute name state with an empty attribute name buffer.\nvar VALID_HTML_ATTRIBUTE_NAME=/^[^\\0\\t\\n\\f\\r /<=>]+$/;// Ignore the _recursing flag; it's there for recursive\n// invocation as a guard against this exploit:\n// https://github.com/fb55/htmlparser2/issues/105\nfunction sanitizeHtml(html,options,_recursing){var result='';// Used for hot swapping the result variable with an empty string in order to \"capture\" the text written to it.\nvar tempResult='';function Frame(tag,attribs){var that=this;this.tag=tag;this.attribs=attribs||{};this.tagPosition=result.length;this.text='';// Node inner text\nthis.mediaChildren=[];this.updateParentNodeText=function(){if(stack.length){var parentFrame=stack[stack.length-1];parentFrame.text+=that.text;}};this.updateParentNodeMediaChildren=function(){if(stack.length&&mediaTags.indexOf(this.tag)>-1){var parentFrame=stack[stack.length-1];parentFrame.mediaChildren.push(this.tag);}};}if(!options){options=sanitizeHtml.defaults;options.parser=htmlParserDefaults;}else{options=Object.assign({},sanitizeHtml.defaults,options);if(options.parser){options.parser=Object.assign({},htmlParserDefaults,options.parser);}else{options.parser=htmlParserDefaults;}}// vulnerableTags\nvulnerableTags.forEach(function(tag){if(options.allowedTags&&options.allowedTags.indexOf(tag)>-1&&!options.allowVulnerableTags){// eslint-disable-next-line no-console\nconsole.warn(\"\\n\\n\\u26A0\\uFE0F Your `allowedTags` option includes, `\".concat(tag,\"`, which is inherently\\nvulnerable to XSS attacks. Please remove it from `allowedTags`.\\nOr, to disable this warning, add the `allowVulnerableTags` option\\nand ensure you are accounting for this risk.\\n\\n\"));}});// Tags that contain something other than HTML, or where discarding\n// the text when the tag is disallowed makes sense for other reasons.\n// If we are not allowing these tags, we should drop their content too.\n// For other tags you would drop the tag but keep its content.\nvar nonTextTagsArray=options.nonTextTags||['script','style','textarea','option'];var allowedAttributesMap;var allowedAttributesGlobMap;if(options.allowedAttributes){allowedAttributesMap={};allowedAttributesGlobMap={};each(options.allowedAttributes,function(attributes,tag){allowedAttributesMap[tag]=[];var globRegex=[];attributes.forEach(function(obj){if(isString(obj)&&obj.indexOf('*')>=0){globRegex.push(quoteRegexp(obj).replace(/\\\\\\*/g,'.*'));}else{allowedAttributesMap[tag].push(obj);}});allowedAttributesGlobMap[tag]=new RegExp('^('+globRegex.join('|')+')$');});}var allowedClassesMap={};each(options.allowedClasses,function(classes,tag){// Implicitly allows the class attribute\nif(allowedAttributesMap){if(!has(allowedAttributesMap,tag)){allowedAttributesMap[tag]=[];}allowedAttributesMap[tag].push('class');}allowedClassesMap[tag]=classes;});var transformTagsMap={};var transformTagsAll;each(options.transformTags,function(transform,tag){var transFun;if(typeof transform==='function'){transFun=transform;}else if(typeof transform==='string'){transFun=sanitizeHtml.simpleTransform(transform);}if(tag==='*'){transformTagsAll=transFun;}else{transformTagsMap[tag]=transFun;}});var depth;var stack;var skipMap;var transformMap;var skipText;var skipTextDepth;var addedText=false;initializeState();var parser=new htmlparser.Parser({onopentag:function onopentag(name,attribs){// If `enforceHtmlBoundary` is `true` and this has found the opening\n// `html` tag, reset the state.\nif(options.enforceHtmlBoundary&&name==='html'){initializeState();}if(skipText){skipTextDepth++;return;}var frame=new Frame(name,attribs);stack.push(frame);var skip=false;var hasText=!!frame.text;var transformedTag;if(has(transformTagsMap,name)){transformedTag=transformTagsMap[name](name,attribs);frame.attribs=attribs=transformedTag.attribs;if(transformedTag.text!==undefined){frame.innerText=transformedTag.text;}if(name!==transformedTag.tagName){frame.name=name=transformedTag.tagName;transformMap[depth]=transformedTag.tagName;}}if(transformTagsAll){transformedTag=transformTagsAll(name,attribs);frame.attribs=attribs=transformedTag.attribs;if(name!==transformedTag.tagName){frame.name=name=transformedTag.tagName;transformMap[depth]=transformedTag.tagName;}}if(options.allowedTags&&options.allowedTags.indexOf(name)===-1||options.disallowedTagsMode==='recursiveEscape'&&!isEmptyObject(skipMap)){skip=true;skipMap[depth]=true;if(options.disallowedTagsMode==='discard'){if(nonTextTagsArray.indexOf(name)!==-1){skipText=true;skipTextDepth=1;}}skipMap[depth]=true;}depth++;if(skip){if(options.disallowedTagsMode==='discard'){// We want the contents but not this tag\nreturn;}tempResult=result;result='';}result+='<'+name;if(!allowedAttributesMap||has(allowedAttributesMap,name)||allowedAttributesMap['*']){each(attribs,function(value,a){if(!VALID_HTML_ATTRIBUTE_NAME.test(a)){// This prevents part of an attribute name in the output from being\n// interpreted as the end of an attribute, or end of a tag.\ndelete frame.attribs[a];return;}var parsed;// check allowedAttributesMap for the element and attribute and modify the value\n// as necessary if there are specific values defined.\nvar passedAllowedAttributesMapCheck=false;if(!allowedAttributesMap||has(allowedAttributesMap,name)&&allowedAttributesMap[name].indexOf(a)!==-1||allowedAttributesMap['*']&&allowedAttributesMap['*'].indexOf(a)!==-1||has(allowedAttributesGlobMap,name)&&allowedAttributesGlobMap[name].test(a)||allowedAttributesGlobMap['*']&&allowedAttributesGlobMap['*'].test(a)){passedAllowedAttributesMapCheck=true;}else if(allowedAttributesMap&&allowedAttributesMap[name]){var _iterator10=_createForOfIteratorHelper(allowedAttributesMap[name]),_step10;try{for(_iterator10.s();!(_step10=_iterator10.n()).done;){var o=_step10.value;if(isPlainObject(o)&&o.name&&o.name===a){passedAllowedAttributesMapCheck=true;var newValue='';if(o.multiple===true){// verify the values that are allowed\nvar splitStrArray=value.split(' ');var _iterator11=_createForOfIteratorHelper(splitStrArray),_step11;try{for(_iterator11.s();!(_step11=_iterator11.n()).done;){var s=_step11.value;if(o.values.indexOf(s)!==-1){if(newValue===''){newValue=s;}else{newValue+=' '+s;}}}}catch(err){_iterator11.e(err);}finally{_iterator11.f();}}else if(o.values.indexOf(value)>=0){// verified an allowed value matches the entire attribute value\nnewValue=value;}value=newValue;}}}catch(err){_iterator10.e(err);}finally{_iterator10.f();}}if(passedAllowedAttributesMapCheck){if(options.allowedSchemesAppliedToAttributes.indexOf(a)!==-1){if(naughtyHref(name,value)){delete frame.attribs[a];return;}}if(name==='iframe'&&a==='src'){var allowed=true;try{// naughtyHref is in charge of whether protocol relative URLs\n// are cool. We should just accept them.\n// eslint-disable-next-line node/no-deprecated-api\nparsed=url.parse(value,false,true);var isRelativeUrl=parsed&&parsed.host===null&&parsed.protocol===null;if(isRelativeUrl){// default value of allowIframeRelativeUrls is true\n// unless allowedIframeHostnames or allowedIframeDomains specified\nallowed=has(options,'allowIframeRelativeUrls')?options.allowIframeRelativeUrls:!options.allowedIframeHostnames&&!options.allowedIframeDomains;}else if(options.allowedIframeHostnames||options.allowedIframeDomains){var allowedHostname=(options.allowedIframeHostnames||[]).find(function(hostname){return hostname===parsed.hostname;});var allowedDomain=(options.allowedIframeDomains||[]).find(function(domain){return parsed.hostname===domain||parsed.hostname.endsWith(\".\".concat(domain));});allowed=allowedHostname||allowedDomain;}}catch(e){// Unparseable iframe src\nallowed=false;}if(!allowed){delete frame.attribs[a];return;}}if(a==='srcset'){try{parsed=parseSrcset(value);each(parsed,function(value){if(naughtyHref('srcset',value.url)){value.evil=true;}});parsed=filter(parsed,function(v){return!v.evil;});if(!parsed.length){delete frame.attribs[a];return;}else{value=stringifySrcset(filter(parsed,function(v){return!v.evil;}));frame.attribs[a]=value;}}catch(e){// Unparseable srcset\ndelete frame.attribs[a];return;}}if(a==='class'){value=filterClasses(value,allowedClassesMap[name]);if(!value.length){delete frame.attribs[a];return;}}if(a==='style'){try{var abstractSyntaxTree=postcss.parse(name+' {'+value+'}');var filteredAST=filterCss(abstractSyntaxTree,options.allowedStyles);value=stringifyStyleAttributes(filteredAST);if(value.length===0){delete frame.attribs[a];return;}}catch(e){delete frame.attribs[a];return;}}result+=' '+a;if(value&&value.length){result+='=\"'+escapeHtml(value,true)+'\"';}}else{delete frame.attribs[a];}});}if(options.selfClosing.indexOf(name)!==-1){result+=' />';}else{result+='>';if(frame.innerText&&!hasText&&!options.textFilter){result+=frame.innerText;addedText=true;}}if(skip){result=tempResult+escapeHtml(result);tempResult='';}},ontext:function ontext(text){if(skipText){return;}var lastFrame=stack[stack.length-1];var tag;if(lastFrame){tag=lastFrame.tag;// If inner text was set by transform function then let's use it\ntext=lastFrame.innerText!==undefined?lastFrame.innerText:text;}if(options.disallowedTagsMode==='discard'&&(tag==='script'||tag==='style')){// htmlparser2 gives us these as-is. Escaping them ruins the content. Allowing\n// script tags is, by definition, game over for XSS protection, so if that's\n// your concern, don't allow them. The same is essentially true for style tags\n// which have their own collection of XSS vectors.\nresult+=text;}else{var escaped=escapeHtml(text,false);if(options.textFilter&&!addedText){result+=options.textFilter(escaped,tag);}else if(!addedText){result+=escaped;}}if(stack.length){var frame=stack[stack.length-1];frame.text+=text;}},onclosetag:function onclosetag(name){if(skipText){skipTextDepth--;if(!skipTextDepth){skipText=false;}else{return;}}var frame=stack.pop();if(!frame){// Do not crash on bad markup\nreturn;}skipText=options.enforceHtmlBoundary?name==='html':false;depth--;var skip=skipMap[depth];if(skip){delete skipMap[depth];if(options.disallowedTagsMode==='discard'){frame.updateParentNodeText();return;}tempResult=result;result='';}if(transformMap[depth]){name=transformMap[depth];delete transformMap[depth];}if(options.exclusiveFilter&&options.exclusiveFilter(frame)){result=result.substr(0,frame.tagPosition);return;}frame.updateParentNodeMediaChildren();frame.updateParentNodeText();if(options.selfClosing.indexOf(name)!==-1){// Already output />\nif(skip){result=tempResult;tempResult='';}return;}result+='</'+name+'>';if(skip){result=tempResult+escapeHtml(result);tempResult='';}}},options.parser);parser.write(html);parser.end();return result;function initializeState(){result='';depth=0;stack=[];skipMap={};transformMap={};skipText=false;skipTextDepth=0;}function escapeHtml(s,quote){if(typeof s!=='string'){s=s+'';}if(options.parser.decodeEntities){s=s.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/\\>/g,'&gt;');if(quote){s=s.replace(/\\\"/g,'&quot;');}}// TODO: this is inadequate because it will pass `&0;`. This approach\n// will not work, each & must be considered with regard to whether it\n// is followed by a 100% syntactically valid entity or not, and escaped\n// if it is not. If this bothers you, don't set parser.decodeEntities\n// to false. (The default is true.)\ns=s.replace(/&(?![a-zA-Z0-9#]{1,20};)/g,'&amp;')// Match ampersands not part of existing HTML entity\n.replace(/</g,'&lt;').replace(/\\>/g,'&gt;');if(quote){s=s.replace(/\\\"/g,'&quot;');}return s;}function naughtyHref(name,href){// Browsers ignore character codes of 32 (space) and below in a surprising\n// number of situations. Start reading here:\n// https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Embedded_tab\n// eslint-disable-next-line no-control-regex\nhref=href.replace(/[\\x00-\\x20]+/g,'');// Clobber any comments in URLs, which the browser might\n// interpret inside an XML data island, allowing\n// a javascript: URL to be snuck through\nhref=href.replace(/<\\!\\-\\-.*?\\-\\-\\>/g,'');// Case insensitive so we don't get faked out by JAVASCRIPT #1\nvar matches=href.match(/^([a-zA-Z]+)\\:/);if(!matches){// Protocol-relative URL starting with any combination of '/' and '\\'\nif(href.match(/^[\\/\\\\]{2}/)){return!options.allowProtocolRelative;}// No scheme\nreturn false;}var scheme=matches[1].toLowerCase();if(has(options.allowedSchemesByTag,name)){return options.allowedSchemesByTag[name].indexOf(scheme)===-1;}return!options.allowedSchemes||options.allowedSchemes.indexOf(scheme)===-1;}/**\n   * Filters user input css properties by whitelisted regex attributes.\n   *\n   * @param {object} abstractSyntaxTree  - Object representation of CSS attributes.\n   * @property {array[Declaration]} abstractSyntaxTree.nodes[0] - Each object cointains prop and value key, i.e { prop: 'color', value: 'red' }.\n   * @param {object} allowedStyles       - Keys are properties (i.e color), value is list of permitted regex rules (i.e /green/i).\n   * @return {object}                    - Abstract Syntax Tree with filtered style attributes.\n   */function filterCss(abstractSyntaxTree,allowedStyles){if(!allowedStyles){return abstractSyntaxTree;}var filteredAST=cloneDeep(abstractSyntaxTree);var astRules=abstractSyntaxTree.nodes[0];var selectedRule;// Merge global and tag-specific styles into new AST.\nif(allowedStyles[astRules.selector]&&allowedStyles['*']){selectedRule=mergeWith(cloneDeep(allowedStyles[astRules.selector]),allowedStyles['*'],function(objValue,srcValue){if(Array.isArray(objValue)){return objValue.concat(srcValue);}});}else{selectedRule=allowedStyles[astRules.selector]||allowedStyles['*'];}if(selectedRule){filteredAST.nodes[0].nodes=astRules.nodes.reduce(filterDeclarations(selectedRule),[]);}return filteredAST;}/**\n   * Extracts the style attribues from an AbstractSyntaxTree and formats those\n   * values in the inline style attribute format.\n   *\n   * @param  {AbstractSyntaxTree} filteredAST\n   * @return {string}             - Example: \"color:yellow;text-align:center;font-family:helvetica;\"\n   */function stringifyStyleAttributes(filteredAST){return filteredAST.nodes[0].nodes.reduce(function(extractedAttributes,attributeObject){extractedAttributes.push(attributeObject.prop+':'+attributeObject.value);return extractedAttributes;},[]).join(';');}/**\n    * Filters the existing attributes for the given property. Discards any attributes\n    * which don't match the whitelist.\n    *\n    * @param  {object} selectedRule             - Example: { color: red, font-family: helvetica }\n    * @param  {array} allowedDeclarationsList   - List of declarations which pass whitelisting.\n    * @param  {object} attributeObject          - Object representing the current css property.\n    * @property {string} attributeObject.type   - Typically 'declaration'.\n    * @property {string} attributeObject.prop   - The CSS property, i.e 'color'.\n    * @property {string} attributeObject.value  - The corresponding value to the css property, i.e 'red'.\n    * @return {function}                        - When used in Array.reduce, will return an array of Declaration objects\n    */function filterDeclarations(selectedRule){return function(allowedDeclarationsList,attributeObject){// If this property is whitelisted...\nif(has(selectedRule,attributeObject.prop)){var matchesRegex=selectedRule[attributeObject.prop].some(function(regularExpression){return regularExpression.test(attributeObject.value);});if(matchesRegex){allowedDeclarationsList.push(attributeObject);}}return allowedDeclarationsList;};}function filterClasses(classes,allowed){if(!allowed){// The class attribute is allowed without filtering on this tag\nreturn classes;}classes=classes.split(/\\s+/);return classes.filter(function(clss){return allowed.indexOf(clss)!==-1;}).join(' ');}}// Defaults are accessible to you so that you can use them as a starting point\n// programmatically if you wish\nvar htmlParserDefaults={decodeEntities:true};sanitizeHtml.defaults={allowedTags:['h3','h4','h5','h6','blockquote','p','a','ul','ol','nl','li','b','i','strong','em','strike','abbr','code','hr','br','div','table','thead','caption','tbody','tr','th','td','pre','iframe'],disallowedTagsMode:'discard',allowedAttributes:{a:['href','name','target'],// We don't currently allow img itself by default, but this\n// would make sense if we did. You could add srcset here,\n// and if you do the URL is checked for safety\nimg:['src']},// Lots of these won't come up by default because we don't allow them\nselfClosing:['img','br','hr','area','base','basefont','input','link','meta'],// URL schemes we permit\nallowedSchemes:['http','https','ftp','mailto'],allowedSchemesByTag:{},allowedSchemesAppliedToAttributes:['href','src','cite'],allowProtocolRelative:true,enforceHtmlBoundary:false};sanitizeHtml.simpleTransform=function(newTagName,newAttribs,merge){merge=merge===undefined?true:merge;newAttribs=newAttribs||{};return function(tagName,attribs){var attrib;if(merge){for(attrib in newAttribs){attribs[attrib]=newAttribs[attrib];}}else{attribs=newAttribs;}return{tagName:newTagName,attribs:attribs};};};},{\"htmlparser2\":31,\"lodash/cloneDeep\":140,\"lodash/escapeRegExp\":143,\"lodash/isPlainObject\":155,\"lodash/isString\":157,\"lodash/mergeWith\":162,\"parse-srcset\":167,\"postcss\":181,\"url\":209}]},{},[211])(211);});\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict'\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar empty = ''\nvar space = ' '\nvar whiteSpace = /[ \\t\\n\\r\\f]+/g\n\nfunction parse(value) {\n  var input = String(value || empty).trim()\n  return input === empty ? [] : input.split(whiteSpace)\n}\n\nfunction stringify(values) {\n  return values.join(space).trim()\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\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","'use strict';\n\n(function (root, factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define([], factory);\n    } else if (typeof module === 'object' && module.exports) {\n        // Node. Does not work with strict CommonJS, but\n        // only CommonJS-like environments that support module.exports,\n        // like Node.\n        module.exports = factory();\n    } else {\n        // Browser globals (root is window)\n        root.striptags = factory();\n  }\n}(this, function () {\n\n    var STATE_OUTPUT       = 0,\n        STATE_HTML         = 1,\n        STATE_PRE_COMMENT  = 2,\n        STATE_COMMENT      = 3,\n        WHITESPACE         = /\\s/,\n        ALLOWED_TAGS_REGEX = /<(\\w*)>/g;\n\n    function striptags(html, allowableTags, tagReplacement) {\n        var html = html || '',\n            state = STATE_OUTPUT,\n            depth = 0,\n            output = '',\n            tagBuffer = '',\n            inQuote = false,\n            i, length, c;\n\n        if (typeof allowableTags === 'string') {\n            // Parse the string into an array of tags\n            allowableTags = parseAllowableTags(allowableTags);\n        } else if (!Array.isArray(allowableTags)) {\n            // If it is not an array, explicitly set to null\n            allowableTags = null;\n        }\n\n        for (i = 0, length = html.length; i < length; i++) {\n            c = html[i];\n\n            switch (c) {\n                case '<': {\n                    // ignore '<' if inside a quote\n                    if (inQuote) {\n                        break;\n                    }\n\n                    // '<' followed by a space is not a valid tag, continue\n                    if (html[i + 1] == ' ') {\n                        consumeCharacter(c);\n                        break;\n                    }\n\n                    // change to STATE_HTML\n                    if (state == STATE_OUTPUT) {\n                        state = STATE_HTML;\n\n                        consumeCharacter(c);\n                        break;\n                    }\n\n                    // ignore additional '<' characters when inside a tag\n                    if (state == STATE_HTML) {\n                        depth++;\n                        break;\n                    }\n\n                    consumeCharacter(c);\n                    break;\n                }\n\n                case '>': {\n                    // something like this is happening: '<<>>'\n                    if (depth) {\n                        depth--;\n                        break;\n                    }\n\n                    // ignore '>' if inside a quote\n                    if (inQuote) {\n                        break;\n                    }\n\n                    // an HTML tag was closed\n                    if (state == STATE_HTML) {\n                        inQuote = state = 0;\n\n                        if (allowableTags) {\n                            tagBuffer += '>';\n                            flushTagBuffer();\n                        }\n\n                        break;\n                    }\n\n                    // '<!' met its ending '>'\n                    if (state == STATE_PRE_COMMENT) {\n                        inQuote = state = 0;\n                        tagBuffer = '';\n                        break;\n                    }\n\n                    // if last two characters were '--', then end comment\n                    if (state == STATE_COMMENT &&\n                        html[i - 1] == '-' &&\n                        html[i - 2] == '-') {\n\n                        inQuote = state = 0;\n                        tagBuffer = '';\n                        break;\n                    }\n\n                    consumeCharacter(c);\n                    break;\n                }\n\n                // catch both single and double quotes\n                case '\"':\n                case '\\'': {\n                    if (state == STATE_HTML) {\n                        if (inQuote == c) {\n                            // end quote found\n                            inQuote = false;\n                        } else if (!inQuote) {\n                            // start quote only if not already in one\n                            inQuote = c;\n                        }\n                    }\n\n                    consumeCharacter(c);\n                    break;\n                }\n\n                case '!': {\n                    if (state == STATE_HTML &&\n                        html[i - 1] == '<') {\n\n                        // looks like we might be starting a comment\n                        state = STATE_PRE_COMMENT;\n                        break;\n                    }\n\n                    consumeCharacter(c);\n                    break;\n                }\n\n                case '-': {\n                    // if the previous two characters were '!-', this is a comment\n                    if (state == STATE_PRE_COMMENT &&\n                        html[i - 1] == '-' &&\n                        html[i - 2] == '!') {\n\n                        state = STATE_COMMENT;\n                        break;\n                    }\n\n                    consumeCharacter(c);\n                    break;\n                }\n\n                case 'E':\n                case 'e': {\n                    // check for DOCTYPE, because it looks like a comment and isn't\n                    if (state == STATE_PRE_COMMENT &&\n                        html.substr(i - 6, 7).toLowerCase() == 'doctype') {\n\n                        state = STATE_HTML;\n                        break;\n                    }\n\n                    consumeCharacter(c);\n                    break;\n                }\n\n                default: {\n                    consumeCharacter(c);\n                }\n            }\n        }\n\n        function consumeCharacter(c) {\n            if (state == STATE_OUTPUT) {\n                output += c;\n            } else if (allowableTags && state == STATE_HTML) {\n                tagBuffer += c;\n            }\n        }\n\n        function flushTagBuffer() {\n            var normalized = '',\n                nonWhitespaceSeen = false,\n                i, length, c;\n\n            normalizeTagBuffer:\n            for (i = 0, length = tagBuffer.length; i < length; i++) {\n                c = tagBuffer[i].toLowerCase();\n\n                switch (c) {\n                    case '<': {\n                        break;\n                    }\n\n                    case '>': {\n                        break normalizeTagBuffer;\n                    }\n\n                    case '/': {\n                        nonWhitespaceSeen = true;\n                        break;\n                    }\n\n                    default: {\n                        if (!c.match(WHITESPACE)) {\n                            nonWhitespaceSeen = true;\n                            normalized += c;\n                        } else if (nonWhitespaceSeen) {\n                            break normalizeTagBuffer;\n                        }\n                    }\n                }\n            }\n\n            if (allowableTags.indexOf(normalized) !== -1) {\n                output += tagBuffer;\n            } else if (tagReplacement) {\n                output += tagReplacement;\n            }\n\n            tagBuffer = '';\n        }\n\n        return output;\n    }\n\n    /**\n     * Return an array containing tags that are allowed to pass through the\n     * algorithm.\n     *\n     * @param string allowableTags A string of tags to allow (e.g. \"<b><strong>\").\n     * @return array|null An array of allowed tags or null if none.\n     */\n    function parseAllowableTags(allowableTags) {\n        var tagsArray = [],\n            match;\n\n        while ((match = ALLOWED_TAGS_REGEX.exec(allowableTags)) !== null) {\n            tagsArray.push(match[1]);\n        }\n\n        return tagsArray.length !== 0 ? tagsArray : null;\n    }\n\n    return striptags;\n}));\n","var api = require(\"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../css-loader/dist/cjs.js!./ReactCrop.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDom.length; i++) {\n    if (stylesInDom[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var index = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3]\n    };\n\n    if (index !== -1) {\n      stylesInDom[index].references++;\n      stylesInDom[index].updater(obj);\n    } else {\n      stylesInDom.push({\n        identifier: identifier,\n        updater: addStyle(obj, options),\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n  var attributes = options.attributes || {};\n\n  if (typeof attributes.nonce === 'undefined') {\n    var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n    if (nonce) {\n      attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(attributes).forEach(function (key) {\n    style.setAttribute(key, attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  } else {\n    style.removeAttribute('media');\n  }\n\n  if (sourceMap && typeof btoa !== 'undefined') {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n  // tags it will allow on a page\n\n  if (!options.singleton && typeof options.singleton !== 'boolean') {\n    options.singleton = isOldIE();\n  }\n\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n\n    if (Object.prototype.toString.call(newList) !== '[object Array]') {\n      return;\n    }\n\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDom[index].references--;\n    }\n\n    var newLastIdentifiers = modulesToDom(newList, options);\n\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n\n      var _index = getIndexByIdentifier(_identifier);\n\n      if (stylesInDom[_index].references === 0) {\n        stylesInDom[_index].updater();\n\n        stylesInDom.splice(_index, 1);\n      }\n    }\n\n    lastIdentifiers = newLastIdentifiers;\n  };\n};","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param  {String}      style      - The inline style.\n * @param  {Function}    [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n  var output = null;\n  if (!style || typeof style !== 'string') {\n    return output;\n  }\n\n  var declaration;\n  var declarations = parse(style);\n  var hasIterator = typeof iterator === 'function';\n  var property;\n  var value;\n\n  for (var i = 0, len = declarations.length; i < len; i++) {\n    declaration = declarations[i];\n    property = declaration.property;\n    value = declaration.value;\n\n    if (hasIterator) {\n      iterator(property, value, declaration);\n    } else if (value) {\n      output || (output = {});\n      output[property] = value;\n    }\n  }\n\n  return output;\n}\n\nmodule.exports = StyleToObject;\n","'use strict'\n\nvar wrap = require('./wrap.js')\n\nmodule.exports = trough\n\ntrough.wrap = wrap\n\nvar slice = [].slice\n\n// Create new middleware.\nfunction trough() {\n  var fns = []\n  var middleware = {}\n\n  middleware.run = run\n  middleware.use = use\n\n  return middleware\n\n  // Run `fns`.  Last argument must be a completion handler.\n  function run() {\n    var index = -1\n    var input = slice.call(arguments, 0, -1)\n    var done = arguments[arguments.length - 1]\n\n    if (typeof done !== 'function') {\n      throw new Error('Expected function as last argument, not ' + done)\n    }\n\n    next.apply(null, [null].concat(input))\n\n    // Run the next `fn`, if any.\n    function next(err) {\n      var fn = fns[++index]\n      var params = slice.call(arguments, 0)\n      var values = params.slice(1)\n      var length = input.length\n      var pos = -1\n\n      if (err) {\n        done(err)\n        return\n      }\n\n      // Copy non-nully input into values.\n      while (++pos < length) {\n        if (values[pos] === null || values[pos] === undefined) {\n          values[pos] = input[pos]\n        }\n      }\n\n      input = values\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next).apply(null, input)\n      } else {\n        done.apply(null, [null].concat(input))\n      }\n    }\n  }\n\n  // Add `fn` to the list.\n  function use(fn) {\n    if (typeof fn !== 'function') {\n      throw new Error('Expected `fn` to be a function, not ' + fn)\n    }\n\n    fns.push(fn)\n\n    return middleware\n  }\n}\n","'use strict'\n\nvar slice = [].slice\n\nmodule.exports = wrap\n\n// Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\nfunction wrap(fn, callback) {\n  var invoked\n\n  return wrapped\n\n  function wrapped() {\n    var params = slice.call(arguments, 0)\n    var callback = fn.length > params.length\n    var result\n\n    if (callback) {\n      params.push(done)\n    }\n\n    try {\n      result = fn.apply(null, params)\n    } catch (error) {\n      // Well, this is quite the pickle.\n      // `fn` received a callback and invoked it (thus continuing the pipeline),\n      // but later also threw an error.\n      // We’re not about to restart the pipeline again, so the only thing left\n      // to do is to throw the thing instead.\n      if (callback && invoked) {\n        throw error\n      }\n\n      return done(error)\n    }\n\n    if (!callback) {\n      if (result && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  // Invoke `next`, only once.\n  function done() {\n    if (!invoked) {\n      invoked = true\n\n      callback.apply(null, arguments)\n    }\n  }\n\n  // Invoke `done` with one value.\n  // Tracks if an error is passed, too.\n  function then(value) {\n    done(null, value)\n  }\n}\n","'use strict'\n\nvar bail = require('bail')\nvar buffer = require('is-buffer')\nvar extend = require('extend')\nvar plain = require('is-plain-obj')\nvar trough = require('trough')\nvar vfile = require('vfile')\n\n// Expose a frozen processor.\nmodule.exports = unified().freeze()\n\nvar slice = [].slice\nvar own = {}.hasOwnProperty\n\n// Process pipeline.\nvar pipeline = trough()\n  .use(pipelineParse)\n  .use(pipelineRun)\n  .use(pipelineStringify)\n\nfunction pipelineParse(p, ctx) {\n  ctx.tree = p.parse(ctx.file)\n}\n\nfunction pipelineRun(p, ctx, next) {\n  p.run(ctx.tree, ctx.file, done)\n\n  function done(error, tree, file) {\n    if (error) {\n      next(error)\n    } else {\n      ctx.tree = tree\n      ctx.file = file\n      next()\n    }\n  }\n}\n\nfunction pipelineStringify(p, ctx) {\n  var result = p.stringify(ctx.tree, ctx.file)\n\n  if (result === undefined || result === null) {\n    // Empty.\n  } else if (typeof result === 'string' || buffer(result)) {\n    if ('value' in ctx.file) {\n      ctx.file.value = result\n    }\n\n    ctx.file.contents = result\n  } else {\n    ctx.file.result = result\n  }\n}\n\n// Function to create the first processor.\nfunction unified() {\n  var attachers = []\n  var transformers = trough()\n  var namespace = {}\n  var freezeIndex = -1\n  var frozen\n\n  // Data management.\n  processor.data = data\n\n  // Lock.\n  processor.freeze = freeze\n\n  // Plugins.\n  processor.attachers = attachers\n  processor.use = use\n\n  // API.\n  processor.parse = parse\n  processor.stringify = stringify\n  processor.run = run\n  processor.runSync = runSync\n  processor.process = process\n  processor.processSync = processSync\n\n  // Expose.\n  return processor\n\n  // Create a new processor based on the processor in the current scope.\n  function processor() {\n    var destination = unified()\n    var index = -1\n\n    while (++index < attachers.length) {\n      destination.use.apply(null, attachers[index])\n    }\n\n    destination.data(extend(true, {}, namespace))\n\n    return destination\n  }\n\n  // Freeze: used to signal a processor that has finished configuration.\n  //\n  // For example, take unified itself: it’s frozen.\n  // Plugins should not be added to it.\n  // Rather, it should be extended, by invoking it, before modifying it.\n  //\n  // In essence, always invoke this when exporting a processor.\n  function freeze() {\n    var values\n    var transformer\n\n    if (frozen) {\n      return processor\n    }\n\n    while (++freezeIndex < attachers.length) {\n      values = attachers[freezeIndex]\n\n      if (values[1] === false) {\n        continue\n      }\n\n      if (values[1] === true) {\n        values[1] = undefined\n      }\n\n      transformer = values[0].apply(processor, values.slice(1))\n\n      if (typeof transformer === 'function') {\n        transformers.use(transformer)\n      }\n    }\n\n    frozen = true\n    freezeIndex = Infinity\n\n    return processor\n  }\n\n  // Data management.\n  // Getter / setter for processor-specific informtion.\n  function data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', frozen)\n        namespace[key] = value\n        return processor\n      }\n\n      // Get `key`.\n      return (own.call(namespace, key) && namespace[key]) || null\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', frozen)\n      namespace = key\n      return processor\n    }\n\n    // Get space.\n    return namespace\n  }\n\n  // Plugin management.\n  //\n  // Pass it:\n  // *   an attacher and options,\n  // *   a preset,\n  // *   a list of presets, attachers, and arguments (list of attachers and\n  //     options).\n  function use(value) {\n    var settings\n\n    assertUnfrozen('use', frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin.apply(null, arguments)\n    } else if (typeof value === 'object') {\n      if ('length' in value) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new Error('Expected usable value, not `' + value + '`')\n    }\n\n    if (settings) {\n      namespace.settings = extend(namespace.settings || {}, settings)\n    }\n\n    return processor\n\n    function addPreset(result) {\n      addList(result.plugins)\n\n      if (result.settings) {\n        settings = extend(settings || {}, result.settings)\n      }\n    }\n\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value)\n      } else if (typeof value === 'object') {\n        if ('length' in value) {\n          addPlugin.apply(null, value)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new Error('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    function addList(plugins) {\n      var index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (typeof plugins === 'object' && 'length' in plugins) {\n        while (++index < plugins.length) {\n          add(plugins[index])\n        }\n      } else {\n        throw new Error('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    function addPlugin(plugin, value) {\n      var entry = find(plugin)\n\n      if (entry) {\n        if (plain(entry[1]) && plain(value)) {\n          value = extend(true, entry[1], value)\n        }\n\n        entry[1] = value\n      } else {\n        attachers.push(slice.call(arguments))\n      }\n    }\n  }\n\n  function find(plugin) {\n    var index = -1\n\n    while (++index < attachers.length) {\n      if (attachers[index][0] === plugin) {\n        return attachers[index]\n      }\n    }\n  }\n\n  // Parse a file (in string or vfile representation) into a unist node using\n  // the `Parser` on the processor.\n  function parse(doc) {\n    var file = vfile(doc)\n    var Parser\n\n    freeze()\n    Parser = processor.Parser\n    assertParser('parse', Parser)\n\n    if (newable(Parser, 'parse')) {\n      return new Parser(String(file), file).parse()\n    }\n\n    return Parser(String(file), file) // eslint-disable-line new-cap\n  }\n\n  // Run transforms on a unist node representation of a file (in string or\n  // vfile representation), async.\n  function run(node, file, cb) {\n    assertNode(node)\n    freeze()\n\n    if (!cb && typeof file === 'function') {\n      cb = file\n      file = null\n    }\n\n    if (!cb) {\n      return new Promise(executor)\n    }\n\n    executor(null, cb)\n\n    function executor(resolve, reject) {\n      transformers.run(node, vfile(file), done)\n\n      function done(error, tree, file) {\n        tree = tree || node\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(tree)\n        } else {\n          cb(null, tree, file)\n        }\n      }\n    }\n  }\n\n  // Run transforms on a unist node representation of a file (in string or\n  // vfile representation), sync.\n  function runSync(node, file) {\n    var result\n    var complete\n\n    run(node, file, done)\n\n    assertDone('runSync', 'run', complete)\n\n    return result\n\n    function done(error, tree) {\n      complete = true\n      result = tree\n      bail(error)\n    }\n  }\n\n  // Stringify a unist node representation of a file (in string or vfile\n  // representation) into a string using the `Compiler` on the processor.\n  function stringify(node, doc) {\n    var file = vfile(doc)\n    var Compiler\n\n    freeze()\n    Compiler = processor.Compiler\n    assertCompiler('stringify', Compiler)\n    assertNode(node)\n\n    if (newable(Compiler, 'compile')) {\n      return new Compiler(node, file).compile()\n    }\n\n    return Compiler(node, file) // eslint-disable-line new-cap\n  }\n\n  // Parse a file (in string or vfile representation) into a unist node using\n  // the `Parser` on the processor, then run transforms on that node, and\n  // compile the resulting node using the `Compiler` on the processor, and\n  // store that result on the vfile.\n  function process(doc, cb) {\n    freeze()\n    assertParser('process', processor.Parser)\n    assertCompiler('process', processor.Compiler)\n\n    if (!cb) {\n      return new Promise(executor)\n    }\n\n    executor(null, cb)\n\n    function executor(resolve, reject) {\n      var file = vfile(doc)\n\n      pipeline.run(processor, {file: file}, done)\n\n      function done(error) {\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          cb(null, file)\n        }\n      }\n    }\n  }\n\n  // Process the given document (in string or vfile representation), sync.\n  function processSync(doc) {\n    var file\n    var complete\n\n    freeze()\n    assertParser('processSync', processor.Parser)\n    assertCompiler('processSync', processor.Compiler)\n    file = vfile(doc)\n\n    process(file, done)\n\n    assertDone('processSync', 'process', complete)\n\n    return file\n\n    function done(error) {\n      complete = true\n      bail(error)\n    }\n  }\n}\n\n// Check if `value` is a constructor.\nfunction newable(value, name) {\n  return (\n    typeof value === 'function' &&\n    value.prototype &&\n    // A function with keys in its prototype is probably a constructor.\n    // Classes’ prototype methods are not enumerable, so we check if some value\n    // exists in the prototype.\n    (keys(value.prototype) || name in value.prototype)\n  )\n}\n\n// Check if `value` is an object with keys.\nfunction keys(value) {\n  var key\n  for (key in value) {\n    return true\n  }\n\n  return false\n}\n\n// Assert a parser is available.\nfunction assertParser(name, Parser) {\n  if (typeof Parser !== 'function') {\n    throw new Error('Cannot `' + name + '` without `Parser`')\n  }\n}\n\n// Assert a compiler is available.\nfunction assertCompiler(name, Compiler) {\n  if (typeof Compiler !== 'function') {\n    throw new Error('Cannot `' + name + '` without `Compiler`')\n  }\n}\n\n// Assert the processor is not frozen.\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot invoke `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n// Assert `node` is a unist node.\nfunction assertNode(node) {\n  if (!node || typeof node.type !== 'string') {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n}\n\n// Assert that `complete` is `true`.\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n  return obj != null && obj.constructor != null &&\n    typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict'\n\nmodule.exports = u\n\nfunction u(type, props, value) {\n  var node\n\n  if (\n    (value === null || value === undefined) &&\n    (typeof props !== 'object' || Array.isArray(props))\n  ) {\n    value = props\n    props = {}\n  }\n\n  node = Object.assign({type: String(type)}, props)\n\n  if (Array.isArray(value)) {\n    node.children = value\n  } else if (value !== null && value !== undefined) {\n    node.value = String(value)\n  }\n\n  return node\n}\n","'use strict'\n\nmodule.exports = generated\n\nfunction generated(node) {\n  return (\n    !node ||\n    !node.position ||\n    !node.position.start ||\n    !node.position.start.line ||\n    !node.position.start.column ||\n    !node.position.end ||\n    !node.position.end.line ||\n    !node.position.end.column\n  )\n}\n","'use strict'\n\nmodule.exports = convert\n\nfunction convert(test) {\n  if (test == null) {\n    return ok\n  }\n\n  if (typeof test === 'string') {\n    return typeFactory(test)\n  }\n\n  if (typeof test === 'object') {\n    return 'length' in test ? anyFactory(test) : allFactory(test)\n  }\n\n  if (typeof test === 'function') {\n    return test\n  }\n\n  throw new Error('Expected function, string, or object as test')\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction allFactory(test) {\n  return all\n\n  function all(node) {\n    var key\n\n    for (key in test) {\n      if (node[key] !== test[key]) return false\n    }\n\n    return true\n  }\n}\n\nfunction anyFactory(tests) {\n  var checks = []\n  var index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return any\n\n  function any() {\n    var index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, arguments)) {\n        return true\n      }\n    }\n\n    return false\n  }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n  return type\n\n  function type(node) {\n    return Boolean(node && node.type === test)\n  }\n}\n\n// Utility to return true.\nfunction ok() {\n  return true\n}\n","'use strict'\n\nvar start = factory('start')\nvar end = factory('end')\n\nmodule.exports = position\n\nposition.start = start\nposition.end = end\n\nfunction position(node) {\n  return {start: start(node), end: end(node)}\n}\n\nfunction factory(type) {\n  point.displayName = type\n\n  return point\n\n  function point(node) {\n    var point = (node && node.position && node.position[type]) || {}\n\n    return {\n      line: point.line || null,\n      column: point.column || null,\n      offset: isNaN(point.offset) ? null : point.offset\n    }\n  }\n}\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = stringify\n\nfunction stringify(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if (own.call(value, 'position') || own.call(value, 'type')) {\n    return position(value.position)\n  }\n\n  // Position.\n  if (own.call(value, 'start') || own.call(value, 'end')) {\n    return position(value)\n  }\n\n  // Point.\n  if (own.call(value, 'line') || own.call(value, 'column')) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\nfunction point(point) {\n  if (!point || typeof point !== 'object') {\n    point = {}\n  }\n\n  return index(point.line) + ':' + index(point.column)\n}\n\nfunction position(pos) {\n  if (!pos || typeof pos !== 'object') {\n    pos = {}\n  }\n\n  return point(pos.start) + '-' + point(pos.end)\n}\n\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n","module.exports = identity\nfunction identity(d) {\n  return d\n}\n","'use strict'\n\nmodule.exports = visitParents\n\nvar convert = require('unist-util-is/convert')\nvar color = require('./color')\n\nvar CONTINUE = true\nvar SKIP = 'skip'\nvar EXIT = false\n\nvisitParents.CONTINUE = CONTINUE\nvisitParents.SKIP = SKIP\nvisitParents.EXIT = EXIT\n\nfunction visitParents(tree, test, visitor, reverse) {\n  var step\n  var is\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    visitor = test\n    test = null\n  }\n\n  is = convert(test)\n  step = reverse ? -1 : 1\n\n  factory(tree, null, [])()\n\n  function factory(node, index, parents) {\n    var value = typeof node === 'object' && node !== null ? node : {}\n    var name\n\n    if (typeof value.type === 'string') {\n      name =\n        typeof value.tagName === 'string'\n          ? value.tagName\n          : typeof value.name === 'string'\n          ? value.name\n          : undefined\n\n      visit.displayName =\n        'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')'\n    }\n\n    return visit\n\n    function visit() {\n      var grandparents = parents.concat(node)\n      var result = []\n      var subresult\n      var offset\n\n      if (!test || is(node, index, parents[parents.length - 1] || null)) {\n        result = toResult(visitor(node, parents))\n\n        if (result[0] === EXIT) {\n          return result\n        }\n      }\n\n      if (node.children && result[0] !== SKIP) {\n        offset = (reverse ? node.children.length : -1) + step\n\n        while (offset > -1 && offset < node.children.length) {\n          subresult = factory(node.children[offset], offset, grandparents)()\n\n          if (subresult[0] === EXIT) {\n            return subresult\n          }\n\n          offset =\n            typeof subresult[1] === 'number' ? subresult[1] : offset + step\n        }\n      }\n\n      return result\n    }\n  }\n}\n\nfunction toResult(value) {\n  if (value !== null && typeof value === 'object' && 'length' in value) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return [value]\n}\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    visitor = test\n    test = null\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  function overload(node, parents) {\n    var parent = parents[parents.length - 1]\n    var index = parent ? parent.children.indexOf(node) : null\n    return visitor(node, index, parent)\n  }\n}\n","'use strict'\n\nvar stringify = require('unist-util-stringify-position')\n\nmodule.exports = VMessage\n\n// Inherit from `Error#`.\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype\nVMessage.prototype = new VMessagePrototype()\n\n// Message properties.\nvar proto = VMessage.prototype\n\nproto.file = ''\nproto.name = ''\nproto.reason = ''\nproto.message = ''\nproto.stack = ''\nproto.fatal = null\nproto.column = null\nproto.line = null\n\n// Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\nfunction VMessage(reason, position, origin) {\n  var parts\n  var range\n  var location\n\n  if (typeof position === 'string') {\n    origin = position\n    position = null\n  }\n\n  parts = parseOrigin(origin)\n  range = stringify(position) || '1:1'\n\n  location = {\n    start: {line: null, column: null},\n    end: {line: null, column: null}\n  }\n\n  // Node.\n  if (position && position.position) {\n    position = position.position\n  }\n\n  if (position) {\n    // Position.\n    if (position.start) {\n      location = position\n      position = position.start\n    } else {\n      // Point.\n      location.start = position\n    }\n  }\n\n  if (reason.stack) {\n    this.stack = reason.stack\n    reason = reason.message\n  }\n\n  this.message = reason\n  this.name = range\n  this.reason = reason\n  this.line = position ? position.line : null\n  this.column = position ? position.column : null\n  this.location = location\n  this.source = parts[0]\n  this.ruleId = parts[1]\n}\n\nfunction parseOrigin(origin) {\n  var result = [null, null]\n  var index\n\n  if (typeof origin === 'string') {\n    index = origin.indexOf(':')\n\n    if (index === -1) {\n      result[1] = origin\n    } else {\n      result[0] = origin.slice(0, index)\n      result[1] = origin.slice(index + 1)\n    }\n  }\n\n  return result\n}\n","'use strict'\n\nmodule.exports = require('./lib')\n","'use strict'\n\nvar p = require('./minpath')\nvar proc = require('./minproc')\nvar buffer = require('is-buffer')\n\nmodule.exports = VFile\n\nvar own = {}.hasOwnProperty\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nVFile.prototype.toString = toString\n\n// Access full path (`~/index.min.js`).\nObject.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath})\n\n// Access parent path (`~`).\nObject.defineProperty(VFile.prototype, 'dirname', {\n  get: getDirname,\n  set: setDirname\n})\n\n// Access basename (`index.min.js`).\nObject.defineProperty(VFile.prototype, 'basename', {\n  get: getBasename,\n  set: setBasename\n})\n\n// Access extname (`.js`).\nObject.defineProperty(VFile.prototype, 'extname', {\n  get: getExtname,\n  set: setExtname\n})\n\n// Access stem (`index.min`).\nObject.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem})\n\n// Construct a new file.\nfunction VFile(options) {\n  var prop\n  var index\n\n  if (!options) {\n    options = {}\n  } else if (typeof options === 'string' || buffer(options)) {\n    options = {contents: options}\n  } else if ('message' in options && 'messages' in options) {\n    return options\n  }\n\n  if (!(this instanceof VFile)) {\n    return new VFile(options)\n  }\n\n  this.data = {}\n  this.messages = []\n  this.history = []\n  this.cwd = proc.cwd()\n\n  // Set path related properties in the correct order.\n  index = -1\n\n  while (++index < order.length) {\n    prop = order[index]\n\n    if (own.call(options, prop)) {\n      this[prop] = options[prop]\n    }\n  }\n\n  // Set non-path related properties.\n  for (prop in options) {\n    if (order.indexOf(prop) < 0) {\n      this[prop] = options[prop]\n    }\n  }\n}\n\nfunction getPath() {\n  return this.history[this.history.length - 1]\n}\n\nfunction setPath(path) {\n  assertNonEmpty(path, 'path')\n\n  if (this.path !== path) {\n    this.history.push(path)\n  }\n}\n\nfunction getDirname() {\n  return typeof this.path === 'string' ? p.dirname(this.path) : undefined\n}\n\nfunction setDirname(dirname) {\n  assertPath(this.path, 'dirname')\n  this.path = p.join(dirname || '', this.basename)\n}\n\nfunction getBasename() {\n  return typeof this.path === 'string' ? p.basename(this.path) : undefined\n}\n\nfunction setBasename(basename) {\n  assertNonEmpty(basename, 'basename')\n  assertPart(basename, 'basename')\n  this.path = p.join(this.dirname || '', basename)\n}\n\nfunction getExtname() {\n  return typeof this.path === 'string' ? p.extname(this.path) : undefined\n}\n\nfunction setExtname(extname) {\n  assertPart(extname, 'extname')\n  assertPath(this.path, 'extname')\n\n  if (extname) {\n    if (extname.charCodeAt(0) !== 46 /* `.` */) {\n      throw new Error('`extname` must start with `.`')\n    }\n\n    if (extname.indexOf('.', 1) > -1) {\n      throw new Error('`extname` cannot contain multiple dots')\n    }\n  }\n\n  this.path = p.join(this.dirname, this.stem + (extname || ''))\n}\n\nfunction getStem() {\n  return typeof this.path === 'string'\n    ? p.basename(this.path, this.extname)\n    : undefined\n}\n\nfunction setStem(stem) {\n  assertNonEmpty(stem, 'stem')\n  assertPart(stem, 'stem')\n  this.path = p.join(this.dirname || '', stem + (this.extname || ''))\n}\n\n// Get the value of the file.\nfunction toString(encoding) {\n  return (this.contents || '').toString(encoding)\n}\n\n// Assert that `part` is not a path (i.e., does not contain `p.sep`).\nfunction assertPart(part, name) {\n  if (part && part.indexOf(p.sep) > -1) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + p.sep + '`'\n    )\n  }\n}\n\n// Assert that `part` is not empty.\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n// Assert `path` exists.\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n","'use strict'\n\nvar VMessage = require('vfile-message')\nvar VFile = require('./core.js')\n\nmodule.exports = VFile\n\nVFile.prototype.message = message\nVFile.prototype.info = info\nVFile.prototype.fail = fail\n\n// Create a message with `reason` at `position`.\n// When an error is passed in as `reason`, copies the stack.\nfunction message(reason, position, origin) {\n  var message = new VMessage(reason, position, origin)\n\n  if (this.path) {\n    message.name = this.path + ':' + message.name\n    message.file = this.path\n  }\n\n  message.fatal = false\n\n  this.messages.push(message)\n\n  return message\n}\n\n// Fail: creates a vmessage, associates it with the file, and throws it.\nfunction fail() {\n  var message = this.message.apply(this, arguments)\n\n  message.fatal = true\n\n  throw message\n}\n\n// Info: creates a vmessage, associates it with the file, and marks the fatality\n// as null.\nfunction info() {\n  var message = this.message.apply(this, arguments)\n\n  message.fatal = null\n\n  return message\n}\n","'use strict'\n\n// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\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\nexports.basename = basename\nexports.dirname = dirname\nexports.extname = extname\nexports.join = join\nexports.sep = '/'\n\nfunction basename(path, ext) {\n  var start = 0\n  var end = -1\n  var index\n  var firstNonSlashEnd\n  var seenNonSlash\n  var extIndex\n\n  if (ext !== undefined && typeof ext !== 'string') {\n    throw new TypeError('\"ext\" argument must be a string')\n  }\n\n  assertPath(path)\n  index = path.length\n\n  if (ext === undefined || !ext.length || ext.length > path.length) {\n    while (index--) {\n      if (path.charCodeAt(index) === 47 /* `/` */) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now.\n        if (seenNonSlash) {\n          start = index + 1\n          break\n        }\n      } else if (end < 0) {\n        // We saw the first non-path separator, mark this as the end of our\n        // path component.\n        seenNonSlash = true\n        end = index + 1\n      }\n    }\n\n    return end < 0 ? '' : path.slice(start, end)\n  }\n\n  if (ext === path) {\n    return ''\n  }\n\n  firstNonSlashEnd = -1\n  extIndex = ext.length - 1\n\n  while (index--) {\n    if (path.charCodeAt(index) === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (seenNonSlash) {\n        start = index + 1\n        break\n      }\n    } else {\n      if (firstNonSlashEnd < 0) {\n        // We saw the first non-path separator, remember this index in case\n        // we need it if the extension ends up not matching.\n        seenNonSlash = true\n        firstNonSlashEnd = index + 1\n      }\n\n      if (extIndex > -1) {\n        // Try to match the explicit extension.\n        if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n          if (extIndex < 0) {\n            // We matched the extension, so mark this as the end of our path\n            // component\n            end = index\n          }\n        } else {\n          // Extension does not match, so our result is the entire path\n          // component\n          extIndex = -1\n          end = firstNonSlashEnd\n        }\n      }\n    }\n  }\n\n  if (start === end) {\n    end = firstNonSlashEnd\n  } else if (end < 0) {\n    end = path.length\n  }\n\n  return path.slice(start, end)\n}\n\nfunction dirname(path) {\n  var end\n  var unmatchedSlash\n  var index\n\n  assertPath(path)\n\n  if (!path.length) {\n    return '.'\n  }\n\n  end = -1\n  index = path.length\n\n  // Prefix `--` is important to not run on `0`.\n  while (--index) {\n    if (path.charCodeAt(index) === 47 /* `/` */) {\n      if (unmatchedSlash) {\n        end = index\n        break\n      }\n    } else if (!unmatchedSlash) {\n      // We saw the first non-path separator\n      unmatchedSlash = true\n    }\n  }\n\n  return end < 0\n    ? path.charCodeAt(0) === 47 /* `/` */\n      ? '/'\n      : '.'\n    : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n    ? '//'\n    : path.slice(0, end)\n}\n\nfunction extname(path) {\n  var startDot = -1\n  var startPart = 0\n  var end = -1\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find.\n  var preDotState = 0\n  var unmatchedSlash\n  var code\n  var index\n\n  assertPath(path)\n\n  index = path.length\n\n  while (index--) {\n    code = path.charCodeAt(index)\n\n    if (code === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (unmatchedSlash) {\n        startPart = index + 1\n        break\n      }\n\n      continue\n    }\n\n    if (end < 0) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension.\n      unmatchedSlash = true\n      end = index + 1\n    }\n\n    if (code === 46 /* `.` */) {\n      // If this is our first dot, mark it as the start of our extension.\n      if (startDot < 0) {\n        startDot = index\n      } else if (preDotState !== 1) {\n        preDotState = 1\n      }\n    } else if (startDot > -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension.\n      preDotState = -1\n    }\n  }\n\n  if (\n    startDot < 0 ||\n    end < 0 ||\n    // We saw a non-dot character immediately before the dot.\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly `..`.\n    (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n  ) {\n    return ''\n  }\n\n  return path.slice(startDot, end)\n}\n\nfunction join() {\n  var index = -1\n  var joined\n\n  while (++index < arguments.length) {\n    assertPath(arguments[index])\n\n    if (arguments[index]) {\n      joined =\n        joined === undefined\n          ? arguments[index]\n          : joined + '/' + arguments[index]\n    }\n  }\n\n  return joined === undefined ? '.' : normalize(joined)\n}\n\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n  var absolute\n  var value\n\n  assertPath(path)\n\n  absolute = path.charCodeAt(0) === 47 /* `/` */\n\n  // Normalize the path according to POSIX rules.\n  value = normalizeString(path, !absolute)\n\n  if (!value.length && !absolute) {\n    value = '.'\n  }\n\n  if (value.length && path.charCodeAt(path.length - 1) === 47 /* / */) {\n    value += '/'\n  }\n\n  return absolute ? '/' + value : value\n}\n\n// Resolve `.` and `..` elements in a path with directory names.\nfunction normalizeString(path, allowAboveRoot) {\n  var result = ''\n  var lastSegmentLength = 0\n  var lastSlash = -1\n  var dots = 0\n  var index = -1\n  var code\n  var lastSlashIndex\n\n  while (++index <= path.length) {\n    if (index < path.length) {\n      code = path.charCodeAt(index)\n    } else if (code === 47 /* `/` */) {\n      break\n    } else {\n      code = 47 /* `/` */\n    }\n\n    if (code === 47 /* `/` */) {\n      if (lastSlash === index - 1 || dots === 1) {\n        // Empty.\n      } else if (lastSlash !== index - 1 && dots === 2) {\n        if (\n          result.length < 2 ||\n          lastSegmentLength !== 2 ||\n          result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n          result.charCodeAt(result.length - 2) !== 46 /* `.` */\n        ) {\n          if (result.length > 2) {\n            lastSlashIndex = result.lastIndexOf('/')\n\n            /* istanbul ignore else - No clue how to cover it. */\n            if (lastSlashIndex !== result.length - 1) {\n              if (lastSlashIndex < 0) {\n                result = ''\n                lastSegmentLength = 0\n              } else {\n                result = result.slice(0, lastSlashIndex)\n                lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n              }\n\n              lastSlash = index\n              dots = 0\n              continue\n            }\n          } else if (result.length) {\n            result = ''\n            lastSegmentLength = 0\n            lastSlash = index\n            dots = 0\n            continue\n          }\n        }\n\n        if (allowAboveRoot) {\n          result = result.length ? result + '/..' : '..'\n          lastSegmentLength = 2\n        }\n      } else {\n        if (result.length) {\n          result += '/' + path.slice(lastSlash + 1, index)\n        } else {\n          result = path.slice(lastSlash + 1, index)\n        }\n\n        lastSegmentLength = index - lastSlash - 1\n      }\n\n      lastSlash = index\n      dots = 0\n    } else if (code === 46 /* `.` */ && dots > -1) {\n      dots++\n    } else {\n      dots = -1\n    }\n  }\n\n  return result\n}\n\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError(\n      'Path must be a string. Received ' + JSON.stringify(path)\n    )\n  }\n}\n","'use strict'\n\n// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexports.cwd = cwd\n\nfunction cwd() {\n  return '/'\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n  return obj != null && obj.constructor != null &&\n    typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","module.exports = React;","module.exports = ReactDOM;","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.nc = undefined;","const SDK_VERSION = '7.57.0';\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","import { getGlobalSingleton, GLOBAL_OBJ } from './worldwide.js';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nconst CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n  if (!('console' in GLOBAL_OBJ)) {\n    return callback();\n  }\n\n  const originalConsole = GLOBAL_OBJ.console ;\n  const wrappedLevels = {};\n\n  // Restore all wrapped console methods\n  CONSOLE_LEVELS.forEach(level => {\n    // TODO(v7): Remove this check as it's only needed for Node 6\n    const originalWrappedFunc =\n      originalConsole[level] && (originalConsole[level] ).__sentry_original__;\n    if (level in originalConsole && originalWrappedFunc) {\n      wrappedLevels[level] = originalConsole[level] ;\n      originalConsole[level] = originalWrappedFunc ;\n    }\n  });\n\n  try {\n    return callback();\n  } finally {\n    // Revert restoration to wrapped state\n    Object.keys(wrappedLevels).forEach(level => {\n      originalConsole[level] = wrappedLevels[level ];\n    });\n  }\n}\n\nfunction makeLogger() {\n  let enabled = false;\n  const logger = {\n    enable: () => {\n      enabled = true;\n    },\n    disable: () => {\n      enabled = false;\n    },\n  };\n\n  if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n    CONSOLE_LEVELS.forEach(name => {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      logger[name] = (...args) => {\n        if (enabled) {\n          consoleSandbox(() => {\n            GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n          });\n        }\n      };\n    });\n  } else {\n    CONSOLE_LEVELS.forEach(name => {\n      logger[name] = () => undefined;\n    });\n  }\n\n  return logger ;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger;\nif ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n  logger = getGlobalSingleton('logger', makeLogger);\n} else {\n  logger = makeLogger();\n}\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger };\n//# sourceMappingURL=logger.js.map\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 */\nfunction isError(wat) {\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, className) {\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 */\nfunction isErrorEvent(wat) {\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 */\nfunction isDOMError(wat) {\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 */\nfunction isDOMException(wat) {\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 */\nfunction isString(wat) {\n  return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\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 */\nfunction isPlainObject(wat) {\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 */\nfunction isEvent(wat) {\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 */\nfunction isElement(wat) {\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 */\nfunction isRegExp(wat) {\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 */\nfunction isThenable(wat) {\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 */\nfunction isSyntheticEvent(wat) {\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 */\nfunction isNaN(wat) {\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 */\nfunction isInstanceOf(wat, base) {\n  try {\n    return wat instanceof base;\n  } catch (_e) {\n    return false;\n  }\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable };\n//# sourceMappingURL=is.js.map\n","import { isString } from './is.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\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 */\nfunction htmlTreeAsString(\n  elem,\n  options = {},\n) {\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 ;\n    const MAX_TRAVERSE_HEIGHT = 5;\n    const out = [];\n    let height = 0;\n    let len = 0;\n    const separator = ' > ';\n    const sepLength = separator.length;\n    let nextStr;\n    const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n    const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n    while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n      nextStr = _htmlElementAsString(currentElem, keyAttrs);\n      // bail out if\n      // - nextStr is the 'html' element\n      // - the length of the string that would be created exceeds maxStringLength\n      //   (ignore this limit if we are on the first iteration)\n      if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\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, keyAttrs) {\n  const elem = el\n\n;\n\n  const out = [];\n  let className;\n  let classes;\n  let key;\n  let attr;\n  let i;\n\n  if (!elem || !elem.tagName) {\n    return '';\n  }\n\n  out.push(elem.tagName.toLowerCase());\n\n  // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n  const keyAttrPairs =\n    keyAttrs && keyAttrs.length\n      ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n      : null;\n\n  if (keyAttrPairs && keyAttrPairs.length) {\n    keyAttrPairs.forEach(keyAttrPair => {\n      out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n    });\n  } else {\n    if (elem.id) {\n      out.push(`#${elem.id}`);\n    }\n\n    // eslint-disable-next-line prefer-const\n    className = elem.className;\n    if (className && isString(className)) {\n      classes = className.split(/\\s+/);\n      for (i = 0; i < classes.length; i++) {\n        out.push(`.${classes[i]}`);\n      }\n    }\n  }\n  const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n  for (i = 0; i < allowedAttrs.length; i++) {\n    key = allowedAttrs[i];\n    attr = elem.getAttribute(key);\n    if (attr) {\n      out.push(`[${key}=\"${attr}\"]`);\n    }\n  }\n  return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n  try {\n    return WINDOW.document.location.href;\n  } catch (oO) {\n    return '';\n  }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement<Element>('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getDomElement(selector) {\n  if (WINDOW.document && WINDOW.document.querySelector) {\n    return WINDOW.document.querySelector(selector) ;\n  }\n  return null;\n}\n\nexport { getDomElement, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n","import { isString, isRegExp } from './is.js';\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 */\nfunction truncate(str, max = 0) {\n  if (typeof str !== 'string' || max === 0) {\n    return str;\n  }\n  return str.length <= max ? str : `${str.slice(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 */\nfunction snipLine(line, colno) {\n  let newLine = line;\n  const lineLength = newLine.length;\n  if (lineLength <= 150) {\n    return newLine;\n  }\n  if (colno > lineLength) {\n    // eslint-disable-next-line no-param-reassign\n    colno = lineLength;\n  }\n\n  let start = Math.max(colno - 60, 0);\n  if (start < 5) {\n    start = 0;\n  }\n\n  let end = Math.min(start + 140, lineLength);\n  if (end > lineLength - 5) {\n    end = lineLength;\n  }\n  if (end === lineLength) {\n    start = Math.max(end - 140, 0);\n  }\n\n  newLine = newLine.slice(start, end);\n  if (start > 0) {\n    newLine = `'{snip} ${newLine}`;\n  }\n  if (end < lineLength) {\n    newLine += ' {snip}';\n  }\n\n  return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction safeJoin(input, delimiter) {\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 given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nfunction isMatchingPattern(\n  value,\n  pattern,\n  requireExactStringMatch = false,\n) {\n  if (!isString(value)) {\n    return false;\n  }\n\n  if (isRegExp(pattern)) {\n    return pattern.test(value);\n  }\n  if (isString(pattern)) {\n    return requireExactStringMatch ? value === pattern : value.includes(pattern);\n  }\n\n  return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nfunction stringMatchesSomePattern(\n  testString,\n  patterns = [],\n  requireExactStringMatch = false,\n) {\n  return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n//# sourceMappingURL=string.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { truncate } from './string.js';\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 */\nfunction fill(source, name, replacementFactory) {\n  if (!(name in source)) {\n    return;\n  }\n\n  const original = source[name] ;\n  const wrapped = replacementFactory(original) ;\n\n  // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n  // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n  if (typeof wrapped === 'function') {\n    try {\n      markFunctionWrapped(wrapped, original);\n    } catch (_Oo) {\n      // This can throw if multiple fill happens on a global object like XMLHttpRequest\n      // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n    }\n  }\n\n  source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n  Object.defineProperty(obj, name, {\n    // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n    value: value,\n    writable: true,\n    configurable: true,\n  });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n  const proto = original.prototype || {};\n  wrapped.prototype = original.prototype = proto;\n  addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available.  See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\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 */\nfunction urlEncode(object) {\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 */\nfunction convertToPlainObject(value)\n\n {\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\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) {\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) {\n  if (typeof obj === 'object' && obj !== null) {\n    const extractedProps = {};\n    for (const property in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, property)) {\n        extractedProps[property] = (obj )[property];\n      }\n    }\n    return extractedProps;\n  } 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 */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\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 */\nfunction dropUndefinedKeys(inputValue) {\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();\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(inputValue, memoizationMap) {\n  if (isPlainObject(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 ;\n    }\n\n    const returnValue = {};\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 ;\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 ;\n    }\n\n    const returnValue = [];\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) => {\n      returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n    });\n\n    return returnValue ;\n  }\n\n  return inputValue;\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 */\nfunction objectify(wat) {\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 ).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\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","import { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n  const gbl = GLOBAL_OBJ ;\n  const crypto = gbl.crypto || gbl.msCrypto;\n\n  if (crypto && crypto.randomUUID) {\n    return crypto.randomUUID().replace(/-/g, '');\n  }\n\n  const getRandomByte =\n    crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\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] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n    // eslint-disable-next-line no-bitwise\n    ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n  );\n}\n\nfunction getFirstException(event) {\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 */\nfunction getEventDescription(event) {\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 */\nfunction addExceptionTypeValue(event, value, type) {\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 */\nfunction addExceptionMechanism(event, newMechanism) {\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 */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\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 */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\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, frame.lineno - 1), 0);\n\n  frame.pre_context = lines\n    .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n    .map((line) => 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) => 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 */\nfunction checkOrSetAlreadyCaught(exception) {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (exception && (exception ).__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 , '__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 */\nfunction arrayify(maybeArray) {\n  return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { logger, getEventDescription, stringMatchesSomePattern } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n  /^.*healthcheck.*$/,\n  /^.*healthy.*$/,\n  /^.*live.*$/,\n  /^.*ready.*$/,\n  /^.*heartbeat.*$/,\n  /^.*\\/health$/,\n  /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\n\n/** Inbound filters configurable by the user */\nclass InboundFilters  {\n  /**\n   * @inheritDoc\n   */\n   static __initStatic() {this.id = 'InboundFilters';}\n\n  /**\n   * @inheritDoc\n   */\n   __init() {this.name = InboundFilters.id;}\n\n   constructor(  _options = {}) {this._options = _options;InboundFilters.prototype.__init.call(this);}\n\n  /**\n   * @inheritDoc\n   */\n   setupOnce(addGlobalEventProcessor, getCurrentHub) {\n    const eventProcess = (event) => {\n      const hub = getCurrentHub();\n      if (hub) {\n        const self = hub.getIntegration(InboundFilters);\n        if (self) {\n          const client = hub.getClient();\n          const clientOptions = client ? client.getOptions() : {};\n          const options = _mergeOptions(self._options, clientOptions);\n          return _shouldDropEvent(event, options) ? null : event;\n        }\n      }\n      return event;\n    };\n\n    eventProcess.id = this.name;\n    addGlobalEventProcessor(eventProcess);\n  }\n} InboundFilters.__initStatic();\n\n/** JSDoc */\nfunction _mergeOptions(\n  internalOptions = {},\n  clientOptions = {},\n) {\n  return {\n    allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n    denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n    ignoreErrors: [\n      ...(internalOptions.ignoreErrors || []),\n      ...(clientOptions.ignoreErrors || []),\n      ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n    ],\n    ignoreTransactions: [\n      ...(internalOptions.ignoreTransactions || []),\n      ...(clientOptions.ignoreTransactions || []),\n      ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n    ],\n    ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n  };\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(event, options) {\n  if (options.ignoreInternal && _isSentryError(event)) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n    return true;\n  }\n  if (_isIgnoredError(event, options.ignoreErrors)) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.warn(\n        `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n      );\n    return true;\n  }\n  if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.warn(\n        `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n      );\n    return true;\n  }\n  if (_isDeniedUrl(event, options.denyUrls)) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.warn(\n        `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n          event,\n        )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n      );\n    return true;\n  }\n  if (!_isAllowedUrl(event, options.allowUrls)) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.warn(\n        `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n          event,\n        )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n      );\n    return true;\n  }\n  return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n  // If event.type, this is not an error\n  if (event.type || !ignoreErrors || !ignoreErrors.length) {\n    return false;\n  }\n\n  return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event, ignoreTransactions) {\n  if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n    return false;\n  }\n\n  const name = event.transaction;\n  return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n  // TODO: Use Glob instead?\n  if (!denyUrls || !denyUrls.length) {\n    return false;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n  // TODO: Use Glob instead?\n  if (!allowUrls || !allowUrls.length) {\n    return true;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event) {\n  if (event.message) {\n    return [event.message];\n  }\n  if (event.exception) {\n    const { values } = event.exception;\n    try {\n      const { type = '', value = '' } = (values && values[values.length - 1]) || {};\n      return [`${value}`, `${type}: ${value}`];\n    } catch (oO) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n      return [];\n    }\n  }\n  return [];\n}\n\nfunction _isSentryError(event) {\n  try {\n    // @ts-ignore can't be a sentry error if undefined\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return event.exception.values[0].type === 'SentryError';\n  } catch (e) {\n    // ignore\n  }\n  return false;\n}\n\nfunction _getLastValidUrl(frames = []) {\n  for (let i = frames.length - 1; i >= 0; i--) {\n    const frame = frames[i];\n\n    if (frame && frame.filename !== '<anonymous>' && frame.filename !== '[native code]') {\n      return frame.filename || null;\n    }\n  }\n\n  return null;\n}\n\nfunction _getEventFilterUrl(event) {\n  try {\n    let frames;\n    try {\n      // @ts-ignore we only care about frames if the whole thing here is defined\n      frames = event.exception.values[0].stacktrace.frames;\n    } catch (e) {\n      // ignore\n    }\n    return frames ? _getLastValidUrl(frames) : null;\n  } catch (oO) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n    return null;\n  }\n}\n\nexport { InboundFilters, _mergeOptions, _shouldDropEvent };\n//# sourceMappingURL=inboundfilters.js.map\n","import { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString;\n\n/** Patch toString calls to return proper name for wrapped functions */\nclass FunctionToString  {constructor() { FunctionToString.prototype.__init.call(this); }\n  /**\n   * @inheritDoc\n   */\n   static __initStatic() {this.id = 'FunctionToString';}\n\n  /**\n   * @inheritDoc\n   */\n   __init() {this.name = FunctionToString.id;}\n\n  /**\n   * @inheritDoc\n   */\n   setupOnce() {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    originalFunctionToString = Function.prototype.toString;\n\n    // intrinsics (like Function.prototype) might be immutable in some environments\n    // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n    try {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      Function.prototype.toString = function ( ...args) {\n        const context = getOriginalFunction(this) || this;\n        return originalFunctionToString.apply(context, args);\n      };\n    } catch (e) {\n      // ignore errors here, just don't patch this\n    }\n  }\n} FunctionToString.__initStatic();\n\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map\n","const DEFAULT_ENVIRONMENT = 'production';\n\nexport { DEFAULT_ENVIRONMENT };\n//# sourceMappingURL=constants.js.map\n","import { isThenable } from './is.js';\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n  /** Pending */\n  const PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n  /** Resolved / OK */\n  const RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n  /** Rejected / Error */\n  const REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\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 */\nfunction resolvedSyncPromise(value) {\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 */\nfunction rejectedSyncPromise(reason) {\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 {\n   __init() {this._state = States.PENDING;}\n   __init2() {this._handlers = [];}\n\n   constructor(\n    executor,\n  ) {SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);SyncPromise.prototype.__init5.call(this);SyncPromise.prototype.__init6.call(this);\n    try {\n      executor(this._resolve, this._reject);\n    } catch (e) {\n      this._reject(e);\n    }\n  }\n\n  /** JSDoc */\n   then(\n    onfulfilled,\n    onrejected,\n  ) {\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 );\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   catch(\n    onrejected,\n  ) {\n    return this.then(val => val, onrejected);\n  }\n\n  /** JSDoc */\n   finally(onfinally) {\n    return new SyncPromise((resolve, reject) => {\n      let val;\n      let isRejected;\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 );\n      });\n    });\n  }\n\n  /** JSDoc */\n    __init3() {this._resolve = (value) => {\n    this._setResult(States.RESOLVED, value);\n  };}\n\n  /** JSDoc */\n    __init4() {this._reject = (reason) => {\n    this._setResult(States.REJECTED, reason);\n  };}\n\n  /** JSDoc */\n    __init5() {this._setResult = (state, value) => {\n    if (this._state !== States.PENDING) {\n      return;\n    }\n\n    if (isThenable(value)) {\n      void (value ).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    __init6() {this._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 );\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, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { timestampInSeconds, uuid4, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n  // Both timestamp and started are in seconds since the UNIX epoch.\n  const startingTime = timestampInSeconds();\n\n  const session = {\n    sid: uuid4(),\n    init: true,\n    timestamp: startingTime,\n    started: startingTime,\n    duration: 0,\n    status: 'ok',\n    errors: 0,\n    ignoreDuration: false,\n    toJSON: () => sessionToJSON(session),\n  };\n\n  if (context) {\n    updateSession(session, context);\n  }\n\n  return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nfunction updateSession(session, context = {}) {\n  if (context.user) {\n    if (!session.ipAddress && context.user.ip_address) {\n      session.ipAddress = context.user.ip_address;\n    }\n\n    if (!session.did && !context.did) {\n      session.did = context.user.id || context.user.email || context.user.username;\n    }\n  }\n\n  session.timestamp = context.timestamp || timestampInSeconds();\n\n  if (context.ignoreDuration) {\n    session.ignoreDuration = context.ignoreDuration;\n  }\n  if (context.sid) {\n    // Good enough uuid validation. — Kamil\n    session.sid = context.sid.length === 32 ? context.sid : uuid4();\n  }\n  if (context.init !== undefined) {\n    session.init = context.init;\n  }\n  if (!session.did && context.did) {\n    session.did = `${context.did}`;\n  }\n  if (typeof context.started === 'number') {\n    session.started = context.started;\n  }\n  if (session.ignoreDuration) {\n    session.duration = undefined;\n  } else if (typeof context.duration === 'number') {\n    session.duration = context.duration;\n  } else {\n    const duration = session.timestamp - session.started;\n    session.duration = duration >= 0 ? duration : 0;\n  }\n  if (context.release) {\n    session.release = context.release;\n  }\n  if (context.environment) {\n    session.environment = context.environment;\n  }\n  if (!session.ipAddress && context.ipAddress) {\n    session.ipAddress = context.ipAddress;\n  }\n  if (!session.userAgent && context.userAgent) {\n    session.userAgent = context.userAgent;\n  }\n  if (typeof context.errors === 'number') {\n    session.errors = context.errors;\n  }\n  if (context.status) {\n    session.status = context.status;\n  }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n *               this function will keep the previously set status, unless it was `'ok'` in which case\n *               it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n  let context = {};\n  if (status) {\n    context = { status };\n  } else if (session.status === 'ok') {\n    context = { status: 'exited' };\n  }\n\n  updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n  return dropUndefinedKeys({\n    sid: `${session.sid}`,\n    init: session.init,\n    // Make sure that sec is converted to ms for date constructor\n    started: new Date(session.started * 1000).toISOString(),\n    timestamp: new Date(session.timestamp * 1000).toISOString(),\n    status: session.status,\n    errors: session.errors,\n    did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n    duration: session.duration,\n    attrs: {\n      release: session.release,\n      environment: session.environment,\n      ip_address: session.ipAddress,\n      user_agent: session.userAgent,\n    },\n  });\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","import { isPlainObject, dateTimestampInSeconds, SyncPromise, logger, isThenable, arrayify, getGlobalSingleton } from '@sentry/utils';\nimport { updateSession } from './session.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope  {\n  /** Flag if notifying is happening. */\n\n  /** Callback for client to receive scope changes. */\n\n  /** Callback list that will be called after {@link applyToEvent}. */\n\n  /** Array of breadcrumbs. */\n\n  /** User */\n\n  /** Tags */\n\n  /** Extra */\n\n  /** Contexts */\n\n  /** Attachments */\n\n  /**\n   * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n   * sent to Sentry\n   */\n\n  /** Fingerprint */\n\n  /** Severity */\n  // eslint-disable-next-line deprecation/deprecation\n\n  /** Transaction Name */\n\n  /** Span */\n\n  /** Session */\n\n  /** Request Mode Session Status */\n\n  // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n   constructor() {\n    this._notifyingListeners = false;\n    this._scopeListeners = [];\n    this._eventProcessors = [];\n    this._breadcrumbs = [];\n    this._attachments = [];\n    this._user = {};\n    this._tags = {};\n    this._extra = {};\n    this._contexts = {};\n    this._sdkProcessingMetadata = {};\n  }\n\n  /**\n   * Inherit values from the parent scope.\n   * @param scope to clone.\n   */\n   static clone(scope) {\n    const newScope = new Scope();\n    if (scope) {\n      newScope._breadcrumbs = [...scope._breadcrumbs];\n      newScope._tags = { ...scope._tags };\n      newScope._extra = { ...scope._extra };\n      newScope._contexts = { ...scope._contexts };\n      newScope._user = scope._user;\n      newScope._level = scope._level;\n      newScope._span = scope._span;\n      newScope._session = scope._session;\n      newScope._transactionName = scope._transactionName;\n      newScope._fingerprint = scope._fingerprint;\n      newScope._eventProcessors = [...scope._eventProcessors];\n      newScope._requestSession = scope._requestSession;\n      newScope._attachments = [...scope._attachments];\n      newScope._sdkProcessingMetadata = { ...scope._sdkProcessingMetadata };\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   addScopeListener(callback) {\n    this._scopeListeners.push(callback);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   addEventProcessor(callback) {\n    this._eventProcessors.push(callback);\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setUser(user) {\n    this._user = user || {};\n    if (this._session) {\n      updateSession(this._session, { user });\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getUser() {\n    return this._user;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getRequestSession() {\n    return this._requestSession;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setRequestSession(requestSession) {\n    this._requestSession = requestSession;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setTags(tags) {\n    this._tags = {\n      ...this._tags,\n      ...tags,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setTag(key, value) {\n    this._tags = { ...this._tags, [key]: value };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setExtras(extras) {\n    this._extra = {\n      ...this._extra,\n      ...extras,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setExtra(key, extra) {\n    this._extra = { ...this._extra, [key]: extra };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setFingerprint(fingerprint) {\n    this._fingerprint = fingerprint;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setLevel(\n    // eslint-disable-next-line deprecation/deprecation\n    level,\n  ) {\n    this._level = level;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setTransactionName(name) {\n    this._transactionName = name;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setContext(key, context) {\n    if (context === null) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._contexts[key];\n    } else {\n      this._contexts[key] = context;\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setSpan(span) {\n    this._span = span;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getSpan() {\n    return this._span;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getTransaction() {\n    // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n    // have a pointer to the currently-active transaction.\n    const span = this.getSpan();\n    return span && span.transaction;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setSession(session) {\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   getSession() {\n    return this._session;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   update(captureContext) {\n    if (!captureContext) {\n      return this;\n    }\n\n    if (typeof captureContext === 'function') {\n      const updatedScope = (captureContext )(this);\n      return updatedScope instanceof Scope ? updatedScope : this;\n    }\n\n    if (captureContext instanceof Scope) {\n      this._tags = { ...this._tags, ...captureContext._tags };\n      this._extra = { ...this._extra, ...captureContext._extra };\n      this._contexts = { ...this._contexts, ...captureContext._contexts };\n      if (captureContext._user && Object.keys(captureContext._user).length) {\n        this._user = captureContext._user;\n      }\n      if (captureContext._level) {\n        this._level = captureContext._level;\n      }\n      if (captureContext._fingerprint) {\n        this._fingerprint = captureContext._fingerprint;\n      }\n      if (captureContext._requestSession) {\n        this._requestSession = captureContext._requestSession;\n      }\n    } else if (isPlainObject(captureContext)) {\n      // eslint-disable-next-line no-param-reassign\n      captureContext = captureContext ;\n      this._tags = { ...this._tags, ...captureContext.tags };\n      this._extra = { ...this._extra, ...captureContext.extra };\n      this._contexts = { ...this._contexts, ...captureContext.contexts };\n      if (captureContext.user) {\n        this._user = captureContext.user;\n      }\n      if (captureContext.level) {\n        this._level = captureContext.level;\n      }\n      if (captureContext.fingerprint) {\n        this._fingerprint = captureContext.fingerprint;\n      }\n      if (captureContext.requestSession) {\n        this._requestSession = captureContext.requestSession;\n      }\n    }\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   clear() {\n    this._breadcrumbs = [];\n    this._tags = {};\n    this._extra = {};\n    this._user = {};\n    this._contexts = {};\n    this._level = undefined;\n    this._transactionName = undefined;\n    this._fingerprint = undefined;\n    this._requestSession = undefined;\n    this._span = undefined;\n    this._session = undefined;\n    this._notifyScopeListeners();\n    this._attachments = [];\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n    const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n    // No data has been changed, so don't notify scope listeners\n    if (maxCrumbs <= 0) {\n      return this;\n    }\n\n    const mergedBreadcrumb = {\n      timestamp: dateTimestampInSeconds(),\n      ...breadcrumb,\n    };\n    this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n    this._notifyScopeListeners();\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getLastBreadcrumb() {\n    return this._breadcrumbs[this._breadcrumbs.length - 1];\n  }\n\n  /**\n   * @inheritDoc\n   */\n   clearBreadcrumbs() {\n    this._breadcrumbs = [];\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   addAttachment(attachment) {\n    this._attachments.push(attachment);\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getAttachments() {\n    return this._attachments;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   clearAttachments() {\n    this._attachments = [];\n    return this;\n  }\n\n  /**\n   * Applies data from the scope to the event and runs all event processors on it.\n   *\n   * @param event Event\n   * @param hint Object containing additional information about the original exception, for use by the event processors.\n   * @hidden\n   */\n   applyToEvent(event, hint = {}) {\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\n    // We want to set the trace context for normal events only if there isn't already\n    // a trace context on the event. There is a product feature in place where we link\n    // errors with transaction and it relies on that.\n    if (this._span) {\n      event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n      const transaction = this._span.transaction;\n      if (transaction) {\n        event.sdkProcessingMetadata = {\n          dynamicSamplingContext: transaction.getDynamicSamplingContext(),\n          ...event.sdkProcessingMetadata,\n        };\n        const transactionName = transaction.name;\n        if (transactionName) {\n          event.tags = { transaction: transactionName, ...event.tags };\n        }\n      }\n    }\n\n    this._applyFingerprint(event);\n\n    event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n    event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n    event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata };\n\n    return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n  }\n\n  /**\n   * Add data which will be accessible during event processing but won't get sent to Sentry\n   */\n   setSDKProcessingMetadata(newData) {\n    this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n    return this;\n  }\n\n  /**\n   * This will be called after {@link applyToEvent} is finished.\n   */\n   _notifyEventProcessors(\n    processors,\n    event,\n    hint,\n    index = 0,\n  ) {\n    return new SyncPromise((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) ;\n\n        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n          processor.id &&\n          result === null &&\n          logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n        if (isThenable(result)) {\n          void result\n            .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n            .then(null, reject);\n        } else {\n          void this._notifyEventProcessors(processors, result, hint, index + 1)\n            .then(resolve)\n            .then(null, reject);\n        }\n      }\n    });\n  }\n\n  /**\n   * This will be called on every set call.\n   */\n   _notifyScopeListeners() {\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   _applyFingerprint(event) {\n    // Make sure it's an array first and we actually have something in place\n    event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n    // If we have something on the scope, then merge it with event\n    if (this._fingerprint) {\n      event.fingerprint = event.fingerprint.concat(this._fingerprint);\n    }\n\n    // If we have no data at all, remove empty array default\n    if (event.fingerprint && !event.fingerprint.length) {\n      delete event.fingerprint;\n    }\n  }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n  return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nfunction addGlobalEventProcessor(callback) {\n  getGlobalEventProcessors().push(callback);\n}\n\nexport { Scope, addGlobalEventProcessor };\n//# sourceMappingURL=scope.js.map\n","import { uuid4, dateTimestampInSeconds, consoleSandbox, logger, GLOBAL_OBJ, getGlobalSingleton } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { Scope } from './scope.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\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 */\nconst API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * @inheritDoc\n */\nclass Hub  {\n  /** Is a {@link Layer}[] containing the client and scope */\n\n  /** Contains the last event id of a captured event.  */\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   constructor(client, scope = new Scope(),   _version = API_VERSION) {this._version = _version;\n    this._stack = [{ scope }];\n    if (client) {\n      this.bindClient(client);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   isOlderThan(version) {\n    return this._version < version;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   bindClient(client) {\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   pushScope() {\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   popScope() {\n    if (this.getStack().length <= 1) return false;\n    return !!this.getStack().pop();\n  }\n\n  /**\n   * @inheritDoc\n   */\n   withScope(callback) {\n    const scope = this.pushScope();\n    try {\n      callback(scope);\n    } finally {\n      this.popScope();\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getClient() {\n    return this.getStackTop().client ;\n  }\n\n  /** Returns the scope of the top stack. */\n   getScope() {\n    return this.getStackTop().scope;\n  }\n\n  /** Returns the scope stack for domains or the process. */\n   getStack() {\n    return this._stack;\n  }\n\n  /** Returns the topmost scope layer in the order domain > local > process. */\n   getStackTop() {\n    return this._stack[this._stack.length - 1];\n  }\n\n  /**\n   * @inheritDoc\n   */\n   captureException(exception, hint) {\n    const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n    const syntheticException = new Error('Sentry syntheticException');\n    this._withClient((client, scope) => {\n      client.captureException(\n        exception,\n        {\n          originalException: exception,\n          syntheticException,\n          ...hint,\n          event_id: eventId,\n        },\n        scope,\n      );\n    });\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   captureMessage(\n    message,\n    // eslint-disable-next-line deprecation/deprecation\n    level,\n    hint,\n  ) {\n    const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n    const syntheticException = new Error(message);\n    this._withClient((client, scope) => {\n      client.captureMessage(\n        message,\n        level,\n        {\n          originalException: message,\n          syntheticException,\n          ...hint,\n          event_id: eventId,\n        },\n        scope,\n      );\n    });\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   captureEvent(event, hint) {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n    if (!event.type) {\n      this._lastEventId = eventId;\n    }\n\n    this._withClient((client, scope) => {\n      client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n    });\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   lastEventId() {\n    return this._lastEventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   addBreadcrumb(breadcrumb, hint) {\n    const { scope, client } = this.getStackTop();\n\n    if (!client) return;\n\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)) )\n      : mergedBreadcrumb;\n\n    if (finalBreadcrumb === null) return;\n\n    if (client.emit) {\n      client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n    }\n\n    scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setUser(user) {\n    this.getScope().setUser(user);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setTags(tags) {\n    this.getScope().setTags(tags);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setExtras(extras) {\n    this.getScope().setExtras(extras);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setTag(key, value) {\n    this.getScope().setTag(key, value);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setExtra(key, extra) {\n    this.getScope().setExtra(key, extra);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n   setContext(name, context) {\n    this.getScope().setContext(name, context);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   configureScope(callback) {\n    const { scope, client } = this.getStackTop();\n    if (client) {\n      callback(scope);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   run(callback) {\n    const oldHub = makeMain(this);\n    try {\n      callback(this);\n    } finally {\n      makeMain(oldHub);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getIntegration(integration) {\n    const client = this.getClient();\n    if (!client) return null;\n    try {\n      return client.getIntegration(integration);\n    } catch (_oO) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n      return null;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   startTransaction(context, customSamplingContext) {\n    const result = this._callExtensionMethod('startTransaction', context, customSamplingContext);\n\n    if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && !result) {\n      // eslint-disable-next-line no-console\n      console.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n    }\n\n    return result;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   traceHeaders() {\n    return this._callExtensionMethod('traceHeaders');\n  }\n\n  /**\n   * @inheritDoc\n   */\n   captureSession(endSession = false) {\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   endSession() {\n    const layer = this.getStackTop();\n    const scope = layer.scope;\n    const session = scope.getSession();\n    if (session) {\n      closeSession(session);\n    }\n    this._sendSessionUpdate();\n\n    // the session is over; take it off of the scope\n    scope.setSession();\n  }\n\n  /**\n   * @inheritDoc\n   */\n   startSession(context) {\n    const { scope, client } = this.getStackTop();\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: scope.getUser(),\n      ...(userAgent && { userAgent }),\n      ...context,\n    });\n\n    // End existing session if there's one\n    const currentSession = scope.getSession && scope.getSession();\n    if (currentSession && currentSession.status === 'ok') {\n      updateSession(currentSession, { status: 'exited' });\n    }\n    this.endSession();\n\n    // Afterwards we set the new session on the scope\n    scope.setSession(session);\n\n    return session;\n  }\n\n  /**\n   * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n   * when Tracing is used.\n   */\n   shouldSendDefaultPii() {\n    const client = this.getClient();\n    const options = client && client.getOptions();\n    return Boolean(options && options.sendDefaultPii);\n  }\n\n  /**\n   * Sends the current Session on the scope\n   */\n   _sendSessionUpdate() {\n    const { scope, client } = this.getStackTop();\n\n    const session = scope.getSession();\n    if (session && client && client.captureSession) {\n      client.captureSession(session);\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   _withClient(callback) {\n    const { scope, client } = this.getStackTop();\n    if (client) {\n      callback(client, 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   _callExtensionMethod(method, ...args) {\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    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n  }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n  GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n    extensions: {},\n    hub: undefined,\n  };\n  return GLOBAL_OBJ;\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 */\nfunction makeMain(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 */\nfunction getCurrentHub() {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n\n  if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n    const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n    if (hub) {\n      return hub;\n    }\n  }\n\n  // Return hub that lives on a global object\n  return getGlobalHub(registry);\n}\n\nfunction getGlobalHub(registry = getMainCarrier()) {\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  // Return hub that lives on a global object\n  return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\nfunction ensureHubOnCarrier(carrier, parent = getGlobalHub()) {\n  // If there's no hub on current domain, or it's an old API, assign a new one\n  if (!hasHubOnCarrier(carrier) || getHubFromCarrier(carrier).isOlderThan(API_VERSION)) {\n    const globalHubTopStack = parent.getStackTop();\n    setHubOnCarrier(carrier, new Hub(globalHubTopStack.client, Scope.clone(globalHubTopStack.scope)));\n  }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nfunction setAsyncContextStrategy(strategy) {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n  registry.__SENTRY__ = registry.__SENTRY__ || {};\n  registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nfunction runWithAsyncContext(callback, options = {}) {\n  const registry = getMainCarrier();\n\n  if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n    return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n  }\n\n  // if there was no strategy, fallback to just calling the callback\n  return callback();\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) {\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 */\nfunction getHubFromCarrier(carrier) {\n  return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nfunction setHubOnCarrier(carrier, hub) {\n  if (!carrier) return false;\n  const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n  __SENTRY__.hub = hub;\n  return true;\n}\n\nexport { API_VERSION, Hub, ensureHubOnCarrier, getCurrentHub, getHubFromCarrier, getMainCarrier, makeMain, runWithAsyncContext, setAsyncContextStrategy, setHubOnCarrier };\n//# sourceMappingURL=hub.js.map\n","import { arrayify, logger } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\nimport { addGlobalEventProcessor } from './scope.js';\n\nconst installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\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) {\n  const integrationsByName = {};\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 */\nfunction getIntegrationsToSetup(options) {\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;\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 */\nfunction setupIntegrations(integrations) {\n  const integrationIndex = {};\n\n  integrations.forEach(integration => {\n    // guard against empty provided integrations\n    if (integration) {\n      setupIntegration(integration, integrationIndex);\n    }\n  });\n\n  return integrationIndex;\n}\n\n/** Setup a single integration.  */\nfunction setupIntegration(integration, integrationIndex) {\n  integrationIndex[integration.name] = integration;\n\n  if (installedIntegrations.indexOf(integration.name) === -1) {\n    integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n    installedIntegrations.push(integration.name);\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);\n  }\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex(arr, callback) {\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\nexport { getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","import { node } from './node-stack-trace.js';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\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 */\nfunction createStackParser(...parsers) {\n  const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n  return (stack, skipFirst = 0) => {\n    const frames = [];\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 */\nfunction stackParserFromStackParserOptions(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 */\nfunction stripSentryFramesAndReverse(stack) {\n  if (!stack.length) {\n    return [];\n  }\n\n  const localStack = stack.slice(0, STACKTRACE_FRAME_LIMIT);\n\n  const lastFrameFunction = localStack[localStack.length - 1].function;\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 (lastFrameFunction && /sentryWrapped/.test(lastFrameFunction)) {\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  const firstFrameFunction = localStack[localStack.length - 1].function;\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 (firstFrameFunction && /captureMessage|captureException/.test(firstFrameFunction)) {\n    localStack.pop();\n  }\n\n  return localStack.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 */\nfunction getFunctionName(fn) {\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 */\nfunction nodeStackLineParser(getModule) {\n  return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { logger } from './logger.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\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 */\nfunction supportsDOMError() {\n  try {\n    // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n    // 1 argument required, but only 0 present.\n    // @ts-ignore It really needs 1 argument, not 0.\n    new DOMError('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\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 */\nfunction supportsFetch() {\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\nfunction isNativeFetch(func) {\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 */\nfunction supportsNativeFetch() {\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 ) === '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      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\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 */\nfunction supportsReportingObserver() {\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 */\nfunction supportsReferrerPolicy() {\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' ,\n    });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n//# sourceMappingURL=supports.js.map\n","import { getGlobalObject } from '../worldwide.js';\n\n// Based on https://github.com/angular/angular.js/pull/13945/files\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\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 chrome = (WINDOW ).chrome;\n  const isChromePackagedApp = chrome && chrome.app && chrome.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\nexport { supportsHistory };\n//# sourceMappingURL=supportsHistory.js.map\n","import { isString } from './is.js';\nimport { logger, CONSOLE_LEVELS } from './logger.js';\nimport { fill } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\nimport { supportsNativeFetch } from './supports.js';\nimport { getGlobalObject } from './worldwide.js';\nimport { supportsHistory } from './vendor/supportsHistory.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst SENTRY_XHR_DATA_KEY = '__sentry_xhr_v2__';\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n *  - Console API\n *  - Fetch API\n *  - XHR API\n *  - History API\n *  - DOM API (click/typing)\n *  - Error API\n *  - UnhandledRejection API\n */\n\nconst handlers = {};\nconst instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n  if (instrumented[type]) {\n    return;\n  }\n\n  instrumented[type] = true;\n\n  switch (type) {\n    case 'console':\n      instrumentConsole();\n      break;\n    case 'dom':\n      instrumentDOM();\n      break;\n    case 'xhr':\n      instrumentXHR();\n      break;\n    case 'fetch':\n      instrumentFetch();\n      break;\n    case 'history':\n      instrumentHistory();\n      break;\n    case 'error':\n      instrumentError();\n      break;\n    case 'unhandledrejection':\n      instrumentUnhandledRejection();\n      break;\n    default:\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('unknown instrumentation type:', type);\n      return;\n  }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n  handlers[type] = handlers[type] || [];\n  (handlers[type] ).push(callback);\n  instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n  if (!type || !handlers[type]) {\n    return;\n  }\n\n  for (const handler of handlers[type] || []) {\n    try {\n      handler(data);\n    } catch (e) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n        logger.error(\n          `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n          e,\n        );\n    }\n  }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n  if (!('console' in WINDOW)) {\n    return;\n  }\n\n  CONSOLE_LEVELS.forEach(function (level) {\n    if (!(level in WINDOW.console)) {\n      return;\n    }\n\n    fill(WINDOW.console, level, function (originalConsoleMethod) {\n      return function (...args) {\n        triggerHandlers('console', { args, level });\n\n        // this fails for some browsers. :(\n        if (originalConsoleMethod) {\n          originalConsoleMethod.apply(WINDOW.console, args);\n        }\n      };\n    });\n  });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n  if (!supportsNativeFetch()) {\n    return;\n  }\n\n  fill(WINDOW, 'fetch', function (originalFetch) {\n    return function (...args) {\n      const { method, url } = parseFetchArgs(args);\n\n      const handlerData = {\n        args,\n        fetchData: {\n          method,\n          url,\n        },\n        startTimestamp: Date.now(),\n      };\n\n      triggerHandlers('fetch', {\n        ...handlerData,\n      });\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      return originalFetch.apply(WINDOW, args).then(\n        (response) => {\n          triggerHandlers('fetch', {\n            ...handlerData,\n            endTimestamp: Date.now(),\n            response,\n          });\n          return response;\n        },\n        (error) => {\n          triggerHandlers('fetch', {\n            ...handlerData,\n            endTimestamp: Date.now(),\n            error,\n          });\n          // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n          //       it means the sentry.javascript SDK caught an error invoking your application code.\n          //       This is expected behavior and NOT indicative of a bug with sentry.javascript.\n          throw error;\n        },\n      );\n    };\n  });\n}\n\nfunction hasProp(obj, prop) {\n  return !!obj && typeof obj === 'object' && !!(obj )[prop];\n}\n\nfunction getUrlFromResource(resource) {\n  if (typeof resource === 'string') {\n    return resource;\n  }\n\n  if (!resource) {\n    return '';\n  }\n\n  if (hasProp(resource, 'url')) {\n    return resource.url;\n  }\n\n  if (resource.toString) {\n    return resource.toString();\n  }\n\n  return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request\n */\nfunction parseFetchArgs(fetchArgs) {\n  if (fetchArgs.length === 0) {\n    return { method: 'GET', url: '' };\n  }\n\n  if (fetchArgs.length === 2) {\n    const [url, options] = fetchArgs ;\n\n    return {\n      url: getUrlFromResource(url),\n      method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n    };\n  }\n\n  const arg = fetchArgs[0];\n  return {\n    url: getUrlFromResource(arg ),\n    method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n  };\n}\n\n/** JSDoc */\nfunction instrumentXHR() {\n  if (!('XMLHttpRequest' in WINDOW)) {\n    return;\n  }\n\n  const xhrproto = XMLHttpRequest.prototype;\n\n  fill(xhrproto, 'open', function (originalOpen) {\n    return function ( ...args) {\n      const url = args[1];\n      const xhrInfo = (this[SENTRY_XHR_DATA_KEY] = {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n        url: args[1],\n        request_headers: {},\n      });\n\n      // if Sentry key appears in URL, don't capture it as a request\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n        this.__sentry_own_request__ = true;\n      }\n\n      const onreadystatechangeHandler = () => {\n        // For whatever reason, this is not the same instance here as from the outer method\n        const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n        if (!xhrInfo) {\n          return;\n        }\n\n        if (this.readyState === 4) {\n          try {\n            // touching statusCode in some platforms throws\n            // an exception\n            xhrInfo.status_code = this.status;\n          } catch (e) {\n            /* do nothing */\n          }\n\n          triggerHandlers('xhr', {\n            args: args ,\n            endTimestamp: Date.now(),\n            startTimestamp: Date.now(),\n            xhr: this,\n          } );\n        }\n      };\n\n      if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n        fill(this, 'onreadystatechange', function (original) {\n          return function ( ...readyStateArgs) {\n            onreadystatechangeHandler();\n            return original.apply(this, readyStateArgs);\n          };\n        });\n      } else {\n        this.addEventListener('readystatechange', onreadystatechangeHandler);\n      }\n\n      // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n      // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n      // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n      fill(this, 'setRequestHeader', function (original) {\n        return function ( ...setRequestHeaderArgs) {\n          const [header, value] = setRequestHeaderArgs ;\n\n          const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n          if (xhrInfo) {\n            xhrInfo.request_headers[header.toLowerCase()] = value;\n          }\n\n          return original.apply(this, setRequestHeaderArgs);\n        };\n      });\n\n      return originalOpen.apply(this, args);\n    };\n  });\n\n  fill(xhrproto, 'send', function (originalSend) {\n    return function ( ...args) {\n      const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n      if (sentryXhrData && args[0] !== undefined) {\n        sentryXhrData.body = args[0];\n      }\n\n      triggerHandlers('xhr', {\n        args,\n        startTimestamp: Date.now(),\n        xhr: this,\n      });\n\n      return originalSend.apply(this, args);\n    };\n  });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n  if (!supportsHistory()) {\n    return;\n  }\n\n  const oldOnPopState = WINDOW.onpopstate;\n  WINDOW.onpopstate = function ( ...args) {\n    const to = WINDOW.location.href;\n    // keep track of the current URL state, as we always receive only the updated state\n    const from = lastHref;\n    lastHref = to;\n    triggerHandlers('history', {\n      from,\n      to,\n    });\n    if (oldOnPopState) {\n      // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n      // https://github.com/getsentry/sentry-javascript/issues/3344\n      // https://github.com/bugsnag/bugsnag-js/issues/469\n      try {\n        return oldOnPopState.apply(this, args);\n      } catch (_oO) {\n        // no-empty\n      }\n    }\n  };\n\n  /** @hidden */\n  function historyReplacementFunction(originalHistoryFunction) {\n    return function ( ...args) {\n      const url = args.length > 2 ? args[2] : undefined;\n      if (url) {\n        // coerce to string (this is what pushState does)\n        const from = lastHref;\n        const to = String(url);\n        // keep track of the current URL state, as we always receive only the updated state\n        lastHref = to;\n        triggerHandlers('history', {\n          from,\n          to,\n        });\n      }\n      return originalHistoryFunction.apply(this, args);\n    };\n  }\n\n  fill(WINDOW.history, 'pushState', historyReplacementFunction);\n  fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n  // If there was no previous event, it should always be swapped for the new one.\n  if (!previous) {\n    return true;\n  }\n\n  // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n  if (previous.type !== current.type) {\n    return true;\n  }\n\n  try {\n    // If both events have the same type, it's still possible that actions were performed on different targets.\n    // e.g. 2 clicks on different buttons.\n    if (previous.target !== current.target) {\n      return true;\n    }\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n  }\n\n  // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n  // to which an event listener was attached), we treat them as the same action, as we want to capture\n  // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n  return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n  // We are only interested in filtering `keypress` events for now.\n  if (event.type !== 'keypress') {\n    return false;\n  }\n\n  try {\n    const target = event.target ;\n\n    if (!target || !target.tagName) {\n      return true;\n    }\n\n    // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n    // e.g.tabbing through elements, hotkeys, etc.\n    if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n      return false;\n    }\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n  }\n\n  return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n  return (event) => {\n    // It's possible this handler might trigger multiple times for the same\n    // event (e.g. event propagation through node ancestors).\n    // Ignore if we've already captured that event.\n    if (!event || lastCapturedEvent === event) {\n      return;\n    }\n\n    // We always want to skip _some_ events.\n    if (shouldSkipDOMEvent(event)) {\n      return;\n    }\n\n    const name = event.type === 'keypress' ? 'input' : event.type;\n\n    // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n    if (debounceTimerID === undefined) {\n      handler({\n        event: event,\n        name,\n        global: globalListener,\n      });\n      lastCapturedEvent = event;\n    }\n    // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n    // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n    else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n      handler({\n        event: event,\n        name,\n        global: globalListener,\n      });\n      lastCapturedEvent = event;\n    }\n\n    // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n    clearTimeout(debounceTimerID);\n    debounceTimerID = WINDOW.setTimeout(() => {\n      debounceTimerID = undefined;\n    }, debounceDuration);\n  };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n  if (!('document' in WINDOW)) {\n    return;\n  }\n\n  // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n  // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n  // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n  const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n  const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n  WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n  WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n  // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n  // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n  // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n  // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n  // guaranteed to fire at least once.)\n  ['EventTarget', 'Node'].forEach((target) => {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    const proto = (WINDOW )[target] && (WINDOW )[target].prototype;\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n    if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n      return;\n    }\n\n    fill(proto, 'addEventListener', function (originalAddEventListener) {\n      return function (\n\n        type,\n        listener,\n        options,\n      ) {\n        if (type === 'click' || type == 'keypress') {\n          try {\n            const el = this ;\n            const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n            const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n            if (!handlerForType.handler) {\n              const handler = makeDOMEventHandler(triggerDOMHandler);\n              handlerForType.handler = handler;\n              originalAddEventListener.call(this, type, handler, options);\n            }\n\n            handlerForType.refCount++;\n          } catch (e) {\n            // Accessing dom properties is always fragile.\n            // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n          }\n        }\n\n        return originalAddEventListener.call(this, type, listener, options);\n      };\n    });\n\n    fill(\n      proto,\n      'removeEventListener',\n      function (originalRemoveEventListener) {\n        return function (\n\n          type,\n          listener,\n          options,\n        ) {\n          if (type === 'click' || type == 'keypress') {\n            try {\n              const el = this ;\n              const handlers = el.__sentry_instrumentation_handlers__ || {};\n              const handlerForType = handlers[type];\n\n              if (handlerForType) {\n                handlerForType.refCount--;\n                // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n                if (handlerForType.refCount <= 0) {\n                  originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n                  handlerForType.handler = undefined;\n                  delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n                }\n\n                // If there are no longer any custom handlers of any type on this element, cleanup everything.\n                if (Object.keys(handlers).length === 0) {\n                  delete el.__sentry_instrumentation_handlers__;\n                }\n              }\n            } catch (e) {\n              // Accessing dom properties is always fragile.\n              // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n            }\n          }\n\n          return originalRemoveEventListener.call(this, type, listener, options);\n        };\n      },\n    );\n  });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n  _oldOnErrorHandler = WINDOW.onerror;\n\n  WINDOW.onerror = function (msg, url, line, column, error) {\n    triggerHandlers('error', {\n      column,\n      error,\n      line,\n      msg,\n      url,\n    });\n\n    if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnErrorHandler.apply(this, arguments);\n    }\n\n    return false;\n  };\n\n  WINDOW.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n  _oldOnUnhandledRejectionHandler = WINDOW.onunhandledrejection;\n\n  WINDOW.onunhandledrejection = function (e) {\n    triggerHandlers('unhandledrejection', e);\n\n    if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n    }\n\n    return true;\n  };\n\n  WINDOW.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { SENTRY_XHR_DATA_KEY, addInstrumentationHandler, parseFetchArgs };\n//# sourceMappingURL=instrument.js.map\n","import { logger } from './logger.js';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n  return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n  const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n  return (\n    `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n    `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n  );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nfunction dsnFromString(str) {\n  const match = DSN_REGEX.exec(str);\n\n  if (!match) {\n    // This should be logged to the console\n    // eslint-disable-next-line no-console\n    console.error(`Invalid Sentry Dsn: ${str}`);\n    return undefined;\n  }\n\n  const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n  let path = '';\n  let projectId = lastPath;\n\n  const split = projectId.split('/');\n  if (split.length > 1) {\n    path = split.slice(0, -1).join('/');\n    projectId = split.pop() ;\n  }\n\n  if (projectId) {\n    const projectMatch = projectId.match(/^\\d+/);\n    if (projectMatch) {\n      projectId = projectMatch[0];\n    }\n  }\n\n  return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n  return {\n    protocol: components.protocol,\n    publicKey: components.publicKey || '',\n    pass: components.pass || '',\n    host: components.host,\n    port: components.port || '',\n    path: components.path || '',\n    projectId: components.projectId,\n  };\n}\n\nfunction validateDsn(dsn) {\n  if (!(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n    return true;\n  }\n\n  const { port, projectId, protocol } = dsn;\n\n  const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n  const hasMissingRequiredComponent = requiredComponents.find(component => {\n    if (!dsn[component]) {\n      logger.error(`Invalid Sentry Dsn: ${component} missing`);\n      return true;\n    }\n    return false;\n  });\n\n  if (hasMissingRequiredComponent) {\n    return false;\n  }\n\n  if (!projectId.match(/^\\d+$/)) {\n    logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n    return false;\n  }\n\n  if (!isValidProtocol(protocol)) {\n    logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n    return false;\n  }\n\n  if (port && isNaN(parseInt(port, 10))) {\n    logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nfunction makeDsn(from) {\n  const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n  if (!components || !validateDsn(components)) {\n    return undefined;\n  }\n  return components;\n}\n\nexport { dsnFromString, dsnToString, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","import { isNaN, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\n  try {\n    // since we're at the outermost level, we don't provide a key\n    return visit('', input, depth, maxProperties);\n  } catch (err) {\n    return { ERROR: `**non-serializable** (${err})` };\n  }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object,\n  // Default Node.js REPL depth\n  depth = 3,\n  // 100kB, as 200kB is max payload size, so half sounds reasonable\n  maxSize = 100 * 1024,\n) {\n  const normalized = normalize(object, depth);\n\n  if (jsonSize(normalized) > maxSize) {\n    return normalizeToSize(object, depth - 1, maxSize);\n  }\n\n  return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n  key,\n  value,\n  depth = +Infinity,\n  maxProperties = +Infinity,\n  memo = memoBuilder(),\n) {\n  const [memoize, unmemoize] = memo;\n\n  // Get the simple cases out of the way first\n  if (\n    value == null || // this matches null and undefined -> eqeq not eqeqeq\n    (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n  ) {\n    return value ;\n  }\n\n  const stringified = stringifyValue(key, value);\n\n  // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n  // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n  if (!stringified.startsWith('[object ')) {\n    return stringified;\n  }\n\n  // From here on, we can assert that `value` is either an object or an array.\n\n  // Do not normalize objects that we know have already been normalized. As a general rule, the\n  // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n  // have already been normalized.\n  if ((value )['__sentry_skip_normalization__']) {\n    return value ;\n  }\n\n  // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n  // We keep a certain amount of depth.\n  // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n  const remainingDepth =\n    typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n      ? ((value )['__sentry_override_normalization_depth__'] )\n      : depth;\n\n  // We're also done if we've reached the max depth\n  if (remainingDepth === 0) {\n    // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n    return stringified.replace('object ', '');\n  }\n\n  // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n  if (memoize(value)) {\n    return '[Circular ~]';\n  }\n\n  // If the value has a `toJSON` method, we call it to extract more information\n  const valueWithToJSON = value ;\n  if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n    try {\n      const jsonValue = valueWithToJSON.toJSON();\n      // We need to normalize the return value of `.toJSON()` in case it has circular references\n      return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n    } catch (err) {\n      // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n    }\n  }\n\n  // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n  // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n  // property/entry, and keep track of the number of items we add to it.\n  const normalized = (Array.isArray(value) ? [] : {}) ;\n  let numAdded = 0;\n\n  // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n  // properties are non-enumerable and otherwise would get missed.\n  const visitable = convertToPlainObject(value );\n\n  for (const visitKey in visitable) {\n    // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n    if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n      continue;\n    }\n\n    if (numAdded >= maxProperties) {\n      normalized[visitKey] = '[MaxProperties ~]';\n      break;\n    }\n\n    // Recursively visit all the child nodes\n    const visitValue = visitable[visitKey];\n    normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n    numAdded++;\n  }\n\n  // Once we've visited all the branches, remove the parent from memo storage\n  unmemoize(value);\n\n  // Return accumulated values\n  return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n  key,\n  // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n  // our internal use, it'll do\n  value,\n) {\n  try {\n    if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n      return '[Domain]';\n    }\n\n    if (key === 'domainEmitter') {\n      return '[DomainEmitter]';\n    }\n\n    // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n    // which won't throw if they are not present.\n\n    if (typeof global !== 'undefined' && value === global) {\n      return '[Global]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof window !== 'undefined' && value === window) {\n      return '[Window]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof document !== 'undefined' && value === document) {\n      return '[Document]';\n    }\n\n    // React's SyntheticEvent thingy\n    if (isSyntheticEvent(value)) {\n      return '[SyntheticEvent]';\n    }\n\n    if (typeof value === 'number' && value !== value) {\n      return '[NaN]';\n    }\n\n    if (typeof value === 'function') {\n      return `[Function: ${getFunctionName(value)}]`;\n    }\n\n    if (typeof value === 'symbol') {\n      return `[${String(value)}]`;\n    }\n\n    // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n    if (typeof value === 'bigint') {\n      return `[BigInt: ${String(value)}]`;\n    }\n\n    // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n    // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n    // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n    // we can make sure that only plain objects come out that way.\n    const objName = getConstructorName(value);\n\n    // Handle HTML Elements\n    if (/^HTML(\\w*)Element$/.test(objName)) {\n      return `[HTMLElement: ${objName}]`;\n    }\n\n    return `[object ${objName}]`;\n  } catch (err) {\n    return `**non-serializable** (${err})`;\n  }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n  const prototype = Object.getPrototypeOf(value);\n\n  return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n  // eslint-disable-next-line no-bitwise\n  return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n  return utf8Length(JSON.stringify(value));\n}\n\nexport { normalize, normalizeToSize, visit as walk };\n//# sourceMappingURL=normalize.js.map\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n  const hasWeakSet = typeof WeakSet === 'function';\n  const inner = hasWeakSet ? new WeakSet() : [];\n  function memoize(obj) {\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) {\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\nexport { memoBuilder };\n//# sourceMappingURL=memo.js.map\n","import { dsnToString } from './dsn.js';\nimport { normalize } from './normalize.js';\nimport { dropUndefinedKeys } from './object.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n  return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n  const [headers, items] = envelope;\n  return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nfunction forEachEnvelopeItem(\n  envelope,\n  callback,\n) {\n  const envelopeItems = envelope[1];\n\n  for (const envelopeItem of envelopeItems) {\n    const envelopeItemType = envelopeItem[0].type;\n    const result = callback(envelopeItem, envelopeItemType);\n\n    if (result) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nfunction envelopeContainsItemType(envelope, types) {\n  return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8.\n */\nfunction encodeUTF8(input, textEncoder) {\n  const utf8 = textEncoder || new TextEncoder();\n  return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope, textEncoder) {\n  const [envHeaders, items] = envelope;\n\n  // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n  let parts = JSON.stringify(envHeaders);\n\n  function append(next) {\n    if (typeof parts === 'string') {\n      parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n    } else {\n      parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n    }\n  }\n\n  for (const item of items) {\n    const [itemHeaders, payload] = item;\n\n    append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n    if (typeof payload === 'string' || payload instanceof Uint8Array) {\n      append(payload);\n    } else {\n      let stringifiedPayload;\n      try {\n        stringifiedPayload = JSON.stringify(payload);\n      } catch (e) {\n        // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n        // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n        // performance impact but in this case a performance hit is better than throwing.\n        stringifiedPayload = JSON.stringify(normalize(payload));\n      }\n      append(stringifiedPayload);\n    }\n  }\n\n  return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n  const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n  const merged = new Uint8Array(totalLength);\n  let offset = 0;\n  for (const buffer of buffers) {\n    merged.set(buffer, offset);\n    offset += buffer.length;\n  }\n\n  return merged;\n}\n\n/**\n * Parses an envelope\n */\nfunction parseEnvelope(\n  env,\n  textEncoder,\n  textDecoder,\n) {\n  let buffer = typeof env === 'string' ? textEncoder.encode(env) : env;\n\n  function readBinary(length) {\n    const bin = buffer.subarray(0, length);\n    // Replace the buffer with the remaining data excluding trailing newline\n    buffer = buffer.subarray(length + 1);\n    return bin;\n  }\n\n  function readJson() {\n    let i = buffer.indexOf(0xa);\n    // If we couldn't find a newline, we must have found the end of the buffer\n    if (i < 0) {\n      i = buffer.length;\n    }\n\n    return JSON.parse(textDecoder.decode(readBinary(i))) ;\n  }\n\n  const envelopeHeader = readJson();\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const items = [];\n\n  while (buffer.length) {\n    const itemHeader = readJson();\n    const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n    items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n  }\n\n  return [envelopeHeader, items];\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(\n  attachment,\n  textEncoder,\n) {\n  const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n  return [\n    dropUndefinedKeys({\n      type: 'attachment',\n      length: buffer.length,\n      filename: attachment.filename,\n      content_type: attachment.contentType,\n      attachment_type: attachment.attachmentType,\n    }),\n    buffer,\n  ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n  session: 'session',\n  sessions: 'session',\n  attachment: 'attachment',\n  transaction: 'transaction',\n  event: 'error',\n  client_report: 'internal',\n  user_report: 'default',\n  profile: 'profile',\n  replay_event: 'replay',\n  replay_recording: 'replay',\n  check_in: 'monitor',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n  return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from from the metadata or an events */\nfunction getSdkMetadataForEnvelopeHeader(metadataOrEvent) {\n  if (!metadataOrEvent || !metadataOrEvent.sdk) {\n    return;\n  }\n  const { name, version } = metadataOrEvent.sdk;\n  return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nfunction createEventEnvelopeHeaders(\n  event,\n  sdkInfo,\n  tunnel,\n  dsn,\n) {\n  const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n  return {\n    event_id: event.event_id ,\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && { dsn: dsnToString(dsn) }),\n    ...(dynamicSamplingContext && {\n      trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n    }),\n  };\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n","/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n  /** Display name of this error instance. */\n\n   constructor( message, logLevel = 'warn') {\n    super(message);this.message = message;\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\nexport { SentryError };\n//# sourceMappingURL=error.js.map\n","import { makeDsn, dsnToString, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n  const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n  const port = dsn.port ? `:${dsn.port}` : '';\n  return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n  return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n  return urlEncode({\n    // We send only the minimum set of required information. See\n    // https://github.com/getsentry/sentry-javascript/issues/2572.\n    sentry_key: dsn.publicKey,\n    sentry_version: SENTRY_API_VERSION,\n    ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n  });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(\n  dsn,\n  // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n  // options: ClientOptions = {} as ClientOptions,\n  tunnelOrOptions = {} ,\n) {\n  // TODO (v8): Use this code instead\n  // const { tunnel, _metadata = {} } = options;\n  // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n  const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n  const sdkInfo =\n    typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n  return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(\n  dsnLike,\n  dialogOptions\n\n,\n) {\n  const dsn = makeDsn(dsnLike);\n  if (!dsn) {\n    return '';\n  }\n\n  const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n  let encodedOptions = `dsn=${dsnToString(dsn)}`;\n  for (const key in dialogOptions) {\n    if (key === 'dsn') {\n      continue;\n    }\n\n    if (key === 'user') {\n      const user = dialogOptions.user;\n      if (!user) {\n        continue;\n      }\n      if (user.name) {\n        encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n      }\n      if (user.email) {\n        encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n      }\n    } else {\n      encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n    }\n  }\n\n  return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n","import { uuid4, dateTimestampInSeconds, resolvedSyncPromise, truncate, GLOBAL_OBJ, normalize } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { Scope } from '../scope.js';\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 */\nfunction prepareEvent(\n  options,\n  event,\n  hint,\n  scope,\n) {\n  const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options;\n  const prepared = {\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  let finalScope = scope;\n  if (hint.captureContext) {\n    finalScope = Scope.clone(finalScope).update(hint.captureContext);\n  }\n\n  // We prepare the result here with a resolved Event.\n  let result = resolvedSyncPromise(prepared);\n\n  // This should be the last thing called, since we want that\n  // {@link Hub.addEventProcessor} gets the finished prepared event.\n  //\n  // We need to check for the existence of `finalScope.getAttachments`\n  // because `getAttachments` can be undefined if users are using an older version\n  // of `@sentry/core` that does not have the `getAttachments` method.\n  // See: https://github.com/getsentry/sentry-javascript/issues/5229\n  if (finalScope) {\n    // Collect attachments from the hint and scope\n    if (finalScope.getAttachments) {\n      const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n      if (attachments.length) {\n        hint.attachments = attachments;\n      }\n    }\n\n    // In case we have a hub we reassign it.\n    result = finalScope.applyToEvent(prepared, hint);\n  }\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, options) {\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();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n  const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n  if (!debugIdMap) {\n    return;\n  }\n\n  let debugIdStackFramesCache;\n  const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n  if (cachedDebugIdStackFrameCache) {\n    debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n  } else {\n    debugIdStackFramesCache = new Map();\n    debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n  }\n\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = Object.keys(debugIdMap).reduce((acc, debugIdStackTrace) => {\n    let parsedStack;\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 */\nfunction applyDebugMeta(event) {\n  // Extract debug IDs and filenames from the stack frames on the event.\n  const filenameDebugIdMap = {};\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, integrationNames) {\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, depth, maxBreadth) {\n  if (!event) {\n    return null;\n  }\n\n  const normalized = {\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      // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n      if (span.data) {\n        span.data = normalize(span.data, depth, maxBreadth);\n      }\n      return span;\n    });\n  }\n\n  return normalized;\n}\n\nexport { applyDebugIds, applyDebugMeta, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n","import { makeDsn, logger, checkOrSetAlreadyCaught, isPrimitive, resolvedSyncPromise, addItemToEnvelope, createAttachmentEnvelopeItem, SyncPromise, rejectedSyncPromise, SentryError, isThenable, isPlainObject } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegrations, setupIntegration } from './integration.js';\nimport { updateSession } from './session.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient<NodeOptions> {\n *   public constructor(options: NodeOptions) {\n *     super(options);\n *   }\n *\n *   // ...\n * }\n */\nclass BaseClient {\n  /** Options passed to the SDK. */\n\n  /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n  /** Array of set up integrations. */\n   __init() {this._integrations = {};}\n\n  /** Indicates whether this client's integrations have been set up. */\n   __init2() {this._integrationsInitialized = false;}\n\n  /** Number of calls being processed */\n   __init3() {this._numProcessing = 0;}\n\n  /** Holds flushable  */\n   __init4() {this._outcomes = {};}\n\n  // eslint-disable-next-line @typescript-eslint/ban-types\n   __init5() {this._hooks = {};}\n\n  /**\n   * Initializes this client instance.\n   *\n   * @param options Options for the client.\n   */\n   constructor(options) {BaseClient.prototype.__init.call(this);BaseClient.prototype.__init2.call(this);BaseClient.prototype.__init3.call(this);BaseClient.prototype.__init4.call(this);BaseClient.prototype.__init5.call(this);\n    this._options = options;\n\n    if (options.dsn) {\n      this._dsn = makeDsn(options.dsn);\n    } else {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('No DSN provided, client will not do anything.');\n    }\n\n    if (this._dsn) {\n      const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n      this._transport = options.transport({\n        recordDroppedEvent: this.recordDroppedEvent.bind(this),\n        ...options.transportOptions,\n        url,\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n   captureException(exception, hint, scope) {\n    // ensure we haven't captured this very object before\n    if (checkOrSetAlreadyCaught(exception)) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n      return;\n    }\n\n    let eventId = hint && hint.event_id;\n\n    this._process(\n      this.eventFromException(exception, hint)\n        .then(event => this._captureEvent(event, hint, scope))\n        .then(result => {\n          eventId = result;\n        }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   captureMessage(\n    message,\n    // eslint-disable-next-line deprecation/deprecation\n    level,\n    hint,\n    scope,\n  ) {\n    let eventId = hint && hint.event_id;\n\n    const promisedEvent = isPrimitive(message)\n      ? this.eventFromMessage(String(message), level, hint)\n      : this.eventFromException(message, hint);\n\n    this._process(\n      promisedEvent\n        .then(event => this._captureEvent(event, hint, scope))\n        .then(result => {\n          eventId = result;\n        }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   captureEvent(event, hint, scope) {\n    // ensure we haven't captured this very object before\n    if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n      return;\n    }\n\n    let eventId = hint && hint.event_id;\n\n    this._process(\n      this._captureEvent(event, hint, scope).then(result => {\n        eventId = result;\n      }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   captureSession(session) {\n    if (!this._isEnabled()) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture session.');\n      return;\n    }\n\n    if (!(typeof session.release === 'string')) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Discarded session because of missing or non-string release');\n    } else {\n      this.sendSession(session);\n      // After sending, we set init false to indicate it's not the first occurrence\n      updateSession(session, { init: false });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getDsn() {\n    return this._dsn;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getOptions() {\n    return this._options;\n  }\n\n  /**\n   * @see SdkMetadata in @sentry/types\n   *\n   * @return The metadata of the SDK\n   */\n   getSdkMetadata() {\n    return this._options._metadata;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getTransport() {\n    return this._transport;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   flush(timeout) {\n    const transport = this._transport;\n    if (transport) {\n      return this._isClientDoneProcessing(timeout).then(clientFinished => {\n        return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n      });\n    } else {\n      return resolvedSyncPromise(true);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   close(timeout) {\n    return this.flush(timeout).then(result => {\n      this.getOptions().enabled = false;\n      return result;\n    });\n  }\n\n  /**\n   * Sets up the integrations\n   */\n   setupIntegrations() {\n    if (this._isEnabled() && !this._integrationsInitialized) {\n      this._integrations = setupIntegrations(this._options.integrations);\n      this._integrationsInitialized = true;\n    }\n  }\n\n  /**\n   * Gets an installed integration by its `id`.\n   *\n   * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n   */\n   getIntegrationById(integrationId) {\n    return this._integrations[integrationId];\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getIntegration(integration) {\n    try {\n      return (this._integrations[integration.id] ) || null;\n    } catch (_oO) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n      return null;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   addIntegration(integration) {\n    setupIntegration(integration, this._integrations);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   sendEvent(event, hint = {}) {\n    if (this._dsn) {\n      let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n      for (const attachment of hint.attachments || []) {\n        env = addItemToEnvelope(\n          env,\n          createAttachmentEnvelopeItem(\n            attachment,\n            this._options.transportOptions && this._options.transportOptions.textEncoder,\n          ),\n        );\n      }\n\n      const promise = this._sendEnvelope(env);\n      if (promise) {\n        promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n      }\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   sendSession(session) {\n    if (this._dsn) {\n      const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n      void this._sendEnvelope(env);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   recordDroppedEvent(reason, category, _event) {\n    // Note: we use `event` in replay, where we overwrite this hook.\n\n    if (this._options.sendClientReports) {\n      // We want to track each category (error, transaction, session, replay_event) separately\n      // but still keep the distinction between different type of outcomes.\n      // We could use nested maps, but it's much easier to read and type this way.\n      // A correct type for map-based implementation if we want to go that route\n      // would be `Partial<Record<SentryRequestType, Partial<Record<Outcome, number>>>>`\n      // With typescript 4.1 we could even use template literal types\n      const key = `${reason}:${category}`;\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Adding outcome: \"${key}\"`);\n\n      // The following works because undefined + 1 === NaN and NaN is falsy\n      this._outcomes[key] = this._outcomes[key] + 1 || 1;\n    }\n  }\n\n  // Keep on() & emit() signatures in sync with types' client.ts interface\n\n  /** @inheritdoc */\n\n  /** @inheritdoc */\n   on(hook, callback) {\n    if (!this._hooks[hook]) {\n      this._hooks[hook] = [];\n    }\n\n    // @ts-ignore We assue the types are correct\n    this._hooks[hook].push(callback);\n  }\n\n  /** @inheritdoc */\n\n  /** @inheritdoc */\n   emit(hook, ...rest) {\n    if (this._hooks[hook]) {\n      // @ts-ignore we cannot enforce the callback to match the hook\n      this._hooks[hook].forEach(callback => callback(...rest));\n    }\n  }\n\n  /** Updates existing session based on the provided event */\n   _updateSessionFromEvent(session, event) {\n    let crashed = false;\n    let errored = false;\n    const exceptions = event.exception && event.exception.values;\n\n    if (exceptions) {\n      errored = true;\n\n      for (const ex of exceptions) {\n        const mechanism = ex.mechanism;\n        if (mechanism && mechanism.handled === false) {\n          crashed = true;\n          break;\n        }\n      }\n    }\n\n    // A session is updated and that session update is sent in only one of the two following scenarios:\n    // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n    // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n    const sessionNonTerminal = session.status === 'ok';\n    const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n    if (shouldUpdateAndSend) {\n      updateSession(session, {\n        ...(crashed && { status: 'crashed' }),\n        errors: session.errors || Number(errored || crashed),\n      });\n      this.captureSession(session);\n    }\n  }\n\n  /**\n   * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n   * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n   * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n   * `false` otherwise\n   */\n   _isClientDoneProcessing(timeout) {\n    return new SyncPromise(resolve => {\n      let ticked = 0;\n      const tick = 1;\n\n      const interval = setInterval(() => {\n        if (this._numProcessing == 0) {\n          clearInterval(interval);\n          resolve(true);\n        } else {\n          ticked += tick;\n          if (timeout && ticked >= timeout) {\n            clearInterval(interval);\n            resolve(false);\n          }\n        }\n      }, tick);\n    });\n  }\n\n  /** Determines whether this SDK is enabled and a valid Dsn is present. */\n   _isEnabled() {\n    return this.getOptions().enabled !== false && this._dsn !== undefined;\n  }\n\n  /**\n   * Adds common information to events.\n   *\n   * The information includes release and environment from `options`,\n   * breadcrumbs and context (extra, tags and user) from the scope.\n   *\n   * Information that is already present in the event is never overwritten. For\n   * nested objects, such as the context, keys are merged.\n   *\n   * @param event The original event.\n   * @param hint May contain additional information about the original exception.\n   * @param scope A scope containing event metadata.\n   * @returns A new event with more information.\n   */\n   _prepareEvent(event, hint, scope) {\n    const options = this.getOptions();\n    const integrations = Object.keys(this._integrations);\n    if (!hint.integrations && integrations.length > 0) {\n      hint.integrations = integrations;\n    }\n    return prepareEvent(options, event, hint, scope);\n  }\n\n  /**\n   * Processes the event and logs an error in case of rejection\n   * @param event\n   * @param hint\n   * @param scope\n   */\n   _captureEvent(event, hint = {}, scope) {\n    return this._processEvent(event, hint, scope).then(\n      finalEvent => {\n        return finalEvent.event_id;\n      },\n      reason => {\n        if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n          // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n          // control flow, log just the message (no stack) as a log-level log.\n          const sentryError = reason ;\n          if (sentryError.logLevel === 'log') {\n            logger.log(sentryError.message);\n          } else {\n            logger.warn(sentryError);\n          }\n        }\n        return undefined;\n      },\n    );\n  }\n\n  /**\n   * Processes an event (either error or message) and sends it to Sentry.\n   *\n   * This also adds breadcrumbs and context information to the event. However,\n   * platform specific meta data (such as the User's IP address) must be added\n   * by the SDK implementor.\n   *\n   *\n   * @param event The event to send to Sentry.\n   * @param hint May contain additional information about the original exception.\n   * @param scope A scope containing event metadata.\n   * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n   */\n   _processEvent(event, hint, scope) {\n    const options = this.getOptions();\n    const { sampleRate } = options;\n\n    if (!this._isEnabled()) {\n      return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\n    }\n\n    const isTransaction = isTransactionEvent(event);\n    const isError = isErrorEvent(event);\n    const eventType = event.type || 'error';\n    const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n    // 1.0 === 100% events are sent\n    // 0.0 === 0% events are sent\n    // Sampling for transaction happens somewhere else\n    if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n      this.recordDroppedEvent('sample_rate', 'error', event);\n      return rejectedSyncPromise(\n        new SentryError(\n          `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n          'log',\n        ),\n      );\n    }\n\n    const dataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n    return this._prepareEvent(event, hint, scope)\n      .then(prepared => {\n        if (prepared === null) {\n          this.recordDroppedEvent('event_processor', dataCategory, event);\n          throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n        }\n\n        const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n        if (isInternalException) {\n          return prepared;\n        }\n\n        const result = processBeforeSend(options, prepared, hint);\n        return _validateBeforeSendResult(result, beforeSendLabel);\n      })\n      .then(processedEvent => {\n        if (processedEvent === null) {\n          this.recordDroppedEvent('before_send', dataCategory, event);\n          throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n        }\n\n        const session = scope && scope.getSession();\n        if (!isTransaction && session) {\n          this._updateSessionFromEvent(session, processedEvent);\n        }\n\n        // None of the Sentry built event processor will update transaction name,\n        // so if the transaction name has been changed by an event processor, we know\n        // it has to come from custom event processor added by a user\n        const transactionInfo = processedEvent.transaction_info;\n        if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n          const source = 'custom';\n          processedEvent.transaction_info = {\n            ...transactionInfo,\n            source,\n          };\n        }\n\n        this.sendEvent(processedEvent, hint);\n        return processedEvent;\n      })\n      .then(null, reason => {\n        if (reason instanceof SentryError) {\n          throw reason;\n        }\n\n        this.captureException(reason, {\n          data: {\n            __sentry__: true,\n          },\n          originalException: reason,\n        });\n        throw new SentryError(\n          `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n        );\n      });\n  }\n\n  /**\n   * Occupies the client with processing and event\n   */\n   _process(promise) {\n    this._numProcessing++;\n    void promise.then(\n      value => {\n        this._numProcessing--;\n        return value;\n      },\n      reason => {\n        this._numProcessing--;\n        return reason;\n      },\n    );\n  }\n\n  /**\n   * @inheritdoc\n   */\n   _sendEnvelope(envelope) {\n    if (this._transport && this._dsn) {\n      this.emit('beforeEnvelope', envelope);\n\n      return this._transport.send(envelope).then(null, reason => {\n        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Error while sending event:', reason);\n      });\n    } else {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Transport disabled');\n    }\n  }\n\n  /**\n   * Clears outcomes on this client and returns them.\n   */\n   _clearOutcomes() {\n    const outcomes = this._outcomes;\n    this._outcomes = {};\n    return Object.keys(outcomes).map(key => {\n      const [reason, category] = key.split(':') ;\n      return {\n        reason,\n        category,\n        quantity: outcomes[key],\n      };\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n  beforeSendResult,\n  beforeSendLabel,\n) {\n  const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n  if (isThenable(beforeSendResult)) {\n    return beforeSendResult.then(\n      event => {\n        if (!isPlainObject(event) && event !== null) {\n          throw new SentryError(invalidValueError);\n        }\n        return event;\n      },\n      e => {\n        throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n      },\n    );\n  } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n    throw new SentryError(invalidValueError);\n  }\n  return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n  options,\n  event,\n  hint,\n) {\n  const { beforeSend, beforeSendTransaction } = options;\n\n  if (isErrorEvent(event) && beforeSend) {\n    return beforeSend(event, hint);\n  }\n\n  if (isTransactionEvent(event) && beforeSendTransaction) {\n    return beforeSendTransaction(event, hint);\n  }\n\n  return event;\n}\n\nfunction isErrorEvent(event) {\n  return event.type === undefined;\n}\n\nfunction isTransactionEvent(event) {\n  return event.type === 'transaction';\n}\n\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map\n","import { getSdkMetadataForEnvelopeHeader, dsnToString, createEnvelope, createEventEnvelopeHeaders } from '@sentry/utils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n  if (!sdkInfo) {\n    return event;\n  }\n  event.sdk = event.sdk || {};\n  event.sdk.name = event.sdk.name || sdkInfo.name;\n  event.sdk.version = event.sdk.version || sdkInfo.version;\n  event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n  event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n  return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n  session,\n  dsn,\n  metadata,\n  tunnel,\n) {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const envelopeHeaders = {\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && { dsn: dsnToString(dsn) }),\n  };\n\n  const envelopeItem =\n    'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n  return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n  event,\n  dsn,\n  metadata,\n  tunnel,\n) {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n  /*\n    Note: Due to TS, event.type may be `replay_event`, theoretically.\n    In practice, we never call `createEventEnvelope` with `replay_event` type,\n    and we'd have to adjut a looot of types to make this work properly.\n    We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n    So the safe choice is to really guard against the replay_event type here.\n  */\n  const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n  enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n  const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete event.sdkProcessingMetadata;\n\n  const eventItem = [{ type: eventType }, event];\n  return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nexport { createEventEnvelope, createSessionEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, normalizeToSize, extractExceptionKeysForMessage } from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n  // Get the frames first since Opera can lose the stack if we touch anything else first\n  const frames = parseStackFrames(stackParser, ex);\n\n  const exception = {\n    type: ex && ex.name,\n    value: extractMessage(ex),\n  };\n\n  if (frames.length) {\n    exception.stacktrace = { frames };\n  }\n\n  if (exception.type === undefined && exception.value === '') {\n    exception.value = 'Unrecoverable error caught';\n  }\n\n  return exception;\n}\n\n/**\n * @hidden\n */\nfunction eventFromPlainObject(\n  stackParser,\n  exception,\n  syntheticException,\n  isUnhandledRejection,\n) {\n  const hub = getCurrentHub();\n  const client = hub.getClient();\n  const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n  const event = {\n    exception: {\n      values: [\n        {\n          type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n          value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n        },\n      ],\n    },\n    extra: {\n      __serialized__: normalizeToSize(exception, normalizeDepth),\n    },\n  };\n\n  if (syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      // event.exception.values[0] has been set above\n      (event.exception ).values[0].stacktrace = { frames };\n    }\n  }\n\n  return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromError(stackParser, ex) {\n  return {\n    exception: {\n      values: [exceptionFromError(stackParser, ex)],\n    },\n  };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n  stackParser,\n  ex,\n) {\n  // Access and store the stacktrace property before doing ANYTHING\n  // else to it because Opera is not very good at providing it\n  // reliably in other circumstances.\n  const stacktrace = ex.stacktrace || ex.stack || '';\n\n  const popSize = getPopSize(ex);\n\n  try {\n    return stackParser(stacktrace, popSize);\n  } catch (e) {\n    // no-empty\n  }\n\n  return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex) {\n  if (ex) {\n    if (typeof ex.framesToPop === 'number') {\n      return ex.framesToPop;\n    }\n\n    if (reactMinifiedRegexp.test(ex.message)) {\n      return 1;\n    }\n  }\n\n  return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n  const message = ex && ex.message;\n  if (!message) {\n    return 'No error message';\n  }\n  if (message.error && typeof message.error.message === 'string') {\n    return message.error.message;\n  }\n  return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n  stackParser,\n  exception,\n  hint,\n  attachStacktrace,\n) {\n  const syntheticException = (hint && hint.syntheticException) || undefined;\n  const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n  addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n  event.level = 'error';\n  if (hint && hint.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n  stackParser,\n  message,\n  // eslint-disable-next-line deprecation/deprecation\n  level = 'info',\n  hint,\n  attachStacktrace,\n) {\n  const syntheticException = (hint && hint.syntheticException) || undefined;\n  const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n  event.level = level;\n  if (hint && hint.event_id) {\n    event.event_id = hint.event_id;\n  }\n  return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n  stackParser,\n  exception,\n  syntheticException,\n  attachStacktrace,\n  isUnhandledRejection,\n) {\n  let event;\n\n  if (isErrorEvent(exception ) && (exception ).error) {\n    // If it is an ErrorEvent with `error` property, extract it to get actual Error\n    const errorEvent = exception ;\n    return eventFromError(stackParser, errorEvent.error );\n  }\n\n  // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n  // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n  // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n  //\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n  // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n  // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n  if (isDOMError(exception) || isDOMException(exception )) {\n    const domException = exception ;\n\n    if ('stack' in (exception )) {\n      event = eventFromError(stackParser, exception );\n    } else {\n      const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n      const message = domException.message ? `${name}: ${domException.message}` : name;\n      event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n      addExceptionTypeValue(event, message);\n    }\n    if ('code' in domException) {\n      // eslint-disable-next-line deprecation/deprecation\n      event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n    }\n\n    return event;\n  }\n  if (isError(exception)) {\n    // we have a real Error object, do nothing\n    return eventFromError(stackParser, exception);\n  }\n  if (isPlainObject(exception) || isEvent(exception)) {\n    // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n    // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n    // group on any key/value change.\n    const objectException = exception ;\n    event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n    addExceptionMechanism(event, {\n      synthetic: true,\n    });\n    return event;\n  }\n\n  // If none of previous checks were valid, then it means that it's not:\n  // - an instance of DOMError\n  // - an instance of DOMException\n  // - an instance of Event\n  // - an instance of Error\n  // - a valid ErrorEvent (one with an error property)\n  // - a plain Object\n  //\n  // So bail out and capture it as a simple message:\n  event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n  addExceptionTypeValue(event, `${exception}`, undefined);\n  addExceptionMechanism(event, {\n    synthetic: true,\n  });\n\n  return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n  stackParser,\n  input,\n  syntheticException,\n  attachStacktrace,\n) {\n  const event = {\n    message: input,\n  };\n\n  if (attachStacktrace && syntheticException) {\n    const frames = parseStackFrames(stackParser, syntheticException);\n    if (frames.length) {\n      event.exception = {\n        values: [{ value: input, stacktrace: { frames } }],\n      };\n    }\n  }\n\n  return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n  exception,\n  { isUnhandledRejection },\n) {\n  const keys = extractExceptionKeysForMessage(exception);\n  const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n  // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n  // We still want to try to get a decent message for these cases\n  if (isErrorEvent(exception)) {\n    return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n  }\n\n  if (isEvent(exception)) {\n    const className = getObjectClassName(exception);\n    return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n  }\n\n  return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n  try {\n    const prototype = Object.getPrototypeOf(obj);\n    return prototype ? prototype.constructor.name : undefined;\n  } catch (e) {\n    // ignore errors here\n  }\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import { logger, uuid4 } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\n\n// Note: All functions in this file are typed with a return value of `ReturnType<Hub[HUB_FUNCTION]>`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction captureException(exception, captureContext) {\n  return getCurrentHub().captureException(exception, { captureContext });\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 Severity Define the level of the message.\n * @returns The generated eventId.\n */\nfunction captureMessage(\n  message,\n  // eslint-disable-next-line deprecation/deprecation\n  captureContext,\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  return getCurrentHub().captureMessage(message, level, context);\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 */\nfunction captureEvent(event, hint) {\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 */\nfunction configureScope(callback) {\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 */\nfunction addBreadcrumb(breadcrumb) {\n  getCurrentHub().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\nfunction setContext(name, context) {\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 */\nfunction setExtras(extras) {\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 */\nfunction setExtra(key, extra) {\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 */\nfunction setTags(tags) {\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 */\nfunction setTag(key, value) {\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 */\nfunction setUser(user) {\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 *\n * @param callback that will be enclosed into push/popScope.\n */\nfunction withScope(callback) {\n  getCurrentHub().withScope(callback);\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 * 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 */\nfunction startTransaction(\n  context,\n  customSamplingContext,\n) {\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 */\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n  const client = getCurrentHub().getClient();\n  if (!client) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot capture check-in. No client defined.');\n  } else if (!client.captureCheckIn) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n  } else {\n    return client.captureCheckIn(checkIn, upsertMonitorConfig);\n  }\n\n  return uuid4();\n}\n\nexport { addBreadcrumb, captureCheckIn, captureEvent, captureException, captureMessage, configureScope, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction, withScope };\n//# sourceMappingURL=exports.js.map\n","import { withScope, captureException } from '@sentry/core';\nimport { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, addExceptionTypeValue, addExceptionMechanism } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n  return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n  // onerror should trigger before setTimeout\n  ignoreOnError++;\n  setTimeout(() => {\n    ignoreOnError--;\n  });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n  fn,\n  options\n\n = {},\n  before,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n  // for future readers what this does is wrap a function and then create\n  // a bi-directional wrapping between them.\n  //\n  // example: wrapped = wrap(original);\n  //  original.__sentry_wrapped__ -> wrapped\n  //  wrapped.__sentry_original__ -> original\n\n  if (typeof fn !== 'function') {\n    return fn;\n  }\n\n  try {\n    // if we're dealing with a function that was previously wrapped, return\n    // the original wrapper.\n    const wrapper = fn.__sentry_wrapped__;\n    if (wrapper) {\n      return wrapper;\n    }\n\n    // We don't wanna wrap it twice\n    if (getOriginalFunction(fn)) {\n      return fn;\n    }\n  } catch (e) {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    // Bail on wrapping and return the function as-is (defers to window.onerror).\n    return fn;\n  }\n\n  /* eslint-disable prefer-rest-params */\n  // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n  const sentryWrapped = function () {\n    const args = Array.prototype.slice.call(arguments);\n\n    try {\n      if (before && typeof before === 'function') {\n        before.apply(this, arguments);\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n      const wrappedArguments = args.map((arg) => wrap(arg, options));\n\n      // Attempt to invoke user-land function\n      // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n      //       means the sentry.javascript SDK caught an error invoking your application code. This\n      //       is expected behavior and NOT indicative of a bug with sentry.javascript.\n      return fn.apply(this, wrappedArguments);\n    } catch (ex) {\n      ignoreNextOnError();\n\n      withScope((scope) => {\n        scope.addEventProcessor((event) => {\n          if (options.mechanism) {\n            addExceptionTypeValue(event, undefined, undefined);\n            addExceptionMechanism(event, options.mechanism);\n          }\n\n          event.extra = {\n            ...event.extra,\n            arguments: args,\n          };\n\n          return event;\n        });\n\n        captureException(ex);\n      });\n\n      throw ex;\n    }\n  };\n  /* eslint-enable prefer-rest-params */\n\n  // Accessing some objects may throw\n  // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n  try {\n    for (const property in fn) {\n      if (Object.prototype.hasOwnProperty.call(fn, property)) {\n        sentryWrapped[property] = fn[property];\n      }\n    }\n  } catch (_oO) {} // eslint-disable-line no-empty\n\n  // Signal that this function has been wrapped/filled already\n  // for both debugging and to prevent it to being wrapped/filled twice\n  markFunctionWrapped(sentryWrapped, fn);\n\n  addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n  // Restore original function name (not all browsers allow that)\n  try {\n    const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;\n    if (descriptor.configurable) {\n      Object.defineProperty(sentryWrapped, 'name', {\n        get() {\n          return fn.name;\n        },\n      });\n    }\n    // eslint-disable-next-line no-empty\n  } catch (_oO) {}\n\n  return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\n\nexport { WINDOW, ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\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\nconst 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 */\nfunction severityFromString(level) {\n  return severityLevelFromString(level) ;\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 */\nfunction severityLevelFromString(level) {\n  return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') ;\n}\n\nexport { severityFromString, severityLevelFromString, validSeverityLevels };\n//# sourceMappingURL=severity.js.map\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 */\nfunction parseUrl(url) {\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 */\nfunction stripUrlQueryAndFragment(urlPath) {\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 */\nfunction getNumberOfUrlSegments(url) {\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 */\nfunction getSanitizedUrlString(url) {\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        .replace(':80', '')\n        .replace(':443', '')) ||\n    '';\n\n  return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\nexport { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, getEventDescription, severityLevelFromString, safeJoin, SENTRY_XHR_DATA_KEY, parseUrl, logger, htmlTreeAsString } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nclass Breadcrumbs  {\n  /**\n   * @inheritDoc\n   */\n   static __initStatic() {this.id = BREADCRUMB_INTEGRATION_ID;}\n\n  /**\n   * @inheritDoc\n   */\n   __init() {this.name = Breadcrumbs.id;}\n\n  /**\n   * Options of the breadcrumbs integration.\n   */\n  // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n\n  /**\n   * @inheritDoc\n   */\n   constructor(options) {Breadcrumbs.prototype.__init.call(this);\n    this.options = {\n      console: true,\n      dom: true,\n      fetch: true,\n      history: true,\n      sentry: true,\n      xhr: true,\n      ...options,\n    };\n  }\n\n  /**\n   * Instrument browser built-ins w/ breadcrumb capturing\n   *  - Console API\n   *  - DOM API (click/typing)\n   *  - XMLHttpRequest API\n   *  - Fetch API\n   *  - History API\n   */\n   setupOnce() {\n    if (this.options.console) {\n      addInstrumentationHandler('console', _consoleBreadcrumb);\n    }\n    if (this.options.dom) {\n      addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n    }\n    if (this.options.xhr) {\n      addInstrumentationHandler('xhr', _xhrBreadcrumb);\n    }\n    if (this.options.fetch) {\n      addInstrumentationHandler('fetch', _fetchBreadcrumb);\n    }\n    if (this.options.history) {\n      addInstrumentationHandler('history', _historyBreadcrumb);\n    }\n  }\n\n  /**\n   * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n   */\n   addSentryBreadcrumb(event) {\n    if (this.options.sentry) {\n      getCurrentHub().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} Breadcrumbs.__initStatic();\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 _domBreadcrumb(dom) {\n  function _innerDomBreadcrumb(handlerData) {\n    let target;\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      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\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 ;\n      target = _isEvent(event)\n        ? htmlTreeAsString(event.target, { keyAttrs, maxStringLength })\n        : htmlTreeAsString(event, { keyAttrs, maxStringLength });\n    } catch (e) {\n      target = '<unknown>';\n    }\n\n    if (target.length === 0) {\n      return;\n    }\n\n    getCurrentHub().addBreadcrumb(\n      {\n        category: `ui.${handlerData.name}`,\n        message: target,\n      },\n      {\n        event: handlerData.event,\n        name: handlerData.name,\n        global: handlerData.global,\n      },\n    );\n  }\n\n  return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _consoleBreadcrumb(handlerData) {\n  // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n  // console warnings. This happens when a Vue template is rendered with\n  // an undeclared variable, which we try to stringify, ultimately causing\n  // Vue to issue another warning which repeats indefinitely.\n  // see: https://github.com/getsentry/sentry-javascript/pull/6010\n  // see: https://github.com/getsentry/sentry-javascript/issues/5916\n  for (let i = 0; i < handlerData.args.length; i++) {\n    if (handlerData.args[i] === 'ref=Ref<') {\n      handlerData.args[i + 1] = 'viewRef';\n      break;\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  getCurrentHub().addBreadcrumb(breadcrumb, {\n    input: handlerData.args,\n    level: handlerData.level,\n  });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _xhrBreadcrumb(handlerData) {\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 = {\n    method,\n    url,\n    status_code,\n  };\n\n  const hint = {\n    xhr: handlerData.xhr,\n    input: body,\n    startTimestamp,\n    endTimestamp,\n  };\n\n  getCurrentHub().addBreadcrumb(\n    {\n      category: 'xhr',\n      data,\n      type: 'http',\n    },\n    hint,\n  );\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _fetchBreadcrumb(handlerData) {\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 = handlerData.fetchData;\n    const hint = {\n      data: handlerData.error,\n      input: handlerData.args,\n      startTimestamp,\n      endTimestamp,\n    };\n\n    getCurrentHub().addBreadcrumb(\n      {\n        category: 'fetch',\n        data,\n        level: 'error',\n        type: 'http',\n      },\n      hint,\n    );\n  } else {\n    const data = {\n      ...handlerData.fetchData,\n      status_code: handlerData.response && handlerData.response.status,\n    };\n    const hint = {\n      input: handlerData.args,\n      response: handlerData.response,\n      startTimestamp,\n      endTimestamp,\n    };\n    getCurrentHub().addBreadcrumb(\n      {\n        category: 'fetch',\n        data,\n        type: 'http',\n      },\n      hint,\n    );\n  }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _historyBreadcrumb(handlerData) {\n  let from = handlerData.from;\n  let to = handlerData.to;\n  const parsedLoc = parseUrl(WINDOW.location.href);\n  let parsedFrom = parseUrl(from);\n  const parsedTo = parseUrl(to);\n\n  // Initial pushState doesn't provide `from` information\n  if (!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  getCurrentHub().addBreadcrumb({\n    category: 'navigation',\n    data: {\n      from,\n      to,\n    },\n  });\n}\n\nfunction _isEvent(event) {\n  return !!event && !!(event ).target;\n}\n\nexport { BREADCRUMB_INTEGRATION_ID, Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { BaseClient, SDK_VERSION } from '@sentry/core';\nimport { getSDKSource, logger, createClientReportEnvelope, dsnToString } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs.js';\nimport { createUserFeedbackEnvelope } from './userfeedback.js';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n  /**\n   * Creates a new Browser SDK instance.\n   *\n   * @param options Configuration options for this SDK.\n   */\n   constructor(options) {\n    const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n\n    options._metadata = options._metadata || {};\n    options._metadata.sdk = options._metadata.sdk || {\n      name: 'sentry.javascript.browser',\n      packages: [\n        {\n          name: `${sdkSource}:@sentry/browser`,\n          version: SDK_VERSION,\n        },\n      ],\n      version: SDK_VERSION,\n    };\n\n    super(options);\n\n    if (options.sendClientReports && WINDOW.document) {\n      WINDOW.document.addEventListener('visibilitychange', () => {\n        if (WINDOW.document.visibilityState === 'hidden') {\n          this._flushOutcomes();\n        }\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   eventFromException(exception, hint) {\n    return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   eventFromMessage(\n    message,\n    // eslint-disable-next-line deprecation/deprecation\n    level = 'info',\n    hint,\n  ) {\n    return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   sendEvent(event, hint) {\n    // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n    // activated its `sentry` option.\n    // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n    // bundles, if it is not used by the SDK.\n    // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n    // way for now.\n    const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) ;\n    // We check for definedness of `addSentryBreadcrumb` in case users provided their own integration with id\n    // \"Breadcrumbs\" that does not have this function.\n    if (breadcrumbIntegration && breadcrumbIntegration.addSentryBreadcrumb) {\n      breadcrumbIntegration.addSentryBreadcrumb(event);\n    }\n\n    super.sendEvent(event, hint);\n  }\n\n  /**\n   * Sends user feedback to Sentry.\n   */\n   captureUserFeedback(feedback) {\n    if (!this._isEnabled()) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture user feedback.');\n      return;\n    }\n\n    const envelope = createUserFeedbackEnvelope(feedback, {\n      metadata: this.getSdkMetadata(),\n      dsn: this.getDsn(),\n      tunnel: this.getOptions().tunnel,\n    });\n    void this._sendEnvelope(envelope);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   _prepareEvent(event, hint, scope) {\n    event.platform = event.platform || 'javascript';\n    return super._prepareEvent(event, hint, scope);\n  }\n\n  /**\n   * Sends client reports as an envelope.\n   */\n   _flushOutcomes() {\n    const outcomes = this._clearOutcomes();\n\n    if (outcomes.length === 0) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No outcomes to send');\n      return;\n    }\n\n    if (!this._dsn) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No dsn provided, will not send outcomes');\n      return;\n    }\n\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Sending outcomes:', outcomes);\n\n    const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n    void this._sendEnvelope(envelope);\n  }\n}\n\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","import { dsnToString, createEnvelope } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nfunction createUserFeedbackEnvelope(\n  feedback,\n  {\n    metadata,\n    tunnel,\n    dsn,\n  }\n\n,\n) {\n  const headers = {\n    event_id: feedback.event_id,\n    sent_at: new Date().toISOString(),\n    ...(metadata &&\n      metadata.sdk && {\n        sdk: {\n          name: metadata.sdk.name,\n          version: metadata.sdk.version,\n        },\n      }),\n    ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n  };\n  const item = createUserFeedbackEnvelopeItem(feedback);\n\n  return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback) {\n  const feedbackHeaders = {\n    type: 'user_report',\n  };\n  return [feedbackHeaders, feedback];\n}\n\nexport { createUserFeedbackEnvelope };\n//# sourceMappingURL=userfeedback.js.map\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n  discarded_events,\n  dsn,\n  timestamp,\n) {\n  const clientReportItem = [\n    { type: 'client_report' },\n    {\n      timestamp: timestamp || dateTimestampInSeconds(),\n      discarded_events,\n    },\n  ];\n  return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, isString, isPrimitive, isErrorEvent, getLocationHref, logger, addExceptionMechanism } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** Global handlers */\nclass GlobalHandlers  {\n  /**\n   * @inheritDoc\n   */\n   static __initStatic() {this.id = 'GlobalHandlers';}\n\n  /**\n   * @inheritDoc\n   */\n   __init() {this.name = GlobalHandlers.id;}\n\n  /** JSDoc */\n\n  /**\n   * Stores references functions to installing handlers. Will set to undefined\n   * after they have been run so that they are not used twice.\n   */\n   __init2() {this._installFunc = {\n    onerror: _installGlobalOnErrorHandler,\n    onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n  };}\n\n  /** JSDoc */\n   constructor(options) {GlobalHandlers.prototype.__init.call(this);GlobalHandlers.prototype.__init2.call(this);\n    this._options = {\n      onerror: true,\n      onunhandledrejection: true,\n      ...options,\n    };\n  }\n  /**\n   * @inheritDoc\n   */\n   setupOnce() {\n    Error.stackTraceLimit = 50;\n    const options = this._options;\n\n    // We can disable guard-for-in as we construct the options object above + do checks against\n    // `this._installFunc` for the property.\n    // eslint-disable-next-line guard-for-in\n    for (const key in options) {\n      const installFunc = this._installFunc[key ];\n      if (installFunc && options[key ]) {\n        globalHandlerLog(key);\n        installFunc();\n        this._installFunc[key ] = undefined;\n      }\n    }\n  }\n} GlobalHandlers.__initStatic();\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n  addInstrumentationHandler(\n    'error',\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (data) => {\n      const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n      if (!hub.getIntegration(GlobalHandlers)) {\n        return;\n      }\n      const { msg, url, line, column, error } = data;\n      if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n        return;\n      }\n\n      const event =\n        error === undefined && isString(msg)\n          ? _eventFromIncompleteOnError(msg, url, line, column)\n          : _enhanceEventWithInitialFrame(\n              eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n              url,\n              line,\n              column,\n            );\n\n      event.level = 'error';\n\n      addMechanismAndCapture(hub, error, event, 'onerror');\n    },\n  );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n  addInstrumentationHandler(\n    'unhandledrejection',\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (e) => {\n      const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n      if (!hub.getIntegration(GlobalHandlers)) {\n        return;\n      }\n      let error = e;\n\n      // dig the object of the rejection out of known event types\n      try {\n        // PromiseRejectionEvents store the object of the rejection under 'reason'\n        // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n        if ('reason' in e) {\n          error = e.reason;\n        }\n        // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n        // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n        // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n        // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n        // https://github.com/getsentry/sentry-javascript/issues/2380\n        else if ('detail' in e && 'reason' in e.detail) {\n          error = e.detail.reason;\n        }\n      } catch (_oO) {\n        // no-empty\n      }\n\n      if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n        return true;\n      }\n\n      const event = isPrimitive(error)\n        ? _eventFromRejectionWithPrimitive(error)\n        : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n      event.level = 'error';\n\n      addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n      return;\n    },\n  );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n  return {\n    exception: {\n      values: [\n        {\n          type: 'UnhandledRejection',\n          // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n          value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n        },\n      ],\n    },\n  };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg, url, line, column) {\n  const ERROR_TYPES_RE =\n    /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n  // If 'message' is ErrorEvent, get real message from inside\n  let message = isErrorEvent(msg) ? msg.message : msg;\n  let name = 'Error';\n\n  const groups = message.match(ERROR_TYPES_RE);\n  if (groups) {\n    name = groups[1];\n    message = groups[2];\n  }\n\n  const event = {\n    exception: {\n      values: [\n        {\n          type: name,\n          value: message,\n        },\n      ],\n    },\n  };\n\n  return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event, url, line, column) {\n  // event.exception\n  const e = (event.exception = event.exception || {});\n  // event.exception.values\n  const ev = (e.values = e.values || []);\n  // event.exception.values[0]\n  const ev0 = (ev[0] = ev[0] || {});\n  // event.exception.values[0].stacktrace\n  const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n  // event.exception.values[0].stacktrace.frames\n  const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n  const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n  const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n  const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n  // event.exception.values[0].stacktrace.frames\n  if (ev0sf.length === 0) {\n    ev0sf.push({\n      colno,\n      filename,\n      function: '?',\n      in_app: true,\n      lineno,\n    });\n  }\n\n  return event;\n}\n\nfunction globalHandlerLog(type) {\n  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub, error, event, type) {\n  addExceptionMechanism(event, {\n    handled: false,\n    type,\n  });\n  hub.captureEvent(event, {\n    originalException: error,\n  });\n}\n\nfunction getHubAndOptions() {\n  const hub = getCurrentHub();\n  const client = hub.getClient();\n  const options = (client && client.getOptions()) || {\n    stackParser: () => [],\n    attachStacktrace: false,\n  };\n  return [hub, options.stackParser, options.attachStacktrace];\n}\n\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map\n","import { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\nimport { WINDOW, wrap } from '../helpers.js';\n\nconst DEFAULT_EVENT_TARGET = [\n  'EventTarget',\n  'Window',\n  'Node',\n  'ApplicationCache',\n  'AudioTrackList',\n  'ChannelMergerNode',\n  'CryptoOperation',\n  'EventSource',\n  'FileReader',\n  'HTMLUnknownElement',\n  'IDBDatabase',\n  'IDBRequest',\n  'IDBTransaction',\n  'KeyOperation',\n  'MediaController',\n  'MessagePort',\n  'ModalWindow',\n  'Notification',\n  'SVGElementInstance',\n  'Screen',\n  'TextTrack',\n  'TextTrackCue',\n  'TextTrackList',\n  'WebSocket',\n  'WebSocketWorker',\n  'Worker',\n  'XMLHttpRequest',\n  'XMLHttpRequestEventTarget',\n  'XMLHttpRequestUpload',\n];\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nclass TryCatch  {\n  /**\n   * @inheritDoc\n   */\n   static __initStatic() {this.id = 'TryCatch';}\n\n  /**\n   * @inheritDoc\n   */\n   __init() {this.name = TryCatch.id;}\n\n  /** JSDoc */\n\n  /**\n   * @inheritDoc\n   */\n   constructor(options) {TryCatch.prototype.__init.call(this);\n    this._options = {\n      XMLHttpRequest: true,\n      eventTarget: true,\n      requestAnimationFrame: true,\n      setInterval: true,\n      setTimeout: true,\n      ...options,\n    };\n  }\n\n  /**\n   * Wrap timer functions and event targets to catch errors\n   * and provide better metadata.\n   */\n   setupOnce() {\n    if (this._options.setTimeout) {\n      fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n    }\n\n    if (this._options.setInterval) {\n      fill(WINDOW, 'setInterval', _wrapTimeFunction);\n    }\n\n    if (this._options.requestAnimationFrame) {\n      fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n    }\n\n    if (this._options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n      fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n    }\n\n    const eventTargetOption = this._options.eventTarget;\n    if (eventTargetOption) {\n      const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n      eventTarget.forEach(_wrapEventTarget);\n    }\n  }\n} TryCatch.__initStatic();\n\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function ( ...args) {\n    const originalCallback = args[0];\n    args[0] = wrap(originalCallback, {\n      mechanism: {\n        data: { function: getFunctionName(original) },\n        handled: true,\n        type: 'instrument',\n      },\n    });\n    return original.apply(this, args);\n  };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function ( callback) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return original.apply(this, [\n      wrap(callback, {\n        mechanism: {\n          data: {\n            function: 'requestAnimationFrame',\n            handler: getFunctionName(original),\n          },\n          handled: true,\n          type: 'instrument',\n        },\n      }),\n    ]);\n  };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function ( ...args) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const xhr = this;\n    const xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n    xmlHttpRequestProps.forEach(prop => {\n      if (prop in xhr && typeof xhr[prop] === 'function') {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        fill(xhr, prop, function (original) {\n          const wrapOptions = {\n            mechanism: {\n              data: {\n                function: prop,\n                handler: getFunctionName(original),\n              },\n              handled: true,\n              type: 'instrument',\n            },\n          };\n\n          // If Instrument integration has been called before TryCatch, get the name of original function\n          const originalFunction = getOriginalFunction(original);\n          if (originalFunction) {\n            wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n          }\n\n          // Otherwise wrap directly\n          return wrap(original, wrapOptions);\n        });\n      }\n    });\n\n    return originalSend.apply(this, args);\n  };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const globalObject = WINDOW ;\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  const proto = globalObject[target] && globalObject[target].prototype;\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n  if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n    return;\n  }\n\n  fill(proto, 'addEventListener', function (original)\n\n {\n    return function (\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n      eventName,\n      fn,\n      options,\n    ) {\n      try {\n        if (typeof fn.handleEvent === 'function') {\n          // ESlint disable explanation:\n          //  First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n          //  introduce a bug here, because bind returns a new function that doesn't have our\n          //  flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n          //  Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n          // eslint-disable-next-line @typescript-eslint/unbound-method\n          fn.handleEvent = wrap(fn.handleEvent, {\n            mechanism: {\n              data: {\n                function: 'handleEvent',\n                handler: getFunctionName(fn),\n                target,\n              },\n              handled: true,\n              type: 'instrument',\n            },\n          });\n        }\n      } catch (err) {\n        // can sometimes get 'Permission denied to access property \"handle Event'\n      }\n\n      return original.apply(this, [\n        eventName,\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        wrap(fn , {\n          mechanism: {\n            data: {\n              function: 'addEventListener',\n              handler: getFunctionName(fn),\n              target,\n            },\n            handled: true,\n            type: 'instrument',\n          },\n        }),\n        options,\n      ]);\n    };\n  });\n\n  fill(\n    proto,\n    'removeEventListener',\n    function (\n      originalRemoveEventListener,\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ) {\n      return function (\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n        eventName,\n        fn,\n        options,\n      ) {\n        /**\n         * There are 2 possible scenarios here:\n         *\n         * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n         * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n         * as a pass-through, and call original `removeEventListener` with it.\n         *\n         * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n         * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n         * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n         * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n         * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n         *\n         * When someone adds a handler prior to initialization, and then do it again, but after,\n         * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n         * to get rid of the initial handler and it'd stick there forever.\n         */\n        const wrappedEventHandler = fn ;\n        try {\n          const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n          if (originalEventHandler) {\n            originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n          }\n        } catch (e) {\n          // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n        }\n        return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n      };\n    },\n  );\n}\n\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map\n","import { getCurrentHub, addGlobalEventProcessor } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nclass LinkedErrors  {\n  /**\n   * @inheritDoc\n   */\n   static __initStatic() {this.id = 'LinkedErrors';}\n\n  /**\n   * @inheritDoc\n   */\n    __init() {this.name = LinkedErrors.id;}\n\n  /**\n   * @inheritDoc\n   */\n\n  /**\n   * @inheritDoc\n   */\n\n  /**\n   * @inheritDoc\n   */\n   constructor(options = {}) {LinkedErrors.prototype.__init.call(this);\n    this._key = options.key || DEFAULT_KEY;\n    this._limit = options.limit || DEFAULT_LIMIT;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setupOnce() {\n    const client = getCurrentHub().getClient();\n    if (!client) {\n      return;\n    }\n    addGlobalEventProcessor((event, hint) => {\n      const self = getCurrentHub().getIntegration(LinkedErrors);\n      return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n    });\n  }\n} LinkedErrors.__initStatic();\n\n/**\n * @inheritDoc\n */\nfunction _handler(\n  parser,\n  key,\n  limit,\n  event,\n  hint,\n) {\n  if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n    return event;\n  }\n  const linkedErrors = _walkErrorTree(parser, limit, hint.originalException , key);\n  event.exception.values = [...linkedErrors, ...event.exception.values];\n  return event;\n}\n\n/**\n * JSDOC\n */\nfunction _walkErrorTree(\n  parser,\n  limit,\n  error,\n  key,\n  stack = [],\n) {\n  if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n    return stack;\n  }\n  const exception = exceptionFromError(parser, error[key]);\n  return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n\nexport { LinkedErrors, _handler, _walkErrorTree };\n//# sourceMappingURL=linkederrors.js.map\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\n\n/** HttpContext integration collects information about HTTP request headers */\nclass HttpContext  {constructor() { HttpContext.prototype.__init.call(this); }\n  /**\n   * @inheritDoc\n   */\n   static __initStatic() {this.id = 'HttpContext';}\n\n  /**\n   * @inheritDoc\n   */\n   __init() {this.name = HttpContext.id;}\n\n  /**\n   * @inheritDoc\n   */\n   setupOnce() {\n    addGlobalEventProcessor((event) => {\n      if (getCurrentHub().getIntegration(HttpContext)) {\n        // if none of the information we want exists, don't bother\n        if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n          return event;\n        }\n\n        // grab as much info as exists and add it to the event\n        const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n        const { referrer } = WINDOW.document || {};\n        const { userAgent } = WINDOW.navigator || {};\n\n        const headers = {\n          ...(event.request && event.request.headers),\n          ...(referrer && { Referer: referrer }),\n          ...(userAgent && { 'User-Agent': userAgent }),\n        };\n        const request = { ...event.request, ...(url && { url }), headers };\n\n        return { ...event, request };\n      }\n      return event;\n    });\n  }\n} HttpContext.__initStatic();\n\nexport { HttpContext };\n//# sourceMappingURL=httpcontext.js.map\n","import { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nclass Dedupe  {constructor() { Dedupe.prototype.__init.call(this); }\n  /**\n   * @inheritDoc\n   */\n   static __initStatic() {this.id = 'Dedupe';}\n\n  /**\n   * @inheritDoc\n   */\n   __init() {this.name = Dedupe.id;}\n\n  /**\n   * @inheritDoc\n   */\n\n  /**\n   * @inheritDoc\n   */\n   setupOnce(addGlobalEventProcessor, getCurrentHub) {\n    const eventProcessor = currentEvent => {\n      // We want to ignore any non-error type events, e.g. transactions or replays\n      // These should never be deduped, and also not be compared against as _previousEvent.\n      if (currentEvent.type) {\n        return currentEvent;\n      }\n\n      const self = getCurrentHub().getIntegration(Dedupe);\n      if (self) {\n        // Juuust in case something goes wrong\n        try {\n          if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n            (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n            return null;\n          }\n        } catch (_oO) {\n          return (self._previousEvent = currentEvent);\n        }\n\n        return (self._previousEvent = currentEvent);\n      }\n      return currentEvent;\n    };\n\n    eventProcessor.id = this.name;\n    addGlobalEventProcessor(eventProcessor);\n  }\n} Dedupe.__initStatic();\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n  if (!previousEvent) {\n    return false;\n  }\n\n  if (_isSameMessageEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n  const currentMessage = currentEvent.message;\n  const previousMessage = previousEvent.message;\n\n  // If neither event has a message property, they were both exceptions, so bail out\n  if (!currentMessage && !previousMessage) {\n    return false;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n    return false;\n  }\n\n  if (currentMessage !== previousMessage) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n  const previousException = _getExceptionFromEvent(previousEvent);\n  const currentException = _getExceptionFromEvent(currentEvent);\n\n  if (!previousException || !currentException) {\n    return false;\n  }\n\n  if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n  let currentFrames = _getFramesFromEvent(currentEvent);\n  let previousFrames = _getFramesFromEvent(previousEvent);\n\n  // If neither event has a stacktrace, they are assumed to be the same\n  if (!currentFrames && !previousFrames) {\n    return true;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n    return false;\n  }\n\n  currentFrames = currentFrames ;\n  previousFrames = previousFrames ;\n\n  // If number of frames differ, they are not the same\n  if (previousFrames.length !== currentFrames.length) {\n    return false;\n  }\n\n  // Otherwise, compare the two\n  for (let i = 0; i < previousFrames.length; i++) {\n    const frameA = previousFrames[i];\n    const frameB = currentFrames[i];\n\n    if (\n      frameA.filename !== frameB.filename ||\n      frameA.lineno !== frameB.lineno ||\n      frameA.colno !== frameB.colno ||\n      frameA.function !== frameB.function\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n  let currentFingerprint = currentEvent.fingerprint;\n  let previousFingerprint = previousEvent.fingerprint;\n\n  // If neither event has a fingerprint, they are assumed to be the same\n  if (!currentFingerprint && !previousFingerprint) {\n    return true;\n  }\n\n  // If only one event has a fingerprint, but not the other one, they are not the same\n  if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n    return false;\n  }\n\n  currentFingerprint = currentFingerprint ;\n  previousFingerprint = previousFingerprint ;\n\n  // Otherwise, compare the two\n  try {\n    return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n  } catch (_oO) {\n    return false;\n  }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event) {\n  return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\n  const exception = event.exception;\n\n  if (exception) {\n    try {\n      // @ts-ignore Object could be undefined\n      return exception.values[0].stacktrace.frames;\n    } catch (_oO) {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n\nexport { Dedupe };\n//# sourceMappingURL=dedupe.js.map\n","import { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename, func, lineno, colno) {\n  const frame = {\n    filename,\n    function: func,\n    in_app: true, // All browser frames are considered in_app\n  };\n\n  if (lineno !== undefined) {\n    frame.lineno = lineno;\n  }\n\n  if (colno !== undefined) {\n    frame.colno = colno;\n  }\n\n  return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n  /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome = line => {\n  const parts = chromeRegex.exec(line);\n\n  if (parts) {\n    const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n    if (isEval) {\n      const subMatch = chromeEvalRegex.exec(parts[2]);\n\n      if (subMatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = subMatch[1]; // url\n        parts[3] = subMatch[2]; // line\n        parts[4] = subMatch[3]; // column\n      }\n    }\n\n    // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n    // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n    const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n    return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n  }\n\n  return;\n};\n\nconst chromeStackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n  /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko = line => {\n  const parts = geckoREgex.exec(line);\n\n  if (parts) {\n    const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    if (isEval) {\n      const subMatch = geckoEvalRegex.exec(parts[3]);\n\n      if (subMatch) {\n        // throw out eval line/column and use top-most line number\n        parts[1] = parts[1] || 'eval';\n        parts[3] = subMatch[1];\n        parts[4] = subMatch[2];\n        parts[5] = ''; // no column when eval\n      }\n    }\n\n    let filename = parts[3];\n    let func = parts[1] || UNKNOWN_FUNCTION;\n    [func, filename] = extractSafariExtensionDetails(func, filename);\n\n    return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n  }\n\n  return;\n};\n\nconst geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs = line => {\n  const parts = winjsRegex.exec(line);\n\n  return parts\n    ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n    : undefined;\n};\n\nconst winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10 = line => {\n  const parts = opera10Regex.exec(line);\n  return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nconst opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n  / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11 = line => {\n  const parts = opera11Regex.exec(line);\n  return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nconst opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nconst defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nconst defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n *   at function@url:row:col\n *   at function@url:row:col\n *   at function@url:row:col\n *\n * it produces something like:\n *\n *   function@url:row:col\n *   function@url:row:col\n *   function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func, filename) => {\n  const isSafariExtension = func.indexOf('safari-extension') !== -1;\n  const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n  return isSafariExtension || isSafariWebExtension\n    ? [\n        func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n        isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n      ]\n    : [func, filename];\n};\n\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n//# sourceMappingURL=stack-parsers.js.map\n","// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nconst 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 */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\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 */\nfunction disabledUntil(limits, category) {\n  return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, category, now = Date.now()) {\n  return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nfunction updateRateLimits(\n  limits,\n  { statusCode, headers },\n  now = Date.now(),\n) {\n  const updatedRateLimits = {\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>\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     */\n    for (const limit of rateLimitHeader.trim().split(',')) {\n      const [retryAfter, categories] = limit.split(':', 2);\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          updatedRateLimits[category] = now + delay;\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\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n","import { makePromiseBuffer, forEachEnvelopeItem, envelopeItemTypeToDataCategory, isRateLimited, resolvedSyncPromise, createEnvelope, SentryError, logger, serializeEnvelope, updateRateLimits } from '@sentry/utils';\n\nconst DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n  options,\n  makeRequest,\n  buffer = makePromiseBuffer(\n    options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n  ),\n) {\n  let rateLimits = {};\n  const flush = (timeout) => buffer.drain(timeout);\n\n  function send(envelope) {\n    const filteredEnvelopeItems = [];\n\n    // Drop rate limited items from envelope\n    forEachEnvelopeItem(envelope, (item, type) => {\n      const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n      if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n        const event = getEventForEnvelopeItem(item, type);\n        options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory, event);\n      } else {\n        filteredEnvelopeItems.push(item);\n      }\n    });\n\n    // Skip sending if envelope is empty after filtering out rate limited events\n    if (filteredEnvelopeItems.length === 0) {\n      return resolvedSyncPromise();\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n    // Creates client report for each item in an envelope\n    const recordEnvelopeLoss = (reason) => {\n      forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n        const event = getEventForEnvelopeItem(item, type);\n        options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n      });\n    };\n\n    const requestTask = () =>\n      makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n        response => {\n          // We don't want to throw on NOK responses, but we want to at least log them\n          if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n            (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n          }\n\n          rateLimits = updateRateLimits(rateLimits, response);\n          return response;\n        },\n        error => {\n          recordEnvelopeLoss('network_error');\n          throw error;\n        },\n      );\n\n    return buffer.add(requestTask).then(\n      result => result,\n      error => {\n        if (error instanceof SentryError) {\n          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Skipped sending event because buffer is full.');\n          recordEnvelopeLoss('queue_overflow');\n          return resolvedSyncPromise();\n        } else {\n          throw error;\n        }\n      },\n    );\n  }\n\n  // We use this to identifify if the transport is the base transport\n  // TODO (v8): Remove this again as we'll no longer need it\n  send.__sentry__baseTransport__ = true;\n\n  return {\n    send,\n    flush,\n  };\n}\n\nfunction getEventForEnvelopeItem(item, type) {\n  if (type !== 'event' && type !== 'transaction') {\n    return undefined;\n  }\n\n  return Array.isArray(item) ? (item )[1] : undefined;\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n","import { SentryError } from './error.js';\nimport { rejectedSyncPromise, SyncPromise, resolvedSyncPromise } from './syncpromise.js';\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit) {\n  const buffer = [];\n\n  function isReady() {\n    return limit === undefined || buffer.length < limit;\n  }\n\n  /**\n   * Remove a promise from the queue.\n   *\n   * @param task Can be any PromiseLike<T>\n   * @returns Removed promise.\n   */\n  function remove(task) {\n    return buffer.splice(buffer.indexOf(task), 1)[0];\n  }\n\n  /**\n   * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n   *\n   * @param taskProducer A function producing any PromiseLike<T>; In previous versions this used to be `task:\n   *        PromiseLike<T>`, but under that model, Promises were instantly created on the call-site and their executor\n   *        functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n   *        requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n   *        limit check.\n   * @returns The original promise.\n   */\n  function add(taskProducer) {\n    if (!isReady()) {\n      return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n    }\n\n    // start the task and add its promise to the queue\n    const task = taskProducer();\n    if (buffer.indexOf(task) === -1) {\n      buffer.push(task);\n    }\n    void task\n      .then(() => remove(task))\n      // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n      // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n      // have promises, so TS has to polyfill when down-compiling.)\n      .then(null, () =>\n        remove(task).then(null, () => {\n          // We have to add another catch here because `remove()` starts a new promise chain.\n        }),\n      );\n    return task;\n  }\n\n  /**\n   * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n   * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n   * `false` otherwise\n   */\n  function drain(timeout) {\n    return new SyncPromise((resolve, reject) => {\n      let counter = buffer.length;\n\n      if (!counter) {\n        return resolve(true);\n      }\n\n      // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n      const capturedSetTimeout = setTimeout(() => {\n        if (timeout && timeout > 0) {\n          resolve(false);\n        }\n      }, timeout);\n\n      // if all promises resolve in time, cancel the timer and resolve to `true`\n      buffer.forEach(item => {\n        void resolvedSyncPromise(item).then(() => {\n          if (!--counter) {\n            clearTimeout(capturedSetTimeout);\n            resolve(true);\n          }\n        }, reject);\n      });\n    });\n  }\n\n  return {\n    $: buffer,\n    add,\n    drain,\n  };\n}\n\nexport { makePromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map\n","import { isNativeFetch, logger } from '@sentry/utils';\nimport { WINDOW } from '../helpers.js';\n\nlet cachedFetchImpl = undefined;\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 */\nfunction getNativeFetchImplementation() {\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      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n        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 */\nfunction clearCachedFetchImplementation() {\n  cachedFetchImpl = undefined;\n}\n\nexport { clearCachedFetchImplementation, getNativeFetchImplementation };\n//# sourceMappingURL=utils.js.map\n","import { createTransport } from '@sentry/core';\nimport { rejectedSyncPromise } from '@sentry/utils';\nimport { getNativeFetchImplementation, clearCachedFetchImplementation } from './utils.js';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n  options,\n  nativeFetch = getNativeFetchImplementation(),\n) {\n  let pendingBodySize = 0;\n  let pendingCount = 0;\n\n  function makeRequest(request) {\n    const requestSize = request.body.length;\n    pendingBodySize += requestSize;\n    pendingCount++;\n\n    const requestOptions = {\n      body: request.body,\n      method: 'POST',\n      referrerPolicy: 'origin',\n      headers: options.headers,\n      // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n      // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n      // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n      // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n      // Gotchas:\n      // - `keepalive` isn't supported by Firefox\n      // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n      //   If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n      //   We will therefore only activate the flag when we're below that limit.\n      // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n      // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n      keepalive: pendingBodySize <= 60000 && pendingCount < 15,\n      ...options.fetchOptions,\n    };\n\n    try {\n      return nativeFetch(options.url, requestOptions).then(response => {\n        pendingBodySize -= requestSize;\n        pendingCount--;\n        return {\n          statusCode: response.status,\n          headers: {\n            'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n            'retry-after': response.headers.get('Retry-After'),\n          },\n        };\n      });\n    } catch (e) {\n      clearCachedFetchImplementation();\n      pendingBodySize -= requestSize;\n      pendingCount--;\n      return rejectedSyncPromise(e);\n    }\n  }\n\n  return createTransport(options, makeRequest);\n}\n\nexport { makeFetchTransport };\n//# sourceMappingURL=fetch.js.map\n","import { createTransport } from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nfunction makeXHRTransport(options) {\n  function makeRequest(request) {\n    return new SyncPromise((resolve, reject) => {\n      const xhr = new XMLHttpRequest();\n\n      xhr.onerror = reject;\n\n      xhr.onreadystatechange = () => {\n        if (xhr.readyState === XHR_READYSTATE_DONE) {\n          resolve({\n            statusCode: xhr.status,\n            headers: {\n              'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n              'retry-after': xhr.getResponseHeader('Retry-After'),\n            },\n          });\n        }\n      };\n\n      xhr.open('POST', options.url);\n\n      for (const header in options.headers) {\n        if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n          xhr.setRequestHeader(header, options.headers[header]);\n        }\n      }\n\n      xhr.send(request.body);\n    });\n  }\n\n  return createTransport(options, makeRequest);\n}\n\nexport { makeXHRTransport };\n//# sourceMappingURL=xhr.js.map\n","import { Integrations, getIntegrationsToSetup, initAndBind, getReportDialogEndpoint, getCurrentHub } from '@sentry/core';\nimport { stackParserFromStackParserOptions, supportsFetch, logger, resolvedSyncPromise, addInstrumentationHandler } from '@sentry/utils';\nimport { BrowserClient } from './client.js';\nimport { WINDOW, wrap as wrap$1 } from './helpers.js';\nimport { GlobalHandlers } from './integrations/globalhandlers.js';\nimport { TryCatch } from './integrations/trycatch.js';\nimport { Breadcrumbs } from './integrations/breadcrumbs.js';\nimport { LinkedErrors } from './integrations/linkederrors.js';\nimport { HttpContext } from './integrations/httpcontext.js';\nimport { Dedupe } from './integrations/dedupe.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { makeXHRTransport } from './transports/xhr.js';\n\nconst defaultIntegrations = [\n  new Integrations.InboundFilters(),\n  new Integrations.FunctionToString(),\n  new TryCatch(),\n  new Breadcrumbs(),\n  new GlobalHandlers(),\n  new LinkedErrors(),\n  new Dedupe(),\n  new HttpContext(),\n];\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n *   dsn: '__DSN__',\n *   // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n *   scope.setExtra({ battery: 0.7 });\n *   scope.setTag({ user_mode: 'admin' });\n *   scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n *   message: 'My Breadcrumb',\n *   // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n *   message: 'Manual',\n *   stacktrace: [\n *     // ...\n *   ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nfunction init(options = {}) {\n  if (options.defaultIntegrations === undefined) {\n    options.defaultIntegrations = defaultIntegrations;\n  }\n  if (options.release === undefined) {\n    // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n    if (typeof __SENTRY_RELEASE__ === 'string') {\n      options.release = __SENTRY_RELEASE__;\n    }\n\n    // This supports the variable that sentry-webpack-plugin injects\n    if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n      options.release = WINDOW.SENTRY_RELEASE.id;\n    }\n  }\n  if (options.autoSessionTracking === undefined) {\n    options.autoSessionTracking = true;\n  }\n  if (options.sendClientReports === undefined) {\n    options.sendClientReports = true;\n  }\n\n  const clientOptions = {\n    ...options,\n    stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n    integrations: getIntegrationsToSetup(options),\n    transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n  };\n\n  initAndBind(BrowserClient, clientOptions);\n\n  if (options.autoSessionTracking) {\n    startSessionTracking();\n  }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nfunction showReportDialog(options = {}, hub = getCurrentHub()) {\n  // doesn't work without a document (React Native)\n  if (!WINDOW.document) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Global document not defined in showReportDialog call');\n    return;\n  }\n\n  const { client, scope } = hub.getStackTop();\n  const dsn = options.dsn || (client && client.getDsn());\n  if (!dsn) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('DSN not configured for showReportDialog call');\n    return;\n  }\n\n  if (scope) {\n    options.user = {\n      ...scope.getUser(),\n      ...options.user,\n    };\n  }\n\n  if (!options.eventId) {\n    options.eventId = hub.lastEventId();\n  }\n\n  const script = WINDOW.document.createElement('script');\n  script.async = true;\n  script.src = getReportDialogEndpoint(dsn, options);\n\n  if (options.onLoad) {\n    script.onload = options.onLoad;\n  }\n\n  const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n  if (injectionPoint) {\n    injectionPoint.appendChild(script);\n  } else {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Not injecting report dialog. No injection point found in HTML');\n  }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nfunction lastEventId() {\n  return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n  // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n  callback();\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 */\nfunction flush(timeout) {\n  const client = getCurrentHub().getClient();\n  if (client) {\n    return client.flush(timeout);\n  }\n  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events. No client defined.');\n  return resolvedSyncPromise(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 */\nfunction close(timeout) {\n  const client = getCurrentHub().getClient();\n  if (client) {\n    return client.close(timeout);\n  }\n  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events and disable SDK. No client defined.');\n  return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction wrap(fn) {\n  return wrap$1(fn)();\n}\n\nfunction startSessionOnHub(hub) {\n  hub.startSession({ ignoreDuration: true });\n  hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n  if (typeof WINDOW.document === 'undefined') {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n    return;\n  }\n\n  const hub = getCurrentHub();\n\n  // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n  // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n  // pinned at the same version in package.json, but there are edge cases where it's possible. See\n  // https://github.com/getsentry/sentry-javascript/issues/3207 and\n  // https://github.com/getsentry/sentry-javascript/issues/3234 and\n  // https://github.com/getsentry/sentry-javascript/issues/3278.\n  if (!hub.captureSession) {\n    return;\n  }\n\n  // The session duration for browser sessions does not track a meaningful\n  // concept that can be used as a metric.\n  // Automatically captured sessions are akin to page views, and thus we\n  // discard their duration.\n  startSessionOnHub(hub);\n\n  // We want to create a session for every navigation as well\n  addInstrumentationHandler('history', ({ from, to }) => {\n    // Don't create an additional session for the initial route or if the location did not change\n    if (!(from === undefined || from === to)) {\n      startSessionOnHub(getCurrentHub());\n    }\n  });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n */\nfunction captureUserFeedback(feedback) {\n  const client = getCurrentHub().getClient();\n  if (client) {\n    client.captureUserFeedback(feedback);\n  }\n}\n\nexport { captureUserFeedback, close, defaultIntegrations, flush, forceLoad, init, lastEventId, onLoad, showReportDialog, wrap };\n//# sourceMappingURL=sdk.js.map\n","import { uuid4, timestampInSeconds, logger, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n   __init() {this.spans = [];}\n\n   constructor(maxlen = 1000) {SpanRecorder.prototype.__init.call(this);\n    this._maxlen = maxlen;\n  }\n\n  /**\n   * This is just so that we don't run out of memory while recording a lot\n   * of spans. At some point we just stop and flush out the start of the\n   * trace tree (i.e.the first n spans with the smallest\n   * start_timestamp).\n   */\n   add(span) {\n    if (this.spans.length > this._maxlen) {\n      span.spanRecorder = undefined;\n    } else {\n      this.spans.push(span);\n    }\n  }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span  {\n  /**\n   * @inheritDoc\n   */\n   __init2() {this.traceId = uuid4();}\n\n  /**\n   * @inheritDoc\n   */\n   __init3() {this.spanId = uuid4().substring(16);}\n\n  /**\n   * @inheritDoc\n   */\n\n  /**\n   * Internal keeper of the status\n   */\n\n  /**\n   * @inheritDoc\n   */\n\n  /**\n   * Timestamp in seconds when the span was created.\n   */\n   __init4() {this.startTimestamp = timestampInSeconds();}\n\n  /**\n   * Timestamp in seconds when the span ended.\n   */\n\n  /**\n   * @inheritDoc\n   */\n\n  /**\n   * @inheritDoc\n   */\n\n  /**\n   * @inheritDoc\n   */\n   __init5() {this.tags = {};}\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n   __init6() {this.data = {};}\n\n  /**\n   * List of spans that were finalized\n   */\n\n  /**\n   * @inheritDoc\n   */\n\n  /**\n   * The instrumenter that created this span.\n   */\n   __init7() {this.instrumenter = 'sentry';}\n\n  /**\n   * You should never call the constructor manually, always use `Sentry.startTransaction()`\n   * or call `startChild()` on an existing span.\n   * @internal\n   * @hideconstructor\n   * @hidden\n   */\n   constructor(spanContext) {Span.prototype.__init2.call(this);Span.prototype.__init3.call(this);Span.prototype.__init4.call(this);Span.prototype.__init5.call(this);Span.prototype.__init6.call(this);Span.prototype.__init7.call(this);\n    if (!spanContext) {\n      return this;\n    }\n    if (spanContext.traceId) {\n      this.traceId = spanContext.traceId;\n    }\n    if (spanContext.spanId) {\n      this.spanId = spanContext.spanId;\n    }\n    if (spanContext.parentSpanId) {\n      this.parentSpanId = spanContext.parentSpanId;\n    }\n    // We want to include booleans as well here\n    if ('sampled' in spanContext) {\n      this.sampled = spanContext.sampled;\n    }\n    if (spanContext.op) {\n      this.op = spanContext.op;\n    }\n    if (spanContext.description) {\n      this.description = spanContext.description;\n    }\n    if (spanContext.data) {\n      this.data = spanContext.data;\n    }\n    if (spanContext.tags) {\n      this.tags = spanContext.tags;\n    }\n    if (spanContext.status) {\n      this.status = spanContext.status;\n    }\n    if (spanContext.startTimestamp) {\n      this.startTimestamp = spanContext.startTimestamp;\n    }\n    if (spanContext.endTimestamp) {\n      this.endTimestamp = spanContext.endTimestamp;\n    }\n    if (spanContext.instrumenter) {\n      this.instrumenter = spanContext.instrumenter;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   startChild(\n    spanContext,\n  ) {\n    const childSpan = new Span({\n      ...spanContext,\n      parentSpanId: this.spanId,\n      sampled: this.sampled,\n      traceId: this.traceId,\n    });\n\n    childSpan.spanRecorder = this.spanRecorder;\n    if (childSpan.spanRecorder) {\n      childSpan.spanRecorder.add(childSpan);\n    }\n\n    childSpan.transaction = this.transaction;\n\n    if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && childSpan.transaction) {\n      const opStr = (spanContext && spanContext.op) || '< unknown op >';\n      const nameStr = childSpan.transaction.name || '< unknown name >';\n      const idStr = childSpan.transaction.spanId;\n\n      const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n      childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n      logger.log(logMessage);\n    }\n\n    return childSpan;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setTag(key, value) {\n    this.tags = { ...this.tags, [key]: value };\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n   setData(key, value) {\n    this.data = { ...this.data, [key]: value };\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setStatus(value) {\n    this.status = value;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setHttpStatus(httpStatus) {\n    this.setTag('http.status_code', String(httpStatus));\n    this.setData('http.response.status_code', httpStatus);\n    const spanStatus = spanStatusfromHttpCode(httpStatus);\n    if (spanStatus !== 'unknown_error') {\n      this.setStatus(spanStatus);\n    }\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   isSuccess() {\n    return this.status === 'ok';\n  }\n\n  /**\n   * @inheritDoc\n   */\n   finish(endTimestamp) {\n    if (\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      // Don't call this for transactions\n      this.transaction &&\n      this.transaction.spanId !== this.spanId\n    ) {\n      const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n      if (logMessage) {\n        logger.log((logMessage ).replace('Starting', 'Finishing'));\n      }\n    }\n\n    this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampInSeconds();\n  }\n\n  /**\n   * @inheritDoc\n   */\n   toTraceparent() {\n    let sampledString = '';\n    if (this.sampled !== undefined) {\n      sampledString = this.sampled ? '-1' : '-0';\n    }\n    return `${this.traceId}-${this.spanId}${sampledString}`;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   toContext() {\n    return dropUndefinedKeys({\n      data: this.data,\n      description: this.description,\n      endTimestamp: this.endTimestamp,\n      op: this.op,\n      parentSpanId: this.parentSpanId,\n      sampled: this.sampled,\n      spanId: this.spanId,\n      startTimestamp: this.startTimestamp,\n      status: this.status,\n      tags: this.tags,\n      traceId: this.traceId,\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n   updateWithContext(spanContext) {\n    this.data = spanContext.data || {};\n    this.description = spanContext.description;\n    this.endTimestamp = spanContext.endTimestamp;\n    this.op = spanContext.op;\n    this.parentSpanId = spanContext.parentSpanId;\n    this.sampled = spanContext.sampled;\n    this.spanId = spanContext.spanId || this.spanId;\n    this.startTimestamp = spanContext.startTimestamp || this.startTimestamp;\n    this.status = spanContext.status;\n    this.tags = spanContext.tags || {};\n    this.traceId = spanContext.traceId || this.traceId;\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   getTraceContext() {\n    return dropUndefinedKeys({\n      data: Object.keys(this.data).length > 0 ? this.data : undefined,\n      description: this.description,\n      op: this.op,\n      parent_span_id: this.parentSpanId,\n      span_id: this.spanId,\n      status: this.status,\n      tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n      trace_id: this.traceId,\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n   toJSON()\n\n {\n    return dropUndefinedKeys({\n      data: Object.keys(this.data).length > 0 ? this.data : undefined,\n      description: this.description,\n      op: this.op,\n      parent_span_id: this.parentSpanId,\n      span_id: this.spanId,\n      start_timestamp: this.startTimestamp,\n      status: this.status,\n      tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n      timestamp: this.endTimestamp,\n      trace_id: this.traceId,\n    });\n  }\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction spanStatusfromHttpCode(httpStatus) {\n  if (httpStatus < 400 && httpStatus >= 100) {\n    return 'ok';\n  }\n\n  if (httpStatus >= 400 && httpStatus < 500) {\n    switch (httpStatus) {\n      case 401:\n        return 'unauthenticated';\n      case 403:\n        return 'permission_denied';\n      case 404:\n        return 'not_found';\n      case 409:\n        return 'already_exists';\n      case 413:\n        return 'failed_precondition';\n      case 429:\n        return 'resource_exhausted';\n      default:\n        return 'invalid_argument';\n    }\n  }\n\n  if (httpStatus >= 500 && httpStatus < 600) {\n    switch (httpStatus) {\n      case 501:\n        return 'unimplemented';\n      case 503:\n        return 'unavailable';\n      case 504:\n        return 'deadline_exceeded';\n      default:\n        return 'internal_error';\n    }\n  }\n\n  return 'unknown_error';\n}\n\nexport { Span, SpanRecorder, spanStatusfromHttpCode };\n//# sourceMappingURL=span.js.map\n","import { logger, dropUndefinedKeys } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getCurrentHub } from '../hub.js';\nimport { Span, SpanRecorder } from './span.js';\n\n/** JSDoc */\nclass Transaction extends Span  {\n\n  /**\n   * The reference to the current hub.\n   */\n\n   __init() {this._measurements = {};}\n\n   __init2() {this._contexts = {};}\n\n   __init3() {this._frozenDynamicSamplingContext = undefined;}\n\n  /**\n   * This constructor should never be called manually. Those instrumenting tracing should use\n   * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n   * @internal\n   * @hideconstructor\n   * @hidden\n   */\n   constructor(transactionContext, hub) {\n    super(transactionContext);Transaction.prototype.__init.call(this);Transaction.prototype.__init2.call(this);Transaction.prototype.__init3.call(this);\n    this._hub = hub || getCurrentHub();\n\n    this._name = transactionContext.name || '';\n\n    this.metadata = {\n      source: 'custom',\n      ...transactionContext.metadata,\n      spanMetadata: {},\n    };\n\n    this._trimEnd = transactionContext.trimEnd;\n\n    // this is because transactions are also spans, and spans have a transaction pointer\n    this.transaction = this;\n\n    // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n    // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n    const incomingDynamicSamplingContext = this.metadata.dynamicSamplingContext;\n    if (incomingDynamicSamplingContext) {\n      // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n      this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n    }\n  }\n\n  /** Getter for `name` property */\n   get name() {\n    return this._name;\n  }\n\n  /** Setter for `name` property, which also sets `source` as custom */\n   set name(newName) {\n    this.setName(newName);\n  }\n\n  /**\n   * JSDoc\n   */\n   setName(name, source = 'custom') {\n    this._name = name;\n    this.metadata.source = source;\n  }\n\n  /**\n   * Attaches SpanRecorder to the span itself\n   * @param maxlen maximum number of spans that can be recorded\n   */\n   initSpanRecorder(maxlen = 1000) {\n    if (!this.spanRecorder) {\n      this.spanRecorder = new SpanRecorder(maxlen);\n    }\n    this.spanRecorder.add(this);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setContext(key, context) {\n    if (context === null) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._contexts[key];\n    } else {\n      this._contexts[key] = context;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setMeasurement(name, value, unit = '') {\n    this._measurements[name] = { value, unit };\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setMetadata(newMetadata) {\n    this.metadata = { ...this.metadata, ...newMetadata };\n  }\n\n  /**\n   * @inheritDoc\n   */\n   finish(endTimestamp) {\n    // This transaction is already finished, so we should not flush it again.\n    if (this.endTimestamp !== undefined) {\n      return undefined;\n    }\n\n    if (!this.name) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Transaction has no name, falling back to `<unlabeled transaction>`.');\n      this.name = '<unlabeled transaction>';\n    }\n\n    // just sets the end timestamp\n    super.finish(endTimestamp);\n\n    const client = this._hub.getClient();\n    if (client && client.emit) {\n      client.emit('finishTransaction', this);\n    }\n\n    if (this.sampled !== true) {\n      // At this point if `sampled !== true` we want to discard the transaction.\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n      if (client) {\n        client.recordDroppedEvent('sample_rate', 'transaction');\n      }\n\n      return undefined;\n    }\n\n    const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n    if (this._trimEnd && finishedSpans.length > 0) {\n      this.endTimestamp = finishedSpans.reduce((prev, current) => {\n        if (prev.endTimestamp && current.endTimestamp) {\n          return prev.endTimestamp > current.endTimestamp ? prev : current;\n        }\n        return prev;\n      }).endTimestamp;\n    }\n\n    const metadata = this.metadata;\n\n    const transaction = {\n      contexts: {\n        ...this._contexts,\n        // We don't want to override trace context\n        trace: this.getTraceContext(),\n      },\n      spans: finishedSpans,\n      start_timestamp: this.startTimestamp,\n      tags: this.tags,\n      timestamp: this.endTimestamp,\n      transaction: this.name,\n      type: 'transaction',\n      sdkProcessingMetadata: {\n        ...metadata,\n        dynamicSamplingContext: this.getDynamicSamplingContext(),\n      },\n      ...(metadata.source && {\n        transaction_info: {\n          source: metadata.source,\n        },\n      }),\n    };\n\n    const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n    if (hasMeasurements) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n        logger.log(\n          '[Measurements] Adding measurements to transaction',\n          JSON.stringify(this._measurements, undefined, 2),\n        );\n      transaction.measurements = this._measurements;\n    }\n\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n    return this._hub.captureEvent(transaction);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   toContext() {\n    const spanContext = super.toContext();\n\n    return dropUndefinedKeys({\n      ...spanContext,\n      name: this.name,\n      trimEnd: this._trimEnd,\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n   updateWithContext(transactionContext) {\n    super.updateWithContext(transactionContext);\n\n    this.name = transactionContext.name || '';\n\n    this._trimEnd = transactionContext.trimEnd;\n\n    return this;\n  }\n\n  /**\n   * @inheritdoc\n   *\n   * @experimental\n   */\n   getDynamicSamplingContext() {\n    if (this._frozenDynamicSamplingContext) {\n      return this._frozenDynamicSamplingContext;\n    }\n\n    const hub = this._hub || getCurrentHub();\n    const client = hub && hub.getClient();\n\n    if (!client) return {};\n\n    const { environment, release } = client.getOptions() || {};\n    const { publicKey: public_key } = client.getDsn() || {};\n\n    const maybeSampleRate = this.metadata.sampleRate;\n    const sample_rate = maybeSampleRate !== undefined ? maybeSampleRate.toString() : undefined;\n\n    const { segment: user_segment } = hub.getScope().getUser() || {};\n\n    const source = this.metadata.source;\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 transaction = source && source !== 'url' ? this.name : undefined;\n\n    const dsc = dropUndefinedKeys({\n      environment: environment || DEFAULT_ENVIRONMENT,\n      release,\n      transaction,\n      user_segment,\n      public_key,\n      trace_id: this.traceId,\n      sample_rate,\n    });\n\n    // Uncomment if we want to make DSC immutable\n    // this._frozenDynamicSamplingContext = dsc;\n\n    client.emit && client.emit('createDsc', dsc);\n\n    return dsc;\n  }\n\n  /**\n   * Override the current hub with a new one.\n   * Used if you want another hub to finish the transaction.\n   *\n   * @internal\n   */\n   setHub(hub) {\n    this._hub = hub;\n  }\n}\n\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map\n","import { logger, timestampInSeconds } from '@sentry/utils';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nconst TRACING_DEFAULTS = {\n  idleTimeout: 1000,\n  finalTimeout: 30000,\n  heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n  'heartbeatFailed',\n  'idleTimeout',\n  'documentHidden',\n  'finalTimeout',\n  'externalFinish',\n  'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends SpanRecorder {\n   constructor(\n      _pushActivity,\n      _popActivity,\n     transactionSpanId,\n    maxlen,\n  ) {\n    super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId;  }\n\n  /**\n   * @inheritDoc\n   */\n   add(span) {\n    // We should make sure we do not push and pop activities for\n    // the transaction that this span recorder belongs to.\n    if (span.spanId !== this.transactionSpanId) {\n      // We patch span.finish() to pop an activity after setting an endTimestamp.\n      span.finish = (endTimestamp) => {\n        span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampInSeconds();\n        this._popActivity(span.spanId);\n      };\n\n      // We should only push new activities if the span does not have an end timestamp.\n      if (span.endTimestamp === undefined) {\n        this._pushActivity(span.spanId);\n      }\n    }\n\n    super.add(span);\n  }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends Transaction {\n  // Activities store a list of active spans\n   __init() {this.activities = {};}\n\n  // Track state of activities in previous heartbeat\n\n  // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n   __init2() {this._heartbeatCounter = 0;}\n\n  // We should not use heartbeat if we finished a transaction\n   __init3() {this._finished = false;}\n\n  // Idle timeout was canceled and we should finish the transaction with the last span end.\n   __init4() {this._idleTimeoutCanceledPermanently = false;}\n\n    __init5() {this._beforeFinishCallbacks = [];}\n\n  /**\n   * Timer that tracks Transaction idleTimeout\n   */\n\n   __init6() {this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];}\n\n   constructor(\n    transactionContext,\n      _idleHub,\n    /**\n     * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n     * there are no active spans on this transaction.\n     */\n      _idleTimeout = TRACING_DEFAULTS.idleTimeout,\n    /**\n     * The final value in ms that a transaction cannot exceed\n     */\n      _finalTimeout = TRACING_DEFAULTS.finalTimeout,\n      _heartbeatInterval = TRACING_DEFAULTS.heartbeatInterval,\n    // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n      _onScope = false,\n  ) {\n    super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._heartbeatInterval = _heartbeatInterval;this._onScope = _onScope;IdleTransaction.prototype.__init.call(this);IdleTransaction.prototype.__init2.call(this);IdleTransaction.prototype.__init3.call(this);IdleTransaction.prototype.__init4.call(this);IdleTransaction.prototype.__init5.call(this);IdleTransaction.prototype.__init6.call(this);\n    if (_onScope) {\n      // We set the transaction here on the scope so error events pick up the trace\n      // context and attach it to the error.\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n      _idleHub.configureScope(scope => scope.setSpan(this));\n    }\n\n    this._restartIdleTimeout();\n    setTimeout(() => {\n      if (!this._finished) {\n        this.setStatus('deadline_exceeded');\n        this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n        this.finish();\n      }\n    }, this._finalTimeout);\n  }\n\n  /** {@inheritDoc} */\n   finish(endTimestamp = timestampInSeconds()) {\n    this._finished = true;\n    this.activities = {};\n\n    if (this.op === 'ui.action.click') {\n      this.setTag(FINISH_REASON_TAG, this._finishReason);\n    }\n\n    if (this.spanRecorder) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n        logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n      for (const callback of this._beforeFinishCallbacks) {\n        callback(this, endTimestamp);\n      }\n\n      this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n        // If we are dealing with the transaction itself, we just return it\n        if (span.spanId === this.spanId) {\n          return true;\n        }\n\n        // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n        if (!span.endTimestamp) {\n          span.endTimestamp = endTimestamp;\n          span.setStatus('cancelled');\n          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n            logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n        }\n\n        const keepSpan = span.startTimestamp < endTimestamp;\n        if (!keepSpan) {\n          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n            logger.log(\n              '[Tracing] discarding Span since it happened after Transaction was finished',\n              JSON.stringify(span, undefined, 2),\n            );\n        }\n        return keepSpan;\n      });\n\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] flushing IdleTransaction');\n    } else {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] No active IdleTransaction');\n    }\n\n    // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n    if (this._onScope) {\n      const scope = this._idleHub.getScope();\n      if (scope.getTransaction() === this) {\n        scope.setSpan(undefined);\n      }\n    }\n\n    return super.finish(endTimestamp);\n  }\n\n  /**\n   * Register a callback function that gets excecuted before the transaction finishes.\n   * Useful for cleanup or if you want to add any additional spans based on current context.\n   *\n   * This is exposed because users have no other way of running something before an idle transaction\n   * finishes.\n   */\n   registerBeforeFinishCallback(callback) {\n    this._beforeFinishCallbacks.push(callback);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   initSpanRecorder(maxlen) {\n    if (!this.spanRecorder) {\n      const pushActivity = (id) => {\n        if (this._finished) {\n          return;\n        }\n        this._pushActivity(id);\n      };\n      const popActivity = (id) => {\n        if (this._finished) {\n          return;\n        }\n        this._popActivity(id);\n      };\n\n      this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n      // Start heartbeat so that transactions do not run forever.\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Starting heartbeat');\n      this._pingHeartbeat();\n    }\n    this.spanRecorder.add(this);\n  }\n\n  /**\n   * Cancels the existing idle timeout, if there is one.\n   * @param restartOnChildSpanChange Default is `true`.\n   *                                 If set to false the transaction will end\n   *                                 with the last child span.\n   */\n   cancelIdleTimeout(\n    endTimestamp,\n    {\n      restartOnChildSpanChange,\n    }\n\n = {\n      restartOnChildSpanChange: true,\n    },\n  ) {\n    this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n    if (this._idleTimeoutID) {\n      clearTimeout(this._idleTimeoutID);\n      this._idleTimeoutID = undefined;\n\n      if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n        this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n        this.finish(endTimestamp);\n      }\n    }\n  }\n\n  /**\n   * Temporary method used to externally set the transaction's `finishReason`\n   *\n   * ** WARNING**\n   * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n   *\n   * @internal\n   *\n   */\n   setFinishReason(reason) {\n    this._finishReason = reason;\n  }\n\n  /**\n   * Restarts idle timeout, if there is no running idle timeout it will start one.\n   */\n   _restartIdleTimeout(endTimestamp) {\n    this.cancelIdleTimeout();\n    this._idleTimeoutID = setTimeout(() => {\n      if (!this._finished && Object.keys(this.activities).length === 0) {\n        this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n        this.finish(endTimestamp);\n      }\n    }, this._idleTimeout);\n  }\n\n  /**\n   * Start tracking a specific activity.\n   * @param spanId The span id that represents the activity\n   */\n   _pushActivity(spanId) {\n    this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] pushActivity: ${spanId}`);\n    this.activities[spanId] = true;\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n  }\n\n  /**\n   * Remove an activity from usage\n   * @param spanId The span id that represents the activity\n   */\n   _popActivity(spanId) {\n    if (this.activities[spanId]) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] popActivity ${spanId}`);\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this.activities[spanId];\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n    }\n\n    if (Object.keys(this.activities).length === 0) {\n      const endTimestamp = timestampInSeconds();\n      if (this._idleTimeoutCanceledPermanently) {\n        this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n        this.finish(endTimestamp);\n      } else {\n        // We need to add the timeout here to have the real endtimestamp of the transaction\n        // Remember timestampInSeconds is in seconds, timeout is in ms\n        this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n      }\n    }\n  }\n\n  /**\n   * Checks when entries of this.activities are not changing for 3 beats.\n   * If this occurs we finish the transaction.\n   */\n   _beat() {\n    // We should not be running heartbeat if the idle transaction is finished.\n    if (this._finished) {\n      return;\n    }\n\n    const heartbeatString = Object.keys(this.activities).join('');\n\n    if (heartbeatString === this._prevHeartbeatString) {\n      this._heartbeatCounter++;\n    } else {\n      this._heartbeatCounter = 1;\n    }\n\n    this._prevHeartbeatString = heartbeatString;\n\n    if (this._heartbeatCounter >= 3) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n      this.setStatus('deadline_exceeded');\n      this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n      this.finish();\n    } else {\n      this._pingHeartbeat();\n    }\n  }\n\n  /**\n   * Pings the heartbeat\n   */\n   _pingHeartbeat() {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n    setTimeout(() => {\n      this._beat();\n    }, this._heartbeatInterval);\n  }\n}\n\nexport { IdleTransaction, IdleTransactionSpanRecorder, TRACING_DEFAULTS };\n//# sourceMappingURL=idletransaction.js.map\n","import { getCurrentHub } from '../hub.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n  maybeOptions,\n) {\n  if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n    return false;\n  }\n\n  const client = getCurrentHub().getClient();\n  const options = maybeOptions || (client && client.getOptions());\n  return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\nexport { hasTracingEnabled };\n//# sourceMappingURL=hasTracingEnabled.js.map\n","import { getCurrentHub } from '../hub.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction(maybeHub) {\n  const hub = maybeHub || getCurrentHub();\n  const scope = hub.getScope();\n  return scope.getTransaction() ;\n}\n\nexport { getActiveTransaction };\n//# sourceMappingURL=utils.js.map\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { getActiveTransaction } from './utils.js';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n  if (errorsInstrumented) {\n    return;\n  }\n\n  errorsInstrumented = true;\n  addInstrumentationHandler('error', errorCallback);\n  addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n  const activeTransaction = getActiveTransaction();\n  if (activeTransaction) {\n    const status = 'internal_error';\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n    activeTransaction.setStatus(status);\n  }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n\nexport { registerErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n","import { logger, isNaN } from '@sentry/utils';\nimport { getMainCarrier } from '../hub.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { Transaction } from './transaction.js';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n  const scope = this.getScope();\n  const span = scope.getSpan();\n\n  return span\n    ? {\n        'sentry-trace': span.toTraceparent(),\n      }\n    : {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n  transaction,\n  options,\n  samplingContext,\n) {\n  // nothing to do if tracing is not enabled\n  if (!hasTracingEnabled(options)) {\n    transaction.sampled = false;\n    return transaction;\n  }\n\n  // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n  if (transaction.sampled !== undefined) {\n    transaction.setMetadata({\n      sampleRate: Number(transaction.sampled),\n    });\n    return transaction;\n  }\n\n  // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n  // work; prefer the hook if so\n  let sampleRate;\n  if (typeof options.tracesSampler === 'function') {\n    sampleRate = options.tracesSampler(samplingContext);\n    transaction.setMetadata({\n      sampleRate: Number(sampleRate),\n    });\n  } else if (samplingContext.parentSampled !== undefined) {\n    sampleRate = samplingContext.parentSampled;\n  } else if (typeof options.tracesSampleRate !== 'undefined') {\n    sampleRate = options.tracesSampleRate;\n    transaction.setMetadata({\n      sampleRate: Number(sampleRate),\n    });\n  } else {\n    // When `enableTracing === true`, we use a sample rate of 100%\n    sampleRate = 1;\n    transaction.setMetadata({\n      sampleRate,\n    });\n  }\n\n  // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n  // only valid values are booleans or numbers between 0 and 1.)\n  if (!isValidSampleRate(sampleRate)) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n    transaction.sampled = false;\n    return transaction;\n  }\n\n  // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n  if (!sampleRate) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.log(\n        `[Tracing] Discarding transaction because ${\n          typeof options.tracesSampler === 'function'\n            ? 'tracesSampler returned 0 or false'\n            : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n        }`,\n      );\n    transaction.sampled = false;\n    return transaction;\n  }\n\n  // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n  // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n  transaction.sampled = Math.random() < (sampleRate );\n\n  // if we're not going to keep it, we're done\n  if (!transaction.sampled) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.log(\n        `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n          sampleRate,\n        )})`,\n      );\n    return transaction;\n  }\n\n  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n  return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n  // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.warn(\n        `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n          rate,\n        )} of type ${JSON.stringify(typeof rate)}.`,\n      );\n    return false;\n  }\n\n  // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n  if (rate < 0 || rate > 1) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n    return false;\n  }\n  return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n\n  transactionContext,\n  customSamplingContext,\n) {\n  const client = this.getClient();\n  const options = (client && client.getOptions()) || {};\n\n  const configInstrumenter = options.instrumenter || 'sentry';\n  const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n  if (configInstrumenter !== transactionInstrumenter) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.error(\n        `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n      );\n\n    transactionContext.sampled = false;\n  }\n\n  let transaction = new Transaction(transactionContext, this);\n  transaction = sample(transaction, options, {\n    parentSampled: transactionContext.parentSampled,\n    transactionContext,\n    ...customSamplingContext,\n  });\n  if (transaction.sampled) {\n    transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n  }\n  if (client && client.emit) {\n    client.emit('startTransaction', transaction);\n  }\n  return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n  hub,\n  transactionContext,\n  idleTimeout,\n  finalTimeout,\n  onScope,\n  customSamplingContext,\n  heartbeatInterval,\n) {\n  const client = hub.getClient();\n  const options = (client && client.getOptions()) || {};\n\n  let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, heartbeatInterval, onScope);\n  transaction = sample(transaction, options, {\n    parentSampled: transactionContext.parentSampled,\n    transactionContext,\n    ...customSamplingContext,\n  });\n  if (transaction.sampled) {\n    transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n  }\n  if (client && client.emit) {\n    client.emit('startTransaction', transaction);\n  }\n  return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nfunction addTracingExtensions() {\n  const carrier = getMainCarrier();\n  if (!carrier.__SENTRY__) {\n    return;\n  }\n  carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n  if (!carrier.__SENTRY__.extensions.startTransaction) {\n    carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n  }\n  if (!carrier.__SENTRY__.extensions.traceHeaders) {\n    carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n  }\n\n  registerErrorInstrumentation();\n}\n\nexport { addTracingExtensions, startIdleTransaction };\n//# sourceMappingURL=hubextensions.js.map\n","const TRACEPARENT_REGEXP = new RegExp(\n  '^[ \\\\t]*' + // whitespace\n    '([0-9a-f]{32})?' + // trace_id\n    '-?([0-9a-f]{16})?' + // span_id\n    '-?([01])?' + // sampled\n    '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n  const matches = traceparent.match(TRACEPARENT_REGEXP);\n\n  if (!traceparent || !matches) {\n    // empty string or no matches is invalid traceparent data\n    return undefined;\n  }\n\n  let parentSampled;\n  if (matches[3] === '1') {\n    parentSampled = true;\n  } else if (matches[3] === '0') {\n    parentSampled = false;\n  }\n\n  return {\n    traceId: matches[1],\n    parentSampled,\n    parentSpanId: matches[2],\n  };\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData };\n//# sourceMappingURL=tracing.js.map\n","import { isString } from './is.js';\nimport { logger } from './logger.js';\n\nconst BAGGAGE_HEADER_NAME = 'baggage';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n  // Very liberal definition of what any incoming header might look like\n  baggageHeader,\n) {\n  if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n    return undefined;\n  }\n\n  // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n  // It is later used to read Sentry-DSC-values from.\n  let baggageObject = {};\n\n  if (Array.isArray(baggageHeader)) {\n    // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n    baggageObject = baggageHeader.reduce((acc, curr) => {\n      const currBaggageObject = baggageHeaderToObject(curr);\n      return {\n        ...acc,\n        ...currBaggageObject,\n      };\n    }, {});\n  } else {\n    // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n    // this is how we choose to handle it)\n    if (!baggageHeader) {\n      return undefined;\n    }\n\n    baggageObject = baggageHeaderToObject(baggageHeader);\n  }\n\n  // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n  const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n    if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n      const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n      acc[nonPrefixedKey] = value;\n    }\n    return acc;\n  }, {});\n\n  // Only return a dynamic sampling context object if there are keys in it.\n  // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n  if (Object.keys(dynamicSamplingContext).length > 0) {\n    return dynamicSamplingContext ;\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n  // this also takes undefined for convenience and bundle size in other places\n  dynamicSamplingContext,\n) {\n  // Prefix all DSC keys with \"sentry-\" and put them into a new object\n  const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n    (acc, [dscKey, dscValue]) => {\n      if (dscValue) {\n        acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n      }\n      return acc;\n    },\n    {},\n  );\n\n  return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n  return baggageHeader\n    .split(',')\n    .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n    .reduce((acc, [key, value]) => {\n      acc[key] = value;\n      return acc;\n    }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n  if (Object.keys(object).length === 0) {\n    // An empty baggage header is not spec compliant: We return undefined.\n    return undefined;\n  }\n\n  return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n    const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n    const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n    if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n        logger.warn(\n          `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n        );\n      return baggageHeader;\n    } else {\n      return newBaggageHeader;\n    }\n  }, '');\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nexport { WINDOW };\n//# sourceMappingURL=types.js.map\n","const bindReporter = (\n  callback,\n  metric,\n  reportAllChanges,\n) => {\n  let prevValue;\n  let delta;\n  return (forceReport) => {\n    if (metric.value >= 0) {\n      if (forceReport || reportAllChanges) {\n        delta = metric.value - (prevValue || 0);\n\n        // Report the metric if there's a non-zero delta or if no previous\n        // value exists (which can happen in the case of the document becoming\n        // hidden when the metric value is 0).\n        // See: https://github.com/GoogleChrome/web-vitals/issues/14\n        if (delta || prevValue === undefined) {\n          prevValue = metric.value;\n          metric.delta = delta;\n          callback(metric);\n        }\n      }\n    }\n  };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getNavigationEntryFromPerformanceTiming = () => {\n  // eslint-disable-next-line deprecation/deprecation\n  const timing = WINDOW.performance.timing;\n  // eslint-disable-next-line deprecation/deprecation\n  const type = WINDOW.performance.navigation.type;\n\n  const navigationEntry = {\n    entryType: 'navigation',\n    startTime: 0,\n    type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n  };\n\n  for (const key in timing) {\n    if (key !== 'navigationStart' && key !== 'toJSON') {\n      // eslint-disable-next-line deprecation/deprecation\n      navigationEntry[key] = Math.max((timing[key ] ) - timing.navigationStart, 0);\n    }\n  }\n  return navigationEntry ;\n};\n\nconst getNavigationEntry = () => {\n  if (WINDOW.__WEB_VITALS_POLYFILL__) {\n    return (\n      WINDOW.performance &&\n      ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n        getNavigationEntryFromPerformanceTiming())\n    );\n  } else {\n    return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n  }\n};\n\nexport { getNavigationEntry };\n//# sourceMappingURL=getNavigationEntry.js.map\n","import { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getActivationStart = () => {\n  const navEntry = getNavigationEntry();\n  return (navEntry && navEntry.activationStart) || 0;\n};\n\nexport { getActivationStart };\n//# sourceMappingURL=getActivationStart.js.map\n","import { WINDOW } from '../../types.js';\nimport { generateUniqueID } from './generateUniqueID.js';\nimport { getActivationStart } from './getActivationStart.js';\nimport { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst initMetric = (name, value) => {\n  const navEntry = getNavigationEntry();\n  let navigationType = 'navigate';\n\n  if (navEntry) {\n    if (WINDOW.document.prerendering || getActivationStart() > 0) {\n      navigationType = 'prerender';\n    } else {\n      navigationType = navEntry.type.replace(/_/g, '-') ;\n    }\n  }\n\n  return {\n    name,\n    value: typeof value === 'undefined' ? -1 : value,\n    rating: 'good', // Will be updated if the value changes.\n    delta: 0,\n    entries: [],\n    id: generateUniqueID(),\n    navigationType,\n  };\n};\n\nexport { initMetric };\n//# sourceMappingURL=initMetric.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nconst generateUniqueID = () => {\n  return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nconst observe = (\n  type,\n  callback,\n  opts,\n) => {\n  try {\n    if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n      const po = new PerformanceObserver(list => {\n        callback(list.getEntries() );\n      });\n      po.observe(\n        Object.assign(\n          {\n            type,\n            buffered: true,\n          },\n          opts || {},\n        ) ,\n      );\n      return po;\n    }\n  } catch (e) {\n    // Do nothing.\n  }\n  return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst onHidden = (cb, once) => {\n  const onHiddenOrPageHide = (event) => {\n    if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n      cb(event);\n      if (once) {\n        removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n        removeEventListener('pagehide', onHiddenOrPageHide, true);\n      }\n    }\n  };\n  addEventListener('visibilitychange', onHiddenOrPageHide, true);\n  // Some browsers have buggy implementations of visibilitychange,\n  // so we use pagehide in addition, just to be safe.\n  addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","import { WINDOW } from '../../types.js';\nimport { onHidden } from './onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = () => {\n  // If the document is hidden and not prerendering, assume it was always\n  // hidden and the page was loaded in the background.\n  return WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n};\n\nconst trackChanges = () => {\n  // Update the time if/when the document becomes hidden.\n  onHidden(({ timeStamp }) => {\n    firstHiddenTime = timeStamp;\n  }, true);\n};\n\nconst getVisibilityWatcher = (\n\n) => {\n  if (firstHiddenTime < 0) {\n    // If the document is hidden when this code runs, assume it was hidden\n    // since navigation start. This isn't a perfect heuristic, but it's the\n    // best we can do until an API is available to support querying past\n    // visibilityState.\n    firstHiddenTime = initHiddenTime();\n    trackChanges();\n  }\n  return {\n    get firstHiddenTime() {\n      return firstHiddenTime;\n    },\n  };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst reportedMetricIDs = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nconst onLCP = (onReport) => {\n  const visibilityWatcher = getVisibilityWatcher();\n  const metric = initMetric('LCP');\n  let report;\n\n  const handleEntries = (entries) => {\n    const lastEntry = entries[entries.length - 1] ;\n    if (lastEntry) {\n      // The startTime attribute returns the value of the renderTime if it is\n      // not 0, and the value of the loadTime otherwise. The activationStart\n      // reference is used because LCP should be relative to page activation\n      // rather than navigation start if the page was prerendered.\n      const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n      // Only report if the page wasn't hidden prior to LCP.\n      if (value < visibilityWatcher.firstHiddenTime) {\n        metric.value = value;\n        metric.entries = [lastEntry];\n        report();\n      }\n    }\n  };\n\n  const po = observe('largest-contentful-paint', handleEntries);\n\n  if (po) {\n    report = bindReporter(onReport, metric);\n\n    const stopListening = () => {\n      if (!reportedMetricIDs[metric.id]) {\n        handleEntries(po.takeRecords() );\n        po.disconnect();\n        reportedMetricIDs[metric.id] = true;\n        report(true);\n      }\n    };\n\n    // Stop listening after input. Note: while scrolling is an input that\n    // stop LCP observation, it's unreliable since it can be programmatically\n    // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n    ['keydown', 'click'].forEach(type => {\n      addEventListener(type, stopListening, { once: true, capture: true });\n    });\n\n    onHidden(stopListening, true);\n\n    return stopListening;\n  }\n\n  return;\n};\n\nexport { onLCP };\n//# sourceMappingURL=getLCP.js.map\n","/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n  return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n  if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n    transaction.startTimestamp = startTimestamp;\n  }\n\n  return transaction.startChild({\n    startTimestamp,\n    ...ctx,\n  });\n}\n\nexport { _startChild, isMeasurementValue };\n//# sourceMappingURL=utils.js.map\n","import { getActiveTransaction } from '@sentry/core';\nimport { browserPerformanceTimeOrigin, logger, htmlTreeAsString } from '@sentry/utils';\nimport { WINDOW } from '../types.js';\nimport { onCLS } from '../web-vitals/getCLS.js';\nimport { onFID } from '../web-vitals/getFID.js';\nimport { onLCP } from '../web-vitals/getLCP.js';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher.js';\nimport { observe } from '../web-vitals/lib/observe.js';\nimport { _startChild, isMeasurementValue } from './utils.js';\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n  return time / 1000;\n}\n\nfunction getBrowserPerformanceAPI() {\n  // @ts-ignore we want to make sure all of these are available, even if TS is sure they are\n  return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n *\n * @returns A function that forces web vitals collection\n */\nfunction startTrackingWebVitals() {\n  const performance = getBrowserPerformanceAPI();\n  if (performance && browserPerformanceTimeOrigin) {\n    // @ts-ignore we want to make sure all of these are available, even if TS is sure they are\n    if (performance.mark) {\n      WINDOW.performance.mark('sentry-tracing-init');\n    }\n    _trackFID();\n    const clsCallback = _trackCLS();\n    const lcpCallback = _trackLCP();\n\n    return () => {\n      if (clsCallback) {\n        clsCallback();\n      }\n      if (lcpCallback) {\n        lcpCallback();\n      }\n    };\n  }\n\n  return () => undefined;\n}\n\n/**\n * Start tracking long tasks.\n */\nfunction startTrackingLongTasks() {\n  const entryHandler = (entries) => {\n    for (const entry of entries) {\n      const transaction = getActiveTransaction() ;\n      if (!transaction) {\n        return;\n      }\n      const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n      const duration = msToSec(entry.duration);\n\n      transaction.startChild({\n        description: 'Main UI thread blocked',\n        op: 'ui.long-task',\n        startTimestamp: startTime,\n        endTimestamp: startTime + duration,\n      });\n    }\n  };\n\n  observe('longtask', entryHandler);\n}\n\n/**\n * Start tracking interaction events.\n */\nfunction startTrackingInteractions() {\n  const entryHandler = (entries) => {\n    for (const entry of entries) {\n      const transaction = getActiveTransaction() ;\n      if (!transaction) {\n        return;\n      }\n\n      if (entry.name === 'click') {\n        const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n        const duration = msToSec(entry.duration);\n\n        transaction.startChild({\n          description: htmlTreeAsString(entry.target),\n          op: `ui.interaction.${entry.name}`,\n          startTimestamp: startTime,\n          endTimestamp: startTime + duration,\n        });\n      }\n    }\n  };\n\n  observe('event', entryHandler, { durationThreshold: 0 });\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n  // See:\n  // https://web.dev/evolving-cls/\n  // https://web.dev/cls-web-tooling/\n  return onCLS(metric => {\n    const entry = metric.entries.pop();\n    if (!entry) {\n      return;\n    }\n\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS');\n    _measurements['cls'] = { value: metric.value, unit: '' };\n    _clsEntry = entry ;\n  });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP() {\n  return onLCP(metric => {\n    const entry = metric.entries.pop();\n    if (!entry) {\n      return;\n    }\n\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP');\n    _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n    _lcpEntry = entry ;\n  });\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n  onFID(metric => {\n    const entry = metric.entries.pop();\n    if (!entry) {\n      return;\n    }\n\n    const timeOrigin = msToSec(browserPerformanceTimeOrigin );\n    const startTime = msToSec(entry.startTime);\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FID');\n    _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n    _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n  });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n  const performance = getBrowserPerformanceAPI();\n  if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n    // Gatekeeper if performance API not available\n    return;\n  }\n\n  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n  const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n  const performanceEntries = performance.getEntries();\n\n  let responseStartTimestamp;\n  let requestStartTimestamp;\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  performanceEntries.slice(_performanceCursor).forEach((entry) => {\n    const startTime = msToSec(entry.startTime);\n    const duration = msToSec(entry.duration);\n\n    if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n      return;\n    }\n\n    switch (entry.entryType) {\n      case 'navigation': {\n        _addNavigationSpans(transaction, entry, timeOrigin);\n        responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n        requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n        break;\n      }\n      case 'mark':\n      case 'paint':\n      case 'measure': {\n        _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n        // capture web vitals\n        const firstHidden = getVisibilityWatcher();\n        // Only report if the page wasn't hidden prior to the web vital.\n        const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n        if (entry.name === 'first-paint' && shouldRecord) {\n          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FP');\n          _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n        }\n        if (entry.name === 'first-contentful-paint' && shouldRecord) {\n          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FCP');\n          _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n        }\n        break;\n      }\n      case 'resource': {\n        const resourceName = (entry.name ).replace(WINDOW.location.origin, '');\n        _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n        break;\n      }\n      // Ignore other entry types.\n    }\n  });\n\n  _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n  _trackNavigator(transaction);\n\n  // Measurements are only available for pageload transactions\n  if (transaction.op === 'pageload') {\n    // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n    // start of the response in milliseconds\n    if (typeof responseStartTimestamp === 'number') {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding TTFB');\n      _measurements['ttfb'] = {\n        value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n        unit: 'millisecond',\n      };\n\n      if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n        // Capture the time spent making the request and receiving the first byte of the response.\n        // This is the time between the start of the request and the start of the response in milliseconds.\n        _measurements['ttfb.requestTime'] = {\n          value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n          unit: 'millisecond',\n        };\n      }\n    }\n\n    ['fcp', 'fp', 'lcp'].forEach(name => {\n      if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n        return;\n      }\n      // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n      // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n      // to be adjusted to be relative to transaction.startTimestamp.\n      const oldValue = _measurements[name].value;\n      const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n      // normalizedValue should be in milliseconds\n      const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n      const delta = normalizedValue - oldValue;\n\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n        logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n      _measurements[name].value = normalizedValue;\n    });\n\n    const fidMark = _measurements['mark.fid'];\n    if (fidMark && _measurements['fid']) {\n      // create span for FID\n      _startChild(transaction, {\n        description: 'first input delay',\n        endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n        op: 'ui.action',\n        startTimestamp: fidMark.value,\n      });\n\n      // Delete mark.fid as we don't want it to be part of final payload\n      delete _measurements['mark.fid'];\n    }\n\n    // If FCP is not recorded we should not record the cls value\n    // according to the new definition of CLS.\n    if (!('fcp' in _measurements)) {\n      delete _measurements.cls;\n    }\n\n    Object.keys(_measurements).forEach(measurementName => {\n      transaction.setMeasurement(\n        measurementName,\n        _measurements[measurementName].value,\n        _measurements[measurementName].unit,\n      );\n    });\n\n    _tagMetricInfo(transaction);\n  }\n\n  _lcpEntry = undefined;\n  _clsEntry = undefined;\n  _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n  transaction,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  entry,\n  startTime,\n  duration,\n  timeOrigin,\n) {\n  const measureStartTimestamp = timeOrigin + startTime;\n  const measureEndTimestamp = measureStartTimestamp + duration;\n\n  _startChild(transaction, {\n    description: entry.name ,\n    endTimestamp: measureEndTimestamp,\n    op: entry.entryType ,\n    startTimestamp: measureStartTimestamp,\n  });\n\n  return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n  ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n    _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n  });\n  _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n  _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n  _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n  _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n  transaction,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  entry,\n  event,\n  timeOrigin,\n  description,\n  eventEnd,\n) {\n  const end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n  const start = entry[`${event}Start`] ;\n  if (!start || !end) {\n    return;\n  }\n  _startChild(transaction, {\n    op: 'browser',\n    description: description || event,\n    startTimestamp: timeOrigin + msToSec(start),\n    endTimestamp: timeOrigin + msToSec(end),\n  });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction, entry, timeOrigin) {\n  _startChild(transaction, {\n    op: 'browser',\n    description: 'request',\n    startTimestamp: timeOrigin + msToSec(entry.requestStart ),\n    endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n  });\n\n  _startChild(transaction, {\n    op: 'browser',\n    description: 'response',\n    startTimestamp: timeOrigin + msToSec(entry.responseStart ),\n    endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n  });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n  transaction,\n  entry,\n  resourceName,\n  startTime,\n  duration,\n  timeOrigin,\n) {\n  // we already instrument based on fetch and xhr, so we don't need to\n  // duplicate spans here.\n  if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n    return;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const data = {};\n  if ('transferSize' in entry) {\n    data['http.response_transfer_size'] = entry.transferSize;\n  }\n  if ('encodedBodySize' in entry) {\n    data['http.response_content_length'] = entry.encodedBodySize;\n  }\n  if ('decodedBodySize' in entry) {\n    data['http.decoded_response_content_length'] = entry.decodedBodySize;\n  }\n  if ('renderBlockingStatus' in entry) {\n    data['resource.render_blocking_status'] = entry.renderBlockingStatus;\n  }\n\n  const startTimestamp = timeOrigin + startTime;\n  const endTimestamp = startTimestamp + duration;\n\n  _startChild(transaction, {\n    description: resourceName,\n    endTimestamp,\n    op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n    startTimestamp,\n    data,\n  });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n  const navigator = WINDOW.navigator ;\n  if (!navigator) {\n    return;\n  }\n\n  // track network connectivity\n  const connection = navigator.connection;\n  if (connection) {\n    if (connection.effectiveType) {\n      transaction.setTag('effectiveConnectionType', connection.effectiveType);\n    }\n\n    if (connection.type) {\n      transaction.setTag('connectionType', connection.type);\n    }\n\n    if (isMeasurementValue(connection.rtt)) {\n      _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n    }\n  }\n\n  if (isMeasurementValue(navigator.deviceMemory)) {\n    transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n  }\n\n  if (isMeasurementValue(navigator.hardwareConcurrency)) {\n    transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n  }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n  if (_lcpEntry) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP Data');\n\n    // Capture Properties of the LCP element that contributes to the LCP.\n\n    if (_lcpEntry.element) {\n      transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n    }\n\n    if (_lcpEntry.id) {\n      transaction.setTag('lcp.id', _lcpEntry.id);\n    }\n\n    if (_lcpEntry.url) {\n      // Trim URL to the first 200 characters.\n      transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n    }\n\n    transaction.setTag('lcp.size', _lcpEntry.size);\n  }\n\n  // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n  if (_clsEntry && _clsEntry.sources) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS Data');\n    _clsEntry.sources.forEach((source, index) =>\n      transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n    );\n  }\n}\n\nexport { _addMeasureSpans, _addResourceSpans, addPerformanceEntries, startTrackingInteractions, startTrackingLongTasks, startTrackingWebVitals };\n//# sourceMappingURL=index.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nconst onFID = (onReport) => {\n  const visibilityWatcher = getVisibilityWatcher();\n  const metric = initMetric('FID');\n  // eslint-disable-next-line prefer-const\n  let report;\n\n  const handleEntry = (entry) => {\n    // Only report if the page wasn't hidden prior to the first input.\n    if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n      metric.value = entry.processingStart - entry.startTime;\n      metric.entries.push(entry);\n      report(true);\n    }\n  };\n\n  const handleEntries = (entries) => {\n    (entries ).forEach(handleEntry);\n  };\n\n  const po = observe('first-input', handleEntries);\n  report = bindReporter(onReport, metric);\n\n  if (po) {\n    onHidden(() => {\n      handleEntries(po.takeRecords() );\n      po.disconnect();\n    }, true);\n  }\n};\n\nexport { onFID };\n//# sourceMappingURL=getFID.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onCLS = (onReport) => {\n  const metric = initMetric('CLS', 0);\n  let report;\n\n  let sessionValue = 0;\n  let sessionEntries = [];\n\n  // const handleEntries = (entries: Metric['entries']) => {\n  const handleEntries = (entries) => {\n    entries.forEach(entry => {\n      // Only count layout shifts without recent user input.\n      if (!entry.hadRecentInput) {\n        const firstSessionEntry = sessionEntries[0];\n        const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n        // If the entry occurred less than 1 second after the previous entry and\n        // less than 5 seconds after the first entry in the session, include the\n        // entry in the current session. Otherwise, start a new session.\n        if (\n          sessionValue &&\n          sessionEntries.length !== 0 &&\n          entry.startTime - lastSessionEntry.startTime < 1000 &&\n          entry.startTime - firstSessionEntry.startTime < 5000\n        ) {\n          sessionValue += entry.value;\n          sessionEntries.push(entry);\n        } else {\n          sessionValue = entry.value;\n          sessionEntries = [entry];\n        }\n\n        // If the current session value is larger than the current CLS value,\n        // update CLS and the entries contributing to it.\n        if (sessionValue > metric.value) {\n          metric.value = sessionValue;\n          metric.entries = sessionEntries;\n          if (report) {\n            report();\n          }\n        }\n      }\n    });\n  };\n\n  const po = observe('layout-shift', handleEntries);\n  if (po) {\n    report = bindReporter(onReport, metric);\n\n    const stopListening = () => {\n      handleEntries(po.takeRecords() );\n      report(true);\n    };\n\n    onHidden(stopListening);\n\n    return stopListening;\n  }\n\n  return;\n};\n\nexport { onCLS };\n//# sourceMappingURL=getCLS.js.map\n","/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nfunction _optionalChain(ops) {\n  let lastAccessLHS = undefined;\n  let value = ops[0];\n  let i = 1;\n  while (i < ops.length) {\n    const op = ops[i] ;\n    const fn = ops[i + 1] ;\n    i += 2;\n    // by checking for loose equality to `null`, we catch both `null` and `undefined`\n    if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n      // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n      return;\n    }\n    if (op === 'access' || op === 'optionalAccess') {\n      lastAccessLHS = value;\n      value = fn(value);\n    } else if (op === 'call' || op === 'optionalCall') {\n      value = fn((...args) => (value ).call(lastAccessLHS, ...args));\n      lastAccessLHS = undefined;\n    }\n  }\n  return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n//   let lastAccessLHS = undefined;\n//   let value = ops[0];\n//   let i = 1;\n//   while (i < ops.length) {\n//     const op = ops[i];\n//     const fn = ops[i + 1];\n//     i += 2;\n//     if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n//       return undefined;\n//     }\n//     if (op === 'access' || op === 'optionalAccess') {\n//       lastAccessLHS = value;\n//       value = fn(value);\n//     } else if (op === 'call' || op === 'optionalCall') {\n//       value = fn((...args) => value.call(lastAccessLHS, ...args));\n//       lastAccessLHS = undefined;\n//     }\n//   }\n//   return value;\n// }\n\nexport { _optionalChain };\n//# sourceMappingURL=_optionalChain.js.map\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { hasTracingEnabled, getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, browserPerformanceTimeOrigin, dynamicSamplingContextToSentryBaggageHeader, isInstanceOf, BAGGAGE_HEADER_NAME, SENTRY_XHR_DATA_KEY, stringMatchesSomePattern } from '@sentry/utils';\n\n/* eslint-disable max-lines */\n\nconst DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\/(?!\\/)/];\n\n/** Options for Request Instrumentation */\n\nconst defaultRequestInstrumentationOptions = {\n  traceFetch: true,\n  traceXHR: true,\n  // TODO (v8): Remove this property\n  tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,\n  tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n  _experiments: {},\n};\n\n/** Registers span creators for xhr and fetch requests  */\nfunction instrumentOutgoingRequests(_options) {\n  // eslint-disable-next-line deprecation/deprecation\n  const { traceFetch, traceXHR, tracePropagationTargets, tracingOrigins, shouldCreateSpanForRequest, _experiments } = {\n    traceFetch: defaultRequestInstrumentationOptions.traceFetch,\n    traceXHR: defaultRequestInstrumentationOptions.traceXHR,\n    ..._options,\n  };\n\n  const shouldCreateSpan =\n    typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_) => true;\n\n  // TODO(v8) Remove tracingOrigins here\n  // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported\n  // and we don't want to break the API. We can remove it in v8.\n  const shouldAttachHeadersWithTargets = (url) =>\n    shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);\n\n  const spans = {};\n\n  if (traceFetch) {\n    addInstrumentationHandler('fetch', (handlerData) => {\n      const createdSpan = fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n      if (_optionalChain([_experiments, 'optionalAccess', _2 => _2.enableHTTPTimings]) && createdSpan) {\n        addHTTPTimings(createdSpan);\n      }\n    });\n  }\n\n  if (traceXHR) {\n    addInstrumentationHandler('xhr', (handlerData) => {\n      const createdSpan = xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n      if (_optionalChain([_experiments, 'optionalAccess', _3 => _3.enableHTTPTimings]) && createdSpan) {\n        addHTTPTimings(createdSpan);\n      }\n    });\n  }\n}\n\n/**\n * Creates a temporary observer to listen to the next fetch/xhr resourcing timings,\n * so that when timings hit their per-browser limit they don't need to be removed.\n *\n * @param span A span that has yet to be finished, must contain `url` on data.\n */\nfunction addHTTPTimings(span) {\n  const url = span.data.url;\n  const observer = new PerformanceObserver(list => {\n    const entries = list.getEntries() ;\n    entries.forEach(entry => {\n      if ((entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest') && entry.name.endsWith(url)) {\n        const spanData = resourceTimingEntryToSpanData(entry);\n        spanData.forEach(data => span.setData(...data));\n        observer.disconnect();\n      }\n    });\n  });\n  observer.observe({\n    entryTypes: ['resource'],\n  });\n}\n\nfunction resourceTimingEntryToSpanData(resourceTiming) {\n  const version = resourceTiming.nextHopProtocol.split('/')[1] || 'none';\n\n  const timingSpanData = [];\n  if (version) {\n    timingSpanData.push(['network.protocol.version', version]);\n  }\n\n  if (!browserPerformanceTimeOrigin) {\n    return timingSpanData;\n  }\n  return [\n    ...timingSpanData,\n    ['http.request.connect_start', (browserPerformanceTimeOrigin + resourceTiming.connectStart) / 1000],\n    ['http.request.request_start', (browserPerformanceTimeOrigin + resourceTiming.requestStart) / 1000],\n    ['http.request.response_start', (browserPerformanceTimeOrigin + resourceTiming.responseStart) / 1000],\n  ];\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.\n * We only export this fuction for testing purposes.\n */\nfunction shouldAttachHeaders(url, tracePropagationTargets) {\n  return stringMatchesSomePattern(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);\n}\n\n/**\n * Create and track fetch request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\nfunction fetchCallback(\n  handlerData,\n  shouldCreateSpan,\n  shouldAttachHeaders,\n  spans,\n) {\n  if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n    return;\n  }\n\n  if (handlerData.endTimestamp) {\n    const spanId = handlerData.fetchData.__span;\n    if (!spanId) return;\n\n    const span = spans[spanId];\n    if (span) {\n      if (handlerData.response) {\n        // TODO (kmclb) remove this once types PR goes through\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        span.setHttpStatus(handlerData.response.status);\n\n        const contentLength =\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n          handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length');\n\n        const contentLengthNum = parseInt(contentLength);\n        if (contentLengthNum > 0) {\n          span.setData('http.response_content_length', contentLengthNum);\n        }\n      } else if (handlerData.error) {\n        span.setStatus('internal_error');\n      }\n      span.finish();\n\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete spans[spanId];\n    }\n    return;\n  }\n\n  const currentSpan = getCurrentHub().getScope().getSpan();\n  const activeTransaction = currentSpan && currentSpan.transaction;\n\n  if (currentSpan && activeTransaction) {\n    const { method, url } = handlerData.fetchData;\n    const span = currentSpan.startChild({\n      data: {\n        url,\n        type: 'fetch',\n        'http.method': method,\n      },\n      description: `${method} ${url}`,\n      op: 'http.client',\n    });\n\n    handlerData.fetchData.__span = span.spanId;\n    spans[span.spanId] = span;\n\n    const request = handlerData.args[0];\n\n    // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n    handlerData.args[1] = handlerData.args[1] || {};\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const options = handlerData.args[1];\n\n    if (shouldAttachHeaders(handlerData.fetchData.url)) {\n      options.headers = addTracingHeadersToFetchRequest(\n        request,\n        activeTransaction.getDynamicSamplingContext(),\n        span,\n        options,\n      );\n    }\n    return span;\n  }\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers\n */\nfunction addTracingHeadersToFetchRequest(\n  request, // unknown is actually type Request but we can't export DOM types from this package,\n  dynamicSamplingContext,\n  span,\n  options\n\n,\n) {\n  const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n  const sentryTraceHeader = span.toTraceparent();\n\n  const headers =\n    typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request ).headers : options.headers;\n\n  if (!headers) {\n    return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n  } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n    const newHeaders = new Headers(headers );\n\n    newHeaders.append('sentry-trace', sentryTraceHeader);\n\n    if (sentryBaggageHeader) {\n      // If the same header is appended multiple times the browser will merge the values into a single request header.\n      // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n      newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n    }\n\n    return newHeaders ;\n  } else if (Array.isArray(headers)) {\n    const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n    if (sentryBaggageHeader) {\n      // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n      // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n      newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n    }\n\n    return newHeaders ;\n  } else {\n    const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n    const newBaggageHeaders = [];\n\n    if (Array.isArray(existingBaggageHeader)) {\n      newBaggageHeaders.push(...existingBaggageHeader);\n    } else if (existingBaggageHeader) {\n      newBaggageHeaders.push(existingBaggageHeader);\n    }\n\n    if (sentryBaggageHeader) {\n      newBaggageHeaders.push(sentryBaggageHeader);\n    }\n\n    return {\n      ...(headers ),\n      'sentry-trace': sentryTraceHeader,\n      baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n    };\n  }\n}\n\n/**\n * Create and track xhr request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\nfunction xhrCallback(\n  handlerData,\n  shouldCreateSpan,\n  shouldAttachHeaders,\n  spans,\n) {\n  const xhr = handlerData.xhr;\n  const sentryXhrData = xhr && xhr[SENTRY_XHR_DATA_KEY];\n\n  if (\n    !hasTracingEnabled() ||\n    (xhr && xhr.__sentry_own_request__) ||\n    !(xhr && sentryXhrData && shouldCreateSpan(sentryXhrData.url))\n  ) {\n    return;\n  }\n\n  // check first if the request has finished and is tracked by an existing span which should now end\n  if (handlerData.endTimestamp) {\n    const spanId = xhr.__sentry_xhr_span_id__;\n    if (!spanId) return;\n\n    const span = spans[spanId];\n    if (span) {\n      span.setHttpStatus(sentryXhrData.status_code);\n      span.finish();\n\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete spans[spanId];\n    }\n    return;\n  }\n\n  const currentSpan = getCurrentHub().getScope().getSpan();\n  const activeTransaction = currentSpan && currentSpan.transaction;\n\n  if (currentSpan && activeTransaction) {\n    const span = currentSpan.startChild({\n      data: {\n        ...sentryXhrData.data,\n        type: 'xhr',\n        'http.method': sentryXhrData.method,\n        url: sentryXhrData.url,\n      },\n      description: `${sentryXhrData.method} ${sentryXhrData.url}`,\n      op: 'http.client',\n    });\n\n    xhr.__sentry_xhr_span_id__ = span.spanId;\n    spans[xhr.__sentry_xhr_span_id__] = span;\n\n    if (xhr.setRequestHeader && shouldAttachHeaders(sentryXhrData.url)) {\n      try {\n        xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n        const dynamicSamplingContext = activeTransaction.getDynamicSamplingContext();\n        const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n\n        if (sentryBaggageHeader) {\n          // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n          // We can therefore simply set a baggage header without checking what was there before\n          // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n          xhr.setRequestHeader(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n        }\n      } catch (_) {\n        // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n      }\n    }\n\n    return span;\n  }\n}\n\nexport { DEFAULT_TRACE_PROPAGATION_TARGETS, addTracingHeadersToFetchRequest, defaultRequestInstrumentationOptions, instrumentOutgoingRequests, shouldAttachHeaders };\n//# sourceMappingURL=request.js.map\n","import { TRACING_DEFAULTS, addTracingExtensions, extractTraceparentData, startIdleTransaction, getActiveTransaction } from '@sentry/core';\nimport { logger, baggageHeaderToDynamicSamplingContext, getDomElement } from '@sentry/utils';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { startTrackingWebVitals, startTrackingLongTasks, startTrackingInteractions, addPerformanceEntries } from './metrics/index.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { instrumentRoutingWithDefaults } from './router.js';\nimport { WINDOW } from './types.js';\n\nconst BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n  ...TRACING_DEFAULTS,\n  markBackgroundTransactions: true,\n  routingInstrumentation: instrumentRoutingWithDefaults,\n  startTransactionOnLocationChange: true,\n  startTransactionOnPageLoad: true,\n  enableLongTask: true,\n  ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing  {\n  // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n  // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n  // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n  // integrations.\n\n  /** Browser Tracing integration options */\n\n  /**\n   * @inheritDoc\n   */\n   __init() {this.name = BROWSER_TRACING_INTEGRATION_ID;}\n\n   __init2() {this._hasSetTracePropagationTargets = false;}\n\n   constructor(_options) {BrowserTracing.prototype.__init.call(this);BrowserTracing.prototype.__init2.call(this);\n    addTracingExtensions();\n\n    if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n      this._hasSetTracePropagationTargets = !!(\n        _options &&\n        // eslint-disable-next-line deprecation/deprecation\n        (_options.tracePropagationTargets || _options.tracingOrigins)\n      );\n    }\n\n    this.options = {\n      ...DEFAULT_BROWSER_TRACING_OPTIONS,\n      ..._options,\n    };\n\n    // Special case: enableLongTask can be set in _experiments\n    // TODO (v8): Remove this in v8\n    if (this.options._experiments.enableLongTask !== undefined) {\n      this.options.enableLongTask = this.options._experiments.enableLongTask;\n    }\n\n    // TODO (v8): remove this block after tracingOrigins is removed\n    // Set tracePropagationTargets to tracingOrigins if specified by the user\n    // In case both are specified, tracePropagationTargets takes precedence\n    // eslint-disable-next-line deprecation/deprecation\n    if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {\n      // eslint-disable-next-line deprecation/deprecation\n      this.options.tracePropagationTargets = _options.tracingOrigins;\n    }\n\n    this._collectWebVitals = startTrackingWebVitals();\n    if (this.options.enableLongTask) {\n      startTrackingLongTasks();\n    }\n    if (this.options._experiments.enableInteractions) {\n      startTrackingInteractions();\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setupOnce(_, getCurrentHub) {\n    this._getCurrentHub = getCurrentHub;\n    const hub = getCurrentHub();\n    const client = hub.getClient();\n    const clientOptions = client && client.getOptions();\n\n    const {\n      routingInstrumentation: instrumentRouting,\n      startTransactionOnLocationChange,\n      startTransactionOnPageLoad,\n      markBackgroundTransactions,\n      traceFetch,\n      traceXHR,\n      shouldCreateSpanForRequest,\n      _experiments,\n    } = this.options;\n\n    const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets;\n    // There are three ways to configure tracePropagationTargets:\n    // 1. via top level client option `tracePropagationTargets`\n    // 2. via BrowserTracing option `tracePropagationTargets`\n    // 3. via BrowserTracing option `tracingOrigins` (deprecated)\n    //\n    // To avoid confusion, favour top level client option `tracePropagationTargets`, and fallback to\n    // BrowserTracing option `tracePropagationTargets` and then `tracingOrigins` (deprecated).\n    // This is done as it minimizes bundle size (we don't have to have undefined checks).\n    //\n    // If both 1 and either one of 2 or 3 are set (from above), we log out a warning.\n    const tracePropagationTargets = clientOptionsTracePropagationTargets || this.options.tracePropagationTargets;\n    if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) {\n      logger.warn(\n        '[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.',\n      );\n    }\n\n    instrumentRouting(\n      (context) => {\n        const transaction = this._createRouteTransaction(context);\n\n        this.options._experiments.onStartRouteTransaction &&\n          this.options._experiments.onStartRouteTransaction(transaction, context, getCurrentHub);\n\n        return transaction;\n      },\n      startTransactionOnPageLoad,\n      startTransactionOnLocationChange,\n    );\n\n    if (markBackgroundTransactions) {\n      registerBackgroundTabDetection();\n    }\n\n    if (_experiments.enableInteractions) {\n      this._registerInteractionListener();\n    }\n\n    instrumentOutgoingRequests({\n      traceFetch,\n      traceXHR,\n      tracePropagationTargets,\n      shouldCreateSpanForRequest,\n      _experiments: {\n        enableHTTPTimings: _experiments.enableHTTPTimings,\n      },\n    });\n  }\n\n  /** Create routing idle transaction. */\n   _createRouteTransaction(context) {\n    if (!this._getCurrentHub) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n        logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n      return undefined;\n    }\n\n    const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n    const isPageloadTransaction = context.op === 'pageload';\n\n    const sentryTraceMetaTagValue = isPageloadTransaction ? getMetaContent('sentry-trace') : null;\n    const baggageMetaTagValue = isPageloadTransaction ? getMetaContent('baggage') : null;\n\n    const traceParentData = sentryTraceMetaTagValue ? extractTraceparentData(sentryTraceMetaTagValue) : undefined;\n    const dynamicSamplingContext = baggageMetaTagValue\n      ? baggageHeaderToDynamicSamplingContext(baggageMetaTagValue)\n      : undefined;\n\n    const expandedContext = {\n      ...context,\n      ...traceParentData,\n      metadata: {\n        ...context.metadata,\n        dynamicSamplingContext: traceParentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,\n      },\n      trimEnd: true,\n    };\n\n    const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n    // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n    // from being sent to Sentry).\n    const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n    // If `beforeNavigate` set a custom name, record that fact\n    finalContext.metadata =\n      finalContext.name !== expandedContext.name\n        ? { ...finalContext.metadata, source: 'custom' }\n        : finalContext.metadata;\n\n    this._latestRouteName = finalContext.name;\n    this._latestRouteSource = finalContext.metadata && finalContext.metadata.source;\n\n    if (finalContext.sampled === false) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n        logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n    }\n\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n    const hub = this._getCurrentHub();\n    const { location } = WINDOW;\n\n    const idleTransaction = startIdleTransaction(\n      hub,\n      finalContext,\n      idleTimeout,\n      finalTimeout,\n      true,\n      { location }, // for use in the tracesSampler\n      heartbeatInterval,\n    );\n    idleTransaction.registerBeforeFinishCallback(transaction => {\n      this._collectWebVitals();\n      addPerformanceEntries(transaction);\n    });\n\n    return idleTransaction ;\n  }\n\n  /** Start listener for interaction transactions */\n   _registerInteractionListener() {\n    let inflightInteractionTransaction;\n    const registerInteractionTransaction = () => {\n      const { idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n      const op = 'ui.action.click';\n\n      const currentTransaction = getActiveTransaction();\n      if (currentTransaction && currentTransaction.op && ['navigation', 'pageload'].includes(currentTransaction.op)) {\n        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n          logger.warn(\n            `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`,\n          );\n        return undefined;\n      }\n\n      if (inflightInteractionTransaction) {\n        inflightInteractionTransaction.setFinishReason('interactionInterrupted');\n        inflightInteractionTransaction.finish();\n        inflightInteractionTransaction = undefined;\n      }\n\n      if (!this._getCurrentHub) {\n        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`);\n        return undefined;\n      }\n\n      if (!this._latestRouteName) {\n        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n          logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n        return undefined;\n      }\n\n      const hub = this._getCurrentHub();\n      const { location } = WINDOW;\n\n      const context = {\n        name: this._latestRouteName,\n        op,\n        trimEnd: true,\n        metadata: {\n          source: this._latestRouteSource || 'url',\n        },\n      };\n\n      inflightInteractionTransaction = startIdleTransaction(\n        hub,\n        context,\n        idleTimeout,\n        finalTimeout,\n        true,\n        { location }, // for use in the tracesSampler\n        heartbeatInterval,\n      );\n    };\n\n    ['click'].forEach(type => {\n      addEventListener(type, registerInteractionTransaction, { once: false, capture: true });\n    });\n  }\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n  // Can't specify generic to `getDomElement` because tracing can be used\n  // in a variety of environments, have to disable `no-unsafe-member-access`\n  // as a result.\n  const metaTag = getDomElement(`meta[name=${metaName}]`);\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return metaTag ? metaTag.getAttribute('content') : null;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, getMetaContent };\n//# sourceMappingURL=browsertracing.js.map\n","import { logger, browserPerformanceTimeOrigin, addInstrumentationHandler } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n  customStartTransaction,\n  startTransactionOnPageLoad = true,\n  startTransactionOnLocationChange = true,\n) {\n  if (!WINDOW || !WINDOW.location) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Could not initialize routing instrumentation due to invalid location');\n    return;\n  }\n\n  let startingUrl = WINDOW.location.href;\n\n  let activeTransaction;\n  if (startTransactionOnPageLoad) {\n    activeTransaction = customStartTransaction({\n      name: WINDOW.location.pathname,\n      // pageload should always start at timeOrigin (and needs to be in s, not ms)\n      startTimestamp: browserPerformanceTimeOrigin ? browserPerformanceTimeOrigin / 1000 : undefined,\n      op: 'pageload',\n      metadata: { source: 'url' },\n    });\n  }\n\n  if (startTransactionOnLocationChange) {\n    addInstrumentationHandler('history', ({ to, from }) => {\n      /**\n       * This early return is there to account for some cases where a navigation transaction starts right after\n       * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n       * create an uneccessary navigation transaction.\n       *\n       * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n       * only be caused in certain development environments where the usage of a hot module reloader is causing\n       * errors.\n       */\n      if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n        startingUrl = undefined;\n        return;\n      }\n\n      if (from !== to) {\n        startingUrl = undefined;\n        if (activeTransaction) {\n          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n          // If there's an open transaction on the scope, we need to finish it before creating an new one.\n          activeTransaction.finish();\n        }\n        activeTransaction = customStartTransaction({\n          name: WINDOW.location.pathname,\n          op: 'navigation',\n          metadata: { source: 'url' },\n        });\n      }\n    });\n  }\n}\n\nexport { instrumentRoutingWithDefaults };\n//# sourceMappingURL=router.js.map\n","import { getActiveTransaction } from '@sentry/core';\nimport { logger } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n  if (WINDOW && WINDOW.document) {\n    WINDOW.document.addEventListener('visibilitychange', () => {\n      const activeTransaction = getActiveTransaction() ;\n      if (WINDOW.document.hidden && activeTransaction) {\n        const statusType = 'cancelled';\n\n        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n          logger.log(\n            `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n          );\n        // We should not set status if it is already set, this prevent important statuses like\n        // error or data loss from being overwritten on transaction.\n        if (!activeTransaction.status) {\n          activeTransaction.setStatus(statusType);\n        }\n        activeTransaction.setTag('visibilitychange', 'document.hidden');\n        activeTransaction.finish();\n      }\n    });\n  } else {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n      logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n  }\n}\n\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","import { getCurrentHub, addGlobalEventProcessor, prepareEvent, setContext, captureException } from '@sentry/core';\nimport { GLOBAL_OBJ, normalize, fill, htmlTreeAsString, logger, uuid4, SENTRY_XHR_DATA_KEY, dropUndefinedKeys, stringMatchesSomePattern, addInstrumentationHandler, browserPerformanceTimeOrigin, createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader, isNodeEnv } from '@sentry/utils';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and replay packages should `@sentry/browser` import\n// from `@sentry/replay` in the future\nconst WINDOW = GLOBAL_OBJ ;\n\nconst REPLAY_SESSION_KEY = 'sentryReplaySession';\nconst REPLAY_EVENT_NAME = 'replay_event';\nconst UNABLE_TO_SEND_REPLAY = 'Unable to send Replay';\n\n// The idle limit for a session after which recording is paused.\nconst SESSION_IDLE_PAUSE_DURATION = 300000; // 5 minutes in ms\n\n// The idle limit for a session after which the session expires.\nconst SESSION_IDLE_EXPIRE_DURATION = 900000; // 15 minutes in ms\n\n// The maximum length of a session\nconst MAX_SESSION_LIFE = 3600000; // 60 minutes in ms\n\n/** Default flush delays */\nconst DEFAULT_FLUSH_MIN_DELAY = 5000;\n// XXX: Temp fix for our debounce logic where `maxWait` would never occur if it\n// was the same as `wait`\nconst DEFAULT_FLUSH_MAX_DELAY = 5500;\n\n/* How long to wait for error checkouts */\nconst BUFFER_CHECKOUT_TIME = 60000;\n\nconst RETRY_BASE_INTERVAL = 5000;\nconst RETRY_MAX_COUNT = 3;\n\n/* The max (uncompressed) size in bytes of a network body. Any body larger than this will be truncated. */\nconst NETWORK_BODY_MAX_SIZE = 150000;\n\n/* The max size of a single console arg that is captured. Any arg larger than this will be truncated. */\nconst CONSOLE_ARG_MAX_SIZE = 5000;\n\n/* Min. time to wait before we consider something a slow click. */\nconst SLOW_CLICK_THRESHOLD = 3000;\n/* For scroll actions after a click, we only look for a very short time period to detect programmatic scrolling. */\nconst SLOW_CLICK_SCROLL_TIMEOUT = 300;\n/* Clicks in this time period are considered e.g. double/triple clicks. */\nconst MULTI_CLICK_TIMEOUT = 1000;\n\n/** When encountering a total segment size exceeding this size, stop the replay (as we cannot properly ingest it). */\nconst REPLAY_MAX_EVENT_BUFFER_SIZE = 20000000; // ~20MB\n\nvar NodeType$1;\n(function (NodeType) {\n    NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n    NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n    NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n    NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n    NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n    NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType$1 || (NodeType$1 = {}));\n\nfunction isElement(n) {\n    return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n    const host = n === null || n === void 0 ? void 0 : n.host;\n    return Boolean(host && host.shadowRoot && host.shadowRoot === n);\n}\nfunction isInputTypeMasked({ maskInputOptions, tagName, type, }) {\n    if (tagName.toLowerCase() === 'option') {\n        tagName = 'select';\n    }\n    const actualType = typeof type === 'string' ? type.toLowerCase() : undefined;\n    return (maskInputOptions[tagName.toLowerCase()] ||\n        (actualType && maskInputOptions[actualType]) ||\n        actualType === 'password' ||\n        (tagName === 'input' && !type && maskInputOptions['text']));\n}\nfunction hasInputMaskOptions({ tagName, type, maskInputOptions, maskInputSelector, }) {\n    return (maskInputSelector || isInputTypeMasked({ maskInputOptions, tagName, type }));\n}\nfunction maskInputValue({ input, maskInputSelector, unmaskInputSelector, maskInputOptions, tagName, type, value, maskInputFn, }) {\n    let text = value || '';\n    if (unmaskInputSelector && input.matches(unmaskInputSelector)) {\n        return text;\n    }\n    if (input.hasAttribute('data-rr-is-password')) {\n        type = 'password';\n    }\n    if (isInputTypeMasked({ maskInputOptions, tagName, type }) ||\n        (maskInputSelector && input.matches(maskInputSelector))) {\n        if (maskInputFn) {\n            text = maskInputFn(text);\n        }\n        else {\n            text = '*'.repeat(text.length);\n        }\n    }\n    return text;\n}\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\nfunction is2DCanvasBlank(canvas) {\n    const ctx = canvas.getContext('2d');\n    if (!ctx)\n        return true;\n    const chunkSize = 50;\n    for (let x = 0; x < canvas.width; x += chunkSize) {\n        for (let y = 0; y < canvas.height; y += chunkSize) {\n            const getImageData = ctx.getImageData;\n            const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\n                ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n                : getImageData;\n            const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\n            if (pixelBuffer.some((pixel) => pixel !== 0))\n                return false;\n        }\n    }\n    return true;\n}\nfunction getInputType(element) {\n    const type = element.type;\n    return element.hasAttribute('data-rr-is-password')\n        ? 'password'\n        : type\n            ? type.toLowerCase()\n            : null;\n}\nfunction getInputValue(el, tagName, type) {\n    typeof type === 'string' ? type.toLowerCase() : '';\n    if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\n        return el.getAttribute('value') || '';\n    }\n    return el.value;\n}\n\nlet _id = 1;\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\nconst IGNORED_NODE = -2;\nfunction defaultMaskFn(str) {\n    return str ? str.replace(/[\\S]/g, '*') : '';\n}\nfunction genId() {\n    return _id++;\n}\nfunction getValidTagName(element) {\n    if (element instanceof HTMLFormElement) {\n        return 'form';\n    }\n    const processedTagName = element.tagName.toLowerCase().trim();\n    if (tagNameRegex.test(processedTagName)) {\n        return 'div';\n    }\n    return processedTagName;\n}\nfunction getCssRulesString(s) {\n    try {\n        const rules = s.rules || s.cssRules;\n        return rules ? Array.from(rules).map(getCssRuleString).join('') : null;\n    }\n    catch (error) {\n        return null;\n    }\n}\nfunction getCssRuleString(rule) {\n    let cssStringified = rule.cssText;\n    if (isCSSImportRule(rule)) {\n        try {\n            cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\n        }\n        catch (_a) {\n        }\n    }\n    return validateStringifiedCssRule(cssStringified);\n}\nfunction validateStringifiedCssRule(cssStringified) {\n    if (cssStringified.indexOf(':') > -1) {\n        const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n        return cssStringified.replace(regex, '$1\\\\$2');\n    }\n    return cssStringified;\n}\nfunction isCSSImportRule(rule) {\n    return 'styleSheet' in rule;\n}\nfunction stringifyStyleSheet(sheet) {\n    return sheet.cssRules\n        ? Array.from(sheet.cssRules)\n            .map((rule) => rule.cssText ? validateStringifiedCssRule(rule.cssText) : '')\n            .join('')\n        : '';\n}\nfunction extractOrigin(url) {\n    let origin = '';\n    if (url.indexOf('//') > -1) {\n        origin = url.split('/').slice(0, 3).join('/');\n    }\n    else {\n        origin = url.split('/')[0];\n    }\n    origin = origin.split('?')[0];\n    return origin;\n}\nlet canvasService;\nlet canvasCtx;\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absoluteToStylesheet(cssText, href) {\n    return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\n        const filePath = path1 || path2 || path3;\n        const maybeQuote = quote1 || quote2 || '';\n        if (!filePath) {\n            return origin;\n        }\n        if (!RELATIVE_PATH.test(filePath)) {\n            return `url(${maybeQuote}${filePath}${maybeQuote})`;\n        }\n        if (DATA_URI.test(filePath)) {\n            return `url(${maybeQuote}${filePath}${maybeQuote})`;\n        }\n        if (filePath[0] === '/') {\n            return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n        }\n        const stack = href.split('/');\n        const parts = filePath.split('/');\n        stack.pop();\n        for (const part of parts) {\n            if (part === '.') {\n                continue;\n            }\n            else if (part === '..') {\n                stack.pop();\n            }\n            else {\n                stack.push(part);\n            }\n        }\n        return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\n    });\n}\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n    if (attributeValue.trim() === '') {\n        return attributeValue;\n    }\n    let pos = 0;\n    function collectCharacters(regEx) {\n        let chars;\n        let match = regEx.exec(attributeValue.substring(pos));\n        if (match) {\n            chars = match[0];\n            pos += chars.length;\n            return chars;\n        }\n        return '';\n    }\n    let output = [];\n    while (true) {\n        collectCharacters(SRCSET_COMMAS_OR_SPACES);\n        if (pos >= attributeValue.length) {\n            break;\n        }\n        let url = collectCharacters(SRCSET_NOT_SPACES);\n        if (url.slice(-1) === ',') {\n            url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n            output.push(url);\n        }\n        else {\n            let descriptorsStr = '';\n            url = absoluteToDoc(doc, url);\n            let inParens = false;\n            while (true) {\n                let c = attributeValue.charAt(pos);\n                if (c === '') {\n                    output.push((url + descriptorsStr).trim());\n                    break;\n                }\n                else if (!inParens) {\n                    if (c === ',') {\n                        pos += 1;\n                        output.push((url + descriptorsStr).trim());\n                        break;\n                    }\n                    else if (c === '(') {\n                        inParens = true;\n                    }\n                }\n                else {\n                    if (c === ')') {\n                        inParens = false;\n                    }\n                }\n                descriptorsStr += c;\n                pos += 1;\n            }\n        }\n    }\n    return output.join(', ');\n}\nfunction absoluteToDoc(doc, attributeValue) {\n    if (!attributeValue || attributeValue.trim() === '') {\n        return attributeValue;\n    }\n    const a = doc.createElement('a');\n    a.href = attributeValue;\n    return a.href;\n}\nfunction isSVGElement(el) {\n    return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\n}\nfunction getHref() {\n    const a = document.createElement('a');\n    a.href = '';\n    return a.href;\n}\nfunction transformAttribute(doc, element, _tagName, _name, value, maskAllText, unmaskTextSelector, maskTextFn) {\n    if (!value) {\n        return value;\n    }\n    const name = _name.toLowerCase();\n    const tagName = _tagName.toLowerCase();\n    if (name === 'src' || name === 'href') {\n        return absoluteToDoc(doc, value);\n    }\n    else if (name === 'xlink:href' && value[0] !== '#') {\n        return absoluteToDoc(doc, value);\n    }\n    else if (name === 'background' &&\n        (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\n        return absoluteToDoc(doc, value);\n    }\n    else if (name === 'srcset') {\n        return getAbsoluteSrcsetString(doc, value);\n    }\n    else if (name === 'style') {\n        return absoluteToStylesheet(value, getHref());\n    }\n    else if (tagName === 'object' && name === 'data') {\n        return absoluteToDoc(doc, value);\n    }\n    else if (maskAllText &&\n        _shouldMaskAttribute(element, name, tagName, unmaskTextSelector)) {\n        return maskTextFn ? maskTextFn(value) : defaultMaskFn(value);\n    }\n    return value;\n}\nfunction _shouldMaskAttribute(element, attribute, tagName, unmaskTextSelector) {\n    if (unmaskTextSelector && element.matches(unmaskTextSelector)) {\n        return false;\n    }\n    return (['placeholder', 'title', 'aria-label'].indexOf(attribute) > -1 ||\n        (tagName === 'input' &&\n            attribute === 'value' &&\n            element.hasAttribute('type') &&\n            ['submit', 'button'].indexOf(element.getAttribute('type').toLowerCase()) > -1));\n}\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\n    if (unblockSelector && element.matches(unblockSelector)) {\n        return false;\n    }\n    if (typeof blockClass === 'string') {\n        if (element.classList.contains(blockClass)) {\n            return true;\n        }\n    }\n    else {\n        for (let eIndex = 0; eIndex < element.classList.length; eIndex++) {\n            const className = element.classList[eIndex];\n            if (blockClass.test(className)) {\n                return true;\n            }\n        }\n    }\n    if (blockSelector) {\n        return element.matches(blockSelector);\n    }\n    return false;\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextSelector, maskAllText) {\n    if (!node) {\n        return false;\n    }\n    if (node.nodeType !== node.ELEMENT_NODE) {\n        return needMaskingText(node.parentNode, maskTextClass, maskTextSelector, unmaskTextSelector, maskAllText);\n    }\n    if (unmaskTextSelector) {\n        if (node.matches(unmaskTextSelector) ||\n            node.closest(unmaskTextSelector)) {\n            return false;\n        }\n    }\n    if (maskAllText) {\n        return true;\n    }\n    if (typeof maskTextClass === 'string') {\n        if (node.classList.contains(maskTextClass)) {\n            return true;\n        }\n    }\n    else {\n        for (let eIndex = 0; eIndex < node.classList.length; eIndex++) {\n            const className = node.classList[eIndex];\n            if (maskTextClass.test(className)) {\n                return true;\n            }\n        }\n    }\n    if (maskTextSelector) {\n        if (node.matches(maskTextSelector)) {\n            return true;\n        }\n    }\n    return needMaskingText(node.parentNode, maskTextClass, maskTextSelector, unmaskTextSelector, maskAllText);\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n    const win = iframeEl.contentWindow;\n    if (!win) {\n        return;\n    }\n    let fired = false;\n    let readyState;\n    try {\n        readyState = win.document.readyState;\n    }\n    catch (error) {\n        return;\n    }\n    if (readyState !== 'complete') {\n        const timer = setTimeout(() => {\n            if (!fired) {\n                listener();\n                fired = true;\n            }\n        }, iframeLoadTimeout);\n        iframeEl.addEventListener('load', () => {\n            clearTimeout(timer);\n            fired = true;\n            listener();\n        });\n        return;\n    }\n    const blankUrl = 'about:blank';\n    if (win.location.href !== blankUrl ||\n        iframeEl.src === blankUrl ||\n        iframeEl.src === '') {\n        setTimeout(listener, 0);\n        return;\n    }\n    iframeEl.addEventListener('load', listener);\n}\nfunction serializeNode(n, options) {\n    var _a;\n    const { doc, blockClass, blockSelector, unblockSelector, maskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputSelector, unmaskInputSelector, maskAllText, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, } = options;\n    let rootId;\n    if (doc.__sn) {\n        const docId = doc.__sn.id;\n        rootId = docId === 1 ? undefined : docId;\n    }\n    switch (n.nodeType) {\n        case n.DOCUMENT_NODE:\n            if (n.compatMode !== 'CSS1Compat') {\n                return {\n                    type: NodeType$1.Document,\n                    childNodes: [],\n                    compatMode: n.compatMode,\n                    rootId,\n                };\n            }\n            else {\n                return {\n                    type: NodeType$1.Document,\n                    childNodes: [],\n                    rootId,\n                };\n            }\n        case n.DOCUMENT_TYPE_NODE:\n            return {\n                type: NodeType$1.DocumentType,\n                name: n.name,\n                publicId: n.publicId,\n                systemId: n.systemId,\n                rootId,\n            };\n        case n.ELEMENT_NODE:\n            const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\n            const tagName = getValidTagName(n);\n            let attributes = {};\n            for (const { name, value } of Array.from(n.attributes)) {\n                if (!skipAttribute(tagName, name)) {\n                    attributes[name] = transformAttribute(doc, n, tagName, name, value, maskAllText, unmaskTextSelector, maskTextFn);\n                }\n            }\n            if (tagName === 'link' && inlineStylesheet) {\n                const stylesheet = Array.from(doc.styleSheets).find((s) => {\n                    return s.href === n.href;\n                });\n                let cssText = null;\n                if (stylesheet) {\n                    cssText = getCssRulesString(stylesheet);\n                }\n                if (cssText) {\n                    delete attributes.rel;\n                    delete attributes.href;\n                    attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n                }\n            }\n            if (tagName === 'style' &&\n                n.sheet &&\n                !(n.innerText ||\n                    n.textContent ||\n                    '').trim().length) {\n                const cssText = getCssRulesString(n.sheet);\n                if (cssText) {\n                    attributes._cssText = absoluteToStylesheet(cssText, getHref());\n                }\n            }\n            if (tagName === 'input' ||\n                tagName === 'textarea' ||\n                tagName === 'select' ||\n                tagName === 'option') {\n                const el = n;\n                const type = getInputType(el);\n                const value = getInputValue(el, tagName.toUpperCase(), type);\n                const checked = n.checked;\n                if (type !== 'submit' &&\n                    type !== 'button' &&\n                    value) {\n                    attributes.value = maskInputValue({\n                        input: el,\n                        type,\n                        tagName,\n                        value,\n                        maskInputSelector,\n                        unmaskInputSelector,\n                        maskInputOptions,\n                        maskInputFn,\n                    });\n                }\n                if (checked) {\n                    attributes.checked = checked;\n                }\n            }\n            if (tagName === 'option') {\n                if (n.selected && !maskInputOptions['select']) {\n                    attributes.selected = true;\n                }\n                else {\n                    delete attributes.selected;\n                }\n            }\n            if (tagName === 'canvas' && recordCanvas) {\n                if (n.__context === '2d') {\n                    if (!is2DCanvasBlank(n)) {\n                        attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n                    }\n                }\n                else if (!('__context' in n)) {\n                    const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n                    const blankCanvas = document.createElement('canvas');\n                    blankCanvas.width = n.width;\n                    blankCanvas.height = n.height;\n                    const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n                    if (canvasDataURL !== blankCanvasDataURL) {\n                        attributes.rr_dataURL = canvasDataURL;\n                    }\n                }\n            }\n            if (tagName === 'img' && inlineImages) {\n                if (!canvasService) {\n                    canvasService = doc.createElement('canvas');\n                    canvasCtx = canvasService.getContext('2d');\n                }\n                const image = n;\n                const oldValue = image.crossOrigin;\n                image.crossOrigin = 'anonymous';\n                const recordInlineImage = () => {\n                    try {\n                        canvasService.width = image.naturalWidth;\n                        canvasService.height = image.naturalHeight;\n                        canvasCtx.drawImage(image, 0, 0);\n                        attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n                    }\n                    catch (err) {\n                        console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\n                    }\n                    oldValue\n                        ? (attributes.crossOrigin = oldValue)\n                        : delete attributes.crossOrigin;\n                };\n                if (image.complete && image.naturalWidth !== 0)\n                    recordInlineImage();\n                else\n                    image.onload = recordInlineImage;\n            }\n            if (tagName === 'audio' || tagName === 'video') {\n                attributes.rr_mediaState = n.paused\n                    ? 'paused'\n                    : 'played';\n                attributes.rr_mediaCurrentTime = n.currentTime;\n            }\n            if (n.scrollLeft) {\n                attributes.rr_scrollLeft = n.scrollLeft;\n            }\n            if (n.scrollTop) {\n                attributes.rr_scrollTop = n.scrollTop;\n            }\n            if (needBlock) {\n                const { width, height } = n.getBoundingClientRect();\n                attributes = {\n                    class: attributes.class,\n                    rr_width: `${width}px`,\n                    rr_height: `${height}px`,\n                };\n            }\n            if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\n                if (!n.contentDocument) {\n                    attributes.rr_src = attributes.src;\n                }\n                delete attributes.src;\n            }\n            return {\n                type: NodeType$1.Element,\n                tagName,\n                attributes,\n                childNodes: [],\n                isSVG: isSVGElement(n) || undefined,\n                needBlock,\n                rootId,\n            };\n        case n.TEXT_NODE:\n            const parentTagName = n.parentNode && n.parentNode.tagName;\n            let textContent = n.textContent;\n            const isStyle = parentTagName === 'STYLE' ? true : undefined;\n            const isScript = parentTagName === 'SCRIPT' ? true : undefined;\n            if (isStyle && textContent) {\n                try {\n                    if (n.nextSibling || n.previousSibling) {\n                    }\n                    else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\n                        textContent = stringifyStyleSheet(n.parentNode.sheet);\n                    }\n                }\n                catch (err) {\n                    console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\n                }\n                textContent = absoluteToStylesheet(textContent, getHref());\n            }\n            if (isScript) {\n                textContent = 'SCRIPT_PLACEHOLDER';\n            }\n            if (parentTagName === 'TEXTAREA' && textContent) {\n                textContent = '';\n            }\n            else if (parentTagName === 'OPTION' && textContent) {\n                const option = n.parentNode;\n                textContent = maskInputValue({\n                    input: option,\n                    type: null,\n                    tagName: parentTagName,\n                    value: textContent,\n                    maskInputSelector,\n                    unmaskInputSelector,\n                    maskInputOptions,\n                    maskInputFn,\n                });\n            }\n            else if (!isStyle &&\n                !isScript &&\n                needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextSelector, maskAllText) &&\n                textContent) {\n                textContent = maskTextFn\n                    ? maskTextFn(textContent)\n                    : defaultMaskFn(textContent);\n            }\n            return {\n                type: NodeType$1.Text,\n                textContent: textContent || '',\n                isStyle,\n                rootId,\n            };\n        case n.CDATA_SECTION_NODE:\n            return {\n                type: NodeType$1.CDATA,\n                textContent: '',\n                rootId,\n            };\n        case n.COMMENT_NODE:\n            return {\n                type: NodeType$1.Comment,\n                textContent: n.textContent || '',\n                rootId,\n            };\n        default:\n            return false;\n    }\n}\nfunction lowerIfExists(maybeAttr) {\n    if (maybeAttr === undefined || maybeAttr === null) {\n        return '';\n    }\n    else {\n        return maybeAttr.toLowerCase();\n    }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n    if (slimDOMOptions.comment && sn.type === NodeType$1.Comment) {\n        return true;\n    }\n    else if (sn.type === NodeType$1.Element) {\n        if (slimDOMOptions.script &&\n            (sn.tagName === 'script' ||\n                (sn.tagName === 'link' &&\n                    (sn.attributes.rel === 'preload' ||\n                        sn.attributes.rel === 'modulepreload') &&\n                    sn.attributes.as === 'script') ||\n                (sn.tagName === 'link' &&\n                    sn.attributes.rel === 'prefetch' &&\n                    typeof sn.attributes.href === 'string' &&\n                    sn.attributes.href.endsWith('.js')))) {\n            return true;\n        }\n        else if (slimDOMOptions.headFavicon &&\n            ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n                (sn.tagName === 'meta' &&\n                    (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\n                        lowerIfExists(sn.attributes.name) === 'application-name' ||\n                        lowerIfExists(sn.attributes.rel) === 'icon' ||\n                        lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n                        lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\n            return true;\n        }\n        else if (sn.tagName === 'meta') {\n            if (slimDOMOptions.headMetaDescKeywords &&\n                lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n                return true;\n            }\n            else if (slimDOMOptions.headMetaSocial &&\n                (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\n                    lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n                    lowerIfExists(sn.attributes.name) === 'pinterest')) {\n                return true;\n            }\n            else if (slimDOMOptions.headMetaRobots &&\n                (lowerIfExists(sn.attributes.name) === 'robots' ||\n                    lowerIfExists(sn.attributes.name) === 'googlebot' ||\n                    lowerIfExists(sn.attributes.name) === 'bingbot')) {\n                return true;\n            }\n            else if (slimDOMOptions.headMetaHttpEquiv &&\n                sn.attributes['http-equiv'] !== undefined) {\n                return true;\n            }\n            else if (slimDOMOptions.headMetaAuthorship &&\n                (lowerIfExists(sn.attributes.name) === 'author' ||\n                    lowerIfExists(sn.attributes.name) === 'generator' ||\n                    lowerIfExists(sn.attributes.name) === 'framework' ||\n                    lowerIfExists(sn.attributes.name) === 'publisher' ||\n                    lowerIfExists(sn.attributes.name) === 'progid' ||\n                    lowerIfExists(sn.attributes.property).match(/^article:/) ||\n                    lowerIfExists(sn.attributes.property).match(/^product:/))) {\n                return true;\n            }\n            else if (slimDOMOptions.headMetaVerification &&\n                (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n                    lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n                    lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n                    lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n                    lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n                    lowerIfExists(sn.attributes.name) === 'verification' ||\n                    lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nfunction serializeNodeWithId(n, options) {\n    const { doc, map, blockClass, blockSelector, unblockSelector, maskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputSelector, unmaskInputSelector, maskAllText, maskInputOptions = {}, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, keepIframeSrcFn = () => false, } = options;\n    let { preserveWhiteSpace = true } = options;\n    const _serializedNode = serializeNode(n, {\n        doc,\n        blockClass,\n        blockSelector,\n        unblockSelector,\n        maskTextClass,\n        maskTextSelector,\n        unmaskTextSelector,\n        inlineStylesheet,\n        maskInputSelector,\n        unmaskInputSelector,\n        maskAllText,\n        maskInputOptions,\n        maskTextFn,\n        maskInputFn,\n        dataURLOptions,\n        inlineImages,\n        recordCanvas,\n        keepIframeSrcFn,\n    });\n    if (!_serializedNode) {\n        console.warn(n, 'not serialized');\n        return null;\n    }\n    let id;\n    if ('__sn' in n) {\n        id = n.__sn.id;\n    }\n    else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n        (!preserveWhiteSpace &&\n            _serializedNode.type === NodeType$1.Text &&\n            !_serializedNode.isStyle &&\n            !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\n        id = IGNORED_NODE;\n    }\n    else {\n        id = genId();\n    }\n    const serializedNode = Object.assign(_serializedNode, { id });\n    n.__sn = serializedNode;\n    if (id === IGNORED_NODE) {\n        return null;\n    }\n    map[id] = n;\n    if (onSerialize) {\n        onSerialize(n);\n    }\n    let recordChild = !skipChild;\n    if (serializedNode.type === NodeType$1.Element) {\n        recordChild = recordChild && !serializedNode.needBlock;\n        delete serializedNode.needBlock;\n        if (n.shadowRoot)\n            serializedNode.isShadowHost = true;\n    }\n    if ((serializedNode.type === NodeType$1.Document ||\n        serializedNode.type === NodeType$1.Element) &&\n        recordChild) {\n        if (slimDOMOptions.headWhitespace &&\n            _serializedNode.type === NodeType$1.Element &&\n            _serializedNode.tagName === 'head') {\n            preserveWhiteSpace = false;\n        }\n        const bypassOptions = {\n            doc,\n            map,\n            blockClass,\n            blockSelector,\n            unblockSelector,\n            maskTextClass,\n            maskTextSelector,\n            unmaskTextSelector,\n            skipChild,\n            inlineStylesheet,\n            maskInputSelector,\n            unmaskInputSelector,\n            maskAllText,\n            maskInputOptions,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            keepIframeSrcFn,\n        };\n        for (const childN of Array.from(n.childNodes)) {\n            const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n            if (serializedChildNode) {\n                serializedNode.childNodes.push(serializedChildNode);\n            }\n        }\n        if (isElement(n) && n.shadowRoot) {\n            for (const childN of Array.from(n.shadowRoot.childNodes)) {\n                const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n                if (serializedChildNode) {\n                    serializedChildNode.isShadow = true;\n                    serializedNode.childNodes.push(serializedChildNode);\n                }\n            }\n        }\n    }\n    if (n.parentNode && isShadowRoot(n.parentNode)) {\n        serializedNode.isShadow = true;\n    }\n    if (serializedNode.type === NodeType$1.Element &&\n        serializedNode.tagName === 'iframe') {\n        onceIframeLoaded(n, () => {\n            const iframeDoc = n.contentDocument;\n            if (iframeDoc && onIframeLoad) {\n                const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n                    doc: iframeDoc,\n                    map,\n                    blockClass,\n                    blockSelector,\n                    unblockSelector,\n                    maskTextClass,\n                    maskTextSelector,\n                    unmaskTextSelector,\n                    skipChild: false,\n                    inlineStylesheet,\n                    maskInputSelector,\n                    unmaskInputSelector,\n                    maskAllText,\n                    maskInputOptions,\n                    maskTextFn,\n                    maskInputFn,\n                    slimDOMOptions,\n                    dataURLOptions,\n                    inlineImages,\n                    recordCanvas,\n                    preserveWhiteSpace,\n                    onSerialize,\n                    onIframeLoad,\n                    iframeLoadTimeout,\n                    keepIframeSrcFn,\n                });\n                if (serializedIframeNode) {\n                    onIframeLoad(n, serializedIframeNode);\n                }\n            }\n        }, iframeLoadTimeout);\n    }\n    return serializedNode;\n}\nfunction snapshot(n, options) {\n    const { blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskInputSelector = null, unmaskInputSelector = null, maskAllText = false, maskAllInputs = false, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\n    const idNodeMap = {};\n    const maskInputOptions = maskAllInputs === true\n        ? {\n            color: true,\n            date: true,\n            'datetime-local': true,\n            email: true,\n            month: true,\n            number: true,\n            range: true,\n            search: true,\n            tel: true,\n            text: true,\n            time: true,\n            url: true,\n            week: true,\n            textarea: true,\n            select: true,\n        }\n        : maskAllInputs === false\n            ? {}\n            : maskAllInputs;\n    const slimDOMOptions = slimDOM === true || slimDOM === 'all'\n        ?\n            {\n                script: true,\n                comment: true,\n                headFavicon: true,\n                headWhitespace: true,\n                headMetaDescKeywords: slimDOM === 'all',\n                headMetaSocial: true,\n                headMetaRobots: true,\n                headMetaHttpEquiv: true,\n                headMetaAuthorship: true,\n                headMetaVerification: true,\n            }\n        : slimDOM === false\n            ? {}\n            : slimDOM;\n    return [\n        serializeNodeWithId(n, {\n            doc: n,\n            map: idNodeMap,\n            blockClass,\n            blockSelector,\n            unblockSelector,\n            maskTextClass,\n            maskTextSelector,\n            unmaskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputSelector,\n            unmaskInputSelector,\n            maskAllText,\n            maskInputOptions,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            keepIframeSrcFn,\n        }),\n        idNodeMap,\n    ];\n}\nfunction skipAttribute(tagName, attributeName, value) {\n    return ((tagName === 'video' || tagName === 'audio') && attributeName === 'autoplay');\n}\n\nvar EventType;\n(function (EventType) {\n    EventType[EventType[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n    EventType[EventType[\"Load\"] = 1] = \"Load\";\n    EventType[EventType[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n    EventType[EventType[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n    EventType[EventType[\"Meta\"] = 4] = \"Meta\";\n    EventType[EventType[\"Custom\"] = 5] = \"Custom\";\n    EventType[EventType[\"Plugin\"] = 6] = \"Plugin\";\n})(EventType || (EventType = {}));\nvar IncrementalSource;\n(function (IncrementalSource) {\n    IncrementalSource[IncrementalSource[\"Mutation\"] = 0] = \"Mutation\";\n    IncrementalSource[IncrementalSource[\"MouseMove\"] = 1] = \"MouseMove\";\n    IncrementalSource[IncrementalSource[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n    IncrementalSource[IncrementalSource[\"Scroll\"] = 3] = \"Scroll\";\n    IncrementalSource[IncrementalSource[\"ViewportResize\"] = 4] = \"ViewportResize\";\n    IncrementalSource[IncrementalSource[\"Input\"] = 5] = \"Input\";\n    IncrementalSource[IncrementalSource[\"TouchMove\"] = 6] = \"TouchMove\";\n    IncrementalSource[IncrementalSource[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n    IncrementalSource[IncrementalSource[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n    IncrementalSource[IncrementalSource[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n    IncrementalSource[IncrementalSource[\"Font\"] = 10] = \"Font\";\n    IncrementalSource[IncrementalSource[\"Log\"] = 11] = \"Log\";\n    IncrementalSource[IncrementalSource[\"Drag\"] = 12] = \"Drag\";\n    IncrementalSource[IncrementalSource[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n})(IncrementalSource || (IncrementalSource = {}));\nvar MouseInteractions;\n(function (MouseInteractions) {\n    MouseInteractions[MouseInteractions[\"MouseUp\"] = 0] = \"MouseUp\";\n    MouseInteractions[MouseInteractions[\"MouseDown\"] = 1] = \"MouseDown\";\n    MouseInteractions[MouseInteractions[\"Click\"] = 2] = \"Click\";\n    MouseInteractions[MouseInteractions[\"ContextMenu\"] = 3] = \"ContextMenu\";\n    MouseInteractions[MouseInteractions[\"DblClick\"] = 4] = \"DblClick\";\n    MouseInteractions[MouseInteractions[\"Focus\"] = 5] = \"Focus\";\n    MouseInteractions[MouseInteractions[\"Blur\"] = 6] = \"Blur\";\n    MouseInteractions[MouseInteractions[\"TouchStart\"] = 7] = \"TouchStart\";\n    MouseInteractions[MouseInteractions[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n    MouseInteractions[MouseInteractions[\"TouchEnd\"] = 9] = \"TouchEnd\";\n    MouseInteractions[MouseInteractions[\"TouchCancel\"] = 10] = \"TouchCancel\";\n})(MouseInteractions || (MouseInteractions = {}));\nvar CanvasContext;\n(function (CanvasContext) {\n    CanvasContext[CanvasContext[\"2D\"] = 0] = \"2D\";\n    CanvasContext[CanvasContext[\"WebGL\"] = 1] = \"WebGL\";\n    CanvasContext[CanvasContext[\"WebGL2\"] = 2] = \"WebGL2\";\n})(CanvasContext || (CanvasContext = {}));\nvar MediaInteractions;\n(function (MediaInteractions) {\n    MediaInteractions[MediaInteractions[\"Play\"] = 0] = \"Play\";\n    MediaInteractions[MediaInteractions[\"Pause\"] = 1] = \"Pause\";\n    MediaInteractions[MediaInteractions[\"Seeked\"] = 2] = \"Seeked\";\n    MediaInteractions[MediaInteractions[\"VolumeChange\"] = 3] = \"VolumeChange\";\n})(MediaInteractions || (MediaInteractions = {}));\nvar ReplayerEvents;\n(function (ReplayerEvents) {\n    ReplayerEvents[\"Start\"] = \"start\";\n    ReplayerEvents[\"Pause\"] = \"pause\";\n    ReplayerEvents[\"Resume\"] = \"resume\";\n    ReplayerEvents[\"Resize\"] = \"resize\";\n    ReplayerEvents[\"Finish\"] = \"finish\";\n    ReplayerEvents[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n    ReplayerEvents[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n    ReplayerEvents[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n    ReplayerEvents[\"SkipStart\"] = \"skip-start\";\n    ReplayerEvents[\"SkipEnd\"] = \"skip-end\";\n    ReplayerEvents[\"MouseInteraction\"] = \"mouse-interaction\";\n    ReplayerEvents[\"EventCast\"] = \"event-cast\";\n    ReplayerEvents[\"CustomEvent\"] = \"custom-event\";\n    ReplayerEvents[\"Flush\"] = \"flush\";\n    ReplayerEvents[\"StateChange\"] = \"state-change\";\n    ReplayerEvents[\"PlayBack\"] = \"play-back\";\n})(ReplayerEvents || (ReplayerEvents = {}));\n\nfunction on(type, fn, target = document) {\n    const options = { capture: true, passive: true };\n    target.addEventListener(type, fn, options);\n    return () => target.removeEventListener(type, fn, options);\n}\nfunction createMirror() {\n    return {\n        map: {},\n        getId(n) {\n            if (!n || !n.__sn) {\n                return -1;\n            }\n            return n.__sn.id;\n        },\n        getNode(id) {\n            return this.map[id] || null;\n        },\n        removeNodeFromMap(n) {\n            const id = n.__sn && n.__sn.id;\n            delete this.map[id];\n            if (n.childNodes) {\n                n.childNodes.forEach((child) => this.removeNodeFromMap(child));\n            }\n        },\n        has(id) {\n            return this.map.hasOwnProperty(id);\n        },\n        reset() {\n            this.map = {};\n        },\n    };\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n    '\\r\\n' +\n    'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n    '\\r\\n' +\n    'or you can use record.mirror to access the mirror instance during recording.';\nlet _mirror = {\n    map: {},\n    getId() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n        return -1;\n    },\n    getNode() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n        return null;\n    },\n    removeNodeFromMap() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    },\n    has() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n        return false;\n    },\n    reset() {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n    _mirror = new Proxy(_mirror, {\n        get(target, prop, receiver) {\n            if (prop === 'map') {\n                console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n            }\n            return Reflect.get(target, prop, receiver);\n        },\n    });\n}\nfunction throttle$1(func, wait, options = {}) {\n    let timeout = null;\n    let previous = 0;\n    return function (arg) {\n        let now = Date.now();\n        if (!previous && options.leading === false) {\n            previous = now;\n        }\n        let remaining = wait - (now - previous);\n        let context = this;\n        let args = arguments;\n        if (remaining <= 0 || remaining > wait) {\n            if (timeout) {\n                clearTimeout(timeout);\n                timeout = null;\n            }\n            previous = now;\n            func.apply(context, args);\n        }\n        else if (!timeout && options.trailing !== false) {\n            timeout = setTimeout(() => {\n                previous = options.leading === false ? 0 : Date.now();\n                timeout = null;\n                func.apply(context, args);\n            }, remaining);\n        }\n    };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n    const original = win.Object.getOwnPropertyDescriptor(target, key);\n    win.Object.defineProperty(target, key, isRevoked\n        ? d\n        : {\n            set(value) {\n                setTimeout(() => {\n                    d.set.call(this, value);\n                }, 0);\n                if (original && original.set) {\n                    original.set.call(this, value);\n                }\n            },\n        });\n    return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n    try {\n        if (!(name in source)) {\n            return () => { };\n        }\n        const original = source[name];\n        const wrapped = replacement(original);\n        if (typeof wrapped === 'function') {\n            wrapped.prototype = wrapped.prototype || {};\n            Object.defineProperties(wrapped, {\n                __rrweb_original__: {\n                    enumerable: false,\n                    value: original,\n                },\n            });\n        }\n        source[name] = wrapped;\n        return () => {\n            source[name] = original;\n        };\n    }\n    catch (_a) {\n        return () => { };\n    }\n}\nfunction getWindowHeight() {\n    return (window.innerHeight ||\n        (document.documentElement && document.documentElement.clientHeight) ||\n        (document.body && document.body.clientHeight));\n}\nfunction getWindowWidth() {\n    return (window.innerWidth ||\n        (document.documentElement && document.documentElement.clientWidth) ||\n        (document.body && document.body.clientWidth));\n}\nfunction isBlocked(node, blockClass, blockSelector, unblockSelector) {\n    if (!node) {\n        return false;\n    }\n    if (node.nodeType === node.ELEMENT_NODE) {\n        let needBlock = false;\n        const needUnblock = unblockSelector && node.matches(unblockSelector);\n        if (typeof blockClass === 'string') {\n            if (node.closest !== undefined) {\n                needBlock =\n                    !needUnblock &&\n                        node.closest('.' + blockClass) !== null;\n            }\n            else {\n                needBlock =\n                    !needUnblock && node.classList.contains(blockClass);\n            }\n        }\n        else {\n            !needUnblock &&\n                node.classList.forEach((className) => {\n                    if (blockClass.test(className)) {\n                        needBlock = true;\n                    }\n                });\n        }\n        if (!needBlock && blockSelector) {\n            needBlock = node.matches(blockSelector);\n        }\n        return ((!needUnblock && needBlock) ||\n            isBlocked(node.parentNode, blockClass, blockSelector, unblockSelector));\n    }\n    if (node.nodeType === node.TEXT_NODE) {\n        return isBlocked(node.parentNode, blockClass, blockSelector, unblockSelector);\n    }\n    return isBlocked(node.parentNode, blockClass, blockSelector, unblockSelector);\n}\nfunction isIgnored(n) {\n    if ('__sn' in n) {\n        return n.__sn.id === IGNORED_NODE;\n    }\n    return false;\n}\nfunction isAncestorRemoved(target, mirror) {\n    if (isShadowRoot(target)) {\n        return false;\n    }\n    const id = mirror.getId(target);\n    if (!mirror.has(id)) {\n        return true;\n    }\n    if (target.parentNode &&\n        target.parentNode.nodeType === target.DOCUMENT_NODE) {\n        return false;\n    }\n    if (!target.parentNode) {\n        return true;\n    }\n    return isAncestorRemoved(target.parentNode, mirror);\n}\nfunction isTouchEvent(event) {\n    return Boolean(event.changedTouches);\n}\nfunction polyfill(win = window) {\n    if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n        win.NodeList.prototype.forEach = Array.prototype\n            .forEach;\n    }\n    if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n        win.DOMTokenList.prototype.forEach = Array.prototype\n            .forEach;\n    }\n    if (!Node.prototype.contains) {\n        Node.prototype.contains = function contains(node) {\n            if (!(0 in arguments)) {\n                throw new TypeError('1 argument is required');\n            }\n            do {\n                if (this === node) {\n                    return true;\n                }\n            } while ((node = node && node.parentNode));\n            return false;\n        };\n    }\n}\nfunction isIframeINode(node) {\n    if ('__sn' in node) {\n        return (node.__sn.type === NodeType$1.Element && node.__sn.tagName === 'iframe');\n    }\n    return false;\n}\nfunction hasShadowRoot(n) {\n    return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\n}\n\nfunction isNodeInLinkedList(n) {\n    return '__ln' in n;\n}\nclass DoubleLinkedList {\n    constructor() {\n        this.length = 0;\n        this.head = null;\n    }\n    get(position) {\n        if (position >= this.length) {\n            throw new Error('Position outside of list range');\n        }\n        let current = this.head;\n        for (let index = 0; index < position; index++) {\n            current = (current === null || current === void 0 ? void 0 : current.next) || null;\n        }\n        return current;\n    }\n    addNode(n) {\n        const node = {\n            value: n,\n            previous: null,\n            next: null,\n        };\n        n.__ln = node;\n        if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n            const current = n.previousSibling.__ln.next;\n            node.next = current;\n            node.previous = n.previousSibling.__ln;\n            n.previousSibling.__ln.next = node;\n            if (current) {\n                current.previous = node;\n            }\n        }\n        else if (n.nextSibling &&\n            isNodeInLinkedList(n.nextSibling) &&\n            n.nextSibling.__ln.previous) {\n            const current = n.nextSibling.__ln.previous;\n            node.previous = current;\n            node.next = n.nextSibling.__ln;\n            n.nextSibling.__ln.previous = node;\n            if (current) {\n                current.next = node;\n            }\n        }\n        else {\n            if (this.head) {\n                this.head.previous = node;\n            }\n            node.next = this.head;\n            this.head = node;\n        }\n        this.length++;\n    }\n    removeNode(n) {\n        const current = n.__ln;\n        if (!this.head) {\n            return;\n        }\n        if (!current.previous) {\n            this.head = current.next;\n            if (this.head) {\n                this.head.previous = null;\n            }\n        }\n        else {\n            current.previous.next = current.next;\n            if (current.next) {\n                current.next.previous = current.previous;\n            }\n        }\n        if (n.__ln) {\n            delete n.__ln;\n        }\n        this.length--;\n    }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nfunction isINode(n) {\n    return '__sn' in n;\n}\nclass MutationBuffer {\n    constructor() {\n        this.frozen = false;\n        this.locked = false;\n        this.texts = [];\n        this.attributes = [];\n        this.removes = [];\n        this.mapRemoves = [];\n        this.movedMap = {};\n        this.addedSet = new Set();\n        this.movedSet = new Set();\n        this.droppedSet = new Set();\n        this.processMutations = (mutations) => {\n            mutations.forEach(this.processMutation);\n            this.emit();\n        };\n        this.emit = () => {\n            if (this.frozen || this.locked) {\n                return;\n            }\n            const adds = [];\n            const addList = new DoubleLinkedList();\n            const getNextId = (n) => {\n                let ns = n;\n                let nextId = IGNORED_NODE;\n                while (nextId === IGNORED_NODE) {\n                    ns = ns && ns.nextSibling;\n                    nextId = ns && this.mirror.getId(ns);\n                }\n                return nextId;\n            };\n            const pushAdd = (n) => {\n                var _a, _b, _c, _d, _e;\n                const shadowHost = n.getRootNode\n                    ? (_a = n.getRootNode()) === null || _a === void 0 ? void 0 : _a.host\n                    : null;\n                let rootShadowHost = shadowHost;\n                while ((_c = (_b = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _b === void 0 ? void 0 : _b.call(rootShadowHost)) === null || _c === void 0 ? void 0 : _c.host)\n                    rootShadowHost =\n                        ((_e = (_d = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _d === void 0 ? void 0 : _d.call(rootShadowHost)) === null || _e === void 0 ? void 0 : _e.host) ||\n                            null;\n                const notInDoc = !this.doc.contains(n) &&\n                    (!rootShadowHost || !this.doc.contains(rootShadowHost));\n                if (!n.parentNode || notInDoc) {\n                    return;\n                }\n                const parentId = isShadowRoot(n.parentNode)\n                    ? this.mirror.getId(shadowHost)\n                    : this.mirror.getId(n.parentNode);\n                const nextId = getNextId(n);\n                if (parentId === -1 || nextId === -1) {\n                    return addList.addNode(n);\n                }\n                let sn = serializeNodeWithId(n, {\n                    doc: this.doc,\n                    map: this.mirror.map,\n                    blockClass: this.blockClass,\n                    blockSelector: this.blockSelector,\n                    unblockSelector: this.unblockSelector,\n                    maskTextClass: this.maskTextClass,\n                    maskTextSelector: this.maskTextSelector,\n                    unmaskTextSelector: this.unmaskTextSelector,\n                    maskInputSelector: this.maskInputSelector,\n                    unmaskInputSelector: this.unmaskInputSelector,\n                    skipChild: true,\n                    inlineStylesheet: this.inlineStylesheet,\n                    maskAllText: this.maskAllText,\n                    maskInputOptions: this.maskInputOptions,\n                    maskTextFn: this.maskTextFn,\n                    maskInputFn: this.maskInputFn,\n                    slimDOMOptions: this.slimDOMOptions,\n                    recordCanvas: this.recordCanvas,\n                    inlineImages: this.inlineImages,\n                    onSerialize: (currentN) => {\n                        if (isIframeINode(currentN)) {\n                            this.iframeManager.addIframe(currentN);\n                        }\n                        if (hasShadowRoot(n)) {\n                            this.shadowDomManager.addShadowRoot(n.shadowRoot, document);\n                        }\n                    },\n                    onIframeLoad: (iframe, childSn) => {\n                        this.iframeManager.attachIframe(iframe, childSn);\n                        this.shadowDomManager.observeAttachShadow(iframe);\n                    },\n                });\n                if (sn) {\n                    adds.push({\n                        parentId,\n                        nextId,\n                        node: sn,\n                    });\n                }\n            };\n            while (this.mapRemoves.length) {\n                this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n            }\n            for (const n of this.movedSet) {\n                if (isParentRemoved(this.removes, n, this.mirror) &&\n                    !this.movedSet.has(n.parentNode)) {\n                    continue;\n                }\n                pushAdd(n);\n            }\n            for (const n of this.addedSet) {\n                if (!isAncestorInSet(this.droppedSet, n) &&\n                    !isParentRemoved(this.removes, n, this.mirror)) {\n                    pushAdd(n);\n                }\n                else if (isAncestorInSet(this.movedSet, n)) {\n                    pushAdd(n);\n                }\n                else {\n                    this.droppedSet.add(n);\n                }\n            }\n            let candidate = null;\n            while (addList.length) {\n                let node = null;\n                if (candidate) {\n                    const parentId = this.mirror.getId(candidate.value.parentNode);\n                    const nextId = getNextId(candidate.value);\n                    if (parentId !== -1 && nextId !== -1) {\n                        node = candidate;\n                    }\n                }\n                if (!node) {\n                    for (let index = addList.length - 1; index >= 0; index--) {\n                        const _node = addList.get(index);\n                        if (_node) {\n                            const parentId = this.mirror.getId(_node.value.parentNode);\n                            const nextId = getNextId(_node.value);\n                            if (parentId !== -1 && nextId !== -1) {\n                                node = _node;\n                                break;\n                            }\n                        }\n                    }\n                }\n                if (!node) {\n                    while (addList.head) {\n                        addList.removeNode(addList.head.value);\n                    }\n                    break;\n                }\n                candidate = node.previous;\n                addList.removeNode(node.value);\n                pushAdd(node.value);\n            }\n            const payload = {\n                texts: this.texts\n                    .map((text) => ({\n                    id: this.mirror.getId(text.node),\n                    value: text.value,\n                }))\n                    .filter((text) => this.mirror.has(text.id)),\n                attributes: this.attributes\n                    .map((attribute) => ({\n                    id: this.mirror.getId(attribute.node),\n                    attributes: attribute.attributes,\n                }))\n                    .filter((attribute) => this.mirror.has(attribute.id)),\n                removes: this.removes,\n                adds,\n            };\n            if (!payload.texts.length &&\n                !payload.attributes.length &&\n                !payload.removes.length &&\n                !payload.adds.length) {\n                return;\n            }\n            this.texts = [];\n            this.attributes = [];\n            this.removes = [];\n            this.addedSet = new Set();\n            this.movedSet = new Set();\n            this.droppedSet = new Set();\n            this.movedMap = {};\n            this.mutationCb(payload);\n        };\n        this.processMutation = (m) => {\n            if (isIgnored(m.target)) {\n                return;\n            }\n            switch (m.type) {\n                case 'characterData': {\n                    const value = m.target.textContent;\n                    if (!isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector) && value !== m.oldValue) {\n                        this.texts.push({\n                            value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextSelector, this.maskAllText) && value\n                                ? this.maskTextFn\n                                    ? this.maskTextFn(value)\n                                    : value.replace(/[\\S]/g, '*')\n                                : value,\n                            node: m.target,\n                        });\n                    }\n                    break;\n                }\n                case 'attributes': {\n                    const target = m.target;\n                    let value = target.getAttribute(m.attributeName);\n                    if (m.attributeName === 'value') {\n                        value = maskInputValue({\n                            input: target,\n                            maskInputSelector: this.maskInputSelector,\n                            unmaskInputSelector: this.unmaskInputSelector,\n                            maskInputOptions: this.maskInputOptions,\n                            tagName: target.tagName,\n                            type: target.getAttribute('type'),\n                            value,\n                            maskInputFn: this.maskInputFn,\n                        });\n                    }\n                    if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector) || value === m.oldValue) {\n                        return;\n                    }\n                    let item = this.attributes.find((a) => a.node === m.target);\n                    if (!item) {\n                        item = {\n                            node: m.target,\n                            attributes: {},\n                        };\n                        this.attributes.push(item);\n                    }\n                    if (m.attributeName === 'type' &&\n                        target.tagName === 'INPUT' &&\n                        (m.oldValue || '').toLowerCase() === 'password') {\n                        target.setAttribute('data-rr-is-password', 'true');\n                    }\n                    if (m.attributeName === 'style') {\n                        const old = this.doc.createElement('span');\n                        if (m.oldValue) {\n                            old.setAttribute('style', m.oldValue);\n                        }\n                        if (item.attributes.style === undefined ||\n                            item.attributes.style === null) {\n                            item.attributes.style = {};\n                        }\n                        try {\n                            const styleObj = item.attributes.style;\n                            for (const pname of Array.from(target.style)) {\n                                const newValue = target.style.getPropertyValue(pname);\n                                const newPriority = target.style.getPropertyPriority(pname);\n                                if (newValue !== old.style.getPropertyValue(pname) ||\n                                    newPriority !== old.style.getPropertyPriority(pname)) {\n                                    if (newPriority === '') {\n                                        styleObj[pname] = newValue;\n                                    }\n                                    else {\n                                        styleObj[pname] = [newValue, newPriority];\n                                    }\n                                }\n                            }\n                            for (const pname of Array.from(old.style)) {\n                                if (target.style.getPropertyValue(pname) === '') {\n                                    styleObj[pname] = false;\n                                }\n                            }\n                        }\n                        catch (error) {\n                            console.warn('[rrweb] Error when parsing update to style attribute:', error);\n                        }\n                    }\n                    else {\n                        const element = m.target;\n                        item.attributes[m.attributeName] = transformAttribute(this.doc, element, element.tagName, m.attributeName, value, this.maskAllText, this.unmaskTextSelector, this.maskTextFn);\n                    }\n                    break;\n                }\n                case 'childList': {\n                    m.addedNodes.forEach((n) => this.genAdds(n, m.target));\n                    m.removedNodes.forEach((n) => {\n                        const nodeId = this.mirror.getId(n);\n                        const parentId = isShadowRoot(m.target)\n                            ? this.mirror.getId(m.target.host)\n                            : this.mirror.getId(m.target);\n                        if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector) || isIgnored(n)) {\n                            return;\n                        }\n                        if (this.addedSet.has(n)) {\n                            deepDelete(this.addedSet, n);\n                            this.droppedSet.add(n);\n                        }\n                        else if (this.addedSet.has(m.target) && nodeId === -1) ;\n                        else if (isAncestorRemoved(m.target, this.mirror)) ;\n                        else if (this.movedSet.has(n) &&\n                            this.movedMap[moveKey(nodeId, parentId)]) {\n                            deepDelete(this.movedSet, n);\n                        }\n                        else {\n                            this.removes.push({\n                                parentId,\n                                id: nodeId,\n                                isShadow: isShadowRoot(m.target) ? true : undefined,\n                            });\n                        }\n                        this.mapRemoves.push(n);\n                    });\n                    break;\n                }\n            }\n        };\n        this.genAdds = (n, target) => {\n            if (target && isBlocked(target, this.blockClass, this.blockSelector, this.unblockSelector)) {\n                return;\n            }\n            if (isINode(n)) {\n                if (isIgnored(n)) {\n                    return;\n                }\n                this.movedSet.add(n);\n                let targetId = null;\n                if (target && isINode(target)) {\n                    targetId = target.__sn.id;\n                }\n                if (targetId) {\n                    this.movedMap[moveKey(n.__sn.id, targetId)] = true;\n                }\n            }\n            else {\n                this.addedSet.add(n);\n                this.droppedSet.delete(n);\n            }\n            if (!isBlocked(n, this.blockClass, this.blockSelector, this.unblockSelector))\n                n.childNodes.forEach((childN) => this.genAdds(childN));\n        };\n    }\n    init(options) {\n        [\n            'mutationCb',\n            'blockClass',\n            'blockSelector',\n            'unblockSelector',\n            'maskTextClass',\n            'maskTextSelector',\n            'unmaskTextSelector',\n            'maskInputSelector',\n            'unmaskInputSelector',\n            'inlineStylesheet',\n            'maskAllText',\n            'maskInputOptions',\n            'maskTextFn',\n            'maskInputFn',\n            'recordCanvas',\n            'inlineImages',\n            'slimDOMOptions',\n            'doc',\n            'mirror',\n            'iframeManager',\n            'shadowDomManager',\n            'canvasManager',\n        ].forEach((key) => {\n            this[key] = options[key];\n        });\n    }\n    freeze() {\n        this.frozen = true;\n        this.canvasManager.freeze();\n    }\n    unfreeze() {\n        this.frozen = false;\n        this.canvasManager.unfreeze();\n        this.emit();\n    }\n    isFrozen() {\n        return this.frozen;\n    }\n    lock() {\n        this.locked = true;\n        this.canvasManager.lock();\n    }\n    unlock() {\n        this.locked = false;\n        this.canvasManager.unlock();\n        this.emit();\n    }\n    reset() {\n        this.shadowDomManager.reset();\n        this.canvasManager.reset();\n    }\n}\nfunction deepDelete(addsSet, n) {\n    addsSet.delete(n);\n    n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction isParentRemoved(removes, n, mirror) {\n    const { parentNode } = n;\n    if (!parentNode) {\n        return false;\n    }\n    const parentId = mirror.getId(parentNode);\n    if (removes.some((r) => r.id === parentId)) {\n        return true;\n    }\n    return isParentRemoved(removes, parentNode, mirror);\n}\nfunction isAncestorInSet(set, n) {\n    const { parentNode } = n;\n    if (!parentNode) {\n        return false;\n    }\n    if (set.has(parentNode)) {\n        return true;\n    }\n    return isAncestorInSet(set, parentNode);\n}\n\nconst callbackWrapper = (cb) => {\n    const rrwebWrapped = (...rest) => {\n        try {\n            return cb(...rest);\n        }\n        catch (error) {\n            try {\n                error.__rrweb__ = true;\n            }\n            catch (_a) {\n            }\n            throw error;\n        }\n    };\n    return rrwebWrapped;\n};\n\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n    try {\n        if ('composedPath' in event) {\n            const path = event.composedPath();\n            if (path.length) {\n                return path[0];\n            }\n        }\n        else if ('path' in event && event.path.length) {\n            return event.path[0];\n        }\n    }\n    catch (_a) { }\n    return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n    var _a, _b;\n    const mutationBuffer = new MutationBuffer();\n    mutationBuffers.push(mutationBuffer);\n    mutationBuffer.init(options);\n    let mutationObserverCtor = window.MutationObserver ||\n        window.__rrMutationObserver;\n    const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\n    if (angularZoneSymbol &&\n        window[angularZoneSymbol]) {\n        mutationObserverCtor = window[angularZoneSymbol];\n    }\n    const observer = new mutationObserverCtor(callbackWrapper((mutations) => {\n        if (options.onMutation && options.onMutation(mutations) === false) {\n            return;\n        }\n        mutationBuffer.processMutations(mutations);\n    }));\n    observer.observe(rootEl, {\n        attributes: true,\n        attributeOldValue: true,\n        characterData: true,\n        characterDataOldValue: true,\n        childList: true,\n        subtree: true,\n    });\n    return observer;\n}\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\n    if (sampling.mousemove === false) {\n        return () => { };\n    }\n    const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\n    const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\n        ? sampling.mousemoveCallback\n        : 500;\n    let positions = [];\n    let timeBaseline;\n    const wrappedCb = throttle$1((source) => {\n        const totalOffset = Date.now() - timeBaseline;\n        callbackWrapper(mousemoveCb)(positions.map((p) => {\n            p.timeOffset -= totalOffset;\n            return p;\n        }), source);\n        positions = [];\n        timeBaseline = null;\n    }, callbackThreshold);\n    const updatePosition = throttle$1((evt) => {\n        const target = getEventTarget(evt);\n        const { clientX, clientY } = isTouchEvent(evt)\n            ? evt.changedTouches[0]\n            : evt;\n        if (!timeBaseline) {\n            timeBaseline = Date.now();\n        }\n        positions.push({\n            x: clientX,\n            y: clientY,\n            id: mirror.getId(target),\n            timeOffset: Date.now() - timeBaseline,\n        });\n        wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\n            ? IncrementalSource.Drag\n            : evt instanceof MouseEvent\n                ? IncrementalSource.MouseMove\n                : IncrementalSource.TouchMove);\n    }, threshold, {\n        trailing: false,\n    });\n    const handlers = [\n        on('mousemove', callbackWrapper(updatePosition), doc),\n        on('touchmove', callbackWrapper(updatePosition), doc),\n        on('drag', callbackWrapper(updatePosition), doc),\n    ];\n    return callbackWrapper(() => {\n        handlers.forEach((h) => h());\n    });\n}\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\n    if (sampling.mouseInteraction === false) {\n        return () => { };\n    }\n    const disableMap = sampling.mouseInteraction === true ||\n        sampling.mouseInteraction === undefined\n        ? {}\n        : sampling.mouseInteraction;\n    const handlers = [];\n    const getHandler = (eventKey) => {\n        return (event) => {\n            const target = getEventTarget(event);\n            if (isBlocked(target, blockClass, blockSelector, unblockSelector)) {\n                return;\n            }\n            const e = isTouchEvent(event) ? event.changedTouches[0] : event;\n            if (!e) {\n                return;\n            }\n            const id = mirror.getId(target);\n            const { clientX, clientY } = e;\n            callbackWrapper(mouseInteractionCb)({\n                type: MouseInteractions[eventKey],\n                id,\n                x: clientX,\n                y: clientY,\n            });\n        };\n    };\n    Object.keys(MouseInteractions)\n        .filter((key) => Number.isNaN(Number(key)) &&\n        !key.endsWith('_Departed') &&\n        disableMap[key] !== false)\n        .forEach((eventKey) => {\n        const eventName = eventKey.toLowerCase();\n        const handler = callbackWrapper(getHandler(eventKey));\n        handlers.push(on(eventName, handler, doc));\n    });\n    return callbackWrapper(() => {\n        handlers.forEach((h) => h());\n    });\n}\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\n    const updatePosition = throttle$1((evt) => {\n        const target = getEventTarget(evt);\n        if (!target ||\n            isBlocked(target, blockClass, blockSelector, unblockSelector)) {\n            return;\n        }\n        const id = mirror.getId(target);\n        if (target === doc) {\n            const scrollEl = (doc.scrollingElement || doc.documentElement);\n            callbackWrapper(scrollCb)({\n                id,\n                x: scrollEl.scrollLeft,\n                y: scrollEl.scrollTop,\n            });\n        }\n        else {\n            callbackWrapper(scrollCb)({\n                id,\n                x: target.scrollLeft,\n                y: target.scrollTop,\n            });\n        }\n    }, sampling.scroll || 100);\n    return on('scroll', callbackWrapper(updatePosition), doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\n    let lastH = -1;\n    let lastW = -1;\n    const updateDimension = throttle$1(() => {\n        const height = getWindowHeight();\n        const width = getWindowWidth();\n        if (lastH !== height || lastW !== width) {\n            callbackWrapper(viewportResizeCb)({\n                width: Number(width),\n                height: Number(height),\n            });\n            lastH = height;\n            lastW = width;\n        }\n    }, 200);\n    return on('resize', callbackWrapper(updateDimension), window);\n}\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\n    const value = Object.assign({}, v);\n    if (!enable)\n        delete value.userTriggered;\n    return value;\n}\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\nconst lastInputValueMap = new WeakMap();\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, unblockSelector, ignoreClass, ignoreSelector, maskInputSelector, unmaskInputSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\n    function eventHandler(event) {\n        let target = getEventTarget(event);\n        const tagName = target && target.tagName;\n        const userTriggered = event.isTrusted;\n        if (tagName === 'OPTION')\n            target = target.parentElement;\n        if (!target ||\n            !tagName ||\n            INPUT_TAGS.indexOf(tagName) < 0 ||\n            isBlocked(target, blockClass, blockSelector, unblockSelector)) {\n            return;\n        }\n        const el = target;\n        const type = getInputType(el);\n        if (el.classList.contains(ignoreClass) ||\n            (ignoreSelector && el.matches(ignoreSelector))) {\n            return;\n        }\n        let text = getInputValue(el, tagName, type);\n        let isChecked = false;\n        if (type === 'radio' || type === 'checkbox') {\n            isChecked = target.checked;\n        }\n        if (hasInputMaskOptions({\n            maskInputOptions,\n            maskInputSelector,\n            tagName,\n            type,\n        })) {\n            text = maskInputValue({\n                input: el,\n                maskInputOptions,\n                maskInputSelector,\n                unmaskInputSelector,\n                tagName,\n                type,\n                value: text,\n                maskInputFn,\n            });\n        }\n        cbWithDedup(target, callbackWrapper(wrapEventWithUserTriggeredFlag)({ text, isChecked, userTriggered }, userTriggeredOnInput));\n        const name = target.name;\n        if (type === 'radio' && name && isChecked) {\n            doc\n                .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\n                .forEach((el) => {\n                if (el !== target) {\n                    const text = maskInputValue({\n                        input: el,\n                        maskInputOptions,\n                        maskInputSelector,\n                        unmaskInputSelector,\n                        tagName,\n                        type,\n                        value: getInputValue(el, tagName, type),\n                        maskInputFn,\n                    });\n                    cbWithDedup(el, callbackWrapper(wrapEventWithUserTriggeredFlag)({\n                        text,\n                        isChecked: !isChecked,\n                        userTriggered: false,\n                    }, userTriggeredOnInput));\n                }\n            });\n        }\n    }\n    function cbWithDedup(target, v) {\n        const lastInputValue = lastInputValueMap.get(target);\n        if (!lastInputValue ||\n            lastInputValue.text !== v.text ||\n            lastInputValue.isChecked !== v.isChecked) {\n            lastInputValueMap.set(target, v);\n            const id = mirror.getId(target);\n            inputCb(Object.assign(Object.assign({}, v), { id }));\n        }\n    }\n    const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\n    const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\n    const propertyDescriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');\n    const hookProperties = [\n        [HTMLInputElement.prototype, 'value'],\n        [HTMLInputElement.prototype, 'checked'],\n        [HTMLSelectElement.prototype, 'value'],\n        [HTMLTextAreaElement.prototype, 'value'],\n        [HTMLSelectElement.prototype, 'selectedIndex'],\n        [HTMLOptionElement.prototype, 'selected'],\n    ];\n    if (propertyDescriptor && propertyDescriptor.set) {\n        handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\n            set() {\n                callbackWrapper(eventHandler)({ target: this });\n            },\n        })));\n    }\n    return callbackWrapper(() => {\n        handlers.forEach((h) => h());\n    });\n}\nfunction getNestedCSSRulePositions(rule) {\n    const positions = [];\n    function recurse(childRule, pos) {\n        if ((hasNestedCSSRule('CSSGroupingRule') &&\n            childRule.parentRule instanceof CSSGroupingRule) ||\n            (hasNestedCSSRule('CSSMediaRule') &&\n                childRule.parentRule instanceof CSSMediaRule) ||\n            (hasNestedCSSRule('CSSSupportsRule') &&\n                childRule.parentRule instanceof CSSSupportsRule) ||\n            (hasNestedCSSRule('CSSConditionRule') &&\n                childRule.parentRule instanceof CSSConditionRule)) {\n            const rules = Array.from(childRule.parentRule.cssRules);\n            const index = rules.indexOf(childRule);\n            pos.unshift(index);\n        }\n        else {\n            const rules = Array.from(childRule.parentStyleSheet.cssRules);\n            const index = rules.indexOf(childRule);\n            pos.unshift(index);\n        }\n        return pos;\n    }\n    return recurse(rule, positions);\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror }, { win }) {\n    if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n        return () => { };\n    }\n    const insertRule = win.CSSStyleSheet.prototype.insertRule;\n    win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\n            const [rule, index] = argumentsList;\n            const id = mirror.getId(thisArg.ownerNode);\n            if (id !== -1) {\n                styleSheetRuleCb({\n                    id,\n                    adds: [{ rule, index }],\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        }),\n    });\n    const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n    win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\n            const [index] = argumentsList;\n            const id = mirror.getId(thisArg.ownerNode);\n            if (id !== -1) {\n                styleSheetRuleCb({\n                    id,\n                    removes: [{ index }],\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        }),\n    });\n    const supportedNestedCSSRuleTypes = {};\n    if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\n        supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n    }\n    else {\n        if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\n            supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n        }\n        if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\n            supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n        }\n        if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\n            supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n        }\n    }\n    const unmodifiedFunctions = {};\n    Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n        unmodifiedFunctions[typeKey] = {\n            insertRule: type.prototype.insertRule,\n            deleteRule: type.prototype.deleteRule,\n        };\n        type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\n            apply: callbackWrapper((target, thisArg, argumentsList) => {\n                const [rule, index] = argumentsList;\n                const id = mirror.getId(thisArg.parentStyleSheet.ownerNode);\n                if (id !== -1) {\n                    styleSheetRuleCb({\n                        id,\n                        adds: [\n                            {\n                                rule,\n                                index: [\n                                    ...getNestedCSSRulePositions(thisArg),\n                                    index || 0,\n                                ],\n                            },\n                        ],\n                    });\n                }\n                return target.apply(thisArg, argumentsList);\n            }),\n        });\n        type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\n            apply: callbackWrapper((target, thisArg, argumentsList) => {\n                const [index] = argumentsList;\n                const id = mirror.getId(thisArg.parentStyleSheet.ownerNode);\n                if (id !== -1) {\n                    styleSheetRuleCb({\n                        id,\n                        removes: [\n                            { index: [...getNestedCSSRulePositions(thisArg), index] },\n                        ],\n                    });\n                }\n                return target.apply(thisArg, argumentsList);\n            }),\n        });\n    });\n    return callbackWrapper(() => {\n        win.CSSStyleSheet.prototype.insertRule = insertRule;\n        win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n        Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n            type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n            type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n        });\n    });\n}\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror }, { win }) {\n    const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n    win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\n            var _a, _b;\n            const [property, value, priority] = argumentsList;\n            const id = mirror.getId((_b = (_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n            if (id !== -1) {\n                styleDeclarationCb({\n                    id,\n                    set: {\n                        property,\n                        value,\n                        priority,\n                    },\n                    index: getNestedCSSRulePositions(thisArg.parentRule),\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        }),\n    });\n    const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n    win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\n            var _a, _b;\n            const [property] = argumentsList;\n            const id = mirror.getId((_b = (_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet) === null || _b === void 0 ? void 0 : _b.ownerNode);\n            if (id !== -1) {\n                styleDeclarationCb({\n                    id,\n                    remove: {\n                        property,\n                    },\n                    index: getNestedCSSRulePositions(thisArg.parentRule),\n                });\n            }\n            return target.apply(thisArg, argumentsList);\n        }),\n    });\n    return callbackWrapper(() => {\n        win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n        win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n    });\n}\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, unblockSelector, mirror, sampling, }) {\n    const handler = (type) => throttle$1(callbackWrapper((event) => {\n        const target = getEventTarget(event);\n        if (!target ||\n            isBlocked(target, blockClass, blockSelector, unblockSelector)) {\n            return;\n        }\n        const { currentTime, volume, muted } = target;\n        mediaInteractionCb({\n            type,\n            id: mirror.getId(target),\n            currentTime,\n            volume,\n            muted,\n        });\n    }), sampling.media || 500);\n    const handlers = [\n        on('play', handler(0)),\n        on('pause', handler(1)),\n        on('seeked', handler(2)),\n        on('volumechange', handler(3)),\n    ];\n    return callbackWrapper(() => {\n        handlers.forEach((h) => h());\n    });\n}\nfunction initFontObserver({ fontCb, doc }) {\n    const win = doc.defaultView;\n    if (!win) {\n        return () => { };\n    }\n    const handlers = [];\n    const fontMap = new WeakMap();\n    const originalFontFace = win.FontFace;\n    win.FontFace = function FontFace(family, source, descriptors) {\n        const fontFace = new originalFontFace(family, source, descriptors);\n        fontMap.set(fontFace, {\n            family,\n            buffer: typeof source !== 'string',\n            descriptors,\n            fontSource: typeof source === 'string'\n                ? source\n                :\n                    JSON.stringify(Array.from(new Uint8Array(source))),\n        });\n        return fontFace;\n    };\n    const restoreHandler = patch(doc.fonts, 'add', function (original) {\n        return function (fontFace) {\n            setTimeout(() => {\n                const p = fontMap.get(fontFace);\n                if (p) {\n                    fontCb(p);\n                    fontMap.delete(fontFace);\n                }\n            }, 0);\n            return original.apply(this, [fontFace]);\n        };\n    });\n    handlers.push(() => {\n        win.FontFace = originalFontFace;\n    });\n    handlers.push(restoreHandler);\n    return callbackWrapper(() => {\n        handlers.forEach((h) => h());\n    });\n}\nfunction mergeHooks(o, hooks) {\n    const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, } = o;\n    o.mutationCb = (...p) => {\n        if (hooks.mutation) {\n            hooks.mutation(...p);\n        }\n        mutationCb(...p);\n    };\n    o.mousemoveCb = (...p) => {\n        if (hooks.mousemove) {\n            hooks.mousemove(...p);\n        }\n        mousemoveCb(...p);\n    };\n    o.mouseInteractionCb = (...p) => {\n        if (hooks.mouseInteraction) {\n            hooks.mouseInteraction(...p);\n        }\n        mouseInteractionCb(...p);\n    };\n    o.scrollCb = (...p) => {\n        if (hooks.scroll) {\n            hooks.scroll(...p);\n        }\n        scrollCb(...p);\n    };\n    o.viewportResizeCb = (...p) => {\n        if (hooks.viewportResize) {\n            hooks.viewportResize(...p);\n        }\n        viewportResizeCb(...p);\n    };\n    o.inputCb = (...p) => {\n        if (hooks.input) {\n            hooks.input(...p);\n        }\n        inputCb(...p);\n    };\n    o.mediaInteractionCb = (...p) => {\n        if (hooks.mediaInteaction) {\n            hooks.mediaInteaction(...p);\n        }\n        mediaInteractionCb(...p);\n    };\n    o.styleSheetRuleCb = (...p) => {\n        if (hooks.styleSheetRule) {\n            hooks.styleSheetRule(...p);\n        }\n        styleSheetRuleCb(...p);\n    };\n    o.styleDeclarationCb = (...p) => {\n        if (hooks.styleDeclaration) {\n            hooks.styleDeclaration(...p);\n        }\n        styleDeclarationCb(...p);\n    };\n    o.canvasMutationCb = (...p) => {\n        if (hooks.canvasMutation) {\n            hooks.canvasMutation(...p);\n        }\n        canvasMutationCb(...p);\n    };\n    o.fontCb = (...p) => {\n        if (hooks.font) {\n            hooks.font(...p);\n        }\n        fontCb(...p);\n    };\n}\nfunction initObservers(o, hooks = {}) {\n    const currentWindow = o.doc.defaultView;\n    if (!currentWindow) {\n        return () => { };\n    }\n    mergeHooks(o, hooks);\n    const mutationObserver = initMutationObserver(o, o.doc);\n    const mousemoveHandler = initMoveObserver(o);\n    const mouseInteractionHandler = initMouseInteractionObserver(o);\n    const scrollHandler = initScrollObserver(o);\n    const viewportResizeHandler = initViewportResizeObserver(o);\n    const inputHandler = initInputObserver(o);\n    const mediaInteractionHandler = initMediaInteractionObserver(o);\n    const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n    const styleDeclarationObserver = initStyleDeclarationObserver(o, {\n        win: currentWindow,\n    });\n    const fontObserver = o.collectFonts ? initFontObserver(o) : () => { };\n    const pluginHandlers = [];\n    for (const plugin of o.plugins) {\n        pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\n    }\n    return callbackWrapper(() => {\n        mutationBuffers.forEach((b) => b.reset());\n        mutationObserver.disconnect();\n        mousemoveHandler();\n        mouseInteractionHandler();\n        scrollHandler();\n        viewportResizeHandler();\n        inputHandler();\n        mediaInteractionHandler();\n        try {\n            styleSheetObserver();\n            styleDeclarationObserver();\n        }\n        catch (e) {\n        }\n        fontObserver();\n        pluginHandlers.forEach((h) => h());\n    });\n}\nfunction hasNestedCSSRule(prop) {\n    return typeof window[prop] !== 'undefined';\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n    return Boolean(typeof window[prop] !== 'undefined' &&\n        window[prop].prototype &&\n        'insertRule' in window[prop].prototype &&\n        'deleteRule' in window[prop].prototype);\n}\n\nclass IframeManager {\n    constructor(options) {\n        this.iframes = new WeakMap();\n        this.mutationCb = options.mutationCb;\n    }\n    addIframe(iframeEl) {\n        this.iframes.set(iframeEl, true);\n    }\n    addLoadListener(cb) {\n        this.loadListener = cb;\n    }\n    attachIframe(iframeEl, childSn) {\n        var _a;\n        this.mutationCb({\n            adds: [\n                {\n                    parentId: iframeEl.__sn.id,\n                    nextId: null,\n                    node: childSn,\n                },\n            ],\n            removes: [],\n            texts: [],\n            attributes: [],\n            isAttachIframe: true,\n        });\n        (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\n    }\n}\n\nclass ShadowDomManager {\n    constructor(options) {\n        this.restorePatches = [];\n        this.mutationCb = options.mutationCb;\n        this.scrollCb = options.scrollCb;\n        this.bypassOptions = options.bypassOptions;\n        this.mirror = options.mirror;\n        const manager = this;\n        this.restorePatches.push(patch(HTMLElement.prototype, 'attachShadow', function (original) {\n            return function () {\n                const shadowRoot = original.apply(this, arguments);\n                if (this.shadowRoot)\n                    manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\n                return shadowRoot;\n            };\n        }));\n    }\n    addShadowRoot(shadowRoot, doc) {\n        initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\n        initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\n    }\n    observeAttachShadow(iframeElement) {\n        if (iframeElement.contentWindow) {\n            const manager = this;\n            this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\n                return function () {\n                    const shadowRoot = original.apply(this, arguments);\n                    if (this.shadowRoot)\n                        manager.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\n                    return shadowRoot;\n                };\n            }));\n        }\n    }\n    reset() {\n        this.restorePatches.forEach((restorePatch) => restorePatch());\n    }\n}\n\n/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n\nfunction __rest(s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n}\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, unblockSelector, blockSelector, mirror) {\n    const handlers = [];\n    const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n    for (const prop of props2D) {\n        try {\n            if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\n                continue;\n            }\n            const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\n                return function (...args) {\n                    if (!isBlocked(this.canvas, blockClass, blockSelector, unblockSelector)) {\n                        setTimeout(() => {\n                            const recordArgs = [...args];\n                            if (prop === 'drawImage') {\n                                if (recordArgs[0] &&\n                                    recordArgs[0] instanceof HTMLCanvasElement) {\n                                    const canvas = recordArgs[0];\n                                    const ctx = canvas.getContext('2d');\n                                    let imgd = ctx === null || ctx === void 0 ? void 0 : ctx.getImageData(0, 0, canvas.width, canvas.height);\n                                    let pix = imgd === null || imgd === void 0 ? void 0 : imgd.data;\n                                    recordArgs[0] = JSON.stringify(pix);\n                                }\n                            }\n                            cb(this.canvas, {\n                                type: CanvasContext['2D'],\n                                property: prop,\n                                args: recordArgs,\n                            });\n                        }, 0);\n                    }\n                    return original.apply(this, args);\n                };\n            });\n            handlers.push(restoreHandler);\n        }\n        catch (_a) {\n            const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n                set(v) {\n                    cb(this.canvas, {\n                        type: CanvasContext['2D'],\n                        property: prop,\n                        args: [v],\n                        setter: true,\n                    });\n                },\n            });\n            handlers.push(hookHandler);\n        }\n    }\n    return () => {\n        handlers.forEach((h) => h());\n    };\n}\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector) {\n    const handlers = [];\n    try {\n        const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\n            return function (contextType, ...args) {\n                if (!isBlocked(this, blockClass, blockSelector, unblockSelector)) {\n                    if (!('__context' in this))\n                        this.__context = contextType;\n                }\n                return original.apply(this, [contextType, ...args]);\n            };\n        });\n        handlers.push(restoreHandler);\n    }\n    catch (_a) {\n        console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n    }\n    return () => {\n        handlers.forEach((h) => h());\n    };\n}\n\n/*\n * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n    var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n    for (i = 0; i < len; i += 3) {\n        base64 += chars[bytes[i] >> 2];\n        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n        base64 += chars[bytes[i + 2] & 63];\n    }\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + '=';\n    }\n    else if (len % 3 === 1) {\n        base64 = base64.substring(0, base64.length - 2) + '==';\n    }\n    return base64;\n};\n\nconst webGLVarMap = new Map();\nfunction variableListFor(ctx, ctor) {\n    let contextMap = webGLVarMap.get(ctx);\n    if (!contextMap) {\n        contextMap = new Map();\n        webGLVarMap.set(ctx, contextMap);\n    }\n    if (!contextMap.has(ctor)) {\n        contextMap.set(ctor, []);\n    }\n    return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n    if (!value ||\n        !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\n        return;\n    const name = value.constructor.name;\n    const list = variableListFor(ctx, name);\n    let index = list.indexOf(value);\n    if (index === -1) {\n        index = list.length;\n        list.push(value);\n    }\n    return index;\n};\nfunction serializeArg(value, win, ctx) {\n    if (value instanceof Array) {\n        return value.map((arg) => serializeArg(arg, win, ctx));\n    }\n    else if (value === null) {\n        return value;\n    }\n    else if (value instanceof Float32Array ||\n        value instanceof Float64Array ||\n        value instanceof Int32Array ||\n        value instanceof Uint32Array ||\n        value instanceof Uint8Array ||\n        value instanceof Uint16Array ||\n        value instanceof Int16Array ||\n        value instanceof Int8Array ||\n        value instanceof Uint8ClampedArray) {\n        const name = value.constructor.name;\n        return {\n            rr_type: name,\n            args: [Object.values(value)],\n        };\n    }\n    else if (value instanceof ArrayBuffer) {\n        const name = value.constructor.name;\n        const base64 = encode(value);\n        return {\n            rr_type: name,\n            base64,\n        };\n    }\n    else if (value instanceof DataView) {\n        const name = value.constructor.name;\n        return {\n            rr_type: name,\n            args: [\n                serializeArg(value.buffer, win, ctx),\n                value.byteOffset,\n                value.byteLength,\n            ],\n        };\n    }\n    else if (value instanceof HTMLImageElement) {\n        const name = value.constructor.name;\n        const { src } = value;\n        return {\n            rr_type: name,\n            src,\n        };\n    }\n    else if (value instanceof ImageData) {\n        const name = value.constructor.name;\n        return {\n            rr_type: name,\n            args: [serializeArg(value.data, win, ctx), value.width, value.height],\n        };\n    }\n    else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n        const name = value.constructor.name;\n        const index = saveWebGLVar(value, win, ctx);\n        return {\n            rr_type: name,\n            index: index,\n        };\n    }\n    return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n    return [...args].map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n    const webGLConstructorNames = [\n        'WebGLActiveInfo',\n        'WebGLBuffer',\n        'WebGLFramebuffer',\n        'WebGLProgram',\n        'WebGLRenderbuffer',\n        'WebGLShader',\n        'WebGLShaderPrecisionFormat',\n        'WebGLTexture',\n        'WebGLUniformLocation',\n        'WebGLVertexArrayObject',\n        'WebGLVertexArrayObjectOES',\n    ];\n    const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\n    return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\n};\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, unblockSelector, blockSelector, mirror, win) {\n    const handlers = [];\n    const props = Object.getOwnPropertyNames(prototype);\n    for (const prop of props) {\n        try {\n            if (typeof prototype[prop] !== 'function') {\n                continue;\n            }\n            const restoreHandler = patch(prototype, prop, function (original) {\n                return function (...args) {\n                    const result = original.apply(this, args);\n                    saveWebGLVar(result, win, prototype);\n                    if (!isBlocked(this.canvas, blockClass, blockSelector, unblockSelector)) {\n                        const id = mirror.getId(this.canvas);\n                        const recordArgs = serializeArgs([...args], win, prototype);\n                        const mutation = {\n                            type,\n                            property: prop,\n                            args: recordArgs,\n                        };\n                        cb(this.canvas, mutation);\n                    }\n                    return result;\n                };\n            });\n            handlers.push(restoreHandler);\n        }\n        catch (_a) {\n            const hookHandler = hookSetter(prototype, prop, {\n                set(v) {\n                    cb(this.canvas, {\n                        type,\n                        property: prop,\n                        args: [v],\n                        setter: true,\n                    });\n                },\n            });\n            handlers.push(hookHandler);\n        }\n    }\n    return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, unblockSelector, mirror) {\n    const handlers = [];\n    handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, unblockSelector, mirror, win));\n    if (typeof win.WebGL2RenderingContext !== 'undefined') {\n        handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, unblockSelector, mirror, win));\n    }\n    return () => {\n        handlers.forEach((h) => h());\n    };\n}\n\nclass CanvasManager {\n    reset() {\n        this.pendingCanvasMutations.clear();\n        this.resetObservers && this.resetObservers();\n    }\n    freeze() {\n        this.frozen = true;\n    }\n    unfreeze() {\n        this.frozen = false;\n    }\n    lock() {\n        this.locked = true;\n    }\n    unlock() {\n        this.locked = false;\n    }\n    constructor(options) {\n        this.pendingCanvasMutations = new Map();\n        this.rafStamps = { latestId: 0, invokeId: null };\n        this.frozen = false;\n        this.locked = false;\n        this.processMutation = function (target, mutation) {\n            const newFrame = this.rafStamps.invokeId &&\n                this.rafStamps.latestId !== this.rafStamps.invokeId;\n            if (newFrame || !this.rafStamps.invokeId)\n                this.rafStamps.invokeId = this.rafStamps.latestId;\n            if (!this.pendingCanvasMutations.has(target)) {\n                this.pendingCanvasMutations.set(target, []);\n            }\n            this.pendingCanvasMutations.get(target).push(mutation);\n        };\n        this.mutationCb = options.mutationCb;\n        this.mirror = options.mirror;\n        if (options.recordCanvas === true)\n            this.initCanvasMutationObserver(options.win, options.blockClass, options.blockSelector, options.unblockSelector);\n    }\n    initCanvasMutationObserver(win, blockClass, unblockSelector, blockSelector) {\n        this.startRAFTimestamping();\n        this.startPendingCanvasMutationFlusher();\n        const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector);\n        const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector, this.mirror);\n        const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector, this.mirror);\n        this.resetObservers = () => {\n            canvasContextReset();\n            canvas2DReset();\n            canvasWebGL1and2Reset();\n        };\n    }\n    startPendingCanvasMutationFlusher() {\n        requestAnimationFrame(() => this.flushPendingCanvasMutations());\n    }\n    startRAFTimestamping() {\n        const setLatestRAFTimestamp = (timestamp) => {\n            this.rafStamps.latestId = timestamp;\n            requestAnimationFrame(setLatestRAFTimestamp);\n        };\n        requestAnimationFrame(setLatestRAFTimestamp);\n    }\n    flushPendingCanvasMutations() {\n        this.pendingCanvasMutations.forEach((values, canvas) => {\n            const id = this.mirror.getId(canvas);\n            this.flushPendingCanvasMutationFor(canvas, id);\n        });\n        requestAnimationFrame(() => this.flushPendingCanvasMutations());\n    }\n    flushPendingCanvasMutationFor(canvas, id) {\n        if (this.frozen || this.locked) {\n            return;\n        }\n        const valuesWithType = this.pendingCanvasMutations.get(canvas);\n        if (!valuesWithType || id === -1)\n            return;\n        const values = valuesWithType.map((value) => {\n            const rest = __rest(value, [\"type\"]);\n            return rest;\n        });\n        const { type } = valuesWithType[0];\n        this.mutationCb({ id, type, commands: values });\n        this.pendingCanvasMutations.delete(canvas);\n    }\n}\n\nfunction wrapEvent(e) {\n    return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\n}\nlet wrappedEmit;\nlet takeFullSnapshot;\nconst mirror = createMirror();\nfunction record(options = {}) {\n    const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, unblockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, maskInputSelector = null, unmaskTextSelector = null, unmaskInputSelector = null, inlineStylesheet = true, maskAllText = false, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, mousemoveWait, recordCanvas = false, userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, onMutation, } = options;\n    if (!emit) {\n        throw new Error('emit function is required');\n    }\n    if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n        sampling.mousemove = mousemoveWait;\n    }\n    const maskInputOptions = maskAllInputs === true\n        ? {\n            color: true,\n            date: true,\n            'datetime-local': true,\n            email: true,\n            month: true,\n            number: true,\n            range: true,\n            search: true,\n            tel: true,\n            text: true,\n            time: true,\n            url: true,\n            week: true,\n            textarea: true,\n            select: true,\n            radio: true,\n            checkbox: true,\n        }\n        : _maskInputOptions !== undefined\n            ? _maskInputOptions\n            : {};\n    const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\n        ? {\n            script: true,\n            comment: true,\n            headFavicon: true,\n            headWhitespace: true,\n            headMetaSocial: true,\n            headMetaRobots: true,\n            headMetaHttpEquiv: true,\n            headMetaVerification: true,\n            headMetaAuthorship: _slimDOMOptions === 'all',\n            headMetaDescKeywords: _slimDOMOptions === 'all',\n        }\n        : _slimDOMOptions\n            ? _slimDOMOptions\n            : {};\n    polyfill();\n    let lastFullSnapshotEvent;\n    let incrementalSnapshotCount = 0;\n    const eventProcessor = (e) => {\n        for (const plugin of plugins || []) {\n            if (plugin.eventProcessor) {\n                e = plugin.eventProcessor(e);\n            }\n        }\n        if (packFn) {\n            e = packFn(e);\n        }\n        return e;\n    };\n    wrappedEmit = (e, isCheckout) => {\n        var _a;\n        if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\n            e.type !== EventType.FullSnapshot &&\n            !(e.type === EventType.IncrementalSnapshot &&\n                e.data.source === IncrementalSource.Mutation)) {\n            mutationBuffers.forEach((buf) => buf.unfreeze());\n        }\n        emit(eventProcessor(e), isCheckout);\n        if (e.type === EventType.FullSnapshot) {\n            lastFullSnapshotEvent = e;\n            incrementalSnapshotCount = 0;\n        }\n        else if (e.type === EventType.IncrementalSnapshot) {\n            if (e.data.source === IncrementalSource.Mutation &&\n                e.data.isAttachIframe) {\n                return;\n            }\n            incrementalSnapshotCount++;\n            const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n            const exceedTime = checkoutEveryNms &&\n                e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n            if (exceedCount || exceedTime) {\n                takeFullSnapshot(true);\n            }\n        }\n    };\n    const wrappedMutationEmit = (m) => {\n        wrappedEmit(wrapEvent({\n            type: EventType.IncrementalSnapshot,\n            data: Object.assign({ source: IncrementalSource.Mutation }, m),\n        }));\n    };\n    const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\n        type: EventType.IncrementalSnapshot,\n        data: Object.assign({ source: IncrementalSource.Scroll }, p),\n    }));\n    const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\n        type: EventType.IncrementalSnapshot,\n        data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\n    }));\n    const iframeManager = new IframeManager({\n        mutationCb: wrappedMutationEmit,\n    });\n    const canvasManager = new CanvasManager({\n        recordCanvas,\n        mutationCb: wrappedCanvasMutationEmit,\n        win: window,\n        blockClass,\n        blockSelector,\n        unblockSelector,\n        mirror,\n    });\n    const shadowDomManager = new ShadowDomManager({\n        mutationCb: wrappedMutationEmit,\n        scrollCb: wrappedScrollEmit,\n        bypassOptions: {\n            onMutation,\n            blockClass,\n            blockSelector,\n            unblockSelector,\n            maskTextClass,\n            maskTextSelector,\n            unmaskTextSelector,\n            maskInputSelector,\n            unmaskInputSelector,\n            inlineStylesheet,\n            maskAllText,\n            maskInputOptions,\n            maskTextFn,\n            maskInputFn,\n            recordCanvas,\n            inlineImages,\n            sampling,\n            slimDOMOptions,\n            iframeManager,\n            canvasManager,\n        },\n        mirror,\n    });\n    takeFullSnapshot = (isCheckout = false) => {\n        var _a, _b, _c, _d;\n        wrappedEmit(wrapEvent({\n            type: EventType.Meta,\n            data: {\n                href: window.location.href,\n                width: getWindowWidth(),\n                height: getWindowHeight(),\n            },\n        }), isCheckout);\n        mutationBuffers.forEach((buf) => buf.lock());\n        const [node, idNodeMap] = snapshot(document, {\n            blockClass,\n            blockSelector,\n            unblockSelector,\n            maskTextClass,\n            maskTextSelector,\n            unmaskTextSelector,\n            maskInputSelector,\n            unmaskInputSelector,\n            inlineStylesheet,\n            maskAllText,\n            maskAllInputs: maskInputOptions,\n            maskTextFn,\n            slimDOM: slimDOMOptions,\n            recordCanvas,\n            inlineImages,\n            onSerialize: (n) => {\n                if (isIframeINode(n)) {\n                    iframeManager.addIframe(n);\n                }\n                if (hasShadowRoot(n)) {\n                    shadowDomManager.addShadowRoot(n.shadowRoot, document);\n                }\n            },\n            onIframeLoad: (iframe, childSn) => {\n                iframeManager.attachIframe(iframe, childSn);\n                shadowDomManager.observeAttachShadow(iframe);\n            },\n            keepIframeSrcFn,\n        });\n        if (!node) {\n            return console.warn('Failed to snapshot the document');\n        }\n        mirror.map = idNodeMap;\n        wrappedEmit(wrapEvent({\n            type: EventType.FullSnapshot,\n            data: {\n                node,\n                initialOffset: {\n                    left: window.pageXOffset !== undefined\n                        ? window.pageXOffset\n                        : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\n                            ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\n                            (document === null || document === void 0 ? void 0 : document.body.scrollLeft) ||\n                            0,\n                    top: window.pageYOffset !== undefined\n                        ? window.pageYOffset\n                        : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\n                            ((_d = (_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.parentElement) === null || _d === void 0 ? void 0 : _d.scrollTop) ||\n                            (document === null || document === void 0 ? void 0 : document.body.scrollTop) ||\n                            0,\n                },\n            },\n        }));\n        mutationBuffers.forEach((buf) => buf.unlock());\n    };\n    try {\n        const handlers = [];\n        handlers.push(on('DOMContentLoaded', () => {\n            wrappedEmit(wrapEvent({\n                type: EventType.DomContentLoaded,\n                data: {},\n            }));\n        }));\n        const observe = (doc) => {\n            var _a;\n            return callbackWrapper(initObservers)({\n                onMutation,\n                mutationCb: wrappedMutationEmit,\n                mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\n                    type: EventType.IncrementalSnapshot,\n                    data: {\n                        source,\n                        positions,\n                    },\n                })),\n                mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\n                    type: EventType.IncrementalSnapshot,\n                    data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\n                })),\n                scrollCb: wrappedScrollEmit,\n                viewportResizeCb: (d) => wrappedEmit(wrapEvent({\n                    type: EventType.IncrementalSnapshot,\n                    data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\n                })),\n                inputCb: (v) => wrappedEmit(wrapEvent({\n                    type: EventType.IncrementalSnapshot,\n                    data: Object.assign({ source: IncrementalSource.Input }, v),\n                })),\n                mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\n                    type: EventType.IncrementalSnapshot,\n                    data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\n                })),\n                styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\n                    type: EventType.IncrementalSnapshot,\n                    data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\n                })),\n                styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\n                    type: EventType.IncrementalSnapshot,\n                    data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\n                })),\n                canvasMutationCb: wrappedCanvasMutationEmit,\n                fontCb: (p) => wrappedEmit(wrapEvent({\n                    type: EventType.IncrementalSnapshot,\n                    data: Object.assign({ source: IncrementalSource.Font }, p),\n                })),\n                blockClass,\n                ignoreClass,\n                ignoreSelector,\n                maskTextClass,\n                maskTextSelector,\n                unmaskTextSelector,\n                maskInputSelector,\n                unmaskInputSelector,\n                maskInputOptions,\n                inlineStylesheet,\n                sampling,\n                recordCanvas,\n                inlineImages,\n                userTriggeredOnInput,\n                collectFonts,\n                doc,\n                maskAllText,\n                maskInputFn,\n                maskTextFn,\n                blockSelector,\n                unblockSelector,\n                slimDOMOptions,\n                mirror,\n                iframeManager,\n                shadowDomManager,\n                canvasManager,\n                plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\n                    observer: p.observer,\n                    options: p.options,\n                    callback: (payload) => wrappedEmit(wrapEvent({\n                        type: EventType.Plugin,\n                        data: {\n                            plugin: p.name,\n                            payload,\n                        },\n                    })),\n                }))) || [],\n            }, hooks);\n        };\n        iframeManager.addLoadListener((iframeEl) => {\n            try {\n                handlers.push(observe(iframeEl.contentDocument));\n            }\n            catch (error) {\n                console.warn(error);\n            }\n        });\n        const init = () => {\n            takeFullSnapshot();\n            handlers.push(observe(document));\n        };\n        if (document.readyState === 'interactive' ||\n            document.readyState === 'complete') {\n            init();\n        }\n        else {\n            handlers.push(on('load', () => {\n                wrappedEmit(wrapEvent({\n                    type: EventType.Load,\n                    data: {},\n                }));\n                init();\n            }, window));\n        }\n        return () => {\n            handlers.forEach((h) => h());\n        };\n    }\n    catch (error) {\n        console.warn(error);\n    }\n}\nrecord.addCustomEvent = (tag, payload) => {\n    if (!wrappedEmit) {\n        throw new Error('please add custom event after start recording');\n    }\n    wrappedEmit(wrapEvent({\n        type: EventType.Custom,\n        data: {\n            tag,\n            payload,\n        },\n    }));\n};\nrecord.freezePage = () => {\n    mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n    if (!takeFullSnapshot) {\n        throw new Error('please take full snapshot after start recording');\n    }\n    takeFullSnapshot(isCheckout);\n};\nrecord.mirror = mirror;\n\n/**\n * Add a breadcrumb event to replay.\n */\nfunction addBreadcrumbEvent(replay, breadcrumb) {\n  if (breadcrumb.category === 'sentry.transaction') {\n    return;\n  }\n\n  if (['ui.click', 'ui.input'].includes(breadcrumb.category )) {\n    replay.triggerUserActivity();\n  } else {\n    replay.checkAndHandleExpiredSession();\n  }\n\n  replay.addUpdate(() => {\n    void replay.throttledAddEvent({\n      type: EventType.Custom,\n      // TODO: We were converting from ms to seconds for breadcrumbs, spans,\n      // but maybe we should just keep them as milliseconds\n      timestamp: (breadcrumb.timestamp || 0) * 1000,\n      data: {\n        tag: 'breadcrumb',\n        // normalize to max. 10 depth and 1_000 properties per object\n        payload: normalize(breadcrumb, 10, 1000),\n      },\n    });\n\n    // Do not flush after console log messages\n    return breadcrumb.category === 'console';\n  });\n}\n\nconst INTERACTIVE_SELECTOR = 'button,a';\n\n/**\n * For clicks, we check if the target is inside of a button or link\n * If so, we use this as the target instead\n * This is useful because if you click on the image in <button><img></button>,\n * The target will be the image, not the button, which we don't want here\n */\nfunction getClickTargetNode(event) {\n  const target = getTargetNode(event);\n\n  if (!target || !(target instanceof Element)) {\n    return target;\n  }\n\n  const closestInteractive = target.closest(INTERACTIVE_SELECTOR);\n  return closestInteractive || target;\n}\n\n/** Get the event target node. */\nfunction getTargetNode(event) {\n  if (isEventWithTarget(event)) {\n    return event.target ;\n  }\n\n  return event;\n}\n\nfunction isEventWithTarget(event) {\n  return typeof event === 'object' && !!event && 'target' in event;\n}\n\nlet handlers;\n\n/**\n * Register a handler to be called when `window.open()` is called.\n * Returns a cleanup function.\n */\nfunction onWindowOpen(cb) {\n  // Ensure to only register this once\n  if (!handlers) {\n    handlers = [];\n    monkeyPatchWindowOpen();\n  }\n\n  handlers.push(cb);\n\n  return () => {\n    const pos = handlers ? handlers.indexOf(cb) : -1;\n    if (pos > -1) {\n      (handlers ).splice(pos, 1);\n    }\n  };\n}\n\nfunction monkeyPatchWindowOpen() {\n  fill(WINDOW, 'open', function (originalWindowOpen) {\n    return function (...args) {\n      if (handlers) {\n        try {\n          handlers.forEach(handler => handler());\n        } catch (e) {\n          // ignore errors in here\n        }\n      }\n\n      return originalWindowOpen.apply(WINDOW, args);\n    };\n  });\n}\n\n/** Handle a click. */\nfunction handleClick(clickDetector, clickBreadcrumb, node) {\n  clickDetector.handleClick(clickBreadcrumb, node);\n}\n\n/** A click detector class that can be used to detect slow or rage clicks on elements. */\nclass ClickDetector  {\n  // protected for testing\n   __init() {this._lastMutation = 0;}\n   __init2() {this._lastScroll = 0;}\n\n   __init3() {this._clicks = [];}\n\n   constructor(\n    replay,\n    slowClickConfig,\n    // Just for easier testing\n    _addBreadcrumbEvent = addBreadcrumbEvent,\n  ) {ClickDetector.prototype.__init.call(this);ClickDetector.prototype.__init2.call(this);ClickDetector.prototype.__init3.call(this);\n    // We want everything in s, but options are in ms\n    this._timeout = slowClickConfig.timeout / 1000;\n    this._multiClickTimeout = slowClickConfig.multiClickTimeout / 1000;\n    this._threshold = slowClickConfig.threshold / 1000;\n    this._scollTimeout = slowClickConfig.scrollTimeout / 1000;\n    this._replay = replay;\n    this._ignoreSelector = slowClickConfig.ignoreSelector;\n    this._addBreadcrumbEvent = _addBreadcrumbEvent;\n  }\n\n  /** Register click detection handlers on mutation or scroll. */\n   addListeners() {\n    const mutationHandler = () => {\n      this._lastMutation = nowInSeconds();\n    };\n\n    const scrollHandler = () => {\n      this._lastScroll = nowInSeconds();\n    };\n\n    const cleanupWindowOpen = onWindowOpen(() => {\n      // Treat window.open as mutation\n      this._lastMutation = nowInSeconds();\n    });\n\n    const clickHandler = (event) => {\n      if (!event.target) {\n        return;\n      }\n\n      const node = getClickTargetNode(event);\n      if (node) {\n        this._handleMultiClick(node );\n      }\n    };\n\n    const obs = new MutationObserver(mutationHandler);\n\n    obs.observe(WINDOW.document.documentElement, {\n      attributes: true,\n      characterData: true,\n      childList: true,\n      subtree: true,\n    });\n\n    WINDOW.addEventListener('scroll', scrollHandler, { passive: true });\n    WINDOW.addEventListener('click', clickHandler, { passive: true });\n\n    this._teardown = () => {\n      WINDOW.removeEventListener('scroll', scrollHandler);\n      WINDOW.removeEventListener('click', clickHandler);\n      cleanupWindowOpen();\n\n      obs.disconnect();\n      this._clicks = [];\n      this._lastMutation = 0;\n      this._lastScroll = 0;\n    };\n  }\n\n  /** Clean up listeners. */\n   removeListeners() {\n    if (this._teardown) {\n      this._teardown();\n    }\n\n    if (this._checkClickTimeout) {\n      clearTimeout(this._checkClickTimeout);\n    }\n  }\n\n  /** Handle a click */\n   handleClick(breadcrumb, node) {\n    if (ignoreElement(node, this._ignoreSelector) || !isClickBreadcrumb(breadcrumb)) {\n      return;\n    }\n\n    const click = this._getClick(node);\n\n    if (click) {\n      // this means a click on the same element was captured in the last 1s, so we consider this a multi click\n      return;\n    }\n\n    const newClick = {\n      timestamp: breadcrumb.timestamp,\n      clickBreadcrumb: breadcrumb,\n      // Set this to 0 so we know it originates from the click breadcrumb\n      clickCount: 0,\n      node,\n    };\n    this._clicks.push(newClick);\n\n    // If this is the first new click, set a timeout to check for multi clicks\n    if (this._clicks.length === 1) {\n      this._scheduleCheckClicks();\n    }\n  }\n\n  /** Count multiple clicks on elements. */\n   _handleMultiClick(node) {\n    const click = this._getClick(node);\n\n    if (!click) {\n      return;\n    }\n\n    click.clickCount++;\n  }\n\n  /** Try to get an existing click on the given element. */\n   _getClick(node) {\n    const now = nowInSeconds();\n\n    // Find any click on the same element in the last second\n    // If one exists, we consider this click as a double/triple/etc click\n    return this._clicks.find(click => click.node === node && now - click.timestamp < this._multiClickTimeout);\n  }\n\n  /** Check the clicks that happened. */\n   _checkClicks() {\n    const timedOutClicks = [];\n\n    const now = nowInSeconds();\n\n    this._clicks.forEach(click => {\n      if (!click.mutationAfter && this._lastMutation) {\n        click.mutationAfter = click.timestamp <= this._lastMutation ? this._lastMutation - click.timestamp : undefined;\n      }\n      if (!click.scrollAfter && this._lastScroll) {\n        click.scrollAfter = click.timestamp <= this._lastScroll ? this._lastScroll - click.timestamp : undefined;\n      }\n\n      // If an action happens after the multi click threshold, we can skip waiting and handle the click right away\n      const actionTime = click.scrollAfter || click.mutationAfter || 0;\n      if (actionTime && actionTime >= this._multiClickTimeout) {\n        timedOutClicks.push(click);\n        return;\n      }\n\n      if (click.timestamp + this._timeout <= now) {\n        timedOutClicks.push(click);\n      }\n    });\n\n    // Remove \"old\" clicks\n    for (const click of timedOutClicks) {\n      this._generateBreadcrumbs(click);\n\n      const pos = this._clicks.indexOf(click);\n      if (pos !== -1) {\n        this._clicks.splice(pos, 1);\n      }\n    }\n\n    // Trigger new check, unless no clicks left\n    if (this._clicks.length) {\n      this._scheduleCheckClicks();\n    }\n  }\n\n  /** Generate matching breadcrumb(s) for the click. */\n   _generateBreadcrumbs(click) {\n    const replay = this._replay;\n    const hadScroll = click.scrollAfter && click.scrollAfter <= this._scollTimeout;\n    const hadMutation = click.mutationAfter && click.mutationAfter <= this._threshold;\n\n    const isSlowClick = !hadScroll && !hadMutation;\n    const { clickCount, clickBreadcrumb } = click;\n\n    // Slow click\n    if (isSlowClick) {\n      // If `mutationAfter` is set, it means a mutation happened after the threshold, but before the timeout\n      // If not, it means we just timed out without scroll & mutation\n      const timeAfterClickMs = Math.min(click.mutationAfter || this._timeout, this._timeout) * 1000;\n      const endReason = timeAfterClickMs < this._timeout * 1000 ? 'mutation' : 'timeout';\n\n      const breadcrumb = {\n        type: 'default',\n        message: clickBreadcrumb.message,\n        timestamp: clickBreadcrumb.timestamp,\n        category: 'ui.slowClickDetected',\n        data: {\n          ...clickBreadcrumb.data,\n          url: WINDOW.location.href,\n          route: replay.getCurrentRoute(),\n          timeAfterClickMs,\n          endReason,\n          // If clickCount === 0, it means multiClick was not correctly captured here\n          // - we still want to send 1 in this case\n          clickCount: clickCount || 1,\n        },\n      };\n\n      this._addBreadcrumbEvent(replay, breadcrumb);\n      return;\n    }\n\n    // Multi click\n    if (clickCount > 1) {\n      const breadcrumb = {\n        type: 'default',\n        message: clickBreadcrumb.message,\n        timestamp: clickBreadcrumb.timestamp,\n        category: 'ui.multiClick',\n        data: {\n          ...clickBreadcrumb.data,\n          url: WINDOW.location.href,\n          route: replay.getCurrentRoute(),\n          clickCount,\n          metric: true,\n        },\n      };\n\n      this._addBreadcrumbEvent(replay, breadcrumb);\n    }\n  }\n\n  /** Schedule to check current clicks. */\n   _scheduleCheckClicks() {\n    this._checkClickTimeout = setTimeout(() => this._checkClicks(), 1000);\n  }\n}\n\nconst SLOW_CLICK_TAGS = ['A', 'BUTTON', 'INPUT'];\n\n/** exported for tests only */\nfunction ignoreElement(node, ignoreSelector) {\n  if (!SLOW_CLICK_TAGS.includes(node.tagName)) {\n    return true;\n  }\n\n  // If <input> tag, we only want to consider input[type='submit'] & input[type='button']\n  if (node.tagName === 'INPUT' && !['submit', 'button'].includes(node.getAttribute('type') || '')) {\n    return true;\n  }\n\n  // If <a> tag, detect special variants that may not lead to an action\n  // If target !== _self, we may open the link somewhere else, which would lead to no action\n  // Also, when downloading a file, we may not leave the page, but still not trigger an action\n  if (\n    node.tagName === 'A' &&\n    (node.hasAttribute('download') || (node.hasAttribute('target') && node.getAttribute('target') !== '_self'))\n  ) {\n    return true;\n  }\n\n  if (ignoreSelector && node.matches(ignoreSelector)) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction isClickBreadcrumb(breadcrumb) {\n  return !!(breadcrumb.data && typeof breadcrumb.data.nodeId === 'number' && breadcrumb.timestamp);\n}\n\n// This is good enough for us, and is easier to test/mock than `timestampInSeconds`\nfunction nowInSeconds() {\n  return Date.now() / 1000;\n}\n\n/**\n * Create a breadcrumb for a replay.\n */\nfunction createBreadcrumb(\n  breadcrumb,\n) {\n  return {\n    timestamp: Date.now() / 1000,\n    type: 'default',\n    ...breadcrumb,\n  };\n}\n\nvar NodeType;\n(function (NodeType) {\n    NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n    NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n    NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n    NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n    NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n    NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\n\n// Note that these are the serialized attributes and not attributes directly on\n// the DOM Node. Attributes we are interested in:\nconst ATTRIBUTES_TO_RECORD = new Set([\n  'id',\n  'class',\n  'aria-label',\n  'role',\n  'name',\n  'alt',\n  'title',\n  'data-test-id',\n  'data-testid',\n  'disabled',\n  'aria-disabled',\n]);\n\n/**\n * Inclusion list of attributes that we want to record from the DOM element\n */\nfunction getAttributesToRecord(attributes) {\n  const obj = {};\n  for (const key in attributes) {\n    if (ATTRIBUTES_TO_RECORD.has(key)) {\n      let normalizedKey = key;\n\n      if (key === 'data-testid' || key === 'data-test-id') {\n        normalizedKey = 'testId';\n      }\n\n      obj[normalizedKey] = attributes[key];\n    }\n  }\n\n  return obj;\n}\n\nconst handleDomListener = (\n  replay,\n) => {\n  return (handlerData) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleDom(handlerData);\n\n    if (!result) {\n      return;\n    }\n\n    const isClick = handlerData.name === 'click';\n    const event = isClick && (handlerData.event );\n    // Ignore clicks if ctrl/alt/meta keys are held down as they alter behavior of clicks (e.g. open in new tab)\n    if (isClick && replay.clickDetector && event && !event.altKey && !event.metaKey && !event.ctrlKey) {\n      handleClick(\n        replay.clickDetector,\n        result ,\n        getClickTargetNode(handlerData.event) ,\n      );\n    }\n\n    addBreadcrumbEvent(replay, result);\n  };\n};\n\n/** Get the base DOM breadcrumb. */\nfunction getBaseDomBreadcrumb(target, message) {\n  // `__sn` property is the serialized node created by rrweb\n  const serializedNode = target && isRrwebNode(target) && target.__sn.type === NodeType.Element ? target.__sn : null;\n\n  return {\n    message,\n    data: serializedNode\n      ? {\n          nodeId: serializedNode.id,\n          node: {\n            id: serializedNode.id,\n            tagName: serializedNode.tagName,\n            textContent: target\n              ? Array.from(target.childNodes)\n                  .map(\n                    (node) => '__sn' in node && node.__sn.type === NodeType.Text && node.__sn.textContent,\n                  )\n                  .filter(Boolean) // filter out empty values\n                  .map(text => (text ).trim())\n                  .join('')\n              : '',\n            attributes: getAttributesToRecord(serializedNode.attributes),\n          },\n        }\n      : {},\n  };\n}\n\n/**\n * An event handler to react to DOM events.\n * Exported for tests.\n */\nfunction handleDom(handlerData) {\n  const { target, message } = getDomTarget(handlerData);\n\n  return createBreadcrumb({\n    category: `ui.${handlerData.name}`,\n    ...getBaseDomBreadcrumb(target, message),\n  });\n}\n\nfunction getDomTarget(handlerData) {\n  const isClick = handlerData.name === 'click';\n\n  let message;\n  let target = null;\n\n  // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n  try {\n    target = isClick ? getClickTargetNode(handlerData.event) : getTargetNode(handlerData.event);\n    message = htmlTreeAsString(target, { maxStringLength: 200 }) || '<unknown>';\n  } catch (e) {\n    message = '<unknown>';\n  }\n\n  return { target, message };\n}\n\nfunction isRrwebNode(node) {\n  return '__sn' in node;\n}\n\n/** Handle keyboard events & create breadcrumbs. */\nfunction handleKeyboardEvent(replay, event) {\n  if (!replay.isEnabled()) {\n    return;\n  }\n\n  // Update user activity, but do not restart recording as it can create\n  // noisy/low-value replays (e.g. user comes back from idle, hits alt-tab, new\n  // session with a single \"keydown\" breadcrumb is created)\n  replay.updateUserActivity();\n\n  const breadcrumb = getKeyboardBreadcrumb(event);\n\n  if (!breadcrumb) {\n    return;\n  }\n\n  addBreadcrumbEvent(replay, breadcrumb);\n}\n\n/** exported only for tests */\nfunction getKeyboardBreadcrumb(event) {\n  const { metaKey, shiftKey, ctrlKey, altKey, key, target } = event;\n\n  // never capture for input fields\n  if (!target || isInputElement(target ) || !key) {\n    return null;\n  }\n\n  // Note: We do not consider shift here, as that means \"uppercase\"\n  const hasModifierKey = metaKey || ctrlKey || altKey;\n  const isCharacterKey = key.length === 1; // other keys like Escape, Tab, etc have a longer length\n\n  // Do not capture breadcrumb if only a word key is pressed\n  // This could leak e.g. user input\n  if (!hasModifierKey && isCharacterKey) {\n    return null;\n  }\n\n  const message = htmlTreeAsString(target, { maxStringLength: 200 }) || '<unknown>';\n  const baseBreadcrumb = getBaseDomBreadcrumb(target , message);\n\n  return createBreadcrumb({\n    category: 'ui.keyDown',\n    message,\n    data: {\n      ...baseBreadcrumb.data,\n      metaKey,\n      shiftKey,\n      ctrlKey,\n      altKey,\n      key,\n    },\n  });\n}\n\nfunction isInputElement(target) {\n  return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable;\n}\n\nconst NAVIGATION_ENTRY_KEYS = [\n  'name',\n  'type',\n  'startTime',\n  'transferSize',\n  'duration',\n];\n\nfunction isNavigationEntryEqual(a) {\n  return function (b) {\n    return NAVIGATION_ENTRY_KEYS.every(key => a[key] === b[key]);\n  };\n}\n\n/**\n * There are some difficulties diagnosing why there are duplicate navigation\n * entries. We've witnessed several intermittent results:\n * - duplicate entries have duration = 0\n * - duplicate entries are the same object reference\n * - none of the above\n *\n * Compare the values of several keys to determine if the entries are duplicates or not.\n */\n// TODO (high-prio): Figure out wth is returned here\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nfunction dedupePerformanceEntries(\n  currentList,\n  newList,\n) {\n  // Partition `currentList` into 3 different lists based on entryType\n  const [existingNavigationEntries, existingLcpEntries, existingEntries] = currentList.reduce(\n    (acc, entry) => {\n      if (entry.entryType === 'navigation') {\n        acc[0].push(entry );\n      } else if (entry.entryType === 'largest-contentful-paint') {\n        acc[1].push(entry );\n      } else {\n        acc[2].push(entry);\n      }\n      return acc;\n    },\n    [[], [], []],\n  );\n\n  const newEntries = [];\n  const newNavigationEntries = [];\n  let newLcpEntry = existingLcpEntries.length\n    ? existingLcpEntries[existingLcpEntries.length - 1] // Take the last element as list is sorted\n    : undefined;\n\n  newList.forEach(entry => {\n    if (entry.entryType === 'largest-contentful-paint') {\n      // We want the latest LCP event only\n      if (!newLcpEntry || newLcpEntry.startTime < entry.startTime) {\n        newLcpEntry = entry;\n      }\n      return;\n    }\n\n    if (entry.entryType === 'navigation') {\n      const navigationEntry = entry ;\n\n      // Check if the navigation entry is contained in currentList or newList\n      if (\n        // Ignore any navigation entries with duration 0, as they are likely duplicates\n        entry.duration > 0 &&\n        // Ensure new entry does not already exist in existing entries\n        !existingNavigationEntries.find(isNavigationEntryEqual(navigationEntry)) &&\n        // Ensure new entry does not already exist in new list of navigation entries\n        !newNavigationEntries.find(isNavigationEntryEqual(navigationEntry))\n      ) {\n        newNavigationEntries.push(navigationEntry);\n      }\n\n      // Otherwise this navigation entry is considered a duplicate and is thrown away\n      return;\n    }\n\n    newEntries.push(entry);\n  });\n\n  // Re-combine and sort by startTime\n  return [\n    ...(newLcpEntry ? [newLcpEntry] : []),\n    ...existingNavigationEntries,\n    ...existingEntries,\n    ...newEntries,\n    ...newNavigationEntries,\n  ].sort((a, b) => a.startTime - b.startTime);\n}\n\n/**\n * Sets up a PerformanceObserver to listen to all performance entry types.\n */\nfunction setupPerformanceObserver(replay) {\n  const performanceObserverHandler = (list) => {\n    // For whatever reason the observer was returning duplicate navigation\n    // entries (the other entry types were not duplicated).\n    const newPerformanceEntries = dedupePerformanceEntries(\n      replay.performanceEvents,\n      list.getEntries() ,\n    );\n    replay.performanceEvents = newPerformanceEntries;\n  };\n\n  const performanceObserver = new PerformanceObserver(performanceObserverHandler);\n\n  [\n    'element',\n    'event',\n    'first-input',\n    'largest-contentful-paint',\n    'layout-shift',\n    'longtask',\n    'navigation',\n    'paint',\n    'resource',\n  ].forEach(type => {\n    try {\n      performanceObserver.observe({\n        type,\n        buffered: true,\n      });\n    } catch (e) {\n      // This can throw if an entry type is not supported in the browser.\n      // Ignore these errors.\n    }\n  });\n\n  return performanceObserver;\n}\n\nconst r = `/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\nfunction t(t){let e=t.length;for(;--e>=0;)t[e]=0}const e=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),a=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Array(576);t(s);const r=new Array(60);t(r);const o=new Array(512);t(o);const l=new Array(256);t(l);const h=new Array(29);t(h);const d=new Array(30);function _(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let f,c,u;function w(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}t(d);const m=t=>t<256?o[t]:o[256+(t>>>7)],b=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},g=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,b(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},p=(t,e,a)=>{g(t,a[2*e],a[2*e+1])},k=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},v=(t,e,a)=>{const i=new Array(16);let n,s,r=0;for(n=1;n<=15;n++)r=r+a[n-1]<<1,i[n]=r;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=k(i[e]++,e))}},y=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},x=t=>{t.bi_valid>8?b(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},z=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[a]},A=(t,e,a)=>{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n<t.heap_len&&z(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!z(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i},E=(t,i,n)=>{let s,r,o,_,f=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+f++],s+=(255&t.pending_buf[t.sym_buf+f++])<<8,r=t.pending_buf[t.sym_buf+f++],0===s?p(t,r,i):(o=l[r],p(t,o+256+1,i),_=e[o],0!==_&&(r-=h[o],g(t,r,_)),s--,o=m(s),p(t,o,n),_=a[o],0!==_&&(s-=d[o],g(t,s,_)))}while(f<t.sym_next);p(t,256,i)},R=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,s=e.stat_desc.elems;let r,o,l,h=-1;for(t.heap_len=0,t.heap_max=573,r=0;r<s;r++)0!==a[2*r]?(t.heap[++t.heap_len]=h=r,t.depth[r]=0):a[2*r+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=h<2?++h:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,n&&(t.static_len-=i[2*l+1]);for(e.max_code=h,r=t.heap_len>>1;r>=1;r--)A(t,a,r);l=s;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],A(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=o,a[2*l]=a[2*r]+a[2*o],t.depth[l]=(t.depth[r]>=t.depth[o]?t.depth[r]:t.depth[o])+1,a[2*r+1]=a[2*o+1]=l,t.heap[1]=l++,A(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length;let h,d,_,f,c,u,w=0;for(f=0;f<=15;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],f=a[2*a[2*d+1]+1]+1,f>l&&(f=l,w++),a[2*d+1]=f,d>i||(t.bl_count[f]++,c=0,d>=o&&(c=r[d-o]),u=a[2*d],t.opt_len+=u*(f+c),s&&(t.static_len+=u*(n[2*d+1]+c)));if(0!==w){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,w-=2}while(w>0);for(f=l;0!==f;f--)for(d=t.bl_count[f];0!==d;)_=t.heap[--h],_>i||(a[2*_+1]!==f&&(t.opt_len+=(f-a[2*_+1])*a[2*_],a[2*_+1]=f),d--)}})(t,e),v(a,h,t.bl_count)},Z=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o<l&&n===r||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4))},U=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o<l&&n===r)){if(o<h)do{p(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==s&&(p(t,n,t.bl_tree),o--),p(t,16,t.bl_tree),g(t,o-3,2)):o<=10?(p(t,17,t.bl_tree),g(t,o-3,3)):(p(t,18,t.bl_tree),g(t,o-11,7));o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4)}};let S=!1;const D=(t,e,a,i)=>{g(t,0+(i?1:0),3),x(t),b(t,a),b(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var T=(t,e,a,i)=>{let o,l,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),R(t,t.l_desc),R(t,t.d_desc),h=(t=>{let e;for(Z(t,t.dyn_ltree,t.l_desc.max_code),Z(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*n[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),o=t.opt_len+3+7>>>3,l=t.static_len+3+7>>>3,l<=o&&(o=l)):o=l=a+5,a+4<=o&&-1!==e?D(t,e,a,i):4===t.strategy||l===o?(g(t,2+(i?1:0),3),E(t,s,r)):(g(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(g(t,e-257,5),g(t,a-1,5),g(t,i-4,4),s=0;s<i;s++)g(t,t.bl_tree[2*n[s]+1],3);U(t,t.dyn_ltree,e-1),U(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),E(t,t.dyn_ltree,t.dyn_dtree)),y(t),i&&x(t)},O={_tr_init:t=>{S||((()=>{let t,n,w,m,b;const g=new Array(16);for(w=0,m=0;m<28;m++)for(h[m]=w,t=0;t<1<<e[m];t++)l[w++]=m;for(l[w-1]=m,b=0,m=0;m<16;m++)for(d[m]=b,t=0;t<1<<a[m];t++)o[b++]=m;for(b>>=7;m<30;m++)for(d[m]=b<<7,t=0;t<1<<a[m]-7;t++)o[256+b++]=m;for(n=0;n<=15;n++)g[n]=0;for(t=0;t<=143;)s[2*t+1]=8,t++,g[8]++;for(;t<=255;)s[2*t+1]=9,t++,g[9]++;for(;t<=279;)s[2*t+1]=7,t++,g[7]++;for(;t<=287;)s[2*t+1]=8,t++,g[8]++;for(v(s,287,g),t=0;t<30;t++)r[2*t+1]=5,r[2*t]=k(t,5);f=new _(s,e,257,286,15),c=new _(r,a,0,30,15),u=new _(new Array(0),i,0,19,7)})(),S=!0),t.l_desc=new w(t.dyn_ltree,f),t.d_desc=new w(t.dyn_dtree,c),t.bl_desc=new w(t.bl_tree,u),t.bi_buf=0,t.bi_valid=0,y(t)},_tr_stored_block:D,_tr_flush_block:T,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(l[a]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{g(t,2,3),p(t,256,s),(t=>{16===t.bi_valid?(b(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var F=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const L=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var N=(t,e,a,i)=>{const n=L,s=i+a;t^=-1;for(let a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t},I={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"},B={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:C,_tr_stored_block:H,_tr_flush_block:M,_tr_tally:j,_tr_align:K}=O,{Z_NO_FLUSH:P,Z_PARTIAL_FLUSH:Y,Z_FULL_FLUSH:G,Z_FINISH:X,Z_BLOCK:W,Z_OK:q,Z_STREAM_END:J,Z_STREAM_ERROR:Q,Z_DATA_ERROR:V,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:tt,Z_FILTERED:et,Z_HUFFMAN_ONLY:at,Z_RLE:it,Z_FIXED:nt,Z_DEFAULT_STRATEGY:st,Z_UNKNOWN:rt,Z_DEFLATED:ot}=B,lt=(t,e)=>(t.msg=I[e],e),ht=t=>2*t-(t>4?9:0),dt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},_t=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let ft=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const ct=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},ut=(t,e)=>{M(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ct(t.strm)},wt=(t,e)=>{t.pending_buf[t.pending++]=e},mt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},bt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=F(t.adler,e,n,a):2===t.state.wrap&&(t.adler=N(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},gt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+258;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&s<f);if(i=258-(f-s),s=f-258,i>r){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},pt=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),_t(t),i+=e),0===t.strm.avail_in)break;if(a=bt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=ft(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=ft(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},kt=(t,e)=>{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_out<n)break;if(n=t.strm.avail_out-n,i=t.strstart-t.block_start,a>i+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a<s&&(0===a&&e!==X||e===P||a!==i+t.strm.avail_in))break;r=e===X&&a===i+t.strm.avail_in?1:0,H(t,0,0,r),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,ct(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(bt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),r?4:e!==P&&e!==X&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(n=t.window_size-t.strstart,t.strm.avail_in>n&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(bt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water<t.strstart&&(t.high_water=t.strstart),n=t.bi_valid+42>>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===X)&&e!==P&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===X&&0===t.strm.avail_in&&a===i?1:0,H(t,t.block_start,a,r),t.block_start+=a,ct(t.strm)),r?3:1)},vt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a)),t.match_length>=3)if(i=j(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=ft(t,t.ins_h,t.window[t.strstart+1]);else i=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2},yt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a),t.match_length<=5&&(t.strategy===et||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=j(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(ut(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=j(t,0,t.window[t.strstart-1]),i&&ut(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=j(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2};function xt(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const zt=[new xt(0,0,0,0,kt),new xt(4,4,8,4,vt),new xt(4,5,16,8,vt),new xt(4,6,32,32,vt),new xt(4,4,16,16,yt),new xt(8,16,32,32,yt),new xt(8,16,128,128,yt),new xt(8,32,128,256,yt),new xt(32,128,258,1024,yt),new xt(32,258,258,4096,yt)];function At(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),dt(this.dyn_ltree),dt(this.dyn_dtree),dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Et=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||42!==e.status&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&113!==e.status&&666!==e.status?1:0},Rt=t=>{if(Et(t))return lt(t,Q);t.total_in=t.total_out=0,t.data_type=rt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=-2,C(e),q},Zt=t=>{const e=Rt(t);var a;return e===q&&((a=t.state).window_size=2*a.w_size,dt(a.head),a.max_lazy_match=zt[a.level].max_lazy,a.good_match=zt[a.level].good_length,a.nice_match=zt[a.level].nice_length,a.max_chain_length=zt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ut=(t,e,a,i,n,s)=>{if(!t)return Q;let r=1;if(e===tt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ot||i<8||i>15||e<0||e>9||s<0||s>nt||8===i&&1!==r)return lt(t,Q);8===i&&(i=9);const o=new At;return t.state=o,o.strm=t,o.status=42,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=3*(o.lit_bufsize-1),o.level=e,o.strategy=s,o.method=a,Zt(t)};var St={deflateInit:(t,e)=>Ut(t,e,ot,15,8,st),deflateInit2:Ut,deflateReset:Zt,deflateResetKeep:Rt,deflateSetHeader:(t,e)=>Et(t)||2!==t.state.wrap?Q:(t.state.gzhead=e,q),deflate:(t,e)=>{if(Et(t)||e>W||e<0)return t?lt(t,Q):Q;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||666===a.status&&e!==X)return lt(t,0===t.avail_out?$:Q);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(ct(t),0===t.avail_out)return a.last_flush=-1,q}else if(0===t.avail_in&&ht(e)<=ht(i)&&e!==X)return lt(t,$);if(666===a.status&&0!==t.avail_in)return lt(t,$);if(42===a.status&&0===a.wrap&&(a.status=113),42===a.status){let e=ot+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=at||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,mt(a,e),0!==a.strstart&&(mt(a,t.adler>>>16),mt(a,65535&t.adler)),t.adler=1,a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,q}if(57===a.status)if(t.adler=0,wt(a,31),wt(a,139),wt(a,8),a.gzhead)wt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),wt(a,255&a.gzhead.time),wt(a,a.gzhead.time>>8&255),wt(a,a.gzhead.time>>16&255),wt(a,a.gzhead.time>>24&255),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(wt(a,255&a.gzhead.extra.length),wt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=N(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,3),a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,q;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=N(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,ct(t),0!==a.pending)return a.last_flush=-1,q;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=N(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,q;i=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,q;i=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(ct(t),0!==a.pending))return a.last_flush=-1,q;wt(a,255&t.adler),wt(a,t.adler>>8&255),t.adler=0}if(a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,q}if(0!==t.avail_in||0!==a.lookahead||e!==P&&666!==a.status){let i=0===a.level?kt(a,e):a.strategy===at?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(pt(t),0===t.lookahead)){if(e===P)return 1;break}if(t.match_length=0,a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===it?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=258){if(pt(t),t.lookahead<=258&&e===P)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+258;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&n<s);t.match_length=258-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=j(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):zt[a.level].func(a,e);if(3!==i&&4!==i||(a.status=666),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),q;if(2===i&&(e===Y?K(a):e!==W&&(H(a,0,0,!1),e===G&&(dt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),ct(t),0===t.avail_out))return a.last_flush=-1,q}return e!==X?q:a.wrap<=0?J:(2===a.wrap?(wt(a,255&t.adler),wt(a,t.adler>>8&255),wt(a,t.adler>>16&255),wt(a,t.adler>>24&255),wt(a,255&t.total_in),wt(a,t.total_in>>8&255),wt(a,t.total_in>>16&255),wt(a,t.total_in>>24&255)):(mt(a,t.adler>>>16),mt(a,65535&t.adler)),ct(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?q:J)},deflateEnd:t=>{if(Et(t))return Q;const e=t.state.status;return t.state=null,113===e?lt(t,V):q},deflateSetDictionary:(t,e)=>{let a=e.length;if(Et(t))return Q;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return Q;if(1===n&&(t.adler=F(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(dt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,pt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=ft(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,pt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,q},deflateInfo:\"pako deflate (from Nodeca project)\"};const Dt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Tt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if(\"object\"!=typeof a)throw new TypeError(a+\"must be non-object\");for(const e in a)Dt(a,e)&&(t[e]=a[e])}}return t},Ot=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,n=t.length;e<n;e++){let n=t[e];a.set(n,i),i+=n.length}return a};let Ft=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Ft=!1}const Lt=new Uint8Array(256);for(let t=0;t<256;t++)Lt[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Lt[254]=Lt[254]=1;var Nt=t=>{if(\"function\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n<r;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(o),s=0,n=0;s<o;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},It=(t,e)=>{const a=e||t.length;if(\"function\"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i<a;){let e=t[i++];if(e<128){s[n++]=e;continue}let r=Lt[e];if(r>4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i<a;)e=e<<6|63&t[i++],r--;r>1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Ft)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a=\"\";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(s,n)},Bt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Lt[t[a]]>e?a:e};var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0};const Ht=Object.prototype.toString,{Z_NO_FLUSH:Mt,Z_SYNC_FLUSH:jt,Z_FULL_FLUSH:Kt,Z_FINISH:Pt,Z_OK:Yt,Z_STREAM_END:Gt,Z_DEFAULT_COMPRESSION:Xt,Z_DEFAULT_STRATEGY:Wt,Z_DEFLATED:qt}=B;function Jt(t){this.options=Tt({level:Xt,method:qt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Wt},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=St.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Yt)throw new Error(I[a]);if(e.header&&St.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t=\"string\"==typeof e.dictionary?Nt(e.dictionary):\"[object ArrayBuffer]\"===Ht.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=St.deflateSetDictionary(this.strm,t),a!==Yt)throw new Error(I[a]);this._dict_set=!0}}function Qt(t,e){const a=new Jt(e);if(a.push(t,!0),a.err)throw a.msg||I[a.err];return a.result}Jt.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Pt:Mt,\"string\"==typeof t?a.input=Nt(t):\"[object ArrayBuffer]\"===Ht.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===jt||s===Kt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=St.deflate(a,s),n===Gt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=St.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Yt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},Jt.prototype.onData=function(t){this.chunks.push(t)},Jt.prototype.onEnd=function(t){t===Yt&&(this.result=Ot(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Vt={Deflate:Jt,deflate:Qt,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Qt(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Qt(t,e)},constants:B};var $t=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<<E.lenbits)-1,b=(1<<E.distbits)-1;t:do{c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=u[f&m];e:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<<p)-1)];continue e}if(32&p){E.mode=16191;break t}t.msg=\"invalid literal/length code\",E.mode=16209;break t}k=65535&g,p&=15,p&&(c<p&&(f+=z[a++]<<c,c+=8),k+=f&(1<<p)-1,f>>>=p,c-=p),c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=w[f&b];a:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<<p)-1)];continue a}t.msg=\"invalid distance code\",E.mode=16209;break t}if(v=65535&g,p&=15,c<p&&(f+=z[a++]<<c,c+=8,c<p&&(f+=z[a++]<<c,c+=8)),v+=f&(1<<p)-1,v>o){t.msg=\"invalid distance too far back\",E.mode=16209;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg=\"invalid distance too far back\",E.mode=16209;break t}if(y=0,x=_,0===d){if(y+=l-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}else if(d<p){if(y+=l+d-p,p-=d,p<k){k-=p;do{A[n++]=_[y++]}while(--p);if(y=0,d<k){p=d,k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}}else if(y+=d-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}for(;k>2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a<i&&n<r);k=c>>3,a-=k,c-=k<<3,f&=(1<<c)-1,t.next_in=a,t.next_out=n,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=n<r?r-n+257:257-(n-r),E.hold=f,E.bits=c};const te=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ee=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ae=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),ie=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var ne=(t,e,a,i,n,s,r,o)=>{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=15;w++)E[w]=0;for(m=0;m<i;m++)E[e[a+m]]++;for(p=l,g=15;g>=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b<g&&0===E[b];b++);for(p<b&&(p=b),y=1,w=1;w<=15;w++)if(y<<=1,y-=E[w],y<0)return-1;if(y>0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<15;w++)R[w+1]=R[w]+E[w];for(m=0;m<i;m++)0!==e[a+m]&&(r[R[e[a+m]]++]=m);if(0===t?(A=D=r,u=20):1===t?(A=te,D=ee,u=257):(A=ae,D=ie,u=0),z=0,m=0,w=b,c=s,k=p,v=0,_=-1,x=1<<p,f=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1<u?(U=0,S=r[m]):r[m]>=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<<w-v,d=1<<k,b=d;do{d-=h,n[c+(z>>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<<w-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<<k;k+v<g&&(y-=E[k+v],!(y<=0));)k++,y<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:se,Z_BLOCK:re,Z_TREES:oe,Z_OK:le,Z_STREAM_END:he,Z_NEED_DICT:de,Z_STREAM_ERROR:_e,Z_DATA_ERROR:fe,Z_MEM_ERROR:ce,Z_BUF_ERROR:ue,Z_DEFLATED:we}=B,me=16209,be=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const pe=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<16180||e.mode>16211?1:0},ke=t=>{if(pe(t))return _e;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=16180,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,le},ve=t=>{if(pe(t))return _e;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,ke(t)},ye=(t,e)=>{let a;if(pe(t))return _e;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?_e:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,ve(t))},xe=(t,e)=>{if(!t)return _e;const a=new ge;t.state=a,a.strm=t,a.window=null,a.mode=16180;const i=ye(t,e);return i!==le&&(t.state=null),i};let ze,Ae,Ee=!0;const Re=t=>{if(Ee){ze=new Int32Array(512),Ae=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ne(1,t.lens,0,288,ze,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ne(2,t.lens,0,32,Ae,0,t.work,{bits:5}),Ee=!1}t.lencode=ze,t.lenbits=9,t.distcode=Ae,t.distbits=5},Ze=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),i>=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0};var Ue={inflateReset:ve,inflateReset2:ye,inflateResetKeep:ke,inflateInit:t=>xe(t,15),inflateInit2:xe,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(pe(t)||!t.output||!t.input&&0!==t.avail_in)return _e;a=t.state,16191===a.mode&&(a.mode=16192),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=le;t:for(;;)switch(a.mode){case 16180:if(0===a.wrap){a.mode=16192;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(2&a.wrap&&35615===h){0===a.wbits&&(a.wbits=15),a.check=0,A[0]=255&h,A[1]=h>>>8&255,a.check=N(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg=\"incorrect header check\",a.mode=me;break}if((15&h)!==we){t.msg=\"unknown compression method\",a.mode=me;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg=\"invalid window size\",a.mode=me;break}a.dmax=1<<a.wbits,a.flags=0,t.adler=a.check=1,a.mode=512&h?16189:16191,h=0,d=0;break;case 16181:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==we){t.msg=\"unknown compression method\",a.mode=me;break}if(57344&a.flags){t.msg=\"unknown header flags set\",a.mode=me;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=N(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=N(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=N(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=N(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=N(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=N(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=16187;case 16187:if(4096&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=N(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.comment=null);a.mode=16188;case 16188:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(65535&a.check)){t.msg=\"header crc mismatch\",a.mode=me;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=16191;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}t.adler=a.check=be(h),h=0,d=0,a.mode=16190;case 16190:if(0===a.havedict)return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de;t.adler=a.check=1,a.mode=16191;case 16191:if(e===re||e===oe)break t;case 16192:if(a.last){h>>>=7&d,d-=7&d,a.mode=16206;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Re(a),a.mode=16199,e===oe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg=\"invalid block type\",a.mode=me}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg=\"invalid stored block lengths\",a.mode=me;break}if(a.length=65535&h,h=0,d=0,a.mode=16194,e===oe)break t;case 16194:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=16191;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg=\"too many length or distance symbols\",a.mode=me;break}a.have=0,a.mode=16197;case 16197:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.lens[Z[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=ne(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg=\"invalid code lengths set\",a.mode=me;break}a.have=0,a.mode=16198;case 16198:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(g<16)h>>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(h>>>=m,d-=m,0===a.have){t.msg=\"invalid bit length repeat\",a.mode=me;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg=\"invalid bit length repeat\",a.mode=me;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===me)break;if(0===a.lens[256]){t.msg=\"invalid code -- missing end-of-block\",a.mode=me;break}if(a.lenbits=9,E={bits:a.lenbits},x=ne(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg=\"invalid literal/lengths set\",a.mode=me;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=ne(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg=\"invalid distances set\",a.mode=me;break}if(a.mode=16199,e===oe)break t;case 16199:a.mode=16200;case 16200:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,$t(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,16191===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(b&&0==(240&b)){for(p=m,k=b,v=g;z=a.lencode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=16191;break}if(64&b){t.msg=\"invalid literal/length code\",a.mode=me;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<<a.distbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(0==(240&b)){for(p=m,k=b,v=g;z=a.distcode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg=\"invalid distance code\",a.mode=me;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg=\"invalid distance too far back\",a.mode=me;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg=\"invalid distance too far back\",a.mode=me;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=16200);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=16200;break;case 16206:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<<d,d+=8}if(f-=l,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?N(a.check,n,f,r-f):F(a.check,n,f,r-f)),f=l,4&a.wrap&&(a.flags?h:be(h))!==a.check){t.msg=\"incorrect data check\",a.mode=me;break}h=0,d=0}a.mode=16207;case 16207:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(4294967295&a.total)){t.msg=\"incorrect length check\",a.mode=me;break}h=0,d=0}a.mode=16208;case 16208:x=he;break t;case me:x=fe;break t;case 16210:return ce;default:return _e}return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||f!==t.avail_out&&a.mode<me&&(a.mode<16206||e!==se))&&Ze(t,t.output,t.next_out,f-t.avail_out),_-=t.avail_in,f-=t.avail_out,t.total_in+=_,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?N(a.check,n,f,t.next_out-f):F(a.check,n,f,t.next_out-f)),t.data_type=a.bits+(a.last?64:0)+(16191===a.mode?128:0)+(16199===a.mode||16194===a.mode?256:0),(0===_&&0===f||e===se)&&x===le&&(x=ue),x},inflateEnd:t=>{if(pe(t))return _e;let e=t.state;return e.window&&(e.window=null),t.state=null,le},inflateGetHeader:(t,e)=>{if(pe(t))return _e;const a=t.state;return 0==(2&a.wrap)?_e:(a.head=e,e.done=!1,le)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return pe(t)?_e:(i=t.state,0!==i.wrap&&16190!==i.mode?_e:16190===i.mode&&(n=1,n=F(n,e,a,0),n!==i.check)?fe:(s=Ze(t,e,a,a),s?(i.mode=16210,ce):(i.havedict=1,le)))},inflateInfo:\"pako inflate (from Nodeca project)\"};var Se=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1};const De=Object.prototype.toString,{Z_NO_FLUSH:Te,Z_FINISH:Oe,Z_OK:Fe,Z_STREAM_END:Le,Z_NEED_DICT:Ne,Z_STREAM_ERROR:Ie,Z_DATA_ERROR:Be,Z_MEM_ERROR:Ce}=B;function He(t){this.options=Tt({chunkSize:65536,windowBits:15,to:\"\"},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Ue.inflateInit2(this.strm,e.windowBits);if(a!==Fe)throw new Error(I[a]);if(this.header=new Se,Ue.inflateGetHeader(this.strm,this.header),e.dictionary&&(\"string\"==typeof e.dictionary?e.dictionary=Nt(e.dictionary):\"[object ArrayBuffer]\"===De.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Ue.inflateSetDictionary(this.strm,e.dictionary),a!==Fe)))throw new Error(I[a])}He.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Oe:Te,\"[object ArrayBuffer]\"===De.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Ue.inflate(a,r),s===Ne&&n&&(s=Ue.inflateSetDictionary(a,n),s===Fe?s=Ue.inflate(a,r):s===Be&&(s=Ne));a.avail_in>0&&s===Le&&a.state.wrap>0&&0!==t[a.next_in];)Ue.inflateReset(a),s=Ue.inflate(a,r);switch(s){case Ie:case Be:case Ne:case Ce:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===Le))if(\"string\"===this.options.to){let t=Bt(a.output,a.next_out),e=a.next_out-t,n=It(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==Fe||0!==o){if(s===Le)return s=Ue.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},He.prototype.onData=function(t){this.chunks.push(t)},He.prototype.onEnd=function(t){t===Fe&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=Ot(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Me,deflate:je,deflateRaw:Ke,gzip:Pe}=Vt;var Ye=Me,Ge=je,Xe=B;const We=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error(\"Adding invalid event\");const e=this._hasEvents?\",\":\"\";this.deflate.push(e+t,Xe.Z_SYNC_FLUSH),this._hasEvents=!0}finish(){if(this.deflate.push(\"]\",Xe.Z_FINISH),this.deflate.err)throw this.deflate.err;const t=this.deflate.result;return this._init(),t}_init(){this._hasEvents=!1,this.deflate=new Ye,this.deflate.push(\"[\",Xe.Z_NO_FLUSH)}},qe={clear:()=>{We.clear()},addEvent:t=>We.addEvent(t),finish:()=>We.finish(),compress:t=>function(t){return Ge(t)}(t)};addEventListener(\"message\",(function(t){const e=t.data.method,a=t.data.id,i=t.data.arg;if(e in qe&&\"function\"==typeof qe[e])try{const t=qe[e](i);postMessage({id:a,method:e,success:!0,response:t})}catch(t){postMessage({id:a,method:e,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:\"init\",success:!0,response:void 0});`;\n\nfunction e(){const e=new Blob([r]);return URL.createObjectURL(e)}\n\n/**\n * Converts a timestamp to ms, if it was in s, or keeps it as ms.\n */\nfunction timestampToMs(timestamp) {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp : timestamp * 1000;\n}\n\n/** This error indicates that the event buffer size exceeded the limit.. */\nclass EventBufferSizeExceededError extends Error {\n   constructor() {\n    super(`Event buffer exceeded maximum size of ${REPLAY_MAX_EVENT_BUFFER_SIZE}.`);\n  }\n}\n\n/**\n * A basic event buffer that does not do any compression.\n * Used as fallback if the compression worker cannot be loaded or is disabled.\n */\nclass EventBufferArray  {\n  /** All the events that are buffered to be sent. */\n\n   __init() {this._totalSize = 0;}\n\n   constructor() {EventBufferArray.prototype.__init.call(this);\n    this.events = [];\n  }\n\n  /** @inheritdoc */\n   get hasEvents() {\n    return this.events.length > 0;\n  }\n\n  /** @inheritdoc */\n   get type() {\n    return 'sync';\n  }\n\n  /** @inheritdoc */\n   destroy() {\n    this.events = [];\n  }\n\n  /** @inheritdoc */\n   async addEvent(event) {\n    const eventSize = JSON.stringify(event).length;\n    this._totalSize += eventSize;\n    if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n      throw new EventBufferSizeExceededError();\n    }\n\n    this.events.push(event);\n  }\n\n  /** @inheritdoc */\n   finish() {\n    return new Promise(resolve => {\n      // Make a copy of the events array reference and immediately clear the\n      // events member so that we do not lose new events while uploading\n      // attachment.\n      const eventsRet = this.events;\n      this.clear();\n      resolve(JSON.stringify(eventsRet));\n    });\n  }\n\n  /** @inheritdoc */\n   clear() {\n    this.events = [];\n    this._totalSize = 0;\n  }\n\n  /** @inheritdoc */\n   getEarliestTimestamp() {\n    const timestamp = this.events.map(event => event.timestamp).sort()[0];\n\n    if (!timestamp) {\n      return null;\n    }\n\n    return timestampToMs(timestamp);\n  }\n}\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nclass WorkerHandler {\n\n   constructor(worker) {\n    this._worker = worker;\n    this._id = 0;\n  }\n\n  /**\n   * Ensure the worker is ready (or not).\n   * This will either resolve when the worker is ready, or reject if an error occured.\n   */\n   ensureReady() {\n    // Ensure we only check once\n    if (this._ensureReadyPromise) {\n      return this._ensureReadyPromise;\n    }\n\n    this._ensureReadyPromise = new Promise((resolve, reject) => {\n      this._worker.addEventListener(\n        'message',\n        ({ data }) => {\n          if ((data ).success) {\n            resolve();\n          } else {\n            reject();\n          }\n        },\n        { once: true },\n      );\n\n      this._worker.addEventListener(\n        'error',\n        error => {\n          reject(error);\n        },\n        { once: true },\n      );\n    });\n\n    return this._ensureReadyPromise;\n  }\n\n  /**\n   * Destroy the worker.\n   */\n   destroy() {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Destroying compression worker');\n    this._worker.terminate();\n  }\n\n  /**\n   * Post message to worker and wait for response before resolving promise.\n   */\n   postMessage(method, arg) {\n    const id = this._getAndIncrementId();\n\n    return new Promise((resolve, reject) => {\n      const listener = ({ data }) => {\n        const response = data ;\n        if (response.method !== method) {\n          return;\n        }\n\n        // There can be multiple listeners for a single method, the id ensures\n        // that the response matches the caller.\n        if (response.id !== id) {\n          return;\n        }\n\n        // At this point, we'll always want to remove listener regardless of result status\n        this._worker.removeEventListener('message', listener);\n\n        if (!response.success) {\n          // TODO: Do some error handling, not sure what\n          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay]', response.response);\n\n          reject(new Error('Error in compression worker'));\n          return;\n        }\n\n        resolve(response.response );\n      };\n\n      // Note: we can't use `once` option because it's possible it needs to\n      // listen to multiple messages\n      this._worker.addEventListener('message', listener);\n      this._worker.postMessage({ id, method, arg });\n    });\n  }\n\n  /** Get the current ID and increment it for the next call. */\n   _getAndIncrementId() {\n    return this._id++;\n  }\n}\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nclass EventBufferCompressionWorker  {\n\n   __init() {this._totalSize = 0;}\n\n   constructor(worker) {EventBufferCompressionWorker.prototype.__init.call(this);\n    this._worker = new WorkerHandler(worker);\n    this._earliestTimestamp = null;\n  }\n\n  /** @inheritdoc */\n   get hasEvents() {\n    return !!this._earliestTimestamp;\n  }\n\n  /** @inheritdoc */\n   get type() {\n    return 'worker';\n  }\n\n  /**\n   * Ensure the worker is ready (or not).\n   * This will either resolve when the worker is ready, or reject if an error occured.\n   */\n   ensureReady() {\n    return this._worker.ensureReady();\n  }\n\n  /**\n   * Destroy the event buffer.\n   */\n   destroy() {\n    this._worker.destroy();\n  }\n\n  /**\n   * Add an event to the event buffer.\n   *\n   * Returns true if event was successfuly received and processed by worker.\n   */\n   addEvent(event) {\n    const timestamp = timestampToMs(event.timestamp);\n    if (!this._earliestTimestamp || timestamp < this._earliestTimestamp) {\n      this._earliestTimestamp = timestamp;\n    }\n\n    const data = JSON.stringify(event);\n    this._totalSize += data.length;\n\n    if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n      return Promise.reject(new EventBufferSizeExceededError());\n    }\n\n    return this._sendEventToWorker(data);\n  }\n\n  /**\n   * Finish the event buffer and return the compressed data.\n   */\n   finish() {\n    return this._finishRequest();\n  }\n\n  /** @inheritdoc */\n   clear() {\n    this._earliestTimestamp = null;\n    this._totalSize = 0;\n    // We do not wait on this, as we assume the order of messages is consistent for the worker\n    void this._worker.postMessage('clear');\n  }\n\n  /** @inheritdoc */\n   getEarliestTimestamp() {\n    return this._earliestTimestamp;\n  }\n\n  /**\n   * Send the event to the worker.\n   */\n   _sendEventToWorker(data) {\n    return this._worker.postMessage('addEvent', data);\n  }\n\n  /**\n   * Finish the request and return the compressed data from the worker.\n   */\n   async _finishRequest() {\n    const response = await this._worker.postMessage('finish');\n\n    this._earliestTimestamp = null;\n    this._totalSize = 0;\n\n    return response;\n  }\n}\n\n/**\n * This proxy will try to use the compression worker, and fall back to use the simple buffer if an error occurs there.\n * This can happen e.g. if the worker cannot be loaded.\n * Exported only for testing.\n */\nclass EventBufferProxy  {\n\n   constructor(worker) {\n    this._fallback = new EventBufferArray();\n    this._compression = new EventBufferCompressionWorker(worker);\n    this._used = this._fallback;\n\n    this._ensureWorkerIsLoadedPromise = this._ensureWorkerIsLoaded();\n  }\n\n  /** @inheritdoc */\n   get type() {\n    return this._used.type;\n  }\n\n  /** @inheritDoc */\n   get hasEvents() {\n    return this._used.hasEvents;\n  }\n\n  /** @inheritDoc */\n   destroy() {\n    this._fallback.destroy();\n    this._compression.destroy();\n  }\n\n  /** @inheritdoc */\n   clear() {\n    return this._used.clear();\n  }\n\n  /** @inheritdoc */\n   getEarliestTimestamp() {\n    return this._used.getEarliestTimestamp();\n  }\n\n  /**\n   * Add an event to the event buffer.\n   *\n   * Returns true if event was successfully added.\n   */\n   addEvent(event) {\n    return this._used.addEvent(event);\n  }\n\n  /** @inheritDoc */\n   async finish() {\n    // Ensure the worker is loaded, so the sent event is compressed\n    await this.ensureWorkerIsLoaded();\n\n    return this._used.finish();\n  }\n\n  /** Ensure the worker has loaded. */\n   ensureWorkerIsLoaded() {\n    return this._ensureWorkerIsLoadedPromise;\n  }\n\n  /** Actually check if the worker has been loaded. */\n   async _ensureWorkerIsLoaded() {\n    try {\n      await this._compression.ensureReady();\n    } catch (error) {\n      // If the worker fails to load, we fall back to the simple buffer.\n      // Nothing more to do from our side here\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Failed to load the compression worker, falling back to simple buffer');\n      return;\n    }\n\n    // Now we need to switch over the array buffer to the compression worker\n    await this._switchToCompressionWorker();\n  }\n\n  /** Switch the used buffer to the compression worker. */\n   async _switchToCompressionWorker() {\n    const { events } = this._fallback;\n\n    const addEventPromises = [];\n    for (const event of events) {\n      addEventPromises.push(this._compression.addEvent(event));\n    }\n\n    // We switch over to the new buffer immediately - any further events will be added\n    // after the previously buffered ones\n    this._used = this._compression;\n\n    // Wait for original events to be re-added before resolving\n    try {\n      await Promise.all(addEventPromises);\n    } catch (error) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Replay] Failed to add events when switching buffers.', error);\n    }\n  }\n}\n\n/**\n * Create an event buffer for replays.\n */\nfunction createEventBuffer({ useCompression }) {\n  // eslint-disable-next-line no-restricted-globals\n  if (useCompression && window.Worker) {\n    try {\n      const workerUrl = e();\n\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Using compression worker');\n      const worker = new Worker(workerUrl);\n      return new EventBufferProxy(worker);\n    } catch (error) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Failed to create compression worker');\n      // Fall back to use simple event buffer array\n    }\n  }\n\n  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Using simple buffer');\n  return new EventBufferArray();\n}\n\n/** If sessionStorage is available. */\nfunction hasSessionStorage() {\n  return 'sessionStorage' in WINDOW && !!WINDOW.sessionStorage;\n}\n\n/**\n * Removes the session from Session Storage and unsets session in replay instance\n */\nfunction clearSession(replay) {\n  deleteSession();\n  replay.session = undefined;\n}\n\n/**\n * Deletes a session from storage\n */\nfunction deleteSession() {\n  if (!hasSessionStorage()) {\n    return;\n  }\n\n  try {\n    WINDOW.sessionStorage.removeItem(REPLAY_SESSION_KEY);\n  } catch (e) {\n    // Ignore potential SecurityError exceptions\n  }\n}\n\n/**\n * Given an initial timestamp and an expiry duration, checks to see if current\n * time should be considered as expired.\n */\nfunction isExpired(\n  initialTime,\n  expiry,\n  targetTime = +new Date(),\n) {\n  // Always expired if < 0\n  if (initialTime === null || expiry === undefined || expiry < 0) {\n    return true;\n  }\n\n  // Never expires if == 0\n  if (expiry === 0) {\n    return false;\n  }\n\n  return initialTime + expiry <= targetTime;\n}\n\n/**\n * Checks to see if session is expired\n */\nfunction isSessionExpired(session, timeouts, targetTime = +new Date()) {\n  return (\n    // First, check that maximum session length has not been exceeded\n    isExpired(session.started, timeouts.maxSessionLife, targetTime) ||\n    // check that the idle timeout has not been exceeded (i.e. user has\n    // performed an action within the last `sessionIdleExpire` ms)\n    isExpired(session.lastActivity, timeouts.sessionIdleExpire, targetTime)\n  );\n}\n\n/**\n * Given a sample rate, returns true if replay should be sampled.\n *\n * 1.0 = 100% sampling\n * 0.0 = 0% sampling\n */\nfunction isSampled(sampleRate) {\n  if (sampleRate === undefined) {\n    return false;\n  }\n\n  // Math.random() returns a number in range of 0 to 1 (inclusive of 0, but not 1)\n  return Math.random() < sampleRate;\n}\n\n/**\n * Save a session to session storage.\n */\nfunction saveSession(session) {\n  if (!hasSessionStorage()) {\n    return;\n  }\n\n  try {\n    WINDOW.sessionStorage.setItem(REPLAY_SESSION_KEY, JSON.stringify(session));\n  } catch (e) {\n    // Ignore potential SecurityError exceptions\n  }\n}\n\n/**\n * Get a session with defaults & applied sampling.\n */\nfunction makeSession(session) {\n  const now = Date.now();\n  const id = session.id || uuid4();\n  // Note that this means we cannot set a started/lastActivity of `0`, but this should not be relevant outside of tests.\n  const started = session.started || now;\n  const lastActivity = session.lastActivity || now;\n  const segmentId = session.segmentId || 0;\n  const sampled = session.sampled;\n\n  return {\n    id,\n    started,\n    lastActivity,\n    segmentId,\n    sampled,\n    shouldRefresh: true,\n  };\n}\n\n/**\n * Get the sampled status for a session based on sample rates & current sampled status.\n */\nfunction getSessionSampleType(sessionSampleRate, allowBuffering) {\n  return isSampled(sessionSampleRate) ? 'session' : allowBuffering ? 'buffer' : false;\n}\n\n/**\n * Create a new session, which in its current implementation is a Sentry event\n * that all replays will be saved to as attachments. Currently, we only expect\n * one of these Sentry events per \"replay session\".\n */\nfunction createSession({ sessionSampleRate, allowBuffering, stickySession = false }) {\n  const sampled = getSessionSampleType(sessionSampleRate, allowBuffering);\n  const session = makeSession({\n    sampled,\n  });\n\n  (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Replay] Creating new session: ${session.id}`);\n\n  if (stickySession) {\n    saveSession(session);\n  }\n\n  return session;\n}\n\n/**\n * Fetches a session from storage\n */\nfunction fetchSession() {\n  if (!hasSessionStorage()) {\n    return null;\n  }\n\n  try {\n    // This can throw if cookies are disabled\n    const sessionStringFromStorage = WINDOW.sessionStorage.getItem(REPLAY_SESSION_KEY);\n\n    if (!sessionStringFromStorage) {\n      return null;\n    }\n\n    const sessionObj = JSON.parse(sessionStringFromStorage) ;\n\n    return makeSession(sessionObj);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Get or create a session\n */\nfunction getSession({\n  timeouts,\n  currentSession,\n  stickySession,\n  sessionSampleRate,\n  allowBuffering,\n}) {\n  // If session exists and is passed, use it instead of always hitting session storage\n  const session = currentSession || (stickySession && fetchSession());\n\n  if (session) {\n    // If there is a session, check if it is valid (e.g. \"last activity\" time\n    // should be within the \"session idle time\", and \"session started\" time is\n    // within \"max session time\").\n    const isExpired = isSessionExpired(session, timeouts);\n\n    if (!isExpired || (allowBuffering && session.shouldRefresh)) {\n      return { type: 'saved', session };\n    } else if (!session.shouldRefresh) {\n      // This is the case if we have an error session that is completed\n      // (=triggered an error). Session will continue as session-based replay,\n      // and when this session is expired, it will not be renewed until user\n      // reloads.\n      const discardedSession = makeSession({ sampled: false });\n      return { type: 'new', session: discardedSession };\n    } else {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Session has expired');\n    }\n    // Otherwise continue to create a new session\n  }\n\n  const newSession = createSession({\n    stickySession,\n    sessionSampleRate,\n    allowBuffering,\n  });\n\n  return { type: 'new', session: newSession };\n}\n\nfunction isCustomEvent(event) {\n  return event.type === EventType.Custom;\n}\n\n/**\n * Add an event to the event buffer.\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nasync function addEvent(\n  replay,\n  event,\n  isCheckout,\n) {\n  if (!replay.eventBuffer) {\n    // This implies that `_isEnabled` is false\n    return null;\n  }\n\n  if (replay.isPaused()) {\n    // Do not add to event buffer when recording is paused\n    return null;\n  }\n\n  const timestampInMs = timestampToMs(event.timestamp);\n\n  // Throw out events that happen more than 5 minutes ago. This can happen if\n  // page has been left open and idle for a long period of time and user\n  // comes back to trigger a new session. The performance entries rely on\n  // `performance.timeOrigin`, which is when the page first opened.\n  if (timestampInMs + replay.timeouts.sessionIdlePause < Date.now()) {\n    return null;\n  }\n\n  try {\n    if (isCheckout) {\n      replay.eventBuffer.clear();\n    }\n\n    const replayOptions = replay.getOptions();\n\n    const eventAfterPossibleCallback =\n      typeof replayOptions.beforeAddRecordingEvent === 'function' && isCustomEvent(event)\n        ? replayOptions.beforeAddRecordingEvent(event)\n        : event;\n\n    if (!eventAfterPossibleCallback) {\n      return;\n    }\n\n    return await replay.eventBuffer.addEvent(eventAfterPossibleCallback);\n  } catch (error) {\n    const reason = error && error instanceof EventBufferSizeExceededError ? 'addEventSizeExceeded' : 'addEvent';\n\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(error);\n    await replay.stop(reason);\n\n    const client = getCurrentHub().getClient();\n\n    if (client) {\n      client.recordDroppedEvent('internal_sdk_error', 'replay');\n    }\n  }\n}\n\n/** If the event is an error event */\nfunction isErrorEvent(event) {\n  return !event.type;\n}\n\n/** If the event is a transaction event */\nfunction isTransactionEvent(event) {\n  return event.type === 'transaction';\n}\n\n/** If the event is an replay event */\nfunction isReplayEvent(event) {\n  return event.type === 'replay_event';\n}\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nfunction handleAfterSendEvent(replay) {\n  // Custom transports may still be returning `Promise<void>`, which means we cannot expect the status code to be available there\n  // TODO (v8): remove this check as it will no longer be necessary\n  const enforceStatusCode = isBaseTransportSend();\n\n  return (event, sendResponse) => {\n    if (!isErrorEvent(event) && !isTransactionEvent(event)) {\n      return;\n    }\n\n    const statusCode = sendResponse && sendResponse.statusCode;\n\n    // We only want to do stuff on successful error sending, otherwise you get error replays without errors attached\n    // If not using the base transport, we allow `undefined` response (as a custom transport may not implement this correctly yet)\n    // If we do use the base transport, we skip if we encountered an non-OK status code\n    if (enforceStatusCode && (!statusCode || statusCode < 200 || statusCode >= 300)) {\n      return;\n    }\n\n    // Collect traceIds in _context regardless of `recordingMode`\n    // In error mode, _context gets cleared on every checkout\n    if (isTransactionEvent(event) && event.contexts && event.contexts.trace && event.contexts.trace.trace_id) {\n      replay.getContext().traceIds.add(event.contexts.trace.trace_id );\n      return;\n    }\n\n    // Everything below is just for error events\n    if (!isErrorEvent(event)) {\n      return;\n    }\n\n    // Add error to list of errorIds of replay. This is ok to do even if not\n    // sampled because context will get reset at next checkout.\n    // XXX: There is also a race condition where it's possible to capture an\n    // error to Sentry before Replay SDK has loaded, but response returns after\n    // it was loaded, and this gets called.\n    if (event.event_id) {\n      replay.getContext().errorIds.add(event.event_id);\n    }\n\n    // If error event is tagged with replay id it means it was sampled (when in buffer mode)\n    // Need to be very careful that this does not cause an infinite loop\n    if (replay.recordingMode === 'buffer' && event.tags && event.tags.replayId) {\n      setTimeout(() => {\n        // Capture current event buffer as new replay\n        void replay.sendBufferedReplayOrFlush();\n      });\n    }\n  };\n}\n\nfunction isBaseTransportSend() {\n  const client = getCurrentHub().getClient();\n  if (!client) {\n    return false;\n  }\n\n  const transport = client.getTransport();\n  if (!transport) {\n    return false;\n  }\n\n  return (\n    (transport.send ).__sentry__baseTransport__ || false\n  );\n}\n\n/**\n * Returns true if we think the given event is an error originating inside of rrweb.\n */\nfunction isRrwebError(event, hint) {\n  if (event.type || !event.exception || !event.exception.values || !event.exception.values.length) {\n    return false;\n  }\n\n  // @ts-ignore this may be set by rrweb when it finds errors\n  if (hint.originalException && hint.originalException.__rrweb__) {\n    return true;\n  }\n\n  // Check if any exception originates from rrweb\n  return event.exception.values.some(exception => {\n    if (!exception.stacktrace || !exception.stacktrace.frames || !exception.stacktrace.frames.length) {\n      return false;\n    }\n\n    return exception.stacktrace.frames.some(frame => frame.filename && frame.filename.includes('/rrweb/src/'));\n  });\n}\n\n/**\n * Determine if event should be sampled (only applies in buffer mode).\n * When an event is captured by `hanldleGlobalEvent`, when in buffer mode\n * we determine if we want to sample the error or not.\n */\nfunction shouldSampleForBufferEvent(replay, event) {\n  if (replay.recordingMode !== 'buffer') {\n    return false;\n  }\n\n  // ignore this error because otherwise we could loop indefinitely with\n  // trying to capture replay and failing\n  if (event.message === UNABLE_TO_SEND_REPLAY) {\n    return false;\n  }\n\n  // Require the event to be an error event & to have an exception\n  if (!event.exception || event.type) {\n    return false;\n  }\n\n  return isSampled(replay.getOptions().errorSampleRate);\n}\n\n/**\n * Returns a listener to be added to `addGlobalEventProcessor(listener)`.\n */\nfunction handleGlobalEventListener(\n  replay,\n  includeAfterSendEventHandling = false,\n) {\n  const afterSendHandler = includeAfterSendEventHandling ? handleAfterSendEvent(replay) : undefined;\n\n  return (event, hint) => {\n    if (isReplayEvent(event)) {\n      // Replays have separate set of breadcrumbs, do not include breadcrumbs\n      // from core SDK\n      delete event.breadcrumbs;\n      return event;\n    }\n\n    // We only want to handle errors & transactions, nothing else\n    if (!isErrorEvent(event) && !isTransactionEvent(event)) {\n      return event;\n    }\n\n    // Unless `captureExceptions` is enabled, we want to ignore errors coming from rrweb\n    // As there can be a bunch of stuff going wrong in internals there, that we don't want to bubble up to users\n    if (isRrwebError(event, hint) && !replay.getOptions()._experiments.captureExceptions) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Ignoring error from rrweb internals', event);\n      return null;\n    }\n\n    // When in buffer mode, we decide to sample here.\n    // Later, in `handleAfterSendEvent`, if the replayId is set, we know that we sampled\n    // And convert the buffer session to a full session\n    const isErrorEventSampled = shouldSampleForBufferEvent(replay, event);\n\n    // Tag errors if it has been sampled in buffer mode, or if it is session mode\n    // Only tag transactions if in session mode\n    const shouldTagReplayId = isErrorEventSampled || replay.recordingMode === 'session';\n\n    if (shouldTagReplayId) {\n      event.tags = { ...event.tags, replayId: replay.getSessionId() };\n    }\n\n    // In cases where a custom client is used that does not support the new hooks (yet),\n    // we manually call this hook method here\n    if (afterSendHandler) {\n      // Pretend the error had a 200 response so we always capture it\n      afterSendHandler(event, { statusCode: 200 });\n    }\n\n    return event;\n  };\n}\n\n/**\n * Create a \"span\" for each performance entry.\n */\nfunction createPerformanceSpans(\n  replay,\n  entries,\n) {\n  return entries.map(({ type, start, end, name, data }) => {\n    const response = replay.throttledAddEvent({\n      type: EventType.Custom,\n      timestamp: start,\n      data: {\n        tag: 'performanceSpan',\n        payload: {\n          op: type,\n          description: name,\n          startTimestamp: start,\n          endTimestamp: end,\n          data,\n        },\n      },\n    });\n\n    // If response is a string, it means its either THROTTLED or SKIPPED\n    return typeof response === 'string' ? Promise.resolve(null) : response;\n  });\n}\n\nfunction handleHistory(handlerData) {\n  const { from, to } = handlerData;\n\n  const now = Date.now() / 1000;\n\n  return {\n    type: 'navigation.push',\n    start: now,\n    end: now,\n    name: to,\n    data: {\n      previous: from,\n    },\n  };\n}\n\n/**\n * Returns a listener to be added to `addInstrumentationHandler('history', listener)`.\n */\nfunction handleHistorySpanListener(replay) {\n  return (handlerData) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleHistory(handlerData);\n\n    if (result === null) {\n      return;\n    }\n\n    // Need to collect visited URLs\n    replay.getContext().urls.push(result.name);\n    replay.triggerUserActivity();\n\n    replay.addUpdate(() => {\n      createPerformanceSpans(replay, [result]);\n      // Returning false to flush\n      return false;\n    });\n  };\n}\n\n/**\n * Check whether a given request URL should be filtered out. This is so we\n * don't log Sentry ingest requests.\n */\nfunction shouldFilterRequest(replay, url) {\n  // If we enabled the `traceInternals` experiment, we want to trace everything\n  if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && replay.getOptions()._experiments.traceInternals) {\n    return false;\n  }\n\n  return _isSentryRequest(url);\n}\n\n/**\n * Checks wether a given URL belongs to the configured Sentry DSN.\n */\nfunction _isSentryRequest(url) {\n  const client = getCurrentHub().getClient();\n  const dsn = client && client.getDsn();\n  return dsn ? url.includes(dsn.host) : false;\n}\n\n/** Add a performance entry breadcrumb */\nfunction addNetworkBreadcrumb(\n  replay,\n  result,\n) {\n  if (!replay.isEnabled()) {\n    return;\n  }\n\n  if (result === null) {\n    return;\n  }\n\n  if (shouldFilterRequest(replay, result.name)) {\n    return;\n  }\n\n  replay.addUpdate(() => {\n    createPerformanceSpans(replay, [result]);\n    // Returning true will cause `addUpdate` to not flush\n    // We do not want network requests to cause a flush. This will prevent\n    // recurring/polling requests from keeping the replay session alive.\n    return true;\n  });\n}\n\n/** only exported for tests */\nfunction handleFetch(handlerData) {\n  const { startTimestamp, endTimestamp, fetchData, response } = handlerData;\n\n  if (!endTimestamp) {\n    return null;\n  }\n\n  // This is only used as a fallback, so we know the body sizes are never set here\n  const { method, url } = fetchData;\n\n  return {\n    type: 'resource.fetch',\n    start: startTimestamp / 1000,\n    end: endTimestamp / 1000,\n    name: url,\n    data: {\n      method,\n      statusCode: response ? (response ).status : undefined,\n    },\n  };\n}\n\n/**\n * Returns a listener to be added to `addInstrumentationHandler('fetch', listener)`.\n */\nfunction handleFetchSpanListener(replay) {\n  return (handlerData) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleFetch(handlerData);\n\n    addNetworkBreadcrumb(replay, result);\n  };\n}\n\n/** only exported for tests */\nfunction handleXhr(handlerData) {\n  const { startTimestamp, endTimestamp, xhr } = handlerData;\n\n  const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n  if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n    return null;\n  }\n\n  // This is only used as a fallback, so we know the body sizes are never set here\n  const { method, url, status_code: statusCode } = sentryXhrData;\n\n  if (url === undefined) {\n    return null;\n  }\n\n  return {\n    type: 'resource.xhr',\n    name: url,\n    start: startTimestamp / 1000,\n    end: endTimestamp / 1000,\n    data: {\n      method,\n      statusCode,\n    },\n  };\n}\n\n/**\n * Returns a listener to be added to `addInstrumentationHandler('xhr', listener)`.\n */\nfunction handleXhrSpanListener(replay) {\n  return (handlerData) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleXhr(handlerData);\n\n    addNetworkBreadcrumb(replay, result);\n  };\n}\n\nconst OBJ = 10;\nconst OBJ_KEY = 11;\nconst OBJ_KEY_STR = 12;\nconst OBJ_VAL = 13;\nconst OBJ_VAL_STR = 14;\nconst OBJ_VAL_COMPLETED = 15;\n\nconst ARR = 20;\nconst ARR_VAL = 21;\nconst ARR_VAL_STR = 22;\nconst ARR_VAL_COMPLETED = 23;\n\nconst ALLOWED_PRIMITIVES = ['true', 'false', 'null'];\n\n/**\n * Complete an incomplete JSON string.\n * This will ensure that the last element always has a `\"~~\"` to indicate it was truncated.\n * For example, `[1,2,` will be completed to `[1,2,\"~~\"]`\n * and `{\"aa\":\"b` will be completed to `{\"aa\":\"b~~\"}`\n */\nfunction completeJson(incompleteJson, stack) {\n  if (!stack.length) {\n    return incompleteJson;\n  }\n\n  let json = incompleteJson;\n\n  // Most checks are only needed for the last step in the stack\n  const lastPos = stack.length - 1;\n  const lastStep = stack[lastPos];\n\n  json = _fixLastStep(json, lastStep);\n\n  // Complete remaining steps - just add closing brackets\n  for (let i = lastPos; i >= 0; i--) {\n    const step = stack[i];\n\n    switch (step) {\n      case OBJ:\n        json = `${json}}`;\n        break;\n      case ARR:\n        json = `${json}]`;\n        break;\n    }\n  }\n\n  return json;\n}\n\nfunction _fixLastStep(json, lastStep) {\n  switch (lastStep) {\n    // Object cases\n    case OBJ:\n      return `${json}\"~~\":\"~~\"`;\n    case OBJ_KEY:\n      return `${json}:\"~~\"`;\n    case OBJ_KEY_STR:\n      return `${json}~~\":\"~~\"`;\n    case OBJ_VAL:\n      return _maybeFixIncompleteObjValue(json);\n    case OBJ_VAL_STR:\n      return `${json}~~\"`;\n    case OBJ_VAL_COMPLETED:\n      return `${json},\"~~\":\"~~\"`;\n\n    // Array cases\n    case ARR:\n      return `${json}\"~~\"`;\n    case ARR_VAL:\n      return _maybeFixIncompleteArrValue(json);\n    case ARR_VAL_STR:\n      return `${json}~~\"`;\n    case ARR_VAL_COMPLETED:\n      return `${json},\"~~\"`;\n  }\n\n  return json;\n}\n\nfunction _maybeFixIncompleteArrValue(json) {\n  const pos = _findLastArrayDelimiter(json);\n\n  if (pos > -1) {\n    const part = json.slice(pos + 1);\n\n    if (ALLOWED_PRIMITIVES.includes(part.trim())) {\n      return `${json},\"~~\"`;\n    }\n\n    // Everything else is replaced with `\"~~\"`\n    return `${json.slice(0, pos + 1)}\"~~\"`;\n  }\n\n  // fallback, this shouldn't happen, to be save\n  return json;\n}\n\nfunction _findLastArrayDelimiter(json) {\n  for (let i = json.length - 1; i >= 0; i--) {\n    const char = json[i];\n\n    if (char === ',' || char === '[') {\n      return i;\n    }\n  }\n\n  return -1;\n}\n\nfunction _maybeFixIncompleteObjValue(json) {\n  const startPos = json.lastIndexOf(':');\n\n  const part = json.slice(startPos + 1);\n\n  if (ALLOWED_PRIMITIVES.includes(part.trim())) {\n    return `${json},\"~~\":\"~~\"`;\n  }\n\n  // Everything else is replaced with `\"~~\"`\n  // This also means we do not have incomplete numbers, e.g `[1` is replaced with `[\"~~\"]`\n  return `${json.slice(0, startPos + 1)}\"~~\"`;\n}\n\n/**\n * Evaluate an (incomplete) JSON string.\n */\nfunction evaluateJson(json) {\n  const stack = [];\n\n  for (let pos = 0; pos < json.length; pos++) {\n    _evaluateJsonPos(stack, json, pos);\n  }\n\n  return stack;\n}\n\nfunction _evaluateJsonPos(stack, json, pos) {\n  const curStep = stack[stack.length - 1];\n\n  const char = json[pos];\n\n  const whitespaceRegex = /\\s/;\n\n  if (whitespaceRegex.test(char)) {\n    return;\n  }\n\n  if (char === '\"' && !_isEscaped(json, pos)) {\n    _handleQuote(stack, curStep);\n    return;\n  }\n\n  switch (char) {\n    case '{':\n      _handleObj(stack, curStep);\n      break;\n    case '[':\n      _handleArr(stack, curStep);\n      break;\n    case ':':\n      _handleColon(stack, curStep);\n      break;\n    case ',':\n      _handleComma(stack, curStep);\n      break;\n    case '}':\n      _handleObjClose(stack, curStep);\n      break;\n    case ']':\n      _handleArrClose(stack, curStep);\n      break;\n  }\n}\n\nfunction _handleQuote(stack, curStep) {\n  // End of obj value\n  if (curStep === OBJ_VAL_STR) {\n    stack.pop();\n    stack.push(OBJ_VAL_COMPLETED);\n    return;\n  }\n\n  // End of arr value\n  if (curStep === ARR_VAL_STR) {\n    stack.pop();\n    stack.push(ARR_VAL_COMPLETED);\n    return;\n  }\n\n  // Start of obj value\n  if (curStep === OBJ_VAL) {\n    stack.push(OBJ_VAL_STR);\n    return;\n  }\n\n  // Start of arr value\n  if (curStep === ARR_VAL) {\n    stack.push(ARR_VAL_STR);\n    return;\n  }\n\n  // Start of obj key\n  if (curStep === OBJ) {\n    stack.push(OBJ_KEY_STR);\n    return;\n  }\n\n  // End of obj key\n  if (curStep === OBJ_KEY_STR) {\n    stack.pop();\n    stack.push(OBJ_KEY);\n    return;\n  }\n}\n\nfunction _handleObj(stack, curStep) {\n  // Initial object\n  if (!curStep) {\n    stack.push(OBJ);\n    return;\n  }\n\n  // New object as obj value\n  if (curStep === OBJ_VAL) {\n    stack.push(OBJ);\n    return;\n  }\n\n  // New object as array element\n  if (curStep === ARR_VAL) {\n    stack.push(OBJ);\n  }\n\n  // New object as first array element\n  if (curStep === ARR) {\n    stack.push(OBJ);\n    return;\n  }\n}\n\nfunction _handleArr(stack, curStep) {\n  // Initial array\n  if (!curStep) {\n    stack.push(ARR);\n    stack.push(ARR_VAL);\n    return;\n  }\n\n  // New array as obj value\n  if (curStep === OBJ_VAL) {\n    stack.push(ARR);\n    stack.push(ARR_VAL);\n    return;\n  }\n\n  // New array as array element\n  if (curStep === ARR_VAL) {\n    stack.push(ARR);\n    stack.push(ARR_VAL);\n  }\n\n  // New array as first array element\n  if (curStep === ARR) {\n    stack.push(ARR);\n    stack.push(ARR_VAL);\n    return;\n  }\n}\n\nfunction _handleColon(stack, curStep) {\n  if (curStep === OBJ_KEY) {\n    stack.pop();\n    stack.push(OBJ_VAL);\n  }\n}\n\nfunction _handleComma(stack, curStep) {\n  // Comma after obj value\n  if (curStep === OBJ_VAL) {\n    stack.pop();\n    return;\n  }\n  if (curStep === OBJ_VAL_COMPLETED) {\n    // Pop OBJ_VAL_COMPLETED & OBJ_VAL\n    stack.pop();\n    stack.pop();\n    return;\n  }\n\n  // Comma after arr value\n  if (curStep === ARR_VAL) {\n    // do nothing - basically we'd pop ARR_VAL but add it right back\n    return;\n  }\n\n  if (curStep === ARR_VAL_COMPLETED) {\n    // Pop ARR_VAL_COMPLETED\n    stack.pop();\n\n    // basically we'd pop ARR_VAL but add it right back\n    return;\n  }\n}\n\nfunction _handleObjClose(stack, curStep) {\n  // Empty object {}\n  if (curStep === OBJ) {\n    stack.pop();\n  }\n\n  // Object with element\n  if (curStep === OBJ_VAL) {\n    // Pop OBJ_VAL, OBJ\n    stack.pop();\n    stack.pop();\n  }\n\n  // Obj with element\n  if (curStep === OBJ_VAL_COMPLETED) {\n    // Pop OBJ_VAL_COMPLETED, OBJ_VAL, OBJ\n    stack.pop();\n    stack.pop();\n    stack.pop();\n  }\n\n  // if was obj value, complete it\n  if (stack[stack.length - 1] === OBJ_VAL) {\n    stack.push(OBJ_VAL_COMPLETED);\n  }\n\n  // if was arr value, complete it\n  if (stack[stack.length - 1] === ARR_VAL) {\n    stack.push(ARR_VAL_COMPLETED);\n  }\n}\n\nfunction _handleArrClose(stack, curStep) {\n  // Empty array []\n  if (curStep === ARR) {\n    stack.pop();\n  }\n\n  // Array with element\n  if (curStep === ARR_VAL) {\n    // Pop ARR_VAL, ARR\n    stack.pop();\n    stack.pop();\n  }\n\n  // Array with element\n  if (curStep === ARR_VAL_COMPLETED) {\n    // Pop ARR_VAL_COMPLETED, ARR_VAL, ARR\n    stack.pop();\n    stack.pop();\n    stack.pop();\n  }\n\n  // if was obj value, complete it\n  if (stack[stack.length - 1] === OBJ_VAL) {\n    stack.push(OBJ_VAL_COMPLETED);\n  }\n\n  // if was arr value, complete it\n  if (stack[stack.length - 1] === ARR_VAL) {\n    stack.push(ARR_VAL_COMPLETED);\n  }\n}\n\nfunction _isEscaped(str, pos) {\n  const previousChar = str[pos - 1];\n\n  return previousChar === '\\\\' && !_isEscaped(str, pos - 1);\n}\n\n/* eslint-disable max-lines */\n\n/**\n * Takes an incomplete JSON string, and returns a hopefully valid JSON string.\n * Note that this _can_ fail, so you should check the return value is valid JSON.\n */\nfunction fixJson(incompleteJson) {\n  const stack = evaluateJson(incompleteJson);\n\n  return completeJson(incompleteJson, stack);\n}\n\n/** Get the size of a body. */\nfunction getBodySize(\n  body,\n  textEncoder,\n) {\n  if (!body) {\n    return undefined;\n  }\n\n  try {\n    if (typeof body === 'string') {\n      return textEncoder.encode(body).length;\n    }\n\n    if (body instanceof URLSearchParams) {\n      return textEncoder.encode(body.toString()).length;\n    }\n\n    if (body instanceof FormData) {\n      const formDataStr = _serializeFormData(body);\n      return textEncoder.encode(formDataStr).length;\n    }\n\n    if (body instanceof Blob) {\n      return body.size;\n    }\n\n    if (body instanceof ArrayBuffer) {\n      return body.byteLength;\n    }\n\n    // Currently unhandled types: ArrayBufferView, ReadableStream\n  } catch (e) {\n    // just return undefined\n  }\n\n  return undefined;\n}\n\n/** Convert a Content-Length header to number/undefined.  */\nfunction parseContentLengthHeader(header) {\n  if (!header) {\n    return undefined;\n  }\n\n  const size = parseInt(header, 10);\n  return isNaN(size) ? undefined : size;\n}\n\n/** Get the string representation of a body. */\nfunction getBodyString(body) {\n  if (typeof body === 'string') {\n    return body;\n  }\n\n  if (body instanceof URLSearchParams) {\n    return body.toString();\n  }\n\n  if (body instanceof FormData) {\n    return _serializeFormData(body);\n  }\n\n  return undefined;\n}\n\n/** Convert ReplayNetworkRequestData to a PerformanceEntry. */\nfunction makeNetworkReplayBreadcrumb(\n  type,\n  data,\n) {\n  if (!data) {\n    return null;\n  }\n\n  const { startTimestamp, endTimestamp, url, method, statusCode, request, response } = data;\n\n  const result = {\n    type,\n    start: startTimestamp / 1000,\n    end: endTimestamp / 1000,\n    name: url,\n    data: dropUndefinedKeys({\n      method,\n      statusCode,\n      request,\n      response,\n    }),\n  };\n\n  return result;\n}\n\n/** Build the request or response part of a replay network breadcrumb that was skipped. */\nfunction buildSkippedNetworkRequestOrResponse(bodySize) {\n  return {\n    headers: {},\n    size: bodySize,\n    _meta: {\n      warnings: ['URL_SKIPPED'],\n    },\n  };\n}\n\n/** Build the request or response part of a replay network breadcrumb. */\nfunction buildNetworkRequestOrResponse(\n  headers,\n  bodySize,\n  body,\n) {\n  if (!bodySize && Object.keys(headers).length === 0) {\n    return undefined;\n  }\n\n  if (!bodySize) {\n    return {\n      headers,\n    };\n  }\n\n  if (!body) {\n    return {\n      headers,\n      size: bodySize,\n    };\n  }\n\n  const info = {\n    headers,\n    size: bodySize,\n  };\n\n  const { body: normalizedBody, warnings } = normalizeNetworkBody(body);\n  info.body = normalizedBody;\n  if (warnings.length > 0) {\n    info._meta = {\n      warnings,\n    };\n  }\n\n  return info;\n}\n\n/** Filter a set of headers */\nfunction getAllowedHeaders(headers, allowedHeaders) {\n  return Object.keys(headers).reduce((filteredHeaders, key) => {\n    const normalizedKey = key.toLowerCase();\n    // Avoid putting empty strings into the headers\n    if (allowedHeaders.includes(normalizedKey) && headers[key]) {\n      filteredHeaders[normalizedKey] = headers[key];\n    }\n    return filteredHeaders;\n  }, {});\n}\n\nfunction _serializeFormData(formData) {\n  // This is a bit simplified, but gives us a decent estimate\n  // This converts e.g. { name: 'Anne Smith', age: 13 } to 'name=Anne+Smith&age=13'\n  // @ts-ignore passing FormData to URLSearchParams actually works\n  return new URLSearchParams(formData).toString();\n}\n\nfunction normalizeNetworkBody(body)\n\n {\n  if (!body || typeof body !== 'string') {\n    return {\n      body,\n      warnings: [],\n    };\n  }\n\n  const exceedsSizeLimit = body.length > NETWORK_BODY_MAX_SIZE;\n\n  if (_strIsProbablyJson(body)) {\n    try {\n      const json = exceedsSizeLimit ? fixJson(body.slice(0, NETWORK_BODY_MAX_SIZE)) : body;\n      const normalizedBody = JSON.parse(json);\n      return {\n        body: normalizedBody,\n        warnings: exceedsSizeLimit ? ['JSON_TRUNCATED'] : [],\n      };\n    } catch (e3) {\n      return {\n        body: exceedsSizeLimit ? `${body.slice(0, NETWORK_BODY_MAX_SIZE)}…` : body,\n        warnings: exceedsSizeLimit ? ['INVALID_JSON', 'TEXT_TRUNCATED'] : ['INVALID_JSON'],\n      };\n    }\n  }\n\n  return {\n    body: exceedsSizeLimit ? `${body.slice(0, NETWORK_BODY_MAX_SIZE)}…` : body,\n    warnings: exceedsSizeLimit ? ['TEXT_TRUNCATED'] : [],\n  };\n}\n\nfunction _strIsProbablyJson(str) {\n  const first = str[0];\n  const last = str[str.length - 1];\n\n  // Simple check: If this does not start & end with {} or [], it's not JSON\n  return (first === '[' && last === ']') || (first === '{' && last === '}');\n}\n\n/** Match an URL against a list of strings/Regex. */\nfunction urlMatches(url, urls) {\n  const fullUrl = getFullUrl(url);\n\n  return stringMatchesSomePattern(fullUrl, urls);\n}\n\n/** exported for tests */\nfunction getFullUrl(url, baseURI = WINDOW.document.baseURI) {\n  // Short circuit for common cases:\n  if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith(WINDOW.location.origin)) {\n    return url;\n  }\n  const fixedUrl = new URL(url, baseURI);\n\n  // If these do not match, we are not dealing with a relative URL, so just return it\n  if (fixedUrl.origin !== new URL(baseURI).origin) {\n    return url;\n  }\n\n  const fullUrl = fixedUrl.href;\n\n  // Remove trailing slashes, if they don't match the original URL\n  if (!url.endsWith('/') && fullUrl.endsWith('/')) {\n    return fullUrl.slice(0, -1);\n  }\n\n  return fullUrl;\n}\n\n/**\n * Capture a fetch breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nasync function captureFetchBreadcrumbToReplay(\n  breadcrumb,\n  hint,\n  options\n\n,\n) {\n  try {\n    const data = await _prepareFetchData(breadcrumb, hint, options);\n\n    // Create a replay performance entry from this breadcrumb\n    const result = makeNetworkReplayBreadcrumb('resource.fetch', data);\n    addNetworkBreadcrumb(options.replay, result);\n  } catch (error) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Failed to capture fetch breadcrumb', error);\n  }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nfunction enrichFetchBreadcrumb(\n  breadcrumb,\n  hint,\n  options,\n) {\n  const { input, response } = hint;\n\n  const body = _getFetchRequestArgBody(input);\n  const reqSize = getBodySize(body, options.textEncoder);\n\n  const resSize = response ? parseContentLengthHeader(response.headers.get('content-length')) : undefined;\n\n  if (reqSize !== undefined) {\n    breadcrumb.data.request_body_size = reqSize;\n  }\n  if (resSize !== undefined) {\n    breadcrumb.data.response_body_size = resSize;\n  }\n}\n\nasync function _prepareFetchData(\n  breadcrumb,\n  hint,\n  options\n\n,\n) {\n  const { startTimestamp, endTimestamp } = hint;\n\n  const {\n    url,\n    method,\n    status_code: statusCode = 0,\n    request_body_size: requestBodySize,\n    response_body_size: responseBodySize,\n  } = breadcrumb.data;\n\n  const captureDetails = urlMatches(url, options.networkDetailAllowUrls);\n\n  const request = captureDetails\n    ? _getRequestInfo(options, hint.input, requestBodySize)\n    : buildSkippedNetworkRequestOrResponse(requestBodySize);\n  const response = await _getResponseInfo(captureDetails, options, hint.response, responseBodySize);\n\n  return {\n    startTimestamp,\n    endTimestamp,\n    url,\n    method,\n    statusCode,\n    request,\n    response,\n  };\n}\n\nfunction _getRequestInfo(\n  { networkCaptureBodies, networkRequestHeaders },\n  input,\n  requestBodySize,\n) {\n  const headers = getRequestHeaders(input, networkRequestHeaders);\n\n  if (!networkCaptureBodies) {\n    return buildNetworkRequestOrResponse(headers, requestBodySize, undefined);\n  }\n\n  // We only want to transmit string or string-like bodies\n  const requestBody = _getFetchRequestArgBody(input);\n  const bodyStr = getBodyString(requestBody);\n  return buildNetworkRequestOrResponse(headers, requestBodySize, bodyStr);\n}\n\nasync function _getResponseInfo(\n  captureDetails,\n  {\n    networkCaptureBodies,\n    textEncoder,\n    networkResponseHeaders,\n  }\n\n,\n  response,\n  responseBodySize,\n) {\n  if (!captureDetails && responseBodySize !== undefined) {\n    return buildSkippedNetworkRequestOrResponse(responseBodySize);\n  }\n\n  const headers = getAllHeaders(response.headers, networkResponseHeaders);\n\n  if (!networkCaptureBodies && responseBodySize !== undefined) {\n    return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n  }\n\n  // Only clone the response if we need to\n  try {\n    // We have to clone this, as the body can only be read once\n    const res = response.clone();\n    const bodyText = await _parseFetchBody(res);\n\n    const size =\n      bodyText && bodyText.length && responseBodySize === undefined\n        ? getBodySize(bodyText, textEncoder)\n        : responseBodySize;\n\n    if (!captureDetails) {\n      return buildSkippedNetworkRequestOrResponse(size);\n    }\n\n    if (networkCaptureBodies) {\n      return buildNetworkRequestOrResponse(headers, size, bodyText);\n    }\n\n    return buildNetworkRequestOrResponse(headers, size, undefined);\n  } catch (e) {\n    // fallback\n    return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n  }\n}\n\nasync function _parseFetchBody(response) {\n  try {\n    return await response.text();\n  } catch (e2) {\n    return undefined;\n  }\n}\n\nfunction _getFetchRequestArgBody(fetchArgs = []) {\n  // We only support getting the body from the fetch options\n  if (fetchArgs.length !== 2 || typeof fetchArgs[1] !== 'object') {\n    return undefined;\n  }\n\n  return (fetchArgs[1] ).body;\n}\n\nfunction getAllHeaders(headers, allowedHeaders) {\n  const allHeaders = {};\n\n  allowedHeaders.forEach(header => {\n    if (headers.get(header)) {\n      allHeaders[header] = headers.get(header) ;\n    }\n  });\n\n  return allHeaders;\n}\n\nfunction getRequestHeaders(fetchArgs, allowedHeaders) {\n  if (fetchArgs.length === 1 && typeof fetchArgs[0] !== 'string') {\n    return getHeadersFromOptions(fetchArgs[0] , allowedHeaders);\n  }\n\n  if (fetchArgs.length === 2) {\n    return getHeadersFromOptions(fetchArgs[1] , allowedHeaders);\n  }\n\n  return {};\n}\n\nfunction getHeadersFromOptions(\n  input,\n  allowedHeaders,\n) {\n  if (!input) {\n    return {};\n  }\n\n  const headers = input.headers;\n\n  if (!headers) {\n    return {};\n  }\n\n  if (headers instanceof Headers) {\n    return getAllHeaders(headers, allowedHeaders);\n  }\n\n  // We do not support this, as it is not really documented (anymore?)\n  if (Array.isArray(headers)) {\n    return {};\n  }\n\n  return getAllowedHeaders(headers, allowedHeaders);\n}\n\n/**\n * Capture an XHR breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nasync function captureXhrBreadcrumbToReplay(\n  breadcrumb,\n  hint,\n  options,\n) {\n  try {\n    const data = _prepareXhrData(breadcrumb, hint, options);\n\n    // Create a replay performance entry from this breadcrumb\n    const result = makeNetworkReplayBreadcrumb('resource.xhr', data);\n    addNetworkBreadcrumb(options.replay, result);\n  } catch (error) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Failed to capture fetch breadcrumb', error);\n  }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nfunction enrichXhrBreadcrumb(\n  breadcrumb,\n  hint,\n  options,\n) {\n  const { xhr, input } = hint;\n\n  const reqSize = getBodySize(input, options.textEncoder);\n  const resSize = xhr.getResponseHeader('content-length')\n    ? parseContentLengthHeader(xhr.getResponseHeader('content-length'))\n    : getBodySize(xhr.response, options.textEncoder);\n\n  if (reqSize !== undefined) {\n    breadcrumb.data.request_body_size = reqSize;\n  }\n  if (resSize !== undefined) {\n    breadcrumb.data.response_body_size = resSize;\n  }\n}\n\nfunction _prepareXhrData(\n  breadcrumb,\n  hint,\n  options,\n) {\n  const { startTimestamp, endTimestamp, input, xhr } = hint;\n\n  const {\n    url,\n    method,\n    status_code: statusCode = 0,\n    request_body_size: requestBodySize,\n    response_body_size: responseBodySize,\n  } = breadcrumb.data;\n\n  if (!url) {\n    return null;\n  }\n\n  if (!urlMatches(url, options.networkDetailAllowUrls)) {\n    const request = buildSkippedNetworkRequestOrResponse(requestBodySize);\n    const response = buildSkippedNetworkRequestOrResponse(responseBodySize);\n    return {\n      startTimestamp,\n      endTimestamp,\n      url,\n      method,\n      statusCode,\n      request,\n      response,\n    };\n  }\n\n  const xhrInfo = xhr[SENTRY_XHR_DATA_KEY];\n  const networkRequestHeaders = xhrInfo\n    ? getAllowedHeaders(xhrInfo.request_headers, options.networkRequestHeaders)\n    : {};\n  const networkResponseHeaders = getAllowedHeaders(getResponseHeaders(xhr), options.networkResponseHeaders);\n\n  const request = buildNetworkRequestOrResponse(\n    networkRequestHeaders,\n    requestBodySize,\n    options.networkCaptureBodies ? getBodyString(input) : undefined,\n  );\n  const response = buildNetworkRequestOrResponse(\n    networkResponseHeaders,\n    responseBodySize,\n    options.networkCaptureBodies ? hint.xhr.responseText : undefined,\n  );\n\n  return {\n    startTimestamp,\n    endTimestamp,\n    url,\n    method,\n    statusCode,\n    request,\n    response,\n  };\n}\n\nfunction getResponseHeaders(xhr) {\n  const headers = xhr.getAllResponseHeaders();\n\n  if (!headers) {\n    return {};\n  }\n\n  return headers.split('\\r\\n').reduce((acc, line) => {\n    const [key, value] = line.split(': ');\n    acc[key.toLowerCase()] = value;\n    return acc;\n  }, {});\n}\n\n/**\n * This method does two things:\n * - It enriches the regular XHR/fetch breadcrumbs with request/response size data\n * - It captures the XHR/fetch breadcrumbs to the replay\n *   (enriching it with further data that is _not_ added to the regular breadcrumbs)\n */\nfunction handleNetworkBreadcrumbs(replay) {\n  const client = getCurrentHub().getClient();\n\n  try {\n    const textEncoder = new TextEncoder();\n\n    const { networkDetailAllowUrls, networkCaptureBodies, networkRequestHeaders, networkResponseHeaders } =\n      replay.getOptions();\n\n    const options = {\n      replay,\n      textEncoder,\n      networkDetailAllowUrls,\n      networkCaptureBodies,\n      networkRequestHeaders,\n      networkResponseHeaders,\n    };\n\n    if (client && client.on) {\n      client.on('beforeAddBreadcrumb', (breadcrumb, hint) => beforeAddNetworkBreadcrumb(options, breadcrumb, hint));\n    } else {\n      // Fallback behavior\n      addInstrumentationHandler('fetch', handleFetchSpanListener(replay));\n      addInstrumentationHandler('xhr', handleXhrSpanListener(replay));\n    }\n  } catch (e2) {\n    // Do nothing\n  }\n}\n\n/** just exported for tests */\nfunction beforeAddNetworkBreadcrumb(\n  options,\n  breadcrumb,\n  hint,\n) {\n  if (!breadcrumb.data) {\n    return;\n  }\n\n  try {\n    if (_isXhrBreadcrumb(breadcrumb) && _isXhrHint(hint)) {\n      // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n      // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n      // So any async mutations to it will not be reflected in the final breadcrumb\n      enrichXhrBreadcrumb(breadcrumb, hint, options);\n\n      void captureXhrBreadcrumbToReplay(breadcrumb, hint, options);\n    }\n\n    if (_isFetchBreadcrumb(breadcrumb) && _isFetchHint(hint)) {\n      // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n      // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n      // So any async mutations to it will not be reflected in the final breadcrumb\n      enrichFetchBreadcrumb(breadcrumb, hint, options);\n\n      void captureFetchBreadcrumbToReplay(breadcrumb, hint, options);\n    }\n  } catch (e) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Error when enriching network breadcrumb');\n  }\n}\n\nfunction _isXhrBreadcrumb(breadcrumb) {\n  return breadcrumb.category === 'xhr';\n}\n\nfunction _isFetchBreadcrumb(breadcrumb) {\n  return breadcrumb.category === 'fetch';\n}\n\nfunction _isXhrHint(hint) {\n  return hint && hint.xhr;\n}\n\nfunction _isFetchHint(hint) {\n  return hint && hint.response;\n}\n\nlet _LAST_BREADCRUMB = null;\n\nfunction isBreadcrumbWithCategory(breadcrumb) {\n  return !!breadcrumb.category;\n}\n\nconst handleScopeListener =\n  (replay) =>\n  (scope) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleScope(scope);\n\n    if (!result) {\n      return;\n    }\n\n    addBreadcrumbEvent(replay, result);\n  };\n\n/**\n * An event handler to handle scope changes.\n */\nfunction handleScope(scope) {\n  // TODO (v8): Remove this guard. This was put in place because we introduced\n  // Scope.getLastBreadcrumb mid-v7 which caused incompatibilities with older SDKs.\n  // For now, we'll just return null if the method doesn't exist but we should eventually\n  // get rid of this guard.\n  const newBreadcrumb = scope.getLastBreadcrumb && scope.getLastBreadcrumb();\n\n  // Listener can be called when breadcrumbs have not changed, so we store the\n  // reference to the last crumb and only return a crumb if it has changed\n  if (_LAST_BREADCRUMB === newBreadcrumb || !newBreadcrumb) {\n    return null;\n  }\n\n  _LAST_BREADCRUMB = newBreadcrumb;\n\n  if (\n    !isBreadcrumbWithCategory(newBreadcrumb) ||\n    ['fetch', 'xhr', 'sentry.event', 'sentry.transaction'].includes(newBreadcrumb.category) ||\n    newBreadcrumb.category.startsWith('ui.')\n  ) {\n    return null;\n  }\n\n  if (newBreadcrumb.category === 'console') {\n    return normalizeConsoleBreadcrumb(newBreadcrumb);\n  }\n\n  return createBreadcrumb(newBreadcrumb);\n}\n\n/** exported for tests only */\nfunction normalizeConsoleBreadcrumb(\n  breadcrumb,\n) {\n  const args = breadcrumb.data && breadcrumb.data.arguments;\n\n  if (!Array.isArray(args) || args.length === 0) {\n    return createBreadcrumb(breadcrumb);\n  }\n\n  let isTruncated = false;\n\n  // Avoid giant args captures\n  const normalizedArgs = args.map(arg => {\n    if (!arg) {\n      return arg;\n    }\n    if (typeof arg === 'string') {\n      if (arg.length > CONSOLE_ARG_MAX_SIZE) {\n        isTruncated = true;\n        return `${arg.slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n      }\n\n      return arg;\n    }\n    if (typeof arg === 'object') {\n      try {\n        const normalizedArg = normalize(arg, 7);\n        const stringified = JSON.stringify(normalizedArg);\n        if (stringified.length > CONSOLE_ARG_MAX_SIZE) {\n          const fixedJson = fixJson(stringified.slice(0, CONSOLE_ARG_MAX_SIZE));\n          const json = JSON.parse(fixedJson);\n          // We only set this after JSON.parse() was successfull, so we know we didn't run into `catch`\n          isTruncated = true;\n          return json;\n        }\n        return normalizedArg;\n      } catch (e) {\n        // fall back to default\n      }\n    }\n\n    return arg;\n  });\n\n  return createBreadcrumb({\n    ...breadcrumb,\n    data: {\n      ...breadcrumb.data,\n      arguments: normalizedArgs,\n      ...(isTruncated ? { _meta: { warnings: ['CONSOLE_ARG_TRUNCATED'] } } : {}),\n    },\n  });\n}\n\n/**\n * Add global listeners that cannot be removed.\n */\nfunction addGlobalListeners(replay) {\n  // Listeners from core SDK //\n  const scope = getCurrentHub().getScope();\n  const client = getCurrentHub().getClient();\n\n  if (scope) {\n    scope.addScopeListener(handleScopeListener(replay));\n  }\n  addInstrumentationHandler('dom', handleDomListener(replay));\n  addInstrumentationHandler('history', handleHistorySpanListener(replay));\n  handleNetworkBreadcrumbs(replay);\n\n  // Tag all (non replay) events that get sent to Sentry with the current\n  // replay ID so that we can reference them later in the UI\n  addGlobalEventProcessor(handleGlobalEventListener(replay, !hasHooks(client)));\n\n  // If a custom client has no hooks yet, we continue to use the \"old\" implementation\n  if (hasHooks(client)) {\n    client.on('afterSendEvent', handleAfterSendEvent(replay));\n    client.on('createDsc', (dsc) => {\n      const replayId = replay.getSessionId();\n      // We do not want to set the DSC when in buffer mode, as that means the replay has not been sent (yet)\n      if (replayId && replay.isEnabled() && replay.recordingMode === 'session') {\n        dsc.replay_id = replayId;\n      }\n    });\n\n    client.on('startTransaction', transaction => {\n      replay.lastTransaction = transaction;\n    });\n\n    // We may be missing the initial startTransaction due to timing issues,\n    // so we capture it on finish again.\n    client.on('finishTransaction', transaction => {\n      replay.lastTransaction = transaction;\n    });\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasHooks(client) {\n  return !!(client && client.on);\n}\n\n/**\n * Create a \"span\" for the total amount of memory being used by JS objects\n * (including v8 internal objects).\n */\nasync function addMemoryEntry(replay) {\n  // window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this\n  try {\n    return Promise.all(\n      createPerformanceSpans(replay, [\n        // @ts-ignore memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)\n        createMemoryEntry(WINDOW.performance.memory),\n      ]),\n    );\n  } catch (error) {\n    // Do nothing\n    return [];\n  }\n}\n\nfunction createMemoryEntry(memoryEntry) {\n  const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;\n  // we don't want to use `getAbsoluteTime` because it adds the event time to the\n  // time origin, so we get the current timestamp instead\n  const time = Date.now() / 1000;\n  return {\n    type: 'memory',\n    name: 'memory',\n    start: time,\n    end: time,\n    data: {\n      memory: {\n        jsHeapSizeLimit,\n        totalJSHeapSize,\n        usedJSHeapSize,\n      },\n    },\n  };\n}\n\n// Map entryType -> function to normalize data for event\n// @ts-ignore TODO: entry type does not fit the create* functions entry type\nconst ENTRY_TYPES\n\n = {\n  // @ts-ignore TODO: entry type does not fit the create* functions entry type\n  resource: createResourceEntry,\n  paint: createPaintEntry,\n  // @ts-ignore TODO: entry type does not fit the create* functions entry type\n  navigation: createNavigationEntry,\n  // @ts-ignore TODO: entry type does not fit the create* functions entry type\n  ['largest-contentful-paint']: createLargestContentfulPaint,\n};\n\n/**\n * Create replay performance entries from the browser performance entries.\n */\nfunction createPerformanceEntries(\n  entries,\n) {\n  return entries.map(createPerformanceEntry).filter(Boolean) ;\n}\n\nfunction createPerformanceEntry(entry) {\n  if (ENTRY_TYPES[entry.entryType] === undefined) {\n    return null;\n  }\n\n  return ENTRY_TYPES[entry.entryType](entry);\n}\n\nfunction getAbsoluteTime(time) {\n  // browserPerformanceTimeOrigin can be undefined if `performance` or\n  // `performance.now` doesn't exist, but this is already checked by this integration\n  return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;\n}\n\nfunction createPaintEntry(entry) {\n  const { duration, entryType, name, startTime } = entry;\n\n  const start = getAbsoluteTime(startTime);\n  return {\n    type: entryType,\n    name,\n    start,\n    end: start + duration,\n    data: undefined,\n  };\n}\n\nfunction createNavigationEntry(entry) {\n  const {\n    entryType,\n    name,\n    decodedBodySize,\n    duration,\n    domComplete,\n    encodedBodySize,\n    domContentLoadedEventStart,\n    domContentLoadedEventEnd,\n    domInteractive,\n    loadEventStart,\n    loadEventEnd,\n    redirectCount,\n    startTime,\n    transferSize,\n    type,\n  } = entry;\n\n  // Ignore entries with no duration, they do not seem to be useful and cause dupes\n  if (duration === 0) {\n    return null;\n  }\n\n  return {\n    type: `${entryType}.${type}`,\n    start: getAbsoluteTime(startTime),\n    end: getAbsoluteTime(domComplete),\n    name,\n    data: {\n      size: transferSize,\n      decodedBodySize,\n      encodedBodySize,\n      duration,\n      domInteractive,\n      domContentLoadedEventStart,\n      domContentLoadedEventEnd,\n      loadEventStart,\n      loadEventEnd,\n      domComplete,\n      redirectCount,\n    },\n  };\n}\n\nfunction createResourceEntry(\n  entry,\n) {\n  const {\n    entryType,\n    initiatorType,\n    name,\n    responseEnd,\n    startTime,\n    decodedBodySize,\n    encodedBodySize,\n    responseStatus,\n    transferSize,\n  } = entry;\n\n  // Core SDK handles these\n  if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {\n    return null;\n  }\n\n  return {\n    type: `${entryType}.${initiatorType}`,\n    start: getAbsoluteTime(startTime),\n    end: getAbsoluteTime(responseEnd),\n    name,\n    data: {\n      size: transferSize,\n      statusCode: responseStatus,\n      decodedBodySize,\n      encodedBodySize,\n    },\n  };\n}\n\nfunction createLargestContentfulPaint(\n  entry,\n) {\n  const { entryType, startTime, size } = entry;\n\n  let startTimeOrNavigationActivation = 0;\n\n  if (WINDOW.performance) {\n    const navEntry = WINDOW.performance.getEntriesByType('navigation')[0]\n\n;\n\n    // See https://github.com/GoogleChrome/web-vitals/blob/9f11c4c6578fb4c5ee6fa4e32b9d1d756475f135/src/lib/getActivationStart.ts#L21\n    startTimeOrNavigationActivation = (navEntry && navEntry.activationStart) || 0;\n  }\n\n  // value is in ms\n  const value = Math.max(startTime - startTimeOrNavigationActivation, 0);\n  // LCP doesn't have a \"duration\", it just happens at a single point in time.\n  // But the UI expects both, so use end (in seconds) for both timestamps.\n  const end = getAbsoluteTime(startTimeOrNavigationActivation) + value / 1000;\n\n  return {\n    type: entryType,\n    name: entryType,\n    start: end,\n    end,\n    data: {\n      value, // LCP \"duration\" in ms\n      size,\n      // Not sure why this errors, Node should be correct (Argument of type 'Node' is not assignable to parameter of type 'INode')\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      nodeId: record.mirror.getId(entry.element ),\n    },\n  };\n}\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n *          debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n *          was already invoked in the meantime, return @param func's return value.\n *          The debounced function has two additional properties:\n *          - `flush`: Invokes the debounced function immediately and returns its return value\n *          - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nfunction debounce(func, wait, options) {\n  let callbackReturnValue;\n\n  let timerId;\n  let maxTimerId;\n\n  const maxWait = options && options.maxWait ? Math.max(options.maxWait, wait) : 0;\n\n  function invokeFunc() {\n    cancelTimers();\n    callbackReturnValue = func();\n    return callbackReturnValue;\n  }\n\n  function cancelTimers() {\n    timerId !== undefined && clearTimeout(timerId);\n    maxTimerId !== undefined && clearTimeout(maxTimerId);\n    timerId = maxTimerId = undefined;\n  }\n\n  function flush() {\n    if (timerId !== undefined || maxTimerId !== undefined) {\n      return invokeFunc();\n    }\n    return callbackReturnValue;\n  }\n\n  function debounced() {\n    if (timerId) {\n      clearTimeout(timerId);\n    }\n    timerId = setTimeout(invokeFunc, wait);\n\n    if (maxWait && maxTimerId === undefined) {\n      maxTimerId = setTimeout(invokeFunc, maxWait);\n    }\n\n    return callbackReturnValue;\n  }\n\n  debounced.cancel = cancelTimers;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Handler for recording events.\n *\n * Adds to event buffer, and has varying flushing behaviors if the event was a checkout.\n */\nfunction getHandleRecordingEmit(replay) {\n  let hadFirstEvent = false;\n\n  return (event, _isCheckout) => {\n    // If this is false, it means session is expired, create and a new session and wait for checkout\n    if (!replay.checkAndHandleExpiredSession()) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Replay] Received replay event after session expired.');\n\n      return;\n    }\n\n    // `_isCheckout` is only set when the checkout is due to `checkoutEveryNms`\n    // We also want to treat the first event as a checkout, so we handle this specifically here\n    const isCheckout = _isCheckout || !hadFirstEvent;\n    hadFirstEvent = true;\n\n    // The handler returns `true` if we do not want to trigger debounced flush, `false` if we want to debounce flush.\n    replay.addUpdate(() => {\n      // The session is always started immediately on pageload/init, but for\n      // error-only replays, it should reflect the most recent checkout\n      // when an error occurs. Clear any state that happens before this current\n      // checkout. This needs to happen before `addEvent()` which updates state\n      // dependent on this reset.\n      if (replay.recordingMode === 'buffer' && isCheckout) {\n        replay.setInitialState();\n      }\n\n      // We need to clear existing events on a checkout, otherwise they are\n      // incremental event updates and should be appended\n      void addEvent(replay, event, isCheckout);\n\n      // Different behavior for full snapshots (type=2), ignore other event types\n      // See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16\n      if (!isCheckout) {\n        return false;\n      }\n\n      // Additionally, create a meta event that will capture certain SDK settings.\n      // In order to handle buffer mode, this needs to either be done when we\n      // receive checkout events or at flush time.\n      //\n      // `isCheckout` is always true, but want to be explicit that it should\n      // only be added for checkouts\n      void addSettingsEvent(replay, isCheckout);\n\n      // If there is a previousSessionId after a full snapshot occurs, then\n      // the replay session was started due to session expiration. The new session\n      // is started before triggering a new checkout and contains the id\n      // of the previous session. Do not immediately flush in this case\n      // to avoid capturing only the checkout and instead the replay will\n      // be captured if they perform any follow-up actions.\n      if (replay.session && replay.session.previousSessionId) {\n        return true;\n      }\n\n      // When in buffer mode, make sure we adjust the session started date to the current earliest event of the buffer\n      // this should usually be the timestamp of the checkout event, but to be safe...\n      if (replay.recordingMode === 'buffer' && replay.session && replay.eventBuffer) {\n        const earliestEvent = replay.eventBuffer.getEarliestTimestamp();\n        if (earliestEvent) {\n          replay.session.started = earliestEvent;\n\n          if (replay.getOptions().stickySession) {\n            saveSession(replay.session);\n          }\n        }\n      }\n\n      if (replay.recordingMode === 'session') {\n        // If the full snapshot is due to an initial load, we will not have\n        // a previous session ID. In this case, we want to buffer events\n        // for a set amount of time before flushing. This can help avoid\n        // capturing replays of users that immediately close the window.\n        void replay.flush();\n      }\n\n      return true;\n    });\n  };\n}\n\n/**\n * Exported for tests\n */\nfunction createOptionsEvent(replay) {\n  const options = replay.getOptions();\n  return {\n    type: EventType.Custom,\n    timestamp: Date.now(),\n    data: {\n      tag: 'options',\n      payload: {\n        sessionSampleRate: options.sessionSampleRate,\n        errorSampleRate: options.errorSampleRate,\n        useCompressionOption: options.useCompression,\n        blockAllMedia: options.blockAllMedia,\n        maskAllText: options.maskAllText,\n        maskAllInputs: options.maskAllInputs,\n        useCompression: replay.eventBuffer ? replay.eventBuffer.type === 'worker' : false,\n        networkDetailHasUrls: options.networkDetailAllowUrls.length > 0,\n        networkCaptureBodies: options.networkCaptureBodies,\n        networkRequestHasHeaders: options.networkRequestHeaders.length > 0,\n        networkResponseHasHeaders: options.networkResponseHeaders.length > 0,\n      },\n    },\n  };\n}\n\n/**\n * Add a \"meta\" event that contains a simplified view on current configuration\n * options. This should only be included on the first segment of a recording.\n */\nfunction addSettingsEvent(replay, isCheckout) {\n  // Only need to add this event when sending the first segment\n  if (!isCheckout || !replay.session || replay.session.segmentId !== 0) {\n    return Promise.resolve(null);\n  }\n\n  return addEvent(replay, createOptionsEvent(replay), false);\n}\n\n/**\n * Create a replay envelope ready to be sent.\n * This includes both the replay event, as well as the recording data.\n */\nfunction createReplayEnvelope(\n  replayEvent,\n  recordingData,\n  dsn,\n  tunnel,\n) {\n  return createEnvelope(\n    createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),\n    [\n      [{ type: 'replay_event' }, replayEvent],\n      [\n        {\n          type: 'replay_recording',\n          // If string then we need to encode to UTF8, otherwise will have\n          // wrong size. TextEncoder has similar browser support to\n          // MutationObserver, although it does not accept IE11.\n          length:\n            typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,\n        },\n        recordingData,\n      ],\n    ],\n  );\n}\n\n/**\n * Prepare the recording data ready to be sent.\n */\nfunction prepareRecordingData({\n  recordingData,\n  headers,\n}\n\n) {\n  let payloadWithSequence;\n\n  // XXX: newline is needed to separate sequence id from events\n  const replayHeaders = `${JSON.stringify(headers)}\n`;\n\n  if (typeof recordingData === 'string') {\n    payloadWithSequence = `${replayHeaders}${recordingData}`;\n  } else {\n    const enc = new TextEncoder();\n    // XXX: newline is needed to separate sequence id from events\n    const sequence = enc.encode(replayHeaders);\n    // Merge the two Uint8Arrays\n    payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);\n    payloadWithSequence.set(sequence);\n    payloadWithSequence.set(recordingData, sequence.length);\n  }\n\n  return payloadWithSequence;\n}\n\n/**\n * Prepare a replay event & enrich it with the SDK metadata.\n */\nasync function prepareReplayEvent({\n  client,\n  scope,\n  replayId: event_id,\n  event,\n}\n\n) {\n  const integrations =\n    typeof client._integrations === 'object' && client._integrations !== null && !Array.isArray(client._integrations)\n      ? Object.keys(client._integrations)\n      : undefined;\n  const preparedEvent = (await prepareEvent(\n    client.getOptions(),\n    event,\n    { event_id, integrations },\n    scope,\n  )) ;\n\n  // If e.g. a global event processor returned null\n  if (!preparedEvent) {\n    return null;\n  }\n\n  // This normally happens in browser client \"_prepareEvent\"\n  // but since we do not use this private method from the client, but rather the plain import\n  // we need to do this manually.\n  preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n  // extract the SDK name because `client._prepareEvent` doesn't add it to the event\n  const metadata = client.getSdkMetadata && client.getSdkMetadata();\n  const { name, version } = (metadata && metadata.sdk) || {};\n\n  preparedEvent.sdk = {\n    ...preparedEvent.sdk,\n    name: name || 'sentry.javascript.unknown',\n    version: version || '0.0.0',\n  };\n\n  return preparedEvent;\n}\n\n/**\n * Send replay attachment using `fetch()`\n */\nasync function sendReplayRequest({\n  recordingData,\n  replayId,\n  segmentId: segment_id,\n  eventContext,\n  timestamp,\n  session,\n}) {\n  const preparedRecordingData = prepareRecordingData({\n    recordingData,\n    headers: {\n      segment_id,\n    },\n  });\n\n  const { urls, errorIds, traceIds, initialTimestamp } = eventContext;\n\n  const hub = getCurrentHub();\n  const client = hub.getClient();\n  const scope = hub.getScope();\n  const transport = client && client.getTransport();\n  const dsn = client && client.getDsn();\n\n  if (!client || !transport || !dsn || !session.sampled) {\n    return;\n  }\n\n  const baseEvent = {\n    type: REPLAY_EVENT_NAME,\n    replay_start_timestamp: initialTimestamp / 1000,\n    timestamp: timestamp / 1000,\n    error_ids: errorIds,\n    trace_ids: traceIds,\n    urls,\n    replay_id: replayId,\n    segment_id,\n    replay_type: session.sampled,\n  };\n\n  const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });\n\n  if (!replayEvent) {\n    // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n    client.recordDroppedEvent('event_processor', 'replay', baseEvent);\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('An event processor returned `null`, will not send event.');\n    return;\n  }\n\n  /*\n  For reference, the fully built event looks something like this:\n  {\n      \"type\": \"replay_event\",\n      \"timestamp\": 1670837008.634,\n      \"error_ids\": [\n          \"errorId\"\n      ],\n      \"trace_ids\": [\n          \"traceId\"\n      ],\n      \"urls\": [\n          \"https://example.com\"\n      ],\n      \"replay_id\": \"eventId\",\n      \"segment_id\": 3,\n      \"replay_type\": \"error\",\n      \"platform\": \"javascript\",\n      \"event_id\": \"eventId\",\n      \"environment\": \"production\",\n      \"sdk\": {\n          \"integrations\": [\n              \"BrowserTracing\",\n              \"Replay\"\n          ],\n          \"name\": \"sentry.javascript.browser\",\n          \"version\": \"7.25.0\"\n      },\n      \"sdkProcessingMetadata\": {},\n      \"contexts\": {\n      },\n  }\n  */\n\n  const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);\n\n  let response;\n\n  try {\n    response = await transport.send(envelope);\n  } catch (err) {\n    const error = new Error(UNABLE_TO_SEND_REPLAY);\n\n    try {\n      // In case browsers don't allow this property to be writable\n      // @ts-ignore This needs lib es2022 and newer\n      error.cause = err;\n    } catch (e) {\n      // nothing to do\n    }\n    throw error;\n  }\n\n  // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n  if (!response) {\n    return response;\n  }\n\n  // If the status code is invalid, we want to immediately stop & not retry\n  if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n    throw new TransportStatusCodeError(response.statusCode);\n  }\n\n  return response;\n}\n\n/**\n * This error indicates that the transport returned an invalid status code.\n */\nclass TransportStatusCodeError extends Error {\n   constructor(statusCode) {\n    super(`Transport returned status code ${statusCode}`);\n  }\n}\n\n/**\n * Finalize and send the current replay event to Sentry\n */\nasync function sendReplay(\n  replayData,\n  retryConfig = {\n    count: 0,\n    interval: RETRY_BASE_INTERVAL,\n  },\n) {\n  const { recordingData, options } = replayData;\n\n  // short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)\n  if (!recordingData.length) {\n    return;\n  }\n\n  try {\n    await sendReplayRequest(replayData);\n    return true;\n  } catch (err) {\n    if (err instanceof TransportStatusCodeError) {\n      throw err;\n    }\n\n    // Capture error for every failed replay\n    setContext('Replays', {\n      _retryCount: retryConfig.count,\n    });\n\n    if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && options._experiments && options._experiments.captureExceptions) {\n      captureException(err);\n    }\n\n    // If an error happened here, it's likely that uploading the attachment\n    // failed, we'll can retry with the same events payload\n    if (retryConfig.count >= RETRY_MAX_COUNT) {\n      const error = new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);\n\n      try {\n        // In case browsers don't allow this property to be writable\n        // @ts-ignore This needs lib es2022 and newer\n        error.cause = err;\n      } catch (e) {\n        // nothing to do\n      }\n\n      throw error;\n    }\n\n    // will retry in intervals of 5, 10, 30\n    retryConfig.interval *= ++retryConfig.count;\n\n    return new Promise((resolve, reject) => {\n      setTimeout(async () => {\n        try {\n          await sendReplay(replayData, retryConfig);\n          resolve(true);\n        } catch (err) {\n          reject(err);\n        }\n      }, retryConfig.interval);\n    });\n  }\n}\n\nconst THROTTLED = '__THROTTLED';\nconst SKIPPED = '__SKIPPED';\n\n/**\n * Create a throttled function off a given function.\n * When calling the throttled function, it will call the original function only\n * if it hasn't been called more than `maxCount` times in the last `durationSeconds`.\n *\n * Returns `THROTTLED` if throttled for the first time, after that `SKIPPED`,\n * or else the return value of the original function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction throttle(\n  fn,\n  maxCount,\n  durationSeconds,\n) {\n  const counter = new Map();\n\n  const _cleanup = (now) => {\n    const threshold = now - durationSeconds;\n    counter.forEach((_value, key) => {\n      if (key < threshold) {\n        counter.delete(key);\n      }\n    });\n  };\n\n  const _getTotalCount = () => {\n    return [...counter.values()].reduce((a, b) => a + b, 0);\n  };\n\n  let isThrottled = false;\n\n  return (...rest) => {\n    // Date in second-precision, which we use as basis for the throttling\n    const now = Math.floor(Date.now() / 1000);\n\n    // First, make sure to delete any old entries\n    _cleanup(now);\n\n    // If already over limit, do nothing\n    if (_getTotalCount() >= maxCount) {\n      const wasThrottled = isThrottled;\n      isThrottled = true;\n      return wasThrottled ? SKIPPED : THROTTLED;\n    }\n\n    isThrottled = false;\n    const count = counter.get(now) || 0;\n    counter.set(now, count + 1);\n\n    return fn(...rest);\n  };\n}\n\n/* eslint-disable max-lines */ // TODO: We might want to split this file up\n\n/**\n * The main replay container class, which holds all the state and methods for recording and sending replays.\n */\nclass ReplayContainer  {\n   __init() {this.eventBuffer = null;}\n\n  /**\n   * List of PerformanceEntry from PerformanceObserver\n   */\n   __init2() {this.performanceEvents = [];}\n\n  /**\n   * Recording can happen in one of three modes:\n   *   - session: Record the whole session, sending it continuously\n   *   - buffer: Always keep the last 60s of recording, requires:\n   *     - having replaysOnErrorSampleRate > 0 to capture replay when an error occurs\n   *     - or calling `flush()` to send the replay\n   */\n   __init3() {this.recordingMode = 'session';}\n\n  /**\n   * The current or last active transcation.\n   * This is only available when performance is enabled.\n   */\n\n  /**\n   * These are here so we can overwrite them in tests etc.\n   * @hidden\n   */\n    __init4() {this.timeouts = {\n    sessionIdlePause: SESSION_IDLE_PAUSE_DURATION,\n    sessionIdleExpire: SESSION_IDLE_EXPIRE_DURATION,\n    maxSessionLife: MAX_SESSION_LIFE,\n  }; }\n\n  /**\n   * Options to pass to `rrweb.record()`\n   */\n\n   __init5() {this._performanceObserver = null;}\n\n   __init6() {this._flushLock = null;}\n\n  /**\n   * Timestamp of the last user activity. This lives across sessions.\n   */\n   __init7() {this._lastActivity = Date.now();}\n\n  /**\n   * Is the integration currently active?\n   */\n   __init8() {this._isEnabled = false;}\n\n  /**\n   * Paused is a state where:\n   * - DOM Recording is not listening at all\n   * - Nothing will be added to event buffer (e.g. core SDK events)\n   */\n   __init9() {this._isPaused = false;}\n\n  /**\n   * Have we attached listeners to the core SDK?\n   * Note we have to track this as there is no way to remove instrumentation handlers.\n   */\n   __init10() {this._hasInitializedCoreListeners = false;}\n\n  /**\n   * Function to stop recording\n   */\n   __init11() {this._stopRecording = null;}\n\n   __init12() {this._context = {\n    errorIds: new Set(),\n    traceIds: new Set(),\n    urls: [],\n    initialTimestamp: Date.now(),\n    initialUrl: '',\n  };}\n\n   constructor({\n    options,\n    recordingOptions,\n  }\n\n) {ReplayContainer.prototype.__init.call(this);ReplayContainer.prototype.__init2.call(this);ReplayContainer.prototype.__init3.call(this);ReplayContainer.prototype.__init4.call(this);ReplayContainer.prototype.__init5.call(this);ReplayContainer.prototype.__init6.call(this);ReplayContainer.prototype.__init7.call(this);ReplayContainer.prototype.__init8.call(this);ReplayContainer.prototype.__init9.call(this);ReplayContainer.prototype.__init10.call(this);ReplayContainer.prototype.__init11.call(this);ReplayContainer.prototype.__init12.call(this);ReplayContainer.prototype.__init13.call(this);ReplayContainer.prototype.__init14.call(this);ReplayContainer.prototype.__init15.call(this);ReplayContainer.prototype.__init16.call(this);ReplayContainer.prototype.__init17.call(this);ReplayContainer.prototype.__init18.call(this);\n    this._recordingOptions = recordingOptions;\n    this._options = options;\n\n    this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {\n      maxWait: this._options.flushMaxDelay,\n    });\n\n    this._throttledAddEvent = throttle(\n      (event, isCheckout) => addEvent(this, event, isCheckout),\n      // Max 300 events...\n      300,\n      // ... per 5s\n      5,\n    );\n\n    const { slowClickTimeout, slowClickIgnoreSelectors } = this.getOptions();\n\n    const slowClickConfig = slowClickTimeout\n      ? {\n          threshold: Math.min(SLOW_CLICK_THRESHOLD, slowClickTimeout),\n          timeout: slowClickTimeout,\n          scrollTimeout: SLOW_CLICK_SCROLL_TIMEOUT,\n          ignoreSelector: slowClickIgnoreSelectors ? slowClickIgnoreSelectors.join(',') : '',\n          multiClickTimeout: MULTI_CLICK_TIMEOUT,\n        }\n      : undefined;\n\n    if (slowClickConfig) {\n      this.clickDetector = new ClickDetector(this, slowClickConfig);\n    }\n  }\n\n  /** Get the event context. */\n   getContext() {\n    return this._context;\n  }\n\n  /** If recording is currently enabled. */\n   isEnabled() {\n    return this._isEnabled;\n  }\n\n  /** If recording is currently paused. */\n   isPaused() {\n    return this._isPaused;\n  }\n\n  /** Get the replay integration options. */\n   getOptions() {\n    return this._options;\n  }\n\n  /**\n   * Initializes the plugin based on sampling configuration. Should not be\n   * called outside of constructor.\n   */\n   initializeSampling() {\n    const { errorSampleRate, sessionSampleRate } = this._options;\n\n    // If neither sample rate is > 0, then do nothing - user will need to call one of\n    // `start()` or `startBuffering` themselves.\n    if (errorSampleRate <= 0 && sessionSampleRate <= 0) {\n      return;\n    }\n\n    // Otherwise if there is _any_ sample rate set, try to load an existing\n    // session, or create a new one.\n    const isSessionSampled = this._loadAndCheckSession();\n\n    if (!isSessionSampled) {\n      // This should only occur if `errorSampleRate` is 0 and was unsampled for\n      // session-based replay. In this case there is nothing to do.\n      return;\n    }\n\n    if (!this.session) {\n      // This should not happen, something wrong has occurred\n      this._handleException(new Error('Unable to initialize and create session'));\n      return;\n    }\n\n    if (this.session.sampled && this.session.sampled !== 'session') {\n      // If not sampled as session-based, then recording mode will be `buffer`\n      // Note that we don't explicitly check if `sampled === 'buffer'` because we\n      // could have sessions from Session storage that are still `error` from\n      // prior SDK version.\n      this.recordingMode = 'buffer';\n    }\n\n    this._initializeRecording();\n  }\n\n  /**\n   * Start a replay regardless of sampling rate. Calling this will always\n   * create a new session. Will throw an error if replay is already in progress.\n   *\n   * Creates or loads a session, attaches listeners to varying events (DOM,\n   * _performanceObserver, Recording, Sentry SDK, etc)\n   */\n   start() {\n    if (this._isEnabled && this.recordingMode === 'session') {\n      throw new Error('Replay recording is already in progress');\n    }\n\n    if (this._isEnabled && this.recordingMode === 'buffer') {\n      throw new Error('Replay buffering is in progress, call `flush()` to save the replay');\n    }\n\n    const previousSessionId = this.session && this.session.id;\n\n    const { session } = getSession({\n      timeouts: this.timeouts,\n      stickySession: Boolean(this._options.stickySession),\n      currentSession: this.session,\n      // This is intentional: create a new session-based replay when calling `start()`\n      sessionSampleRate: 1,\n      allowBuffering: false,\n    });\n\n    session.previousSessionId = previousSessionId;\n    this.session = session;\n\n    this._initializeRecording();\n  }\n\n  /**\n   * Start replay buffering. Buffers until `flush()` is called or, if\n   * `replaysOnErrorSampleRate` > 0, an error occurs.\n   */\n   startBuffering() {\n    if (this._isEnabled) {\n      throw new Error('Replay recording is already in progress');\n    }\n\n    const previousSessionId = this.session && this.session.id;\n\n    const { session } = getSession({\n      timeouts: this.timeouts,\n      stickySession: Boolean(this._options.stickySession),\n      currentSession: this.session,\n      sessionSampleRate: 0,\n      allowBuffering: true,\n    });\n\n    session.previousSessionId = previousSessionId;\n    this.session = session;\n\n    this.recordingMode = 'buffer';\n    this._initializeRecording();\n  }\n\n  /**\n   * Start recording.\n   *\n   * Note that this will cause a new DOM checkout\n   */\n   startRecording() {\n    try {\n      this._stopRecording = record({\n        ...this._recordingOptions,\n        // When running in error sampling mode, we need to overwrite `checkoutEveryNms`\n        // Without this, it would record forever, until an error happens, which we don't want\n        // instead, we'll always keep the last 60 seconds of replay before an error happened\n        ...(this.recordingMode === 'buffer' && { checkoutEveryNms: BUFFER_CHECKOUT_TIME }),\n        emit: getHandleRecordingEmit(this),\n        onMutation: this._onMutationHandler,\n      });\n    } catch (err) {\n      this._handleException(err);\n    }\n  }\n\n  /**\n   * Stops the recording, if it was running.\n   *\n   * Returns true if it was previously stopped, or is now stopped,\n   * otherwise false.\n   */\n   stopRecording() {\n    try {\n      if (this._stopRecording) {\n        this._stopRecording();\n        this._stopRecording = undefined;\n      }\n\n      return true;\n    } catch (err) {\n      this._handleException(err);\n      return false;\n    }\n  }\n\n  /**\n   * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n   * does not support a teardown\n   */\n   async stop(reason) {\n    if (!this._isEnabled) {\n      return;\n    }\n\n    try {\n      if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n        const msg = `[Replay] Stopping Replay${reason ? ` triggered by ${reason}` : ''}`;\n\n        // When `traceInternals` is enabled, we want to log this to the console\n        // Else, use the regular debug output\n        // eslint-disable-next-line\n        const log = this.getOptions()._experiments.traceInternals ? console.warn : logger.log;\n        log(msg);\n      }\n\n      // We can't move `_isEnabled` after awaiting a flush, otherwise we can\n      // enter into an infinite loop when `stop()` is called while flushing.\n      this._isEnabled = false;\n      this._removeListeners();\n      this.stopRecording();\n\n      this._debouncedFlush.cancel();\n      // See comment above re: `_isEnabled`, we \"force\" a flush, ignoring the\n      // `_isEnabled` state of the plugin since it was disabled above.\n      if (this.recordingMode === 'session') {\n        await this._flush({ force: true });\n      }\n\n      // After flush, destroy event buffer\n      this.eventBuffer && this.eventBuffer.destroy();\n      this.eventBuffer = null;\n\n      // Clear session from session storage, note this means if a new session\n      // is started after, it will not have `previousSessionId`\n      clearSession(this);\n    } catch (err) {\n      this._handleException(err);\n    }\n  }\n\n  /**\n   * Pause some replay functionality. See comments for `_isPaused`.\n   * This differs from stop as this only stops DOM recording, it is\n   * not as thorough of a shutdown as `stop()`.\n   */\n   pause() {\n    this._isPaused = true;\n    this.stopRecording();\n  }\n\n  /**\n   * Resumes recording, see notes for `pause().\n   *\n   * Note that calling `startRecording()` here will cause a\n   * new DOM checkout.`\n   */\n   resume() {\n    if (!this._loadAndCheckSession()) {\n      return;\n    }\n\n    this._isPaused = false;\n    this.startRecording();\n  }\n\n  /**\n   * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n   * Unless `continueRecording` is false, the replay will continue to record and\n   * behave as a \"session\"-based replay.\n   *\n   * Otherwise, queue up a flush.\n   */\n   async sendBufferedReplayOrFlush({ continueRecording = true } = {}) {\n    if (this.recordingMode === 'session') {\n      return this.flushImmediate();\n    }\n\n    const activityTime = Date.now();\n\n    // Allow flush to complete before resuming as a session recording, otherwise\n    // the checkout from `startRecording` may be included in the payload.\n    // Prefer to keep the error replay as a separate (and smaller) segment\n    // than the session replay.\n    await this.flushImmediate();\n\n    const hasStoppedRecording = this.stopRecording();\n\n    if (!continueRecording || !hasStoppedRecording) {\n      return;\n    }\n\n    // Re-start recording, but in \"session\" recording mode\n\n    // Reset all \"capture on error\" configuration before\n    // starting a new recording\n    this.recordingMode = 'session';\n\n    // Once this session ends, we do not want to refresh it\n    if (this.session) {\n      this.session.shouldRefresh = false;\n\n      // It's possible that the session lifespan is > max session lifespan\n      // because we have been buffering beyond max session lifespan (we ignore\n      // expiration given that `shouldRefresh` is true). Since we flip\n      // `shouldRefresh`, the session could be considered expired due to\n      // lifespan, which is not what we want. Update session start date to be\n      // the current timestamp, so that session is not considered to be\n      // expired. This means that max replay duration can be MAX_SESSION_LIFE +\n      // (length of buffer), which we are ok with.\n      this._updateUserActivity(activityTime);\n      this._updateSessionActivity(activityTime);\n      this.session.started = activityTime;\n      this._maybeSaveSession();\n    }\n\n    this.startRecording();\n  }\n\n  /**\n   * We want to batch uploads of replay events. Save events only if\n   * `<flushMinDelay>` milliseconds have elapsed since the last event\n   * *OR* if `<flushMaxDelay>` milliseconds have elapsed.\n   *\n   * Accepts a callback to perform side-effects and returns true to stop batch\n   * processing and hand back control to caller.\n   */\n   addUpdate(cb) {\n    // We need to always run `cb` (e.g. in the case of `this.recordingMode == 'buffer'`)\n    const cbResult = cb();\n\n    // If this option is turned on then we will only want to call `flush`\n    // explicitly\n    if (this.recordingMode === 'buffer') {\n      return;\n    }\n\n    // If callback is true, we do not want to continue with flushing -- the\n    // caller will need to handle it.\n    if (cbResult === true) {\n      return;\n    }\n\n    // addUpdate is called quite frequently - use _debouncedFlush so that it\n    // respects the flush delays and does not flush immediately\n    this._debouncedFlush();\n  }\n\n  /**\n   * Updates the user activity timestamp and resumes recording. This should be\n   * called in an event handler for a user action that we consider as the user\n   * being \"active\" (e.g. a mouse click).\n   */\n   triggerUserActivity() {\n    this._updateUserActivity();\n\n    // This case means that recording was once stopped due to inactivity.\n    // Ensure that recording is resumed.\n    if (!this._stopRecording) {\n      // Create a new session, otherwise when the user action is flushed, it\n      // will get rejected due to an expired session.\n      if (!this._loadAndCheckSession()) {\n        return;\n      }\n\n      // Note: This will cause a new DOM checkout\n      this.resume();\n      return;\n    }\n\n    // Otherwise... recording was never suspended, continue as normalish\n    this.checkAndHandleExpiredSession();\n\n    this._updateSessionActivity();\n  }\n\n  /**\n   * Updates the user activity timestamp *without* resuming\n   * recording. Some user events (e.g. keydown) can be create\n   * low-value replays that only contain the keypress as a\n   * breadcrumb. Instead this would require other events to\n   * create a new replay after a session has expired.\n   */\n   updateUserActivity() {\n    this._updateUserActivity();\n    this._updateSessionActivity();\n  }\n\n  /**\n   * Only flush if `this.recordingMode === 'session'`\n   */\n   conditionalFlush() {\n    if (this.recordingMode === 'buffer') {\n      return Promise.resolve();\n    }\n\n    return this.flushImmediate();\n  }\n\n  /**\n   * Flush using debounce flush\n   */\n   flush() {\n    return this._debouncedFlush() ;\n  }\n\n  /**\n   * Always flush via `_debouncedFlush` so that we do not have flushes triggered\n   * from calling both `flush` and `_debouncedFlush`. Otherwise, there could be\n   * cases of mulitple flushes happening closely together.\n   */\n   flushImmediate() {\n    this._debouncedFlush();\n    // `.flush` is provided by the debounced function, analogously to lodash.debounce\n    return this._debouncedFlush.flush() ;\n  }\n\n  /**\n   * Cancels queued up flushes.\n   */\n   cancelFlush() {\n    this._debouncedFlush.cancel();\n  }\n\n  /** Get the current sesion (=replay) ID */\n   getSessionId() {\n    return this.session && this.session.id;\n  }\n\n  /**\n   * Checks if recording should be stopped due to user inactivity. Otherwise\n   * check if session is expired and create a new session if so. Triggers a new\n   * full snapshot on new session.\n   *\n   * Returns true if session is not expired, false otherwise.\n   * @hidden\n   */\n   checkAndHandleExpiredSession() {\n    const oldSessionId = this.getSessionId();\n\n    // Prevent starting a new session if the last user activity is older than\n    // SESSION_IDLE_PAUSE_DURATION. Otherwise non-user activity can trigger a new\n    // session+recording. This creates noisy replays that do not have much\n    // content in them.\n    if (\n      this._lastActivity &&\n      isExpired(this._lastActivity, this.timeouts.sessionIdlePause) &&\n      this.session &&\n      this.session.sampled === 'session'\n    ) {\n      // Pause recording only for session-based replays. Otherwise, resuming\n      // will create a new replay and will conflict with users who only choose\n      // to record error-based replays only. (e.g. the resumed replay will not\n      // contain a reference to an error)\n      this.pause();\n      return;\n    }\n\n    // --- There is recent user activity --- //\n    // This will create a new session if expired, based on expiry length\n    if (!this._loadAndCheckSession()) {\n      return;\n    }\n\n    // Session was expired if session ids do not match\n    const expired = oldSessionId !== this.getSessionId();\n\n    if (!expired) {\n      return true;\n    }\n\n    // Session is expired, trigger a full snapshot (which will create a new session)\n    this._triggerFullSnapshot();\n\n    return false;\n  }\n\n  /**\n   * Capture some initial state that can change throughout the lifespan of the\n   * replay. This is required because otherwise they would be captured at the\n   * first flush.\n   */\n   setInitialState() {\n    const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;\n    const url = `${WINDOW.location.origin}${urlPath}`;\n\n    this.performanceEvents = [];\n\n    // Reset _context as well\n    this._clearContext();\n\n    this._context.initialUrl = url;\n    this._context.initialTimestamp = Date.now();\n    this._context.urls.push(url);\n  }\n\n  /**\n   * Add a breadcrumb event, that may be throttled.\n   * If it was throttled, we add a custom breadcrumb to indicate that.\n   */\n   throttledAddEvent(\n    event,\n    isCheckout,\n  ) {\n    const res = this._throttledAddEvent(event, isCheckout);\n\n    // If this is THROTTLED, it means we have throttled the event for the first time\n    // In this case, we want to add a breadcrumb indicating that something was skipped\n    if (res === THROTTLED) {\n      const breadcrumb = createBreadcrumb({\n        category: 'replay.throttled',\n      });\n\n      this.addUpdate(() => {\n        void addEvent(this, {\n          type: EventType.Custom,\n          timestamp: breadcrumb.timestamp || 0,\n          data: {\n            tag: 'breadcrumb',\n            payload: breadcrumb,\n            metric: true,\n          },\n        });\n      });\n    }\n\n    return res;\n  }\n\n  /**\n   * This will get the parametrized route name of the current page.\n   * This is only available if performance is enabled, and if an instrumented router is used.\n   */\n   getCurrentRoute() {\n    const lastTransaction = this.lastTransaction || getCurrentHub().getScope().getTransaction();\n    if (!lastTransaction || !['route', 'custom'].includes(lastTransaction.metadata.source)) {\n      return undefined;\n    }\n\n    return lastTransaction.name;\n  }\n\n  /**\n   * Initialize and start all listeners to varying events (DOM,\n   * Performance Observer, Recording, Sentry SDK, etc)\n   */\n   _initializeRecording() {\n    this.setInitialState();\n\n    // this method is generally called on page load or manually - in both cases\n    // we should treat it as an activity\n    this._updateSessionActivity();\n\n    this.eventBuffer = createEventBuffer({\n      useCompression: this._options.useCompression,\n    });\n\n    this._removeListeners();\n    this._addListeners();\n\n    // Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout\n    this._isEnabled = true;\n\n    this.startRecording();\n  }\n\n  /** A wrapper to conditionally capture exceptions. */\n   _handleException(error) {\n    (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay]', error);\n\n    if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._options._experiments && this._options._experiments.captureExceptions) {\n      captureException(error);\n    }\n  }\n\n  /**\n   * Loads (or refreshes) the current session.\n   * Returns false if session is not recorded.\n   */\n   _loadAndCheckSession() {\n    const { type, session } = getSession({\n      timeouts: this.timeouts,\n      stickySession: Boolean(this._options.stickySession),\n      currentSession: this.session,\n      sessionSampleRate: this._options.sessionSampleRate,\n      allowBuffering: this._options.errorSampleRate > 0 || this.recordingMode === 'buffer',\n    });\n\n    // If session was newly created (i.e. was not loaded from storage), then\n    // enable flag to create the root replay\n    if (type === 'new') {\n      this.setInitialState();\n    }\n\n    const currentSessionId = this.getSessionId();\n    if (session.id !== currentSessionId) {\n      session.previousSessionId = currentSessionId;\n    }\n\n    this.session = session;\n\n    if (!this.session.sampled) {\n      void this.stop('session unsampled');\n      return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Adds listeners to record events for the replay\n   */\n   _addListeners() {\n    try {\n      WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);\n      WINDOW.addEventListener('blur', this._handleWindowBlur);\n      WINDOW.addEventListener('focus', this._handleWindowFocus);\n      WINDOW.addEventListener('keydown', this._handleKeyboardEvent);\n\n      if (this.clickDetector) {\n        this.clickDetector.addListeners();\n      }\n\n      // There is no way to remove these listeners, so ensure they are only added once\n      if (!this._hasInitializedCoreListeners) {\n        addGlobalListeners(this);\n\n        this._hasInitializedCoreListeners = true;\n      }\n    } catch (err) {\n      this._handleException(err);\n    }\n\n    // PerformanceObserver //\n    if (!('PerformanceObserver' in WINDOW)) {\n      return;\n    }\n\n    this._performanceObserver = setupPerformanceObserver(this);\n  }\n\n  /**\n   * Cleans up listeners that were created in `_addListeners`\n   */\n   _removeListeners() {\n    try {\n      WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);\n\n      WINDOW.removeEventListener('blur', this._handleWindowBlur);\n      WINDOW.removeEventListener('focus', this._handleWindowFocus);\n      WINDOW.removeEventListener('keydown', this._handleKeyboardEvent);\n\n      if (this.clickDetector) {\n        this.clickDetector.removeListeners();\n      }\n\n      if (this._performanceObserver) {\n        this._performanceObserver.disconnect();\n        this._performanceObserver = null;\n      }\n    } catch (err) {\n      this._handleException(err);\n    }\n  }\n\n  /**\n   * Handle when visibility of the page content changes. Opening a new tab will\n   * cause the state to change to hidden because of content of current page will\n   * be hidden. Likewise, moving a different window to cover the contents of the\n   * page will also trigger a change to a hidden state.\n   */\n   __init13() {this._handleVisibilityChange = () => {\n    if (WINDOW.document.visibilityState === 'visible') {\n      this._doChangeToForegroundTasks();\n    } else {\n      this._doChangeToBackgroundTasks();\n    }\n  };}\n\n  /**\n   * Handle when page is blurred\n   */\n   __init14() {this._handleWindowBlur = () => {\n    const breadcrumb = createBreadcrumb({\n      category: 'ui.blur',\n    });\n\n    // Do not count blur as a user action -- it's part of the process of them\n    // leaving the page\n    this._doChangeToBackgroundTasks(breadcrumb);\n  };}\n\n  /**\n   * Handle when page is focused\n   */\n   __init15() {this._handleWindowFocus = () => {\n    const breadcrumb = createBreadcrumb({\n      category: 'ui.focus',\n    });\n\n    // Do not count focus as a user action -- instead wait until they focus and\n    // interactive with page\n    this._doChangeToForegroundTasks(breadcrumb);\n  };}\n\n  /** Ensure page remains active when a key is pressed. */\n   __init16() {this._handleKeyboardEvent = (event) => {\n    handleKeyboardEvent(this, event);\n  };}\n\n  /**\n   * Tasks to run when we consider a page to be hidden (via blurring and/or visibility)\n   */\n   _doChangeToBackgroundTasks(breadcrumb) {\n    if (!this.session) {\n      return;\n    }\n\n    const expired = isSessionExpired(this.session, this.timeouts);\n\n    if (breadcrumb && !expired) {\n      this._createCustomBreadcrumb(breadcrumb);\n    }\n\n    // Send replay when the page/tab becomes hidden. There is no reason to send\n    // replay if it becomes visible, since no actions we care about were done\n    // while it was hidden\n    void this.conditionalFlush();\n  }\n\n  /**\n   * Tasks to run when we consider a page to be visible (via focus and/or visibility)\n   */\n   _doChangeToForegroundTasks(breadcrumb) {\n    if (!this.session) {\n      return;\n    }\n\n    const isSessionActive = this.checkAndHandleExpiredSession();\n\n    if (!isSessionActive) {\n      // If the user has come back to the page within SESSION_IDLE_PAUSE_DURATION\n      // ms, we will re-use the existing session, otherwise create a new\n      // session\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Document has become active, but session has expired');\n      return;\n    }\n\n    if (breadcrumb) {\n      this._createCustomBreadcrumb(breadcrumb);\n    }\n  }\n\n  /**\n   * Trigger rrweb to take a full snapshot which will cause this plugin to\n   * create a new Replay event.\n   */\n   _triggerFullSnapshot(checkout = true) {\n    try {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Taking full rrweb snapshot');\n      record.takeFullSnapshot(checkout);\n    } catch (err) {\n      this._handleException(err);\n    }\n  }\n\n  /**\n   * Update user activity (across session lifespans)\n   */\n   _updateUserActivity(_lastActivity = Date.now()) {\n    this._lastActivity = _lastActivity;\n  }\n\n  /**\n   * Updates the session's last activity timestamp\n   */\n   _updateSessionActivity(_lastActivity = Date.now()) {\n    if (this.session) {\n      this.session.lastActivity = _lastActivity;\n      this._maybeSaveSession();\n    }\n  }\n\n  /**\n   * Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb\n   */\n   _createCustomBreadcrumb(breadcrumb) {\n    this.addUpdate(() => {\n      void this.throttledAddEvent({\n        type: EventType.Custom,\n        timestamp: breadcrumb.timestamp || 0,\n        data: {\n          tag: 'breadcrumb',\n          payload: breadcrumb,\n        },\n      });\n    });\n  }\n\n  /**\n   * Observed performance events are added to `this.performanceEvents`. These\n   * are included in the replay event before it is finished and sent to Sentry.\n   */\n   _addPerformanceEntries() {\n    // Copy and reset entries before processing\n    const entries = [...this.performanceEvents];\n    this.performanceEvents = [];\n\n    return Promise.all(createPerformanceSpans(this, createPerformanceEntries(entries)));\n  }\n\n  /**\n   * Clear _context\n   */\n   _clearContext() {\n    // XXX: `initialTimestamp` and `initialUrl` do not get cleared\n    this._context.errorIds.clear();\n    this._context.traceIds.clear();\n    this._context.urls = [];\n  }\n\n  /** Update the initial timestamp based on the buffer content. */\n   _updateInitialTimestampFromEventBuffer() {\n    const { session, eventBuffer } = this;\n    if (!session || !eventBuffer) {\n      return;\n    }\n\n    // we only ever update this on the initial segment\n    if (session.segmentId) {\n      return;\n    }\n\n    const earliestEvent = eventBuffer.getEarliestTimestamp();\n    if (earliestEvent && earliestEvent < this._context.initialTimestamp) {\n      this._context.initialTimestamp = earliestEvent;\n    }\n  }\n\n  /**\n   * Return and clear _context\n   */\n   _popEventContext() {\n    const _context = {\n      initialTimestamp: this._context.initialTimestamp,\n      initialUrl: this._context.initialUrl,\n      errorIds: Array.from(this._context.errorIds),\n      traceIds: Array.from(this._context.traceIds),\n      urls: this._context.urls,\n    };\n\n    this._clearContext();\n\n    return _context;\n  }\n\n  /**\n   * Flushes replay event buffer to Sentry.\n   *\n   * Performance events are only added right before flushing - this is\n   * due to the buffered performance observer events.\n   *\n   * Should never be called directly, only by `flush`\n   */\n   async _runFlush() {\n    if (!this.session || !this.eventBuffer) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] No session or eventBuffer found to flush.');\n      return;\n    }\n\n    await this._addPerformanceEntries();\n\n    // Check eventBuffer again, as it could have been stopped in the meanwhile\n    if (!this.eventBuffer || !this.eventBuffer.hasEvents) {\n      return;\n    }\n\n    // Only attach memory event if eventBuffer is not empty\n    await addMemoryEntry(this);\n\n    // Check eventBuffer again, as it could have been stopped in the meanwhile\n    if (!this.eventBuffer) {\n      return;\n    }\n\n    try {\n      // This uses the data from the eventBuffer, so we need to call this before `finish()\n      this._updateInitialTimestampFromEventBuffer();\n\n      // Note this empties the event buffer regardless of outcome of sending replay\n      const recordingData = await this.eventBuffer.finish();\n\n      // NOTE: Copy values from instance members, as it's possible they could\n      // change before the flush finishes.\n      const replayId = this.session.id;\n      const eventContext = this._popEventContext();\n      // Always increment segmentId regardless of outcome of sending replay\n      const segmentId = this.session.segmentId++;\n      this._maybeSaveSession();\n\n      await sendReplay({\n        replayId,\n        recordingData,\n        segmentId,\n        eventContext,\n        session: this.session,\n        options: this.getOptions(),\n        timestamp: Date.now(),\n      });\n    } catch (err) {\n      this._handleException(err);\n\n      // This means we retried 3 times and all of them failed,\n      // or we ran into a problem we don't want to retry, like rate limiting.\n      // In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments\n      void this.stop('sendReplay');\n\n      const client = getCurrentHub().getClient();\n\n      if (client) {\n        client.recordDroppedEvent('send_error', 'replay');\n      }\n    }\n  }\n\n  /**\n   * Flush recording data to Sentry. Creates a lock so that only a single flush\n   * can be active at a time. Do not call this directly.\n   */\n   __init17() {this._flush = async ({\n    force = false,\n  }\n\n = {}) => {\n    if (!this._isEnabled && !force) {\n      // This can happen if e.g. the replay was stopped because of exceeding the retry limit\n      return;\n    }\n\n    if (!this.checkAndHandleExpiredSession()) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Attempting to finish replay event after session expired.');\n      return;\n    }\n\n    if (!this.session) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] No session found to flush.');\n      return;\n    }\n\n    // A flush is about to happen, cancel any queued flushes\n    this._debouncedFlush.cancel();\n\n    // this._flushLock acts as a lock so that future calls to `_flush()`\n    // will be blocked until this promise resolves\n    if (!this._flushLock) {\n      this._flushLock = this._runFlush();\n      await this._flushLock;\n      this._flushLock = null;\n      return;\n    }\n\n    // Wait for previous flush to finish, then call the debounced `_flush()`.\n    // It's possible there are other flush requests queued and waiting for it\n    // to resolve. We want to reduce all outstanding requests (as well as any\n    // new flush requests that occur within a second of the locked flush\n    // completing) into a single flush.\n\n    try {\n      await this._flushLock;\n    } catch (err) {\n      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(err);\n    } finally {\n      this._debouncedFlush();\n    }\n  };}\n\n  /** Save the session, if it is sticky */\n   _maybeSaveSession() {\n    if (this.session && this._options.stickySession) {\n      saveSession(this.session);\n    }\n  }\n\n  /** Handler for rrweb.record.onMutation */\n   __init18() {this._onMutationHandler = (mutations) => {\n    const count = mutations.length;\n\n    const mutationLimit = this._options.mutationLimit;\n    const mutationBreadcrumbLimit = this._options.mutationBreadcrumbLimit;\n    const overMutationLimit = mutationLimit && count > mutationLimit;\n\n    // Create a breadcrumb if a lot of mutations happen at the same time\n    // We can show this in the UI as an information with potential performance improvements\n    if (count > mutationBreadcrumbLimit || overMutationLimit) {\n      const breadcrumb = createBreadcrumb({\n        category: 'replay.mutations',\n        data: {\n          count,\n          limit: overMutationLimit,\n        },\n      });\n      this._createCustomBreadcrumb(breadcrumb);\n    }\n\n    // Stop replay if over the mutation limit\n    if (overMutationLimit) {\n      void this.stop('mutationLimit');\n      return false;\n    }\n\n    // `true` means we use the regular mutation handling by rrweb\n    return true;\n  };}\n}\n\nfunction getOption(\n  selectors,\n  defaultSelectors,\n  deprecatedClassOption,\n  deprecatedSelectorOption,\n) {\n  const deprecatedSelectors = typeof deprecatedSelectorOption === 'string' ? deprecatedSelectorOption.split(',') : [];\n\n  const allSelectors = [\n    ...selectors,\n    // @deprecated\n    ...deprecatedSelectors,\n\n    // sentry defaults\n    ...defaultSelectors,\n  ];\n\n  // @deprecated\n  if (typeof deprecatedClassOption !== 'undefined') {\n    // NOTE: No support for RegExp\n    if (typeof deprecatedClassOption === 'string') {\n      allSelectors.push(`.${deprecatedClassOption}`);\n    }\n\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.',\n    );\n  }\n\n  return allSelectors.join(',');\n}\n\n/**\n * Returns privacy related configuration for use in rrweb\n */\nfunction getPrivacyOptions({\n  mask,\n  unmask,\n  block,\n  unblock,\n  ignore,\n\n  // eslint-disable-next-line deprecation/deprecation\n  blockClass,\n  // eslint-disable-next-line deprecation/deprecation\n  blockSelector,\n  // eslint-disable-next-line deprecation/deprecation\n  maskTextClass,\n  // eslint-disable-next-line deprecation/deprecation\n  maskTextSelector,\n  // eslint-disable-next-line deprecation/deprecation\n  ignoreClass,\n}) {\n  const defaultBlockedElements = ['base[href=\"/\"]'];\n\n  const maskSelector = getOption(mask, ['.sentry-mask', '[data-sentry-mask]'], maskTextClass, maskTextSelector);\n  const unmaskSelector = getOption(unmask, ['.sentry-unmask', '[data-sentry-unmask]']);\n\n  const options = {\n    // We are making the decision to make text and input selectors the same\n    maskTextSelector: maskSelector,\n    unmaskTextSelector: unmaskSelector,\n    maskInputSelector: maskSelector,\n    unmaskInputSelector: unmaskSelector,\n\n    blockSelector: getOption(\n      block,\n      ['.sentry-block', '[data-sentry-block]', ...defaultBlockedElements],\n      blockClass,\n      blockSelector,\n    ),\n    unblockSelector: getOption(unblock, ['.sentry-unblock', '[data-sentry-unblock]']),\n    ignoreSelector: getOption(ignore, ['.sentry-ignore', '[data-sentry-ignore]', 'input[type=\"file\"]'], ignoreClass),\n  };\n\n  if (blockClass instanceof RegExp) {\n    options.blockClass = blockClass;\n  }\n\n  if (maskTextClass instanceof RegExp) {\n    options.maskTextClass = maskTextClass;\n  }\n\n  return options;\n}\n\n/**\n * Returns true if we are in the browser.\n */\nfunction isBrowser() {\n  // eslint-disable-next-line no-restricted-globals\n  return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer() {\n  return typeof process !== 'undefined' && (process ).type === 'renderer';\n}\n\nconst MEDIA_SELECTORS =\n  'img,image,svg,video,object,picture,embed,map,audio,link[rel=\"icon\"],link[rel=\"apple-touch-icon\"]';\n\nconst DEFAULT_NETWORK_HEADERS = ['content-length', 'content-type', 'accept'];\n\nlet _initialized = false;\n\n/**\n * The main replay integration class, to be passed to `init({  integrations: [] })`.\n */\nclass Replay  {\n  /**\n   * @inheritDoc\n   */\n   static __initStatic() {this.id = 'Replay';}\n\n  /**\n   * @inheritDoc\n   */\n   __init() {this.name = Replay.id;}\n\n  /**\n   * Options to pass to `rrweb.record()`\n   */\n\n  /**\n   * Initial options passed to the replay integration, merged with default values.\n   * Note: `sessionSampleRate` and `errorSampleRate` are not required here, as they\n   * can only be finally set when setupOnce() is called.\n   *\n   * @private\n   */\n\n   constructor({\n    flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,\n    flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,\n    stickySession = true,\n    useCompression = true,\n    _experiments = {},\n    sessionSampleRate,\n    errorSampleRate,\n    maskAllText = true,\n    maskAllInputs = true,\n    blockAllMedia = true,\n\n    mutationBreadcrumbLimit = 750,\n    mutationLimit = 10000,\n\n    slowClickTimeout = 7000,\n    slowClickIgnoreSelectors = [],\n\n    networkDetailAllowUrls = [],\n    networkCaptureBodies = true,\n    networkRequestHeaders = [],\n    networkResponseHeaders = [],\n\n    mask = [],\n    unmask = [],\n    block = [],\n    unblock = [],\n    ignore = [],\n    maskFn,\n\n    beforeAddRecordingEvent,\n\n    // eslint-disable-next-line deprecation/deprecation\n    blockClass,\n    // eslint-disable-next-line deprecation/deprecation\n    blockSelector,\n    // eslint-disable-next-line deprecation/deprecation\n    maskInputOptions,\n    // eslint-disable-next-line deprecation/deprecation\n    maskTextClass,\n    // eslint-disable-next-line deprecation/deprecation\n    maskTextSelector,\n    // eslint-disable-next-line deprecation/deprecation\n    ignoreClass,\n  } = {}) {Replay.prototype.__init.call(this);\n    this._recordingOptions = {\n      maskAllInputs,\n      maskAllText,\n      maskInputOptions: { ...(maskInputOptions || {}), password: true },\n      maskTextFn: maskFn,\n      maskInputFn: maskFn,\n\n      ...getPrivacyOptions({\n        mask,\n        unmask,\n        block,\n        unblock,\n        ignore,\n        blockClass,\n        blockSelector,\n        maskTextClass,\n        maskTextSelector,\n        ignoreClass,\n      }),\n\n      // Our defaults\n      slimDOMOptions: 'all',\n      inlineStylesheet: true,\n      // Disable inline images as it will increase segment/replay size\n      inlineImages: false,\n      // collect fonts, but be aware that `sentry.io` needs to be an allowed\n      // origin for playback\n      collectFonts: true,\n    };\n\n    this._initialOptions = {\n      flushMinDelay,\n      flushMaxDelay,\n      stickySession,\n      sessionSampleRate,\n      errorSampleRate,\n      useCompression,\n      blockAllMedia,\n      maskAllInputs,\n      maskAllText,\n      mutationBreadcrumbLimit,\n      mutationLimit,\n      slowClickTimeout,\n      slowClickIgnoreSelectors,\n      networkDetailAllowUrls,\n      networkCaptureBodies,\n      networkRequestHeaders: _getMergedNetworkHeaders(networkRequestHeaders),\n      networkResponseHeaders: _getMergedNetworkHeaders(networkResponseHeaders),\n      beforeAddRecordingEvent,\n\n      _experiments,\n    };\n\n    if (typeof sessionSampleRate === 'number') {\n      // eslint-disable-next-line\n      console.warn(\n        `[Replay] You are passing \\`sessionSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysSessionSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,\n      );\n\n      this._initialOptions.sessionSampleRate = sessionSampleRate;\n    }\n\n    if (typeof errorSampleRate === 'number') {\n      // eslint-disable-next-line\n      console.warn(\n        `[Replay] You are passing \\`errorSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysOnErrorSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,\n      );\n\n      this._initialOptions.errorSampleRate = errorSampleRate;\n    }\n\n    if (this._initialOptions.blockAllMedia) {\n      // `blockAllMedia` is a more user friendly option to configure blocking\n      // embedded media elements\n      this._recordingOptions.blockSelector = !this._recordingOptions.blockSelector\n        ? MEDIA_SELECTORS\n        : `${this._recordingOptions.blockSelector},${MEDIA_SELECTORS}`;\n    }\n\n    if (this._isInitialized && isBrowser()) {\n      throw new Error('Multiple Sentry Session Replay instances are not supported');\n    }\n\n    this._isInitialized = true;\n  }\n\n  /** If replay has already been initialized */\n   get _isInitialized() {\n    return _initialized;\n  }\n\n  /** Update _isInitialized */\n   set _isInitialized(value) {\n    _initialized = value;\n  }\n\n  /**\n   * Setup and initialize replay container\n   */\n   setupOnce() {\n    if (!isBrowser()) {\n      return;\n    }\n\n    this._setup();\n\n    // Once upon a time, we tried to create a transaction in `setupOnce` and it would\n    // potentially create a transaction before some native SDK integrations have run\n    // and applied their own global event processor. An example is:\n    // https://github.com/getsentry/sentry-javascript/blob/b47ceafbdac7f8b99093ce6023726ad4687edc48/packages/browser/src/integrations/useragent.ts\n    //\n    // So we call `this._initialize()` in next event loop as a workaround to wait for other\n    // global event processors to finish. This is no longer needed, but keeping it\n    // here to avoid any future issues.\n    setTimeout(() => this._initialize());\n  }\n\n  /**\n   * Start a replay regardless of sampling rate. Calling this will always\n   * create a new session. Will throw an error if replay is already in progress.\n   *\n   * Creates or loads a session, attaches listeners to varying events (DOM,\n   * PerformanceObserver, Recording, Sentry SDK, etc)\n   */\n   start() {\n    if (!this._replay) {\n      return;\n    }\n\n    this._replay.start();\n  }\n\n  /**\n   * Start replay buffering. Buffers until `flush()` is called or, if\n   * `replaysOnErrorSampleRate` > 0, until an error occurs.\n   */\n   startBuffering() {\n    if (!this._replay) {\n      return;\n    }\n\n    this._replay.startBuffering();\n  }\n\n  /**\n   * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n   * does not support a teardown\n   */\n   stop() {\n    if (!this._replay) {\n      return Promise.resolve();\n    }\n\n    return this._replay.stop();\n  }\n\n  /**\n   * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n   * Unless `continueRecording` is false, the replay will continue to record and\n   * behave as a \"session\"-based replay.\n   *\n   * Otherwise, queue up a flush.\n   */\n   flush(options) {\n    if (!this._replay || !this._replay.isEnabled()) {\n      return Promise.resolve();\n    }\n\n    return this._replay.sendBufferedReplayOrFlush(options);\n  }\n\n  /**\n   * Get the current session ID.\n   */\n   getReplayId() {\n    if (!this._replay || !this._replay.isEnabled()) {\n      return;\n    }\n\n    return this._replay.getSessionId();\n  }\n  /**\n   * Initializes replay.\n   */\n   _initialize() {\n    if (!this._replay) {\n      return;\n    }\n\n    this._replay.initializeSampling();\n  }\n\n  /** Setup the integration. */\n   _setup() {\n    // Client is not available in constructor, so we need to wait until setupOnce\n    const finalOptions = loadReplayOptionsFromClient(this._initialOptions);\n\n    this._replay = new ReplayContainer({\n      options: finalOptions,\n      recordingOptions: this._recordingOptions,\n    });\n  }\n} Replay.__initStatic();\n\n/** Parse Replay-related options from SDK options */\nfunction loadReplayOptionsFromClient(initialOptions) {\n  const client = getCurrentHub().getClient();\n  const opt = client && (client.getOptions() );\n\n  const finalOptions = { sessionSampleRate: 0, errorSampleRate: 0, ...dropUndefinedKeys(initialOptions) };\n\n  if (!opt) {\n    // eslint-disable-next-line no-console\n    console.warn('SDK client is not available.');\n    return finalOptions;\n  }\n\n  if (\n    initialOptions.sessionSampleRate == null && // TODO remove once deprecated rates are removed\n    initialOptions.errorSampleRate == null && // TODO remove once deprecated rates are removed\n    opt.replaysSessionSampleRate == null &&\n    opt.replaysOnErrorSampleRate == null\n  ) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      'Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.',\n    );\n  }\n\n  if (typeof opt.replaysSessionSampleRate === 'number') {\n    finalOptions.sessionSampleRate = opt.replaysSessionSampleRate;\n  }\n\n  if (typeof opt.replaysOnErrorSampleRate === 'number') {\n    finalOptions.errorSampleRate = opt.replaysOnErrorSampleRate;\n  }\n\n  return finalOptions;\n}\n\nfunction _getMergedNetworkHeaders(headers) {\n  return [...DEFAULT_NETWORK_HEADERS, ...headers.map(header => header.toLowerCase())];\n}\n\nexport { Replay };\n//# sourceMappingURL=index.js.map\n","import \"core-js/stable\";\nimport \"regenerator-runtime/runtime\";\nimport $ from './sefaria/sefariaJquery';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport DjangoCSRF from './lib/django-csrf';\nconst SefariaReact = require('./ReaderApp');\nimport * as Sentry from \"@sentry/react\";\n\n\n$(function() {\n  // Initialize Sentry, sentryDSN is defined in base.html\n  if (sentryDSN) {\n    Sentry.init({\n      dsn: sentryDSN,\n      integrations: [\n        new Sentry.BrowserTracing(),\n        new Sentry.Replay(),\n      ],\n      // Performance Monitoring\n      tracesSampleRate: 0.0, // Capture 100% of the transactions, reduce in production!\n      // Session Replay\n      replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n      replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n    });\n  }\n\n  let container = document.getElementById('s2');\n  const loadingPlaceholder = document.getElementById('appLoading');\n  const footerContainer = document.getElementById('footerContainer');\n  let component = null;\n  DjangoCSRF.init();\n  var renderFunc = ReactDOM.hydrate;\n  if (loadingPlaceholder){\n    renderFunc = ReactDOM.render;\n  }\n  if (DJANGO_VARS.inReaderApp) {\n    // Rendering a full ReaderApp experience\n    Sefaria.unpackDataFromProps(DJANGO_VARS.props);\n    component = React.createElement(SefariaReact.ReaderApp, DJANGO_VARS.props);\n\n    renderFunc(component, container);\n\n  } else {\n    // Rendering the Header & Footer only on top of a static page\n    let staticProps = {\n      multiPanel: $(window).width() > 600,\n      headerMode: true,\n    };\n\n    let mergedStaticProps = { ...DJANGO_VARS.props, ...staticProps };\n    Sefaria.unpackDataFromProps(mergedStaticProps);\n    component = React.createElement(SefariaReact.ReaderApp, mergedStaticProps);\n    renderFunc(component, container);\n    if (footerContainer){\n      renderFunc(React.createElement(SefariaReact.Footer), footerContainer);\n    }\n  }\n\n  if (DJANGO_VARS.containerId && DJANGO_VARS.reactComponentName) {\n    // Render a specifc component to a container\n    container = document.getElementById(DJANGO_VARS.containerId);\n    component = React.createElement(SefariaReact[DJANGO_VARS.reactComponentName], DJANGO_VARS.props);\n    renderFunc(component, container);\n  }\n\n});\n","import { SDK_VERSION, init as init$1 } from '@sentry/browser';\n\n/**\n * Inits the React SDK\n */\nfunction init(options) {\n  options._metadata = options._metadata || {};\n  options._metadata.sdk = options._metadata.sdk || {\n    name: 'sentry.javascript.react',\n    packages: [\n      {\n        name: 'npm:@sentry/react',\n        version: SDK_VERSION,\n      },\n    ],\n    version: SDK_VERSION,\n  };\n  init$1(options);\n}\n\nexport { init };\n//# sourceMappingURL=sdk.js.map\n","import { logger } from '@sentry/utils';\nimport { getCurrentHub } from './hub.js';\n\n/** A class object that can instantiate Client objects. */\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nfunction initAndBind(\n  clientClass,\n  options,\n) {\n  if (options.debug === true) {\n    if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n      logger.enable();\n    } else {\n      // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n      // eslint-disable-next-line no-console\n      console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n    }\n  }\n  const hub = getCurrentHub();\n  const scope = hub.getScope();\n  scope.update(options.initialScope);\n\n  const client = new clientClass(options);\n  hub.bindClient(client);\n}\n\nexport { initAndBind };\n//# sourceMappingURL=sdk.js.map\n"],"names":["isBrowserBundle","__SENTRY_BROWSER_BUNDLE__","getSDKSource","isNodeEnv","Object","prototype","toString","call","process","dynamicRequire","mod","request","require","WINDOW","dateTimestampSource","nowSeconds","Date","now","platformPerformance","module","performance","_","getNodePerformance","timeOrigin","getBrowserPerformance","timestampSource","undefined","dateTimestampInSeconds","bind","timestampInSeconds","_browserPerformanceTimeOriginMode","browserPerformanceTimeOrigin","threshold","performanceNow","dateNow","timeOriginDelta","Math","abs","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","isGlobalObj","obj","GLOBAL_OBJ","globalThis","window","self","g","this","getGlobalObject","getGlobalSingleton","name","creator","gbl","__SENTRY__","VersionPreferences","versionPrefsByCorpus","_classCallCheck","_versionPrefsByCorpus","update_cookie","key","value","sref","title","Sefaria","index","corpus","e","vtitle","lang","prefsClone","$","JSON","stringify","path","FilterNode","_this","_ref","arguments","length","heTitle","docCount","aggKey","aggType","children","parent","selected","map","child","restoreFromSerialization","serializedFilterNode","fullFilterNode","hasChildren","reduce","sum","sumDocs","push","searchFilterText","results","i","concat","getLeafNodes","filter","x","match","RegExp","replace","propogateParent","noPropogateChild","setSelected","_deriveState","setUnselected","potentialState","setPartial","getAppliedFilters","isUnselected","isSelected","enTitle","getSelectedTitles","prepareForSerialization","cloned","c","clone","lengths","y","floor","quotient","isLeapYear$1","year","isDate","__proto__","greg2abs","date","TypeError","toFixed","getFullYear","getMonth","getDate","month","day","py","num2heb","num","num2digits","digits","incr","gematriya","number","parseInt","str","thousands","tdigits","slice","noopLocale","headers","contexts","alias","locales","create","activeLocale","activeName","Locale","lookupTranslation","id","locale","locale0","toLowerCase","array","gettext","text","addLocale","data","useLocale","RangeError","getLocaleName","getLocaleNames","keys","sort","ordinal","n","getEnOrdinal","String","s","v","hebrewStripNikkud","NISAN$4","IYYAR$1","TAMUZ$1","ELUL$2","TISHREI$2","CHESHVAN$1","KISLEV$2","TEVET$2","ADAR_I$2","ADAR_II$1","months","NISAN","IYYAR","SIVAN","TAMUZ","AV","ELUL","TISHREI","CHESHVAN","KISLEV","TEVET","SHVAT","ADAR_I","ADAR_II","monthNames0","monthNames","edCache","EPOCH","hebrew2abs","tempabs","m","monthsInYear","daysInMonth","elapsedDays","newYear","abs2hebrew","isNaN","trunc","yy","mm","dd","isLeapYear","longCheshvan","shortKislev","getMonthName","elapsed","prevYear","mElapsed","pElapsed","hElapsed","parts","altDay","elapsedDays0","daysInYear","throwTypeError","msg","UNITS_DAY","UNITS_WEEK","UNITS_MONTH","UNITS_YEAR","UNITS_SINGLE","d","w","M","UNITS_VALID","week","HDate","constructor","setMonth","setDate","abs0","isHDate","isNumber","getTishreiMonth","nummonths","getDay","setFullYear","fix","monthNum","greg","l0","n400","d1","n100","d2","n4","n1","yearFromFixed","dt","abs2greg","render","showYear","monthName","dateStr","getDayOfTranslation","ofStr","substring","renderGematriya","suppressNikud","before","onOrBefore","dow","nearest","onOrAfter","after","next","prev","add","units","standardizeUnits","hd","sign","full","subtract","deltaDays","other","isSameDate","fullYear","charCodeAt","monthFromName","test","dayOnOrBefore","dayOfWeek","absdate","fixMonth","fixDate","t","offset","Sun","latitude","longitude","julianDate","A","B","getJD","solarNoon","jd","eqTime","calcEquationOfTime","calcTimeJulianCent","solNoonLocal","formatDate","calcSolNoon","timeAtAngle","angle","rising","rise","JD","timeUTC","calcSunriseSetUTC","newTimeUTC","inputVal","oneDecimal","inputStr","oneChar","charAt","NaN","calcSunriseSet","minutes","seconds","UTC","radToDeg","angleRad","PI","degToRad","angleDeg","calcGeomMeanLongSun","L0","calcGeomMeanAnomalySun","calcObliquityCorrection","e0","calcMeanObliquityOfEcliptic","omega","cos","calcSunDeclination","lambda","mrad","sin","calcSunEqOfCenter","calcSunTrueLong","calcSunApparentLong","sint","asin","epsilon","calcEccentricityEarthOrbit","tan","sin2l0","sinm","hourAngle","lat","solarDec","latRad","sdRad","HAarg","acos","calcHourAngle","SolarCalc","sun","sunrise","sunset","sunriseEnd","sunsetStart","civilDawn","dawn","civilDusk","dusk","nauticalDawn","nauticalDusk","nightStart","astronomicalDusk","astronomicalDawn","nightEnd","goldenHourStart","goldenHourEnd","_formatters","dateFormatRegex","getPseudoISO","tzid","fmt","f","Intl","DateTimeFormat","hour","minute","second","hour12","timeZone","getFormatter$1","format","exec","pad4","pad2","Zmanim","solarCalc","suntime","night","goldenHour","alotHaShachar","misheyakir","misheyakirMachmir","tzeit","hourMins","gregEve","nightHour","nightHourMins","hourOffset","hours","getTime","chatzot","chatzotNight","sofZmanShma","sofZmanTfilla","sofZmanShmaMGA","alot72","sunriseOffset","temporalHour","sunsetOffset","sofZmanTfillaMGA","minchaGedola","minchaKetana","plagHaMincha","neitzHaChama","shkiah","formatTime","timeFormat","time","hm","split","roundTime","millis","millisOnly","getMilliseconds","getSeconds","secAndMillis","timeZoneOffset","utcStr","localStr","diffMs","ceil","getTimezoneOffset","offsetAbs","formatISOWithTimeZone","roundMinute","setSeconds","sunsetOffsetTime","tzeitTime","classicCities","ZIPCODES_TZ_MAP","timeFormatCache","Location","il","cityName","countryCode","geoid","parseFloat","long","Boolean","cc","getLatitude","getLongitude","getIsrael","getName","getShortName","comma","indexOf","getCountryCode","getTzid","getTimeFormatter","getFormatter","getGeoId","lookup","hdate","legacyTzToTzid","tz","dst","getUsaTzid","state","geonameCityDescr","admin1","countryName","cityDescr","addLocation","location","forEach","city","blatt","parshiot","parsha2id","D","p","RH","YK","SUKKOT","CHMSUKOT","SHMINI","EOY","PESACH","PESACH1","CHMPESACH","PESACH7","PESACH8","SHAVUOT","range$1","start","stop","Array","from","k","types","has","get","set","val","schottensteinStartDate","poAshkenazi","Berachot","Shabbat","Taanit","Yevamot","Ketubot","Makkot","Shevuot","Horayot","Menachot","Bechorot","Keritot","Midot","Bechukotai","Bereshit","Chukat","Matot","Tazria","Shavuot","Shemot","Sukkot","Toldot","Vaetchanan","Yitro","Parashat","Tevet","Berakhot","Sheviit","Terumot","Maasrot","Eduyot","Avot","Bekhorot","Middot","Oholot","Tahorot","Mikvaot","poHe","Eruvin","Pesachim","Shekalim","Yoma","Sukkah","Beitzah","Megillah","Chagigah","Nedarim","Nazir","Sotah","Gitin","Kiddushin","Sanhedrin","Zevachim","Chullin","Arachin","Temurah","Meilah","Kinnim","Tamid","Niddah","Balak","Bamidbar","Behar","Beshalach","Bo","Devarim","Eikev","Emor","Kedoshim","Korach","Masei","Metzora","Miketz","Mishpatim","Nasso","Nitzavim","Noach","Pekudei","Pinchas","Shmini","Shoftim","Terumah","Tetzaveh","Tzav","Vaera","Vayakhel","Vayechi","Vayeilech","Vayera","Vayeshev","Vayetzei","Vayigash","Vayikra","Vayishlach","Chanukah","Omer","Havdalah","Pesach","Purim","Adar","Av","Cheshvan","Elul","Iyyar","Kislev","Nisan","Sivan","Tamuz","Tishrei","Sigd","min","Misheyakir","Dawn","Sunrise","Dusk","Sunset","Lovingkindness","Might","Beauty","Eternity","Splendor","Foundation","Majesty","Peah","Demai","Kilayim","Challah","Orlah","Bikkurim","Gittin","Arakhin","Kelim","Negaim","Parah","Makhshirin","Zavim","Yadayim","Oktzin","Yerushalmi","Joshua","Judges","Isaiah","Jeremiah","Ezekiel","Hosea","Joel","Amos","Obadiah","Jonah","Micah","Nachum","Habakkuk","Zephaniah","Haggai","Zechariah","Malachi","Psalms","Proverbs","Job","Ruth","Lamentations","Ecclesiastes","Esther","Daniel","Ezra","Nehemiah","heStrs","heNoNikud","poHeNoNikud","INBROWSER","document","Util","target","scrollIntoViewOptions","getBoundingClientRect","bottom","innerHeight","scrollIntoView","top","el","getSelection","createRange","sel","range","selectNodeContents","removeAllRanges","addRange","selection","body","createTextRange","textRange","moveToElementText","select","currVersions","getCurrVersionsWithoutAPIResultFields","entries","_ref2","_slicedToArray","_ref3","_ref4","vlang","encodeVtitle","join","a","_ref5","_ref6","endsWith","dateString","toLocaleDateString","dateObjStr","email","validateEmail","console","log","feedback","refs","type","url","postData","json","alert","lists","error","singular","plural","timeStamp","_ref7","short","epoch_time","language","spacer","sefariaHumanizeDuration","b","_typeof","aProps","getOwnPropertyNames","bProps","_step","_iterator","_createForOfIteratorHelper","done","propName","err","nowUTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","round","sanitizeHtml","allowedTags","tag","allowedAttributes","_len","rows","_key","row","_this2","copy","setTime","item","_i2","_Object$entries","_ref9","attr","Error","func","limit","wait","setTimeout","html","DOMParser","parseFromString","textContent","img","span","div","td","allowedStyles","exclusiveFilter","frame","trim","immediate","timeout","context","args","callNow","clearTimeout","apply","needle","haystack","compare","_initialPath","pathname","search","string","createElement","href","source","protocol","host","hostname","port","query","params","ret","seg","len","file","hash","relative","segments","urlHash","sections","hashDict","emailAddress","_cookies","open","focus","str1","str2","toProperCase","clauses","j","lowers","uppers","txt","toUpperCase","substr","toFirstCapital","stripHtml","striptags","decodeHtmlEntities","stripNikkud","stripHtmlConvertLineBreaks","stripPunctuation","escapeHtml","startsWith","searchString","position","splitCamelCase","camelize","testArr","elementsAreEqual","is","pad","l","unshift","unique","toggle","splice","move","old_index","new_index","Number","addCommas","fill","defineProperty","O","relativeStart","max","end","relativeEnd","final","find","predicate","o","thisArg","kValue","escape","uid","cookie","expires","_uid","parse","rangeCount","container","appendChild","getRangeAt","cloneContents","lineNumbers","getElementsByClassName","parentNode","removeChild","titleBoxes","curReaderPanel","commonAncestorContainer","closest","classList","contains","elsToRemove","innerText","isStart","collapse","parentElement","setStart","anchorNode","anchorOffset","setEnd","focusNode","focusOffset","collapsed","isCollapsed","nodeType","vars","decodeURIComponent","paramName","paramValue","pattern","_scrollbarWidth","append","width","remove","$input","$msg","$ok","$preview","_this3","options","completion_message_base","completion_message","current_lookup_ajax","dropdownAnchorSide","interfaceLang","on","check","keyup","keyCode","hasClass","trigger","autocomplete","response","term","then","completions","my","at","event","ui","_lookupAndRoute","minLength","removeClass","addClass","RefValidator","_sectionListString","arr","lastTwo","_addressListString","_getCompletionMessage","inString","depthUp","sectionNames","addressExamples","current","sectionListString","addressListString","exampleRef","_getSegmentCompletionMessage","_getSectionCompletionMessage","_getMessage","return_message","prompt_message","create_new_message","success_message","or_phrase","range_phrase","allow_new_titles","disallow_segments","_this4","cancel","promise","css","is_ref","_allow","is_section","is_segment","_disallow","ref","_inlineAddSourcePreview","_preview_segment_mapper","en","he","parseURL","URL","show","of","collision","hide","humanizeDuration","largest","unitMeasures","mo","h","languages","shortEn","ms","shortHe","SearchState","appliedFilters","appliedFilterAggTypes","availableFilters","filterRegistry","filtersValid","orphanFilters","fieldExact","fieldBroad","field","sortType","_recreateRegistry","metadataByType","filters","registry","clonedAvailableFilters","aggregationsToUpdate","tempAvailableFilters","tempFilterRegistry","fields","_step2","_iterator2","_loop","thisField","otherField","every","_ret","prefix","aggTypes","aggregation_field_array","aggTypesSuffixes","aggregation_field_lang_suffix_array","aggTypesWithSuffixes","util","zip","agg","suffixMap","values","suffix","accum","aggTypeFilters","encodeURIComponent","build_and_apply_filters","sortTypeArray","heName","fieldArray","sort_method","score_missing","direction","sheet","SearchTotal","_createClass","_ref$value","_ref$relation","relation","_defineProperty","_value","_getRelationString","_relation","newValue","getValue","newRelation","Search","searchIndexText","searchIndexSheet","_cache","sefariaQueryQueue","hits","total","max_score","lastSeen","dictaQueryQueue","queryDictaFlag","dictaCounts","sefariaSheetsResult","buckets","queryAborter","HackyQueryAborter","dictaSearchUrl","result","isQueryStart","wrapper","Promise","resolve","reject","jsonData","sortedJSON","get_query_object","cacheKey","cacheResult","cache","addQuery","apiHost","contentType","crossDomain","processData","dataType","success","_source","comp_date","mergedHits","hebrewRef","sefer","perek","pasuk","standardArgs","applied_filters","book","size","limitedToBooks","sort_type","smallUnitsOnly","adaptedHits","hit","bookData","xmlId","categories","bookTitle","bookLoc","version","heRef","reformatDictaRef","hebrewPath","pagesheetrank","pagerank","highlight","naive_lemmatizer","score","_id","cameFrom","bucket","doc_count","hebrew","isHebrew","exact","addAggregations","newBuckets","aggregations","expression","accumulatedTotal","currentBook","combine","finalHits","sefariaHits","includes","dictaHits","sefariaMeanScore","nextValue","dictaMeanScore","sefariaStd","sqrt","pow","dictaStd","factor","delta","isDictaQuery","abort","updateAggreagations","all","sefariaQuery","dictaQuery","dictaBooksQuery","_cacheQuery","mergedQueries","mergeQueries","getCachedQuery","_SearchState$metadata","_sortTypeArray$find","source_proj","slop","filter_fields","aggs","sort_fields","sort_reverse","sort_score_missing","newHits","newHitsObj","alreadySeenIds","currRef","newHitsIndex","hit_list","new_hit_list","version_priority","duplicates","_queryCacheKey","aggregation_buckets","_toConsumableArray","fkey","_tocOrderLookup","compareSearchCatPaths","previousNodes","node","hebrewTerm","orphans","tempFilter","tempApplied","tempAppliedTypes","_this$buildFilterTree","buildFilterTree","applyFilters","isHeb","terms","filterInd","_queryList","ajaxQuery","_i18nInterfaceStrings","_i18nInterfaceStringsWithContext","palette","colors","darkblue","maroon","green","slate","darkorange","red","aqua","darkgreen","yellow","olive","darkteal","raspberry","paleblue","blue","orange","lightpink","darkpink","lavender","purple","lightblue","lightgreen","teal","lightbg","cat","categoryColors","idx","letter","ga","tracker","trackerName","getAll","onerror","lineNumber","_mock","SET","SEND","Track","category","action","label","hitCallback","nonInteraction","category_name","bool","sval","loggedIn","analytics_uid","setUserLoggedIn","setUserID","component","likeStatus","pageview","origin","Hebrew","hebrewNumerals","log10","thisIntMagnitude","nextIntMagnitude","breakIntMagnitudes","list","chunkSize","one","ch","inputString","punctuation","pair","right","numChars","reverse","getChunks","encodeHebrewNumeral","sanitize","encodeLargeHebrewNumeral","heb","hundreds","tens","daf","form","rawString","heCount","enCount","punctuationRE","known","amud","_regeneratorRuntime","exports","Op","hasOwn","hasOwnProperty","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","fn","arg","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","doneResult","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","awrap","async","iter","object","pop","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","isArray","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayWithHoles","_i","_s","_e","_x","_r","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","minLen","arr2","_incrementalPromise","_getTranslations","_getSourceVersions","_subscribeSefariaAndSteinsaltzNewsletter","_subscribeSteinsaltzNewsletter","_subscribeSefariaNewsletter","_getPortal","_getVersions","_getAllTranslationsWithText","_getTextsFromAPIV","extend","param","_dataLoaded","_inBrowser","toc","books","booksDict","last_place","_parseRef","parseRef","q","toSections","nums","toSplit","first","virtualBooks","numberMatch","remainder","diff","makeRef","normRef","normRefList","norm","humanRef","pRef","isRef","pRefEnd","nRef","joinRefList","refStrAttr","startSplit","splitRangingRef","getRefFromCache","endSplit","lastSpaceStart","lastIndexOf","namedPartStart","addressPartStart","lastSpaceEnd","namedPartEnd","addressPartEnd","similarpart","commonSubstring","startDiff","endDiff","similaraddrs","addrLength","addrStr","refContains","ref1","ref2","oRef1","oRef2","_map","dafToInt","_map2","oRef1sections","oRef1toSections","oRef2sections","oRef2toSections","sectionsLen","refCategories","sectionRef","oref","splitSpanningRefNaive","oRef","isDepth1","textData","getTextFromCache","makeSegments","segment","newRef","getSectionStringByAddressType","addressType","enSection","heSection","section","intToDaf","encodeHebrewDaf","intToFolio","encodeHebrewFolio","titlesInText","_eras","makeRefRe","titles","wrapRefLinks","refRe","p1","p2","p3","p4","p5","uref","nref","r","_texts","_refmap","_complete_text_settings","settings","commentary","enVersion","heVersion","multiple","stripItags","wrapLinks","wrapNamedEntities","translationLanguagePreference","versionPref","firstAvailableRef","fallbackOnDefaultVersion","_i4","versionPrefKey","_textKey","_getOrBuildTextData","getText","_ApiPromise","_textUrl","_d$versions","versions","_saveVersions","_makeVersions","_saveText","_bulkTexts","getBulkText","asSizedString","minChar","maxChar","transLangPref","hostStr","paramStr","_i5","_Object$entries2","paramKey","paramVal","refStrs","last","encodeURI","promises","refStr","_cachedApiPromise","store","assign","makeParamsStringForAPIV3","versionTitle","makeUrlForAPIV3Text","requiredVersions","mergeText","getTextsFromAPIV3","_callee","apiObject","_context","_x2","_x3","_x4","getAllTranslationsWithText","_callee2","returnObj","_context2","_sortVersionsIntoBuckets","_x5","_bulkSheets","getBulkSheets","sheetIds","idStr","cb","_api","_data$versions","ISOMap","translateISOLanguageCode","code","_Sefaria$ISOMap","_Sefaria$ISOMap$code$","lookupVar","getHebrewTitle","slug","_versions","_translateVersions","getVersionFromCache","byLang","excludeFilter","_cachedApi","getVersions","_callee3","_context3","_x6","_portals","getPortal","_callee4","portalSlug","cachedPortal","_context4","_x7","subscribeSefariaNewsletter","_callee5","firstName","lastName","educatorCheck","_context5","fetch","mode","Cookies","credentials","educator","ok","_x8","_x9","_x10","_x11","subscribeSteinsaltzNewsletter","_callee6","_context6","_x12","_x13","_x14","subscribeSefariaAndSteinsaltzNewsletter","_callee7","_context7","status","_x15","_x16","_x17","_x18","filterVersionsObjByLangs","versionsObj","langs","includeFilter","filterVersionsArrayByAttr","versionsArray","filterObj","getSourceVersions","_callee8","_context8","_x19","getTranslations","_callee9","_context9","heVersions","isSource","_x20","flat","getTranslateVersionsKey","versionTitleInHebrew","versionStore","matches","actualLanguage","transformVersionObjectsToByActualLanguageKeys","versionObjects","_ref8","merged","vTitle","deconstructVersionsKey","versionsKey","setVersionPreference","versionPreferences","update","track","editProfileAPI","version_preferences_by_corpus","getLicenseMap","_refKey","cached","buildable","segmentData","contextData","refkey","isSectionLevel","isSpanning","_splitTextSection","newData","heSectionRef","newSettings","spanningContextSettings","spanningRefs","_get_offsets","_data$index_offsets_b","offsets","index_offsets_by_depth","textDepth","isSuperSection","delim","hasContent","segment_data","nextSegment","prevSegment","context_settings","contextKey","updateFromAPI","_index","_shape","getShape","_cacheFromToc","tocBranch","parentsPath","parentsOrders","rewrittenFrom","rewrittenTo","thisOrder","thisPath","searchRoot","new_path","_translateTerms","heCategory","contents","aPath","bPath","_indexDetails","getIndexDetailsFromCache","getIndexDetails","titleIsTorah","postSegment","isFullSegmentImage","versionedKey","getRef","urlPattern","openApiCalls","_ajaxObjects","callback","openTransBannerApplies","textLanguage","_Sefaria$index","currCorpus","_lookups","refOnly","trimmed_name","queryString","_lexiconCompletions","lexiconCompletion","word","lexicon","_topicCompletions","getTopicCompletions","processor","_lexiconLookups","getLexiconWords","words","normalize","_links","getLinks","_this5","_saveLinkData","getLinksFromCache","_saveLinksByRef","_cacheIndexFromLinks","_cacheTranslationsOfEssays","links","_step3","_iterator3","link","displayedText","collectiveTitle","_saveItemsByRef","splitItems","anchorRef","anchorRefExpanded","linksLoaded","linkCount","_filterLinks","filterAndSuffix","isQuoting","isEssay","isCommentary","primary_category","inArray","_filterSheetFromLinks","sheetID","isSheet","_dedupeLinks","dedupedLinks","sourceRef","hasEssayLinks","newlinks","essayLinks","linkLang","currVersionTitle","linkVersionTitle","_linkSummaries","linkSummary","excludedSheet","categoryOrderOverrides","categoryOverridesForRef","summary","count","hasEnglish","sourceHasEn","categoryList","baseRef","sectionLinks","summaryList","categoryData","heBook","enShortDesc","enDesc","heShortDesc","categoryListNew","getDescriptionDict","linkSummaryBookSort","categoryOrder","orderA","orderB","byHebrew","aTop","bTop","linkSummaryBookSortHebrew","commentarySectionRef","commentator","pRefs","some","startSections","endSections","sorter","commentaryRef","_descDict","getDescriptions","keyName","catmap","tocItemsByCategories","descs","_this6","_siteSettings","_notes","notes","newNotes","related","_saveNoteData","_privateNotes","privateNotes","notesByRef","_savePrivateNoteData","privateNotesLoaded","addPrivateNote","note","clearPrivateNotes","_allPrivateNotes","allPrivateNotes","_this7","notesTotalCount","myNotes","owner","deleteNote","noteId","_media","mediaByRef","_this8","media","_webpages","_processedWebpages","webPagesByRef","_this9","webpages","page","aNumAnchorRefs","bNumAnchorRefs","bIsRange","_map4","_map6","linkerHits","_refTopicLinks","_saveTopicByRef","topicsByRef","_step4","topicsObj","resultLoaded","_iterator4","tempTopicList","_step5","_iterator5","tempTopic","topic","order","dataSources","dataSource","pr","topicsByRefCount","topics","_related","relatedApi","_manuscripts","manuscriptsByRef","_this10","manuscriptPages","_this11","originalData","split_data","sheets","_saveSheetsByRefData","manuscripts","obj_type","_relatedPrivate","relatedPrivate","_this12","_saveUserSheetsByRefData","potentialEmptyRefs","eref","_userSheetsByRef","clearLinks","removeLink","isACaseVariant","repairCaseVariant","completionArray","normalizedQuery","bestMatch","bestMatchLength","normalizedCompletion","repairGershayimVariant","_step6","normalize_gershayim","normalized_query","_iterator6","withContext","wrapEn","wrapHe","topLength","en2","he2","baseSection","startSection","alt","alts","stripImagesFromSegments","stripImgs","sectionString","named","numbered","numberedSections","indexTitle","isComplex","namedSections","heIndexTitle","commentaryList","curTocElem","dependence","base_text_titles","refs_to_base_texts","tocObjectByCategories","cats","found","categoryAttribution","attributions","english","englishAsEdition","hebrewAsEdition","attribution","getPassages","areVersionsEqual","v1","v2","getSavedItem","_ref10","saved","items","removeSavedItem","_ref11","toggleSavedItem","_ref12","sheet_owner","sheet_title","savedItem","time_stamp","user_history","client","created","fail","jqXHR","textStatus","errorThrown","partialProfile","followAPI","ftype","messageAPI","message","recipient","chatMessageAPI","roomId","senderId","timestamp","messageContent","getChatMessagesAPI","getRefSavedHistory","tref","_profiles","profileAPI","userHistory","loaded","saveUserHistory","history_item","is_history_enabled","_step7","history_item_array","_iterator7","secondary","he_ref","new_hist_array","user_history_cookie","isNewVisitor","sessionStorage","getItem","localStorage","isReturningVisitor","markUserAsNewVisitor","setItem","markUserAsReturningVisitor","uploadProfilePhoto","formData","lastPlaceForText","_topicList","topicList","_this13","_step8","_iterator8","normTitles","sortTopicsCompareFn","_map7","isTopicTopLevel","displayOrder","_map8","aDisplayOrder","bDisplayOrder","stripInitialPunctuation","_map9","_map10","_tableOfContentsDedications","_strapiContent","_inAppAds","_stories","stories","_parashaNextRead","getParashaNextRead","parasha","_bookSearchPathFilter","bookSearchPathFilterAPI","_topics","_topicPageSize","_CAT_REF_LINK_TYPE_FILTER_MAP","getTopic","_ref13","_ref13$annotated","annotated","_ref13$with_html","with_html","topicTocCategory","ref_link_type_filters","_getTopicCacheKey","processTopicsData","_ref14","_ref14$annotated","_ref14$with_html","tabs","_i11","_Object$entries3","_step9","_ref16","linkTypeSlug","linkTypeObj","_iterator9","refObj","tabKey","is_sheet","refMap","shouldDisplay","_refObj$order","_refObj$order2","_refObj$order3","_refObj$order4","_refObj$order5","_refObj$order5$curate","_refObj$order6","_refObj$order6$curate","_objectSpread","availableLangs","numDatasource","tfidf","curatedPrimacy","descriptions","_i12","_Object$values","tabObj","getTopicFromCache","_ref17","_ref17$annotated","_ref17$with_html","_topicSlugsToTitles","slugsToTitles","topic_toc","_initTopicTocSlugToTitleReducer","_topicTocPages","_initTopicTocPages","_initTopicTocReducer","_topicTocPageKey","_ref18","_objectWithoutProperties","_excluded","_step10","_iterator10","sub_c","_step11","_iterator11","_topicTocCategory","_initTopicTocCategory","_initTopicTocCategoryReducer","_step12","_iterator12","topicTocPage","_topicTocCategoryTitles","_initTopicTocCategoryTitles","_initTopicTocCategoryTitlesReducer","_step13","_iterator13","topicTocCategoryTitle","_loadSheetByID","loadSheetByID","_this14","deleteSheetById","_userSheets","userSheets","_this15","sortBy","numberToRetrieve","updateUserSheets","updateInPlace","sheetIndex","findIndex","clearUserSheets","_this16","_publicSheets","publicSheets","skipCache","_sheetsByRef","sheetsByRef","newSheets","seen","deduped","userSheetsByRef","sheetsTotalCount","mySheets","extractIdFromSheetRef","_translations","getTranslation","_collections","getCollection","getCollectionFromCache","_collectionsList","getCollectionsList","getCollectionsListFromCache","_userCollections","getUserCollections","getUserCollectionsFromCache","_userCollectionsForSheet","getUserCollectionsForSheet","getUserCollectionsForSheetFromCache","getBackgroundData","calendarRef","calendarTitle","cal","calendars","_cacheHebrewTerms","hebrewTranslation","translatedString","_getStringCaseInsensitive","inputStrs","translation","translationMatrix","warn","_v","langOptions","inputRef","_cacheSiteInterfaceStrings","_makeBooksDict","_this17","always","defaultVal","_ref19","makeCancelable","hasCanceled_","isCanceled","incrementalPromise","_callee10","fetchResponse","increment","setResponse","setCancel","lastEndIndex","_context11","tempData","_Sefaria$makeCancelab","tempResponses","_context10","prevResponses","_x21","_x22","_x23","_x24","_x25","unpackDataFromProps","props","initialPanels","_panel$versions","panel","_panel$text","_panel$text$versions","bookRef","indexDetails","collectionData","initialCollectionSlug","translationsData","initialTranslationsSlug","topicData","initialTopic","collectionListing","initialPath","unpackBaseProps","_i13","_dataPassedAsProps","element","loadServerData","DJANGO_DATA_VARS","_i14","_Object$entries4","_ref21","indexColor","categoryColor","refColor","Strings","setup","baseProps","DJANGO_VARS","setupPrototypes","setupMisc","handleUserCookie","_analytics_uid","setUserData","CollectionsModal","React","className","onClick","handleCollectionsChange","close","CollectionsWidget","initialCollectionsSort","cs","csSelected","aSel","lastModified","_useState2","useState","collectionsSelected","setCollectionsSelected","initialCollections","_useState4","collections","setCollections","_useState6","dataLoaded","setDataLoaded","_useState8","newName","setNewName","_useState10","changed","setChanged","useEffect","initialCollectionsSelected","initialSortedCollections","onCheckChange","collection","checked","newCollectionsSelected","post","handleCollectionInclusionChange","newCollections","sheetListing","onClose","InterfaceText","onChange","placeholder","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","ContentLanguageContext","AdContext","StrapiDataContext","StrapiDataProvider","dataFromStrapiHasBeenReceived","setDataFromStrapiHasBeenReceived","strapiData","setStrapiData","modal","setModal","banner","setBanner","STRAPI_INSTANCE","getStrapiData","getDateWithoutTime","getJSONDateStringInLocalTimeZone","_Array$fill$map","_Array$fill$map2","currentDate","twoWeeksAgo","twoWeeksFromNow","startDate","endDate","toISOString","toJSON","redirect","referrerPolicy","statusText","_result$data","_result$data$modals","_result$data2","_result$data2$banners","modals","banners","removeContentKeysFromLocalStorage","_ref3$prefix","_ref3$except","except","keysToRemove","removeItem","attributes","modalStartDate","modalEndDate","_modal$attributes$loc","_modal$attributes$loc2","internalModalName","localizations","localization_attributes","hebrew_attributes","attribute","bannerStartDate","bannerEndDate","_banner$attributes$lo","_banner$attributes$lo2","internalBannerName","_excluded2","Provider","useContentLang","defaultToInterfaceOnBilingual","overrideLanguage","contentLanguage","useContext","languageToFilter","langShort","useDebounce","delay","debouncedValue","setDebouncedValue","handler","useIncrementalLoad","fetchData","input","pageSize","setter","identityElement","resetValue","_useMemo2","useMemo","pagedInput","fetchDataByPage","numPages","_useState22","setPage","_useState24","setCanceled","_useState26","valueQueue","setValueQueue","fetchPage","useCallback","setResult","id_elem","prevPage","usePaginatedLoad","ContentText","_filterContentTextByLang","ContentSpan","content","isHTML","markdown","VersionContent","langAndContentItems","_useContentLang2","_item","VersionImageSpan","imageLoadCallback","getImageAttribute","imgTag","imgElement","querySelector","getAttribute","altText","srcText","onLoad","src","_ref2$defaultToInterf","_ref2$bilingualOrder","bilingualOrder","contentVariable","_useContentLang4","dangerouslySetInnerHTML","__html","ReactMarkdown","unwrapDisallowed","disallowedElements","options_for_form","dropdown_data","AdminEditorButton","toggleAddingTopics","_ref$top","_ref$bottom","classes","classNames","button","extraSmall","role","useEditToggle","editingBool","toggleEditingBool","currentTarget","validateMarkdownLinks","regexp","matches_without_duplicates","_matches_without_dupl","matchAll","Set","namesFound","completion_objects","confirm","t0","AdminEditor","catMenu","pictureUploader","updateData","savingStatus","validate","deleteObj","_ref3$items","_ref3$isNew","isNew","_ref3$extras","extras","validatingLinks","setValidatingLinks","setInputValue","disallowedTagsMode","preprocess","_options_for_form$x","AdminToolHeader","chooseCat","origEra","getDropdown","TitleVariants","newTitles","handleTitleVariants","defaultValue","inputType","tabIndex","displayOptions","_child$descriptions","_child$descriptions2","_child$descriptions2$","_child$descriptions3","_child$descriptions4","_child$descriptions4$","refInCache","displayRef","displayOptionForSources","Reorder","subcategoriesAndBooks","updateOrder","displayType","_ref$updateParentChan","updateParentChangedStatus","clickHandler","dir","index_to_swap","temp","ReorderEditor","_ref2$type","_ref2$postURL","postURL","_ref2$redirect","_ref2$origItems","origItems","tocItems","setTocItems","setSavingStatus","isChanged","setIsChanged","postCategoryData","sources","requestWithCallBack","save","newTocItems","CategoryEditor","_origData$origDesc","_origData$origDesc2","_origData$origCategor","_origData$origCategor2","_ref3$origData","origData","_ref3$origPath","origPath","setPath","origEn","origHe","heDescription","origDesc","enDescription","enCategoryDescription","origCategoryDesc","heCategoryDescription","setData","_useState12","_useState14","_useState16","_useState18","isPrimary","setIsPrimary","origSubcategoriesAndBooks","useRef","_useState20","setSubcategoriesAndBooks","newPath","CategoryChooser","fullPath","origFullPath","urlParams","origSubcategoryTitles","newSubcategoryTitles","primaryOptions","ariaLabel","ToggleSet","blueStyle","separated","setOption","currentValue","Promotions","inAppAds","setInAppAds","matchingAds","setMatchingAds","strapi","_strapi$strapiData","_strapi$strapiData$si","sidebarAds","sidebarAd","_sidebarAd$localizati","_sidebarAd$localizati2","keywordTargetsArray","keywords","excludeKeywordTargets","campaignId","internalCampaignId","bodyText","buttonText","buttonURL","buttonIcon","buttonLocation","buttonAboveOrBelow","hasBlueBackground","showTo","startTimeDate","startTime","endTimeDate","endTime","keywordTargets","debug","hebrewAttributes","ad","isLoggedIn","showToUser","isDebug","showGivenDebugMode","kw","SidebarAd","matchingAd","sidebarPromo","getButton","_matchingAd$buttonIco","gtag","campaignID","adType","alternativeText","OnInView","onVisible","NewsletterSignUpForm","contextName","_ref$includeEducatorO","includeEducatorOption","_ref$emailPlaceholder","emailPlaceholder","_ref$subscribe","subscribe","setEmail","setFirstName","setLastName","setEducatorCheck","subscribeMessage","setSubscribeMessage","showNameInputs","setShowNameInputs","handleSubscribeKeyUp","handleSubscribe","res","onKeyUp","autoFocus","EducatorCheckbox","NavSidebar","modules","Modules","ModuleType","AboutSefaria","AboutContext","Promo","Resources","TheJewishLibrary","AboutTextCategory","AboutText","SupportSefaria","SupportJMC","SponsorADay","LearningSchedules","Translations","WeeklyTorahPortion","DafYomi","AboutTopics","TrendingTopics","RelatedTopics","TitledText","Visualizations","JoinTheConversation","JoinTheCommunity","GetTheApp","StayConnected","AboutLearningSchedules","AboutTranslatedText","AboutCollections","ExploreCollections","DownloadVersions","WhoToFollow","Image","Wrapper","PortalAbout","PortalMobile","PortalOrganization","PortalNewsletter","Module","wide","navSidebarModule","ModuleTitle","h1","enText","heText","hideTitle","EnglishText","HebrewText","translationsSlug","translationLookup","IconLink","icon","DonateLink","tocObject","heDesc","_index$compPlaceStrin","_index$compDateString","composed","compPlaceString","compDateString","authors","description","TranslationLinks","ParashahLink","parashah","ParashahName","displayValue","HaftarotLinks","haftarot","DafLink","_ref15","_Sefaria$getIndexDeta","relatedTopics","setTopics","showMore","setShowMore","showMoreLink","shownTopics","AppStoreButton","platform","fbURL","_ref20","toggleSignUpModal","user","ProfileListing","_extends","_ref22","_ref23","_ref24","_ref25","setVersions","isReady","setIsReady","dlVersionTitle","dlVersionFormat","dlVersionLanguage","downloadSelected","setDownloadSelected","isVersionPublicDomain","license","handleInputChange","newState","_value$split2","dlstate","downloadParamsReady","downloadParams","localeCompare","Dropdown","preventDefault","download","_ref26","image_uri","image_caption","ImageWithCaption","photoLink","caption","_ref27","android_link","ios_link","_ref28","_ref29","titleElement","Section","Link","blank","Footer","_Component","_inherits","_super","_createSuper","setState","isClient","blgURL","LikeFollowButtons","trackLanguageClick","renderContextUS","renderSefaria","Component","_Component2","_super2","loadFacebook","loadTwitter","FB","XFBML","js","fjs","getElementsByTagName","getElementById","insertBefore","twttr","widgets","load","ready","ownKeys","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","hint","prim","toPrimitive","_toPrimitive","_toPropertyKey","TopicEditor","_origData$origImage","_origData$origImage$i","_origData$origImage2","_origData$origImage2$","_origData$origImage3","onCreateSuccess","origWasCat","catSlug","origCatSlug","origEnTitle","origHeTitle","origHeDescription","origEnDescription","origEnCategoryDescription","origHeCategoryDescription","enAltTitles","origEnAltTitles","heAltTitles","origHeAltTitles","birthPlace","origBirthPlace","heBirthPlace","origHeBirthPlace","birthYear","origBirthYear","heDeathPlace","origHeDeathPlace","deathYear","origDeathYear","era","deathPlace","origDeathPlace","enImgCaption","origImage","heImgCaption","isAuthor","setIsAuthor","isCategory","setIsCategory","subtopics","origSlug","_useState9","sortedSubtopics","setSortedSubtopics","changedPicture","setChangedPicture","specialCases","newIsCategory","tempSlug","tempTitle","saveReorderedSubtopics","saveTopic","_origData$origImage4","_origData$origImage5","_origData$origImage5$","_origData$origImage6","_origData$origImage6$","altTitles","origImageURI","origEnCaption","origHeCaption","image","origDescription","origCategoryDescription","categoryDescriptionChanged","categoryDescription","firstLetter","origKey","origCategory","prepData","postJSON","newSlug","xhr","TopicPictureUploader","old_filename","sheetPropType","PropTypes","publisher_id","publisher_name","publisher_url","publisher_image","publisher_position","publisher_organization","publisher_followed","sheet_id","sheet_summary","textPropType","bilingualPropType","lead","isRequired","StoryFrame","cls","cardColor","propTypes","StoryTitleBlock","SBlock","SimpleLinkedBlock","SimpleInterfaceBlock","StoryBodyBlock","SimpleContentBlock","StorySheetList","compact","cozy","smallfonts","SheetBlock","IntroducedTextPassage","_text$descriptions","_text$descriptions$en","_text$descriptions2","_text$descriptions2$h","_text$descriptions3","_text$descriptions3$e","_text$descriptions4","_text$descriptions4$h","afterSave","_ref7$bodyTextIsLink","bodyTextIsLink","heOnly","innerContent","style","textDecoration","CategoryHeader","buttonsToDisplay","prompt","SaveLine","dref","afterChildren","ColorBarBox","intros","TextPassage","_ref8$bodyTextIsLink","historyObject","is_followed","organization","hideSave","SaveButton","tooltip","allowArrayLike","it","F","_e2","normalCompletion","didErr","step","_e3","norm_hebrew_ref","fetchBulkText","inRefs","outRefs","tempRef","fetchBulkSheet","inSheets","outSheets","tempSheet","refFilter","currFilter","sheetFilter","_arr2","refSort","currSortOption","order_id","aAvailLangs","bAvailLangs","custom_order","sheetSort","aTLangHe","titleLanguage","bTLangHe","aLangHe","bLangHe","views","relevance","dateCreated","refRenderWrapper","topicTestVersion","topicTitle","primaryTitle","langKey","dataSourceText","ToolTipped","hasPrompts","Passage","sheetRenderWrapper","TopicCategory","setTopic","setNavTopic","initialWidth","openDisplaySettings","openSearch","setTopicData","setSubtopics","topicBlocks","disallowedMarkdownElements","sidebarModules","ResponsiveNBox","TopicSponsorship","sponsorship_language","topic_slug","TopicHeader","_topicData$indexes","multiPanel","isCat","topicImage","primaryTitleIsTransliteration","tpTopImg","TopicImage","LoadingMessage","indexes","AuthorIndexItem","PortalNavSideBar","portal","portalModuleTypeMap","entriesToDisplayList","TopicPage","tab","openTopics","showBaseText","navHome","setTab","onSetTopicSort","topicSort","defaultTopicData","isLoading","_useState7","loadedData","setLoadedData","refsToFetchByTab","setRefsToFetchByTab","parashaData","setParashaData","showFilterHeader","setShowFilterHeader","setPortal","tabDisplayData","fetcher","sortOptions","filterFunc","sortFunc","renderWrapper","getTabDisplayData","useTabDisplayData","scrollableElement","_i3","refsWithoutData","displayTabs","onClickFilterIndex","_loop2","_topicData$tabs2","_topicData$tabs","updatedData","justifyright","classStr","topicPanel","readerNavMenu","sidebar","portal_slug","TopicSideColumn","clearAndSetTopic","timePeriod","properties","TabView","currTabName","renderTab","noselect","containerClasses","onClickArray","displayTab","TopicPageTab","onDisplayedDataChange","_refsDisplayedByTab","initialRenderSize","renderItem","FilterableList","renderEmptyList","renderHeader","onSetSort","externalSortOption","TopicLink","isTransliteration","linkTypeArray","linkType","readingsComponent","ReadingsComponent","topicMetaData","TopicMetaData","linksComponent","aInd","bInd","pluralTitle","linksToDisplay","hasPlural","pluralizedTitle","hasMore","TopicSideSection","shortLang","titleIsTransliteration","class","_parashaData$parasha$","_parashaData$parasha","_parashaData$parasha$2","_parashaData$parasha$3","extraDetails","aliyot","aliya","sectionNum","sectionStr","heSectionStr","haftarah","propKeys","_ref23$properties","tpSection","yearRange","propValues","keyObj","propsSection","curr","propObj","urlExists","aclasses","openInNewTab","tpSidebarImg","SignUpModalKind","AddConnection","AddToSheet","AddTranslation","Follow","Notes","Save","Default","_signUpModalContent","h2","h3","contentList","bulletContent","SourceEditor","_origData$description","_origData$description2","_origData$description3","_origData$description4","_origData$description5","_origData$description6","_origData$description7","_origData$description8","_ref$origData","setDisplayRef","_refInCache","refInUrl","getSuggestions","helperPromptText","currentSuggestions","showAddButton","previewText","suggestion","border_color","Autocompleter","selectedCallback","inputValue","changeInputValue","inputPlaceholder","buttonTitle","autocompleteClassNames","showSuggestionsOnSelect","DictionarySearch","timer","attachKeyboard","initAutocomplete","checkIfChanged","ReactDOM","contextSelector","inputElement","VKI_attached","VKI_attach","searchBoxWidth","keyboardWidth","submitSearch","lexiconName","showWordList","navigatePanel","needsResolution","resolvedWord","displayWord","opacity","inputClasses","keyboardInput","handleSearchButtonClick","handleSearchKeyUp","onFocus","showVirtualKeyboardIcon","onBlur","maxLength","VersionBlockHeader","renderMode","VersionBlockHeaderTitle","VersionBlockHeaderText","shouldAttemptTruncation","setShouldAttemptTruncation","truncationOccurred","setTruncationOccurred","textRef","computedStyles","getComputedStyle","maxHeight","getPropertyValue","scrollHeight","prototypes","VersionBlockSelectButton","openVersionInMainPanel","openVersionInMoinPanel","VersionInformation","license_map","currentRef","VersionBlockUtils","makeAttrClassNames","versionSource","purchaseInformationURL","VersionImage","purchaseInformationImage","VersionTitleAndSelector","shortVersionTitle","currObjectVersions","openVersionInReader","shortVersionTitleInHebrew","makeVersionLink","VersionMetadata","makeVersionTitle","CategoryFilter","showBooks","setFilter","updateRecent","setConnectionsCategory","filterSuffix","textFilters","TextFilter","srefs","hideColors","innerClasses","categoryFilter","withBooks","handleClick","categoryForUrl","classesDesc","sidebarDescription","lowlight","outerClasses","categoryFilterGroup","catDesc","catEnDesc","catHeDesc","EnglishAvailableTag","inRecentFilters","textFilter","enBook","showCount","hideCounts","upperClass","uppercase","enDisplayedText","heDisplayedText","_Component3","_super3","RecentFilterSet","_Component4","_super4","showAllFilters","recentFilters","filterKey","topLinks","recentFilterSet","topFilters","asHeader","filterSet","inHeader","TextRange","_isMounted","dataPrefetched","onTextLoad","basetext","segmentNumber","placeSegmentNumbers","addEventListener","handleResize","removeEventListener","nextProps","highlightedRefs","showHighlight","layoutDefault","layoutTanakh","aliyotTorah","vowels","layoutTalmud","biLayout","fontSize","punctuationTalmud","layoutWidth","prevProps","prevState","forceUpdate","onRangeClick","charCode","textLoading","isCurrentlyVisible","_updateCurrVersions","heVersionTitle","spanning","versionLanguage","firstAvailableSectionRef","prefetchData","enVTitle","heVTitle","updateCurrVersionsToMatchAPIResult","sectionRefs","loadLinks","_prefetchLinksAndNotes","prefetchNextPrev","prefetchMultiple","ds","$text","elemsAtPosition","setTop","$elem","left","each","side","fixCollision","$elems","adjust1","adjust2","includeAliyout","_this$props$settings","_this$props$settings2","_this$props$settings3","sectionStrings","useShortString","formatEnAsPoetry","formatHeAsPoetry","showNumberLabel","showSegmentNumbers","strip_punctuation_re","strip_vowels_re","textSegments","textHighlights","parashahHeader","showParashahHeaders","parashahNames","pclasses","aliyah","parashaTitle","TextSegment","enLangCode","heLangCode","useVersionLanguage","showLinkCount","panelPosition","onSegmentClick","onCitationClick","onFootnoteClick","onNamedEntityClick","unsetTextHighlight","sidebarNum","enDisplayValue","heDisplayValue","loading","inlineReference","numberLabel","onKeyPress","handleKeyPress","titleButtons","stopPropagation","showActionLinks","actionLinks","panelsOpen","defaultProps","refLink","_Sefaria$parseRef","_Sefaria$parseRef2","newBook","currBook","isScrollLink","canNavigatePanel","prop","isRefLink","namedEntityLink","footnoteLink","parents","handleRefLinkClick","topicSlug","$newElement","escapedFilter","replaceWith","textValue","arbitraryHTMLTagsRegex","highList","wrapWordsInGenericHTMLRegex","reg","textArray","linkCountElement","formatItag","addHighlights","addPoetrySpans","enOnly","invisibleHighlight","showNamedEntityLinks","TextList","textLoaded","waitForText","loadConnections","preloadText","didRender","willRender","checkVisibleSegments","getSectionRef","preloadAllCommentaryText","preloadSingleCommentaryText","commentarySection","commentators","commentarySections","waitingFor","nodeRef","sortConnections","anchorVerse","index_title","commentaryNum","contentLang","sourceHeRef","aref","displayFilter","noResultsMessage","heMessage","hideAuthor","SheetListing","handleSheetClick","connectedRefs","textListTextRangeBox","typeQF","highlightedWords","inline_reference","ConnectionButtons","OpenConnectionTabButton","openInTabCallback","onTextClick","AddConnectionToSheetButton","addToSheetCallback","setConnectionsMode","DeleteConnectionButton","delUrl","connectionDeleteCallback","onDataChange","fullPanel","textCategory","openNav","closePanel","selectedWords","ajax","openStrings","_ref5$versions","VersionBlockWithPreview","openVersionInSidebar","opeInSidebar","mainPanel","withParam","versionParam","nonSelectedVersionParams","ver","extraClassNames","attrToExist","element_name","change_to","change_from","firstSectionRef","VersionBlock","updateableVersionAttributes","editing","originalVersionTitle","_this$setState","payloadVersion","newVersionTitle","reload","viewExtendedNotes","showNotes","versionNotes","versionNotesInHebrew","voc","isCurrent","extendedNotes","extendedNotesHebrew","vnotes","makeVersionNotes","showLanguagLabel","rendermode","close_icon","closeEditor","licenses","htmlFor","digitizedBySefaria","priority","cols","deleteVersion","saveVersionUpdate","openEditor","makeSelectVersionLanguage","hasExtendedNotes","openExtendedNotes","showHistory","sidebarDisplay","inTranslationBox","VersionsBlocksList","currentKeys","getCurrentVersionsKeys","prioritize","versionsByLanguages","currentVersions","sortedLanguages","sortVersions","sortPrioritizeLanugage","showLanguageHeaders","isVersionCurrent","displayCurrentVersions","ExtendedNotes","versionList","thisVersion","backFromExtendedNotes","getVersionData","notesLanguage","goBack","langToggle","changeLanguage","instance","Constructor","_defineProperties","descriptor","protoProps","staticProps","subClass","superClass","_setPrototypeOf","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","BookPage","versionsLoaded","currentVersion","dlReady","loadData","settingsLanguage","getDataRef","isBookToc","onVersionsLoad","makeFullCurrentVersionsObjects","fullVer","getData","currentLanguage","heVersionSource","versionStatus","heVersionStatus","heLicense","heSources","heVersionNotes","heDigitizedBySefaria","heVersionTitleInHebrew","VersionTitleInHebrew","heShortVersionTitle","heShortVersionTitleInHebrew","heVersionNotesInHebrew","VersionNotesInHebrew","heExtendedNotes","heExtendedNotesHebrew","selectVersion","catUrl","isDictionary","baseCategory","commCategory","urlCategories","readButton","isTextToc","bookPage","fullBookPage","narrowPanel","noLangToggleInHebrew","CategoryColorLine","MenuButton","onCompareBack","CloseButton","DisplaySettingsButton","toggleLanguage","LanguageToggleButton","CategoryAttribution","asEdition","dedication","TextTableOfContents","VersionsList","openVersion","scrollToCurrent","getDefaultActiveTab","altStructSchema","nodes","block","default_struct","$a","_this$props","_this$state$indexDeta","_this$state$indexDeta2","_this$state$indexDeta3","isTorah","defaultStruct","excludedStructs","exclude_structs","annotateTorahAltDisplayProperties","_this$state$indexDeta4","structTabOptions","schema","onPress","showToggle","toggleNames","TabbedToggleSet","tabOptions","activeTab","dictionarySearch","SchemaNode","topToggleTitles","addressTypes","refPath","topLevel","topLevelHeader","currentlyVisibleRef","currentlyVisibleSectionRef","disableSubCollapse","option","altStructToggle","active","rowSize","includeSections","ArrayMapNode","toggleCollapse","DictionaryNode","depth","JaggedArrayNode","_this$props2","currentPlace","linkClasses","_this$props$schema","_this$props$schema$in","_this$props$schema2","_this$props$schema3","zoom","toc_zoom","JaggedArrayNodeSection","contentCounts","content_counts","specialHeaderText","_Component5","_super5","contentCountIsEmpty","terminal","refPathTerminal","_Sefaria$getSectionSt2","_this$props3","_this$props4","_this$props5","_Sefaria$getSectionSt4","_Component6","_super6","displayFixedTitleSubSections","_schema$includeSectio","skip","_this$props6","_this$props7","_this$props8","addresses","skipped_addresses","_Sefaria$getSectionSt6","wholeRef","_this$props9","_this$props10","_this$props11","_Component7","_super7","_this$props12","rf","headwordMap","headerText","letterSection","getCurrentLetter","_Component8","_super8","_this$state","vblocks","SectionTypesBox","canEdit","updateParent","box","updateSelfAndParent","newSections","EditTextInfo","_index$current","_index$current2","_index$current3","_index$current4","_index$current$author","_index$current5","_index$current6","_index$current6$pubPl","_index$current7","_index$current7$pubPl","_index$current8","_index$current8$compP","_index$current9","_index$current9$compP","_index$current10","_index$current11","_index$current12","initTitle","oldTitle","setEnTitle","setHeTitle","_useState5","titleVariants","setTitleVariants","heTitleVariants","setHeTitleVariants","setCategories","setSections","setEnDesc","setEnShortDesc","setHeDesc","setHeShortDesc","_useState23","setAuthors","pubDate","setPubDate","_useState28","pubPlaceString","pubPlace","setPubPlace","_useState30","hePubPlace","setHePubPlace","_useState32","compPlace","setCompPlace","_useState34","heCompPlace","setHeCompPlace","getYearAsStr","init","_useState36","compDate","setCompDate","initCompDate","initPubDate","toggleInProgress","validateCompDate","enTitleVariantNames","heTitleVariantNames","authorSlugs","postIndex","validateThenSave","newAuthor","lowerCaseName","exactMatch","closestMatches","closestMatchMsg","authorIDtoRemove","newAuthors","author","ReadMoreText","_Component9","_super9","expanded","initialWords","TrackG4","comp_name","analyticsContext","contextParams","allParams","AvailableLanguages","_ref3$disallowedMarkd","elemclasses","textResponse","chlCount","newChildren","chlArr","currLangComponent","__filterChildrenByLanguage","componentName","propFullName","LoadingRing","_Sefaria$_siteSetting","DONATION_URL","default","sustainer","dayOfLearning","ProfilePic","_upload","_makeClientCrop","showDefault","isFirstCropChange","crop","unit","aspect","croppedImageBlob","imgFile","didImageLoad","setShowImage","setShowDefault","naturalWidth","files","reader","FileReader","readAsDataURL","imageRef","makeClientCrop","percentCrop","_this$imageRef","clientWidth","height","clientHeight","getCroppedImg","fileName","canvas","scaleX","scaleY","naturalHeight","getContext","drawImage","toBlob","blob","errored","FormData","uploading","closePopup","hideOnDefault","showButtons","outerStyle","nameArray","initials","defaultViz","profileViz","imageSrc","invisible","display","onError","onSelectFile","resourcesLink","ReactCrop","keepSelection","onImageLoaded","onComplete","onCropComplete","onCropChange","upload","renderFooter","refreshData","initialFilter","bottomMargin","containerClass","internalSortOption","setSortOption","displaySort","setDisplaySort","sortOption","rawData","cachedData","setLoading","setRawData","displayData","setDisplayData","isMounted","dataUpToPage","scrollable_element_ref","loadedToEnd","setLoadedToEnd","inputUpToPage","setInputUpToPage","scrollable_element","handleScroll","scrollTop","off","usePaginatedDisplay","setSort","newSortOption","oldDesign","SearchButton","DropdownModal","isOpen","DropdownButton","DropdownOptionList","currOptionSelected","currTabIndex","clickTabOverride","openTab","getTabIndex","onClickTab","iSortTypeObj","tempClasses","unselected","initialTabIndex","buttonStyle","filterTextClasses","handleClickOutside","domNode","positionUnset","GlobalWarningMessage","TextBlockLink","showSections","url_string","recentItem","sideColor","sheetTitle","sheetOwner","intlang","byLine","hlang","elang","subtitle","sheetLink","blockLink","calendarLink","backgroundColor","DangerousInterfaceBlock","BlockLink","interfaceClass","interfaceLink","cn","_Component10","_super10","toggleSet","ToggleOption","fa","_Component11","_super11","siblings","lastTab","firstTab","shiftKey","toggleOption","tabIndexValue","ariaCheckedValue","onKeyDown","checkKeyPress","_ref13$type","_ref13$data","ajaxPayload","redirect_params","AllAdminButtons","buttonOptions","adminClasses","_buttonOptions$key","hideButtons","setHideButtons","_ref15$data","_ref15$buttonsToDispl","_useEditToggle2","editCategory","toggleEditCategory","_useEditToggle4","addCategory","toggleAddCategory","_useEditToggle6","reorderCategory","toggleReorderCategory","_useEditToggle8","addSource","toggleAddSource","_useEditToggle10","addSection","toggleAddSection","_useHiddenButtons","_useHiddenButtons2","hiddenButtons","setHiddenButtons","adminButtonsSpan","CategoryEditorWrapper","CategoryAdderWrapper","ReorderEditorWrapper","adminButtons","onMouseEnter","reorderingSources","_createURLs2","_data$refs","_data$refs$about","about","_x$order","_x$order$availableLan","_createURLs","EditorForExistingTopic","_data$description","_data$description2","_data$categoryDescrip","_data$categoryDescrip2","_data$properties","_data$properties$birt","_data$properties2","_data$properties2$heB","_data$properties3","_data$properties3$heD","_data$properties4","_data$properties4$bir","_data$properties5","_data$properties5$dea","_data$properties6","_data$properties6$dea","_data$properties7","_data$properties7$era","prepAltTitles","primary","initCatSlug","_topic$links$displays","displayUnderLinks","TopicToCategorySlug","EditorForExistingCategory","_data","refData","_Component12","_super12","_Component13","_super13","isheb","_Component14","_super14","readerNavMenuCloseButton","circledX","_Component15","_super15","visibility","InterfaceLanguageMenu","currentLang","setTranslationLanguagePreference","setIsOpen","wrapperRef","getCurrentPage","handleHideDropdown","isPosting","setPosting","saveButton","FollowButton","_Component16","_super16","following","hovering","disableUnfollow","_postUnfollow","_postFollow","largeFollowButton","large","smallFollowButton","smallText","followBack","onMouseLeave","fileInput","contentEditable","imageData","Request","resp_json","resp_text","uploadImage","old_filename_wout_url","background","_Component17","_super17","handleSheetDelete","deletable","editable","saveable","collectable","pinnable","pinned","pinSheet","showAuthorUnderneath","infoUnderneath","hideCollection","showSheetSummary","showCollectionsModal","setShowCollectionsModal","handleTopicClick","toggleCollectionsModal","viewsIcon","sheetSummary","sheetInfo","ownerProfileUrl","ownerName","ownerImageUrl","collectionsList","displayedCollectionName","displayedCollection","separator","underInfo","pinButtonClasses","sheetListingPinButton","pinMessage","pinButton","sheetUrl","CollectionListing","collectionUrl","listed","sheetCount","memberCount","Note","_Component18","_super18","authorInfo","isMyNote","buttons","editNote","isPrivate","LoginPrompt","_Component19","_super19","nextParam","SignUpModal","_Component20","_super20","elementRef","observer","IntersectionObserver","isIntersecting","observe","unobserve","InterruptingMessage","_ref30","interruptingMessageShowDelayHasElapsed","setInterruptingMessageShowDelayHasElapsed","hasInteractedWithModal","setHasInteractedWithModal","closeModal","eventDescription","modalName","trackModalInteraction","shouldShowModal","noUserKindIsSet","showToReturningVisitors","showToNewVisitors","showToSustainers","showToNonSustainers","excludedPaths","shouldShow","timeoutId","showDelay","modalHeader","modalText","newObj","transformValues","Banner","_ref31","bannerShowDelayHasElapsed","setBannerShowDelayHasElapsed","hasInteractedWithBanner","setHasInteractedWithBanner","closeBanner","bannerName","trackBannerInteraction","shouldShowBanner","bannerBackgroundColor","bannerText","NBox","_ref32","stretch","_ref32$gap","gap","gridBoxItem","TwoOrThreeBox","_Component21","_super21","threshhold","_ref33","_ref33$threshold","threshold2","_ref33$threshold2","threshold3","_ref33$gap","innerWidth","setWidth","deriveAndSetWidth","offsetWidth","_Component22","_super22","optionsOpen","preselected","dropdownOption","_Component23","_super23","_ref34","_ref34$linked","linked","SheetTopicLink","_Component24","_super24","setSheetTag","_this$props$topic","handleTagClick","_Component25","SheetAccessIcon","_super25","FeedbackBox","_Component26","_super26","alertmsg","feedbackSent","setType","sendFeedback","_Component27","ReaderMessage","_super27","showNotification","messageName","setFeedback","buttonLikeText","buttonDislikeText","CookiesNotification","_Component28","_super28","setCookie","CommunityPagePreviewControls","_ref35","tomorrow","yesterday","SheetTitle","suppressContentEditableWarning","blurCallback","SheetAuthorStatement","userSelect","authorImage","authorStatement","authorUrl","CollectionStatement","_ref36","collectionListingImage","_ref37","_ref38","categoryMenu","handleChange","newCategories","elValue","selectedIndex","possCategories","menus","subcats","menu","_ref39","_ref40","ReactTags","allowNew","tags","onDelete","onTitleDelete","placeholderText","delimiters","onAddition","onTitleAddition","onValidate","onTitleValidate","validTitle","SheetMetaDataBox","DivineNameReplacer","_ref41","setDivineNameReplacement","divineNameReplacement","_ref42","setCurrentSuggestions","setPreviewText","_useState38","setHelperPromptText","_useState40","setShowAddButton","_useState42","showCurrentSuggestions","setShowCurrentSuggestions","_useState44","inputClassNames","setInputClassNames","suggestionEl","inputEl","buttonClassNames","small","getWidthOfInput","tmp","styles","cssText","propertyName","removeProperty","innerHTML","theWidth","behavior","inline","resizeInputIfNeeded","currentWidth","processSuggestions","resultsPromise","generatePreviewText","insetInlineStart","handleOnClickSuggestion","Suggestion","_ref43","color","handleSelection","previewHTML","firstChild","checkEnterOnSelect","_ref44","_ref45","isIOS","aClasses","white","appButton","ios","iconSrc","Header","mobileNavMenuOpen","handleFirstTab","hidden","logo","headerContent","SearchBar","onRefClick","showSearch","openTopic","openURL","hideHebrewKeyboard","LoggedInButtons","headerMode","LoggedOutButtons","mobileHeaderContent","onMobileMenuButtonClick","hasLanguageToggle","firstPanelLanguage","headerClasses","header","mobile","headerInnerClasses","headerInner","boxShadow","hasBoxShadow","MobileNavMenu","visible","searchFocused","_searchOverridePre","_searchOverridePost","_type_icon_map","pic","override","_searchOverrideRegex","closeSearchAutocomplete","_renderItem","ul","is_hebrew","toggleClass","_type_icon","getURLForObject","appendTo","anchorSide","sideGap","fullWidth","sefariaAutocomplete","$event","$widget","catchSearchOverride","redirectToObject","comps","relatedTarget","sjs","onNavigate","clearSearchBox","repairedCaseVariant","repairedQuery","serif","hebrewSearch","searchBoxClasses","searchBox","focusSearch","blurSearch","loginOnly","setIsClient","setNext","loginLink","setLoginLink","registerLink","setRegisterLink","accountLinks","anon","HelpButton","unread","notificationsClasses","notifications","ProfilePicMenu","mobileNavMenu","closed","aboutMessage","MobileInterfaceLanguageToggle","resetOpen","nodeName","currentURL","TextColumn","showScrollPlaceholders","debouncedAdjustHighlightedAndVisible","adjustHighlightedAndVisible","scrollPlaceholderHeight","scrollPlaceholderMargin","highlightThreshhold","$container","initialScrollTopSet","windowMiddle","outerHeight","content_type","item_id","layoutWidthChanged","prevLayoutWidth","scrollToHighlighted","setInitialScrollPosition","restoreScrollPositionByPercentage","justScrolled","adjustInfiniteScroll","rect","clientX","clientY","pos","calculatePositionWithinElement","lastClickXY","detail","$start","$end","$segments","setTextListHighlight","setSelectedWords","loadingContentAtTop","restoreScrollPositionAfterTopLoad","setScrollTop","$readerPanel","$highlighted","adjust","$texts","eq","targetTop","numSectionsLoadedAtTop","prevScrollPercentage","downOnly","$node","$lastText","lastBottom","windowHeight","topRef","prevData","earlierData","updateTextColumn","nextData","laterData","numSectionsAddToBottom","$segment","setCurrentlyVisibleRef","shouldShowHighlight","hasSidebar","pre","textColumn","connectionsOpen","handleTextLoad","noPrev","hasNext","heBookTitle","onMouseUp","handleTextSelection","onMouseDown","handleDoubleClick","openOnClick","catTitle","heCatTitle","onBack","_React$useState2","setQuery","readerNavTop","searchOnly","TextCategoryPage","openTextTOC","aboutCats","onCat","catContents","nestLevel","getSidebarModules","categoryToggle","SubCategoryToggle","comparePanelHeader","ComparePanelHeader","footer","navMenuClasses","readerNavCategoryMenu","TextCategoryContents","hebrewContentSort","newCats","chItem","TextMenuItem","MenuItem","shortDesc","hasDesc","longDesc","isCollection","boxedContent","currentRun","intialWidth","keytype","navBlockTitle","_getRenderedTextTitle2","getRenderedTextTitleString","toggleEnableMap","categoryPathDepth","subCategories","subCategoriesDisplay","oClasses","navToggle","replaceTitles","replaceOther","replaceSuffixes","titleRe","heTitleRe","heCategories","suffixTitleRe","suffixHeTitleRe","enCats","heCats","indx","enOrder","base_text_order","TextsPage","categoryListings","topTexts","topTitle","Dedication","libraryMessage","dedDate","setHours","getHours","tzoffset","dedicationData","setDedicationData","get_google_sheet_data","google","visualization","Query","send","processSheetsData","getDataTable","columns","getNumberOfColumns","getNumberOfRows","getFormattedValue","charts","setOnLoadCallback","MediaList","audio","Audio","audioUrl","media_url","start_time","end_time","source_he","source_site","description_he","anchor","audioElement","currTime","setCurrTime","playing","setPlaying","clipEndTime","clipStartTime","audioUrlWithTime","totalSeconds","setAudioTime","currentTime","setAudioData","play","pause","preload","CollectionsEditor","sheetId","masterPanelSheetId","reactTags","createRef","_useState","setTags","sheetSaves","setSheetSaves","suggestions","setSuggestions","dateModified","setLastModified","isPublished","setIsPublished","validationMsg","validationFailed","validation","setValidation","setSummary","debouncedSummary","hist","reason","saveSummary","updateTopics","newTags","updatedSheet","asTyped","postSheet","togglePublish","newPublishState","publishSettingsReadOnly","publishSettingsEditMode","newSummary","onInput","filteredObj","verticalAlign","marginInlineEnd","SearchTextResult","_handleResultClick","duplicatesShown","highlights","longestLength","highlightReg","vals","matchText","parsedRef","onResultClick","getHighlights","searchInBook","snippet","markup","more_results_caret","more_results_indicator","toggleDuplicates","shown_duplicates","snippetMarkup","get_snippet_markup","snippetClasses","handleResultClick","hebrew_version_title","SearchSheetResult","owner_name","clean_title","ownerIsHe","titleIsHe","topic_slugs","topics_he","profile_url","handleProfileClick","owner_image","SearchFilters","isExactSearch","searchState","newProps","_this$props$searchSta","tempSelected","newExactSearch","updateAppliedOptionField","TextSearchFilters","toggleExactSearch","openedCategory","openedCategoryBooks","updateAppliedFilter","SheetSearchFilters","updateAppliedOptionSort","closeMobileFilters","isQueryRunning","SearchFilterGroup","searchable","updateSelected","expandable","SearchFilterExactBox","checkBoxClick","paged","_document$getElementB","_document$getElementB2","filterValue","updateFilters","displayedFilters","setFilters","showClearInputButton","setShowClearInputButton","_document$getElementB3","SearchFilter","filterSearchValue","PagedList","hasWordStartingWithOrSelected","escapedFilterValue","wordSelected","clearInputButton","handleKeyDown","indeterminate","isPartial","setAttribute","evt","handleFilterClick","toggleExpanded","toggleMessage","expandMessage","handleExpandKeyPress","autoExpand","subFilter","collectionFilters","tagFilters","_ref2$initial","initial","_ref2$pageSize","cutoff","setCutoff","SourcesSheetsDiv","sheetsURL","sourcesURL","sourcesSheetsCounts","numSources","numSheets","sourcesDiv","sheetsDiv","SearchTopic","sourcesSheetsDiv","analyticCat","topicCategory","topicCat","heTopicCat","SearchResultList","_executeTopicQuery2","_addCollection","_addGeneralTopic","_addRefTopic","querySize","runningQueries","_typeObjDefault","moreToLoad","totals","pagesLoaded","_getQueryArgs","cachedQuery","updateTotalResults","_executeAllQueries","_abortRunningQueries","_shouldUpdateQuery","_executeQuery","topicKeyArr","lastCat","relevantSubCat","_d$tabs","_d$tabs2","searchTopic","typeObj","searchTopics","addRefTopic","addTOCCategoryTopic","addCollection","addGeneralTopic","totalResults","_abortRunningQuery","updateRunningQuery","$scrollable","_loadNextPage","oldProps","oldSearchState","_getSearchState","newSearchState","isEqual","_executeTopicQuery","suffix_map","request_applied","currTotal","filter_label","query_label","aggregation","_Sefaria$search$build","tempAvailable","tempRegistry","tempOrphans","registerAvailableFilters","_handleError","runningQuery","_SearchState$metadata2","_getAggsToUpdate","nextHits","runningNextPageQuery","updateTab","loadingMessage","queryFullyLoaded","haveResults","SearchTabs","clickTextButton","showTexts","clickSheetButton","showSheets","textTotal","sheetTotal","currentTab","SearchSortBox","SearchFilterButton","openMobileFilters","nFilters","textSearchState","sheetSearchState","SearchTab","asString","searchFilterToggle","newSortType","grey","sidebarSearchQuery","setSidebarSearchQuery","onSidebarSearchClick","searchFilterPathForBook","setSearchFilterPathForBook","setSearchState","searchInput","Fragment","ConnectionsPanelHeader","previousModes","setMarginForScrollbar","previousMode","connectionsMode","marginRight","marginLeft","getPreviousMode","previousCategory","prevHe","toggleLang","langUrl","closeUrl","cStyle","readerControls","connectionsHeader","baseRefs","AddToSourceSheetBox","sheetsLoaded","selectedSheet","sheetListOpen","showConfirm","showLogin","loadSheets","onSheetsLoad","setDefaultSheet","nodeID","confirmAdd","addToSourceSheet","outsideBiText","outsideText","checkContentForImages","selectSheet","BroadcastChannel","postMessage","refTitles","titleRetval","ConfirmAddToSheet","titleRef","makeTitleRef","sheetsList","toggleSheetList","messsage","createSheet","copyNodeToSourceSheet","srefTitles","AddToSourceSheetWindow","LexiconBox","searchedWord","selectedNamedEntity","getNamedEntity","getLookups","clearLookups","clearNamedEntity","clearSelectedWords","namedEntity","shouldActivate","refCats","enEmpty","heEmpty","namedEntityContent","possibilities","ne","selectedNamedEntityText","LexiconEntry","onEntryClick","searchWord","headwords","peculiar","allCited","all_cited","hw","occurrences","occurrence","alt_headwords","ahw","aocc","allHeadwords","headword_suffix","grammar","def","alternative","sensesElems","sense","renderLexiconEntrySenses","senses","preNun","pre_num","definition","renderBDBEntrySenses","ind","parent_lexicon_details","headword","lexicon_dtls","sourceContent","attributionContent","headwordClassNames","definitionClassNames","headwordString","isBDB","bdbHeadwordString","defaultHeadwordString","morphologyHtml","langHtml","entryHeadHtml","endnotes","derivatives","renderLexiconAttribution","AboutBox","_includeOtherVersionsLangs","versionLangMap","currentVersionsByActualLangs","details","setTextMetaData","masterPanelLanguage","versionsByLang","_this$state$details","_this$state$currentVe","_this$state$versionLa","_this$state$versionLa2","detailSection","sourceVersion","translationVersions","multiple_translations","translationVersionsSectionTitle","alternateVersionsSectionTitle","_authorsElems$en","placeTextEn","placeTextHe","dateTextEn","dateTextHe","authorsElems","authorArray","elem","iauthor","pubDateString","bookPageUrl","versionSectionHe","versionSectionEn","ve","alternateSectionHe","_v$versionTitle","TranslationsBox","_excludedLangs","_versionsByLang$lang","VersionsTextList","vFilter","recentVFilters","TranslationsHeader","_Sefaria$deconstructV2","_Sefaria$deconstructV4","currSelectedVersions","TopicSearch","createNewTopicStr","showAdminEditor","addAuthorToString","finalJoiner","accumulator","authorsNum","joiner","AuthorString","authorsNames","reduceArgs","getAuthorsAsString","WebPage","favicon","domain","articleSource","related_parts","ConnectionsPanel","_savedHistorySegments","flashMessage","mainVersionLanguage","availableTranslations","connectionSummaryCollapsed","getCurrentVersions","debouncedCheckVisibleSegments","addScrollListener","removeScrollListener","connectionsCategory","isScrollReset","setSideScrollPosition","scrollPosition","isScrollMonitored","$scrollView","initialRefs","isSegmentVisible","onIntentTimer","checkIntentTimer","didFilterChange","prevFilter","prevRefs","nextFilter","nextRefs","reloadData","currentVersionTitle","getVersionFromData","_this$props$connectio","showSheetNodeConnectionTools","SheetNodeConnectionTools","openComparePanel","showConnectionSummary","resourcesButtonCounts","translations","showResourceButtons","toolsButtonsCounts","masterPanelMode","AboutSheetButtons","ToolsButton","urlConnectionsMode","ConnectionsPanelSection","ConnectionsSummary","toggleTopLevelCollapsed","ResourcesList","counts","SheetToolsList","ToolsList","checkSrefs","connectedSheet","MySheetsList","PublicSheetsList","refForSheet","versionsForSheet","selectedWordsForSheet","connectionData","AddNoteBox","onSave","onCancel","MyNotes","TopicList","WebPagesList","webPagesFilter","setWebPagesFilter","AdvancedToolsList","canEditText","ShareBox","noteBeingEdited","noteText","noteTitle","noteIsPublic","isPublic","AddConnectionBox","allOpenRefs","setVersionFilter","versionFilter","recentVersionFilters","ManuscriptImageList","manuscriptList","AboutSheet","SidebarSearch","marginless","connectionsPanel","textList","singlePanel","alwaysShow","isOwner","setIsOwner","googleDriveState","greyColor","secondaryEn","secondaryHe","copyState","copyText","setCopyText","afterLoading","googleDriveText","setGoogleDriveText","googleDriveLink","setGoogleDriveLink","copiedSheetId","setCopiedSheetId","history","replaceState","webViewLink","statusCode","newSheet","via","viaOwner","collectionName","collectionImage","likes","promptedToPublish","filterAndSaveCopiedSheetData","print","collaboration","sheetsCount","isTopLevel","baseCat","essaySummary","topSummary","subCommentaryCats","essayTextFilter","enDisplayText","heDisplayText","connectionsSummary","summaryToggle","control","typeface","bHe","TopicListItem","siteName","webpage","sites","faviconUrl","webSitesSort","site","tabindex","filterName","linkerMessage","editText","refString","currentPath","langCode","_classNames","_ref10$urlConnections","_ref10$count","_ref10$control","_ref10$typeface","_ref10$alwaysShow","_ref10$greyColor","iconElem","toolsButtonIcon","nameClass","wrapperClasses","toolsButton","shareValue","setSelectionRange","navigator","clipboard","writeText","execCommand","copySheetLink","updateShareOptions","saving","focusNoteText","public","saveNote","loadNotes","rerender","myNotesData","PublicNotes","heRefs","getHeRefs","setHeRefs","connection","addConnection","ManuscriptImage","manuscript","he_title","SearchPage","mobileFiltersOpen","_this$state$totalResu","_this$state$totalResu2","isQueryHebrew","showDisplaySettings","onQueryChange","isObject","prot","Q","Function","Z","L","nn","u","X","Map","rn","clear","delete","freeze","isFrozen","tn","U","S","P","H","I","N","R","z","E","T","C","revocable","revoke","proxy","J","K","G","W","for","deleteProperty","un","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","op","an","ln","dn","DIRTY_PATHS","WeakMap","DIRTY_PATH_KEYS","FLUSHING","NORMALIZING","PATH_REFS","POINT_REFS","RANGE_REFS","ownKeys$9","_objectSpread$9","createEditor","editor","operations","marks","isInline","isVoid","pathRefs","PathRef","transform","pointRefs","PointRef","rangeRefs","RangeRef","dirtyPaths","dirtyPathKeys","oldDirtyPaths","oldDirtyPathKeys","Path","operationCanTransformPath","newDirtyPaths","getDirtyPaths","_path","Transforms","addMark","isExpanded","setNodes","Text","isText","deleteBackward","deleteForward","deleteFragment","getFragment","Node","fragment","insertBreak","splitNodes","insertSoftBreak","insertFragment","insertNode","insertNodes","insertText","normalizeNode","Element","isElement","voids","shouldHaveInlines","isEditor","currentNode","_child","isLast","removeNodes","equals","loose","mergeNodes","removeMark","unsetNodes","levels","_path2","descendants","_path3","ancestors","previous","_path4","oldAncestors","newAncestors","ancestor","_ancestor","_p","newParent","newIndex","resultPath","_path5","_path6","CodepointType","getCharacterDistance","isRTL","isLTR","codepoints","codepointsIteratorRTL","None","distance","gb12Or13","char","codePointAt","getCodepointType","intersects","ZWJ","ExtPict","endsWithEmojiZWJ","RI","endsWithOddNumberOfRIs","isBoundaryPair","SPACE","PUNCTUATION","CHAMELEON","splitByCharacterDistance","dist","isWordCharacter","remaining","charDist","nextChar","nextRemaining","char1","isLowSurrogate","char2","isHighSurrogate","reExtend","rePrepend","reSpacingMark","reL","reV","reT","reLV","reLVT","reExtPict","Any","Extend","Prepend","SpacingMark","V","LV","LVT","NonBoundaryPairs","endingEmojiZWJ","endingRIs","isNodeList","isAncestor","isElementList","isElementProps","isElementType","elementVal","elementKey","_excluded$4","_excluded2$3","ownKeys$8","_objectSpread$8","IS_EDITOR_CACHE","above","point","edge","positions","edges","hasBlocks","isBlock","hasInlines","hasTexts","cachedIsEditor","isRange","Operation","isOperationList","isEnd","Point","isEdge","isEmpty","isNormalizing","leaf","_node","prevNode","prevPath","blockPath","pointAfterLocation","to","isPath","universal","Span","isSpan","nodeEntries","pass","isLower","emit","force","popDirtyPath","getDirtyPathKeys","allPaths","allPathKeys","withoutNormalizing","dirtyPath","_dirtyPath","_entry","parentPath","firstPath","lastPath","common","isPoint","hasPath","pathRef","affinity","unref","pointRef","isNewBlock","blockText","leafTextRemaining","leafTextOffset","isFirst","calcDistance","started","getWordDistance","pointBeforeLocation","rangeRef","setNormalizing","unhangRange","endBlock","isBefore","_excluded$3","_excluded2$2","IS_NODE_LIST_CACHE","root","childPath","another","descendant","elements","extractProps","newRoot","_leaf","isNode","cachedResult","isTextProps","visited","isAfter","nextIndex","texts","ownKeys$7","_objectSpread$7","isNodeOperation","isOperation","newProperties","isSelectionOperation","isTextOperation","inverse","isSibling","inversePath","inverseNewPath","_properties","_newProperties","paths","av","endsAfter","as","bs","bv","endsAt","endsBefore","hasPrevious","isChild","isCommon","isDescendant","isParent","operation","_op","_op2","_op3","_position","_op4","onp","ownKeys$6","_objectSpread$6","_excluded$2","ownKeys$5","isBackward","rs","re","ts","te","isAfterStart","isBeforeEnd","intersection","rest","s1","e1","s2","e2","_objectSpread$5","isForward","points","affinityAnchor","affinityFocus","isDeepEqual","_excluded$1","_excluded2$1","ownKeys$4","_objectSpread$4","omitText","isTextList","decorations","leaves","dec","middle","_off","ownKeys$3","_objectSpread$3","GeneralTransforms","_point","_node2","_parent","_point2","_key2","_node3","_parent2","_index2","truePath","_point3","_key3","_index3","_point4","_key4","_prev","preferNext","_offset","_text","_node4","_before","_after","_point5","_key5","_node5","_key6","_key7","_key8","_path7","newNode","_node6","_parent4","_index4","_before2","_after2","_before3","_after3","_point6","_key9","applyToDraft","ownKeys$2","_objectSpread$2","NodeTransforms","hanging","_matchPath","isAtEnd","void","liftNodes","matchPath","parentNodeEntry","toPath","moveNodes","_toPath","splitPath","_toPath2","commonPath","isPreviousSibling","emptyAncestor","hasSingleChildNest","emptyRef","toRef","targets","depths","merge","splitMode","endAtEndOfNode","startAtStartOfNode","nodeProp","hasChanges","deleteRange","afterRef","beforeRef","highest","voidMatch","voidNode","voidPath","afterPath","highestPath","lowestPath","_afterRef","unwrapNodes","wrapNodes","roots","rootPath","commonNodeEntry","commonNode","wrapperPath","ownKeys$1","_objectSpread$1","SelectionTransforms","deselect","opts","setSelection","setPoint","TextTransforms","furthestVoid","_end","endOfDoc","startBlock","isAcrossBlocks","isSingleText","startVoid","endVoid","startRef","endRef","startUnref","endUnref","inlineElementMatch","_inlinePath","blockMatch","isBlockStart","isBlockEnd","isBlockEmpty","mergeStart","mergeEnd","matcher","starts","middles","ends","starting","inlineMatch","inlinePath","isInlineStart","isInlineEnd","middleRef","blockPathRef","_end2","ANCHOR","FOCUS","Token","AnchorToken","super","FocusToken","getFocusOffset","STRINGS","WeakSet","resolveDescendants","addChild","token","addAnchorToken","addFocusToken","Infinity","tagName","makeEditor","DEFAULT_CREATORS","cursor","selectionChild","otherChildren","jsx","elementCreators","creators","normalizeElements","isPlainObject","createFactory","createHyperscript","History","redos","undos","SAVING","MERGING","HistoryEditor","isHistoryEditor","isMerging","isSaving","redo","undo","withoutMerging","withoutSaving","withHistory","batch","inverseOps","lastBatch","lastOp","overwrite","shouldOverwrite","shouldSave","shouldMerge","shift","shouldClear","scrollWidth","overflowY","overflowX","ownerDocument","defaultView","frameElement","scrollMode","boundary","skipOverflowHiddenElements","scrollingElement","documentElement","getRootNode","visualViewport","scrollX","pageXOffset","scrollY","pageYOffset","Y","borderLeftWidth","borderTopWidth","borderRightWidth","borderBottomWidth","offsetHeight","scrollLeft","isOptionsObject","isTargetAttached","isConnected","computeOptions","getOptions","actions","canSmoothScroll","scroll","defaultBehavior","IS_REACT_VERSION_17_OR_ABOVE","IS_IOS","userAgent","MSStream","IS_APPLE","IS_ANDROID","IS_FIREFOX","IS_SAFARI","IS_EDGE_LEGACY","IS_CHROME","IS_CHROME_LEGACY","IS_FIREFOX_LEGACY","IS_QQBROWSER","IS_UC_MOBILE","IS_WECHATBROWSER","CAN_USE_DOM","HAS_BEFORE_INPUT_SUPPORT","InputEvent","getTargetRanges","useIsomorphicLayoutEffect","useLayoutEffect","useSlateStatic","ReactEditor","findPath","ZeroWidthString","TextString","isTrailing","isLineBreak","getTextContent","textWithTrailing","NODE_TO_INDEX","NODE_TO_PARENT","EDITOR_TO_WINDOW","EDITOR_TO_ELEMENT","ELEMENT_TO_NODE","NODE_TO_ELEMENT","NODE_TO_KEY","EDITOR_TO_KEY_TO_ELEMENT","IS_READ_ONLY","IS_FOCUSED","IS_COMPOSING","IS_ON_COMPOSITION_END","EDITOR_TO_USER_SELECTION","EDITOR_ON_COMPOSITION_TEXT","EDITOR_TO_ON_CHANGE","NODE_TO_RESTORE_DOM","PLACEHOLDER_SYMBOL","Leaf","renderPlaceholder","renderLeaf","DefaultLeaf","placeholderRef","placeholderEl","editorEl","minHeight","placeholderProps","pointerEvents","maxWidth","MemoizedLeaf","shallowCompare","obj1","obj2","isDecoratorRangeListEqual","rangeOwnProps","otherOwnProps","useContentKey","contentKeyRef","updateAnimationFrameRef","setForceRerenderCounter","requestAnimationFrame","cancelAnimationFrame","findKey","KEY_TO_ELEMENT","contentKey","MemoizedText","renderElement","DefaultElement","readOnly","useReadOnly","useChildren","Tag","outline","MemoizedElement","EditorContext","createContext","SelectedContext","useSelected","isLeafBlock","acc","HOTKEYS","bold","compose","moveBackward","moveForward","moveWordBackward","moveWordForward","extendBackward","extendForward","italic","splitBlock","APPLE_HOTKEYS","moveLineBackward","moveLineForward","deleteLineBackward","deleteLineForward","deleteWordBackward","deleteWordForward","extendLineBackward","extendLineForward","transposeCharacter","WINDOWS_HOTKEYS","generic","apple","windows","isGeneric","isApple","isWindows","Hotkeys","isBold","isCompose","isMoveBackward","isMoveForward","isDeleteBackward","isDeleteForward","isDeleteLineBackward","isDeleteLineForward","isDeleteWordBackward","isDeleteWordForward","isExtendBackward","isExtendForward","isExtendLineBackward","isExtendLineForward","isItalic","isMoveLineBackward","isMoveLineForward","isMoveWordBackward","isMoveWordForward","isRedo","isSoftBreak","isSplitBlock","isTransposeCharacter","isUndo","ReadOnlyContext","SlateContext","useSlate","DecorateContext","getDefaultView","isDOMComment","isDOMNode","isDOMElement","isDOMSelection","Selection","isDOMText","getEditableChildAndIndex","childNodes","triedForward","triedBackward","getEditableChild","getPlainText","nodeValue","childNode","catchSlateFragment","getSlateFragmentAttribute","dataTransfer","htmlData","Children","DefaultPlaceholder","defaultDecorate","defaultScrollSelectionIntoView","domRange","leafEl","startContainer","hasTarget","hasDOMNode","hasEditableTarget","isTargetInsideNonReadonlyVoid","slateNode","toSlateNode","isEventHandled","shouldTreatEventAsHandled","isDefaultPrevented","isPropagationStopped","isDOMEventHandled","defaultPrevented","sliceText","getTextInsertion","prevText","nextText","textDiff","getDiffStart","prevLength","nextLength","getDiffEnd","getDiffOffsets","removeText","diffText","normalizeTextInsertionRange","insertionRange","characterBeforeAnchor","characterAfterAnchor","Key","getWindow","findDocumentOrShadowRoot","toDOMNode","Document","ShadowRoot","isFocused","isReadOnly","blur","activeElement","preventScroll","domSelection","targetEl","isContentEditable","insertData","insertFragmentData","insertTextData","setFragmentData","originEvent","toDOMPoint","domPoint","querySelectorAll","toDOMRange","domAnchor","domFocus","startNode","startOffset","endNode","endOffset","isStartAtZeroWidth","isEndAtZeroWidth","domEl","hasAttribute","findEventRange","nativeEvent","isPrev","caretRangeFromPoint","caretPositionFromPoint","offsetNode","toSlateRange","suppressThrow","toSlatePoint","nearestNode","nearestOffset","normalizeDOMPoint","textNode","_domNode$textContent","potentialVoidNode","leafNode","shadowRoot","endContainer","hasRange","AndroidInputManager","restoreDOM","flush","mutations","reconcileMutations","mutationData","addedNodes","removedNodes","insertedText","characterDataMutations","mutation","addedNode","removedNode","textInsertion","gatherMutationData","isReplaceExpandedSelection","combineInsertedText","replaceExpandedSelection","parentDOMNode","HTMLElement","isRemoveLeafNodes","removeLeafNodes","isDeletion","isTextInsertion","insertion","useMutationObserver","mutationObserver","MutationObserver","disconnect","MUTATION_OBSERVER_CONFIG$1","childList","characterData","subtree","findClosestKnowSlateNode","_domEl","useRestoreDom","receivedUserInput","mutatedNodes","restore","mutated","nodesToRestore","_NODE_TO_RESTORE_DOM$","MUTATION_OBSERVER_CONFIG","characterDataOldValue","FocusedContext","useFocused","SlateSelectorContext","Slate","unmountRef","setContext","selectorContext","handleSelectorChange","eventListeners","slateRef","listener","getSlate","getSelectorContext","onContextChange","setIsFocused","doRectsIntersect","compareRect","areRangesSameLine","range1","range2","rect1","rect2","withReact","parentBlockEntry","parentBlockPath","parentElementRange","currentLineRange","parentRange","parentRangeBoundary","findCurrentLineRange","getMatches","_EDITOR_TO_USER_SELEC","attach","cloneRange","setEndAfter","zw","isNewline","whiteSpace","encoded","btoa","decoded","atob","parsed","lines","line","Editable","decorate","onDOMBeforeInput","propsOnDOMBeforeInput","isComposing","setIsComposing","inputManager","onUserInput","animationFrameRef","useTrackUserInput","restoreDom","isReconciling","useAndroidInputManager","isUpdatingSelection","latestElement","hasDomSelection","editorElement","hasDomSelectionInEditor","slateRange","newDomRange","setBaseAndExtent","_unused","onDOMSelectionChange","anchorNodeSelectable","focusNodeSelectable","_unused2","scheduleOnDOMSelectionChange","spellCheck","autoCorrect","autoCapitalize","wordWrap","onCopy","clipboardData","onCut","_start","onCompositionEnd","onCompositionUpdate","onCompositionStart","onPaste","DataTransfer","getClipboardData","scrollSelectionIntoView","deferredOperations","hasInsertPrefixInCompositon","isDraggingInternally","native","_node$parentElement","_lastText$textContent","lastText","createTreeWalker","NodeFilter","SHOW_TEXT","lastChild","targetRange","selectionRef","_selection","toRestore","flatMap","zindex","onBeforeInput","_block$","_range","leafPath","currentTextNode","onDragOver","onDragStart","onDrop","draggedRange","onDragEnd","maybeHistoryEditor","_maybeHistoryEditor","isPlainTextOnlyPaste","sheet_item_els","comment","voidElements","LIST_TYPES","NO_SPACER_NEEDED_TYPES","ELEMENT_TAGS","BLOCKQUOTE","H1","H2","H3","H4","H5","H6","IMG","LI","OL","DIV","PRE","UL","TABLE","TR","TD","HR","format_tag_pairs","special_styles_to_care_about","TEXT_TAGS","format_to_html_lookup","getNodeAbove","curPath","topPath","getNodeBelow","bottomPath","deserialize","nodeNode","new_children","attrs","addlAttrs","elStyle","styleArray","styleType","styleValue","checkForStyles","serialize","tagStringObj","tagString","htmlTag","preTag","preTags","postTag","postTags","linkHTML","paragraphHTML","liHtml","olHtml","ulHtml","tableHtml","trHtml","tdHtml","replaceDivineNames","divineName","adoshemSub","elokaiSub","parseSheetItemHTML","rawhtml","preparseHtml","slateJSON","transformSheetJsonToSlate","curNextNode","nextNode","sourceNodes","sourceIsHeader","prevSourceIsHeader","isCurrentSourceAnOutsideText","isPrevSourceAnOutsideText","sheetItemType","commentLang","mediaUrl","renderSheetItem","includedRefs","datePublished","BoxedSheetElement","parentEditor","sheetSourceEnEditor","withLinks","sheetSourceHeEditor","sheetEnSourceValue","sheetEnSourceSetValue","sheetHeSourceValue","sheetHeSourceSetValue","sourceActive","setSourceActive","activeSourceLangContent","setActiveSourceLangContent","isDragging","setIsDragging","canUseDOM","setCanUseDOM","replacement","_editors","Editor","newStr","suppressParentContentEditable","hotkey","isHotkey","toggleFormat","isActive","sheetItemClasses","sheetItem","highlightedNode","SheetSource","SheetOutsideBiText","heClasses","enClasses","draggable","elementRelativeTop","offsetTop","clickOffset","dragging","effectAllowed","dragIcon","borderInlineStartColor","setDragImage","dragStart","onDragEnter","dropEffect","dragOver","drop","chrome","onHeChange","HoverMenu","onEnChange","AddInterfaceInput","resetInterface","showAddMediaButton","setShowAddMediaButton","isMediaLink","youtube_re","vimeo_re","lastIndex","is_book","heAddressExamples","onMediaChange","incrementNextSheetNode","insertSource","AddInterface","setActive","itemToAdd","setItemToAdd","addInterfaceClasses","editorAddInterface","addSourceClicked","addImageClicked","insertMedia","addMediaClicked","empty","spacerSelected","spacerClasses","divineNames","SheetOutsideTextClasses","mediaComponent","frameBorder","allowFullScreen","frameborder","allow","allowfullscreen","scrolling","border","controls","heSelected","edittingSource","enSelected","pClasses","center","getClosestSheetElement","elementType","getRefInText","_getRefInText","returnSourceIfFound","closestSheetOutsideText","paragraphsToCheck","_paragraphsToCheck","initQuery","paragraphPath","selectDistance","_iterator14","_step14","addItemToSheet","checkAndFixDuplicateSheetNodeNumbers","existingSheetNodes","sheetNode","placed_segment_mapper","segmented","includeNumbers","numStr","nodeAbove","nodeBelow","showLinkHoverTimeout","hideLinkHoverTimeout","linkPopoverVisible","setLinkPopoverVisible","urlValue","setUrlValue","showLinkRemoveButton","setShowLinkRemoveButton","linkOverrideSelection","currentSlateRange","setCurrentSlateRange","editingUrl","setEditingUrl","fixUrl","_unused3","linkPopoverOpen","showLinkOverride","selectNode","onHover","newUrl","_Editor$above","_Editor$above2","linkPath","urlChange","createLinkNode","insertLink","_selection$focus","_Editor$parent2","createParagraphNode","Range","SlateElement","isLinkActive","_Editor$nodes9","isFormatActive","_Editor$nodes11","isBlockActive","_Editor$nodes13","underline","big","superscript","textAlign","opt","removeAttribute","FormatButton","HighlightButton","AddLinkButton","BlockButton","unwrapLink","wrapLink","showPortal","setShowPortal","colorButtons","checkIfClickedOutside","isList","toggleBlock","editorContainer","setSheet","initValue","setValue","currentDocument","setCurrentDocument","setUnsavedChanges","_useState46","setlastModified","_useState48","_useState50","lastSelection","setLastSelection","_useState52","readyForNormalize","setReadyForNormalize","saveDocument","doc","docContent","enSerializedSourceText","concatenatedSegments","currentSegment","heSerializedSourceText","enSerializedOutsideText","heSerializedOutsideText","outsideTextText","saveSheetContent","reloadFromDb","hj","_unused4","newSelect","temp_select","scrollTimeOutId","onScrollListener","onEditorSidebarToggleClick","clickTimeOutId","onClickListener","sheetElementTypes","updateSidebar","blurSelection","onCutorCopy","cuttingSource","onDragCheck","whereIsElementInViewport","elementbbox","vh","sheetRef","sheetSourceClick","segmentToHighlight","elementLoc","getHighlightedByScrollPos","_Editor$nodes3","cell","cellPath","_Editor$nodes5","_Editor$nodes7","withTables","atStartOfDoc","atEndOfDoc","inSpacer","curHeaderPath","_Editor$nodes","isListItem","curNode","removeMarks","initLoc","_normalizers","function","ensureNoNestedSheetsinSheet","ensureNoNestedSheetContents","decorateSheetOutsideText","wrapSheetOutsideTextChildren","mergeSheetOutsideTextBlocks","convertEmptyOutsideTextIntoSpacer","convertEmptyParagraphToSpacer","wrapSheetContentElements","ensureEditableSpaceAtTopAndBottom","replaceSpacerWithOutsideText","liftSpacer","ensureNodeId","liftSheetElement","ensureEditableSpaceBeforeAndAfterBoxedElements","onlyTextAndRefsInBoxedElements","addPlaceholdersForEmptyText","liftHeader","ensureSingleSpacerBetweenBoxedSources","normalizer","fragmentText","lastSheetItem","firstSheetItem","nextPath","addedSpacer","prevIsBoxed","nextIsBoxed","insertPath","withSefariaSheet","ensureInView","Sheet","ensureData","onDataLoad","openSheet","preloadConnections","updateDivineNameStateWithSheetValue","getSheetFromCache","getSheetFromAPI","searchParams","sheetsInPanel","SheetContent","sheetNotice","highlightedRefsInSheet","collectionSlug","sheetNumbered","hideImages","SefariaEditor","topThreshhold","click","scrolledToHighlight","highlightedRef","highlighted","sourceNum","cleanHTML","SheetComment","SheetHeader","SheetOutsideText","SheetMedia","SheetNotice","sectionClasses","indented","refDisplayPosition","sourcePrefix","PrependRefWithHe","PrependRefWithEn","addedBy","userLink","shouldPassClick","mediaLink","mediaCaption","mediaURL","isImage","makeMediaEmbedContent","SheetMetadata","_saveSummary","_updateTopics","_togglePublish","loadSaved","sheetCopyStatus","sheetLikeAdjustment","published","debouncedSaveSummary","isFormValidated","loadSheetData","timestampCreated","closeClick","sheetPage","copySheet","handleSummaryChange","onTagDelete","onTagAddition","onTagValidate","updateSuggestedTags","TopicPageAll","normalizeFilter","hasFilter","isHeInt","topicLetter","topicFilterInput","onScroll","handleFilterChange","resetFilter","AlphabeticalTopicsNav","mutliPanel","letterRange","fromCharCode","letters","CollectionPage","sheetFilterTopic","scrollableRef","updateCollectionName","admins","member","members","invitations","memberList","pinning","pinnedSheets","ai","bi","modified","filterableData","isMember","searchInCollection","isAdmin","imageUrl","editorsBlock","CollectionInvitationBox","CollectionMemberListing","isSelf","hasContentsTab","pinnedTags","CollectionAbout","CollectionContentsTab","filterSheets","sortSheets","renderSheet","renderSearchLink","_sheetsDisplayed","EditCollectionButton","websiteUrl","groupedTags","tagGroup","inviting","inviteByEmail","onInviteClick","CollectionInvitationListing","profileUrl","CollectionMemberListingActions","isInvitation","menuOpen","invitationResent","findDOMNode","setRole","toggleMenu","removeMember","resendInvitation","removeInvitation","NotificationsPanel","markAsRead","getMoreNotifications","setUnreadNotificationsCount","unreadCount","ids","read","loadMoreNotifications","page_size","Notifications","markAllAsRead","notificationTypes","SheetPublishNotification","SheetLikeNotification","FollowNotification","CollectionAddNotification","IndexNotification","VersionNotification","GeneralNotification","NotificationType","Notification","imageLink","topLine","is_already_following","follower","collection_slug","collection_name","UserHistoryPanel","contentRef","UserHistoryList","setItems","_ref$itemsPreLoaded","itemsPreLoaded","_ref$pageSize","setSkip","isFirstRender","nextUrl","useScrollToLoad","_store$items","iitem","ownerOrganization","NoteListing","showSheetModal","positionSheetModal","onDeleteNote","showText","hideSheetModal","UserProfile","getPrivateTabState","profile","showBio","bio","applink","_tabViewRef","collectionA","collectionB","refreshCollectionsData","random","refreshSheetData","full_name","getNotes","refreshNoteData","noteA","noteB","sheetA","sheetB","getSheets","getCollections","followers","followees","profile_pic_url","ProfileSummary","follow","openFollowers","openFollowing","_getTabViewRef","filterSheet","sortSheet","renderEmptySheetList","renderSheetHeader","getSheetsFromCache","filterCollection","sortCollection","renderCollection","renderEmptyCollectionList","renderCollectionHeader","getCollectionsFromCache","filterNote","sortNote","renderNote","renderEmptyNoteList","getNotesFromCache","filterFollower","renderFollower","renderEmptyFollowerList","renderFollowerHeader","getFollowers","renderEmptyFollowingList","renderFollowingHeader","getFollowing","infoList","jewish_education","website","socialList","ii","UpdatesPanel","updates","submitting","submitCount","payload","NewUpdateForm","handleSubmit","SingleUpdate","onSubmit","handleTypeChange","handleIndexChange","handleVersionChange","handleLanguageChange","handleEnChange","handleHeChange","disabled","CommunityPage","featuredContent","_Sefaria$community","calendar","discover","featured","FeaturedSheet","trackClicks","RecentlyPublished","nSheetsLoaded","setNSheetsLoded","collapseSheets","recentSheets","setRecentSheets","loadMore","until","collapsedSheets","recentSheetsContent","showDate","joinTheConversation","moreSheets","heading","naturalPublished","CalendarListing","displayTitle","enSubtitle","calendarDescriptions","mergedCalendars","calData","heSubtitle","reformatCalendars","makeListings","parashaListings","dailyListings","weeklyListings","UserStatModeChooser","modes","activeMode","setMode","UserStatModeButton","thisMode","UserChooser","SiteDataBlock","site_data","CategoriesDonut","categoriesRead","CategoryBars","user_cats","site_cats","UserDataBlock","user_data","OverallActivityBlock","UserDonutsBlock","UserCategoryBarchartBlock","YourFavoriteTextsBlock","YourFavoriteSheetsBlock","MostPopularSheetsBlock","StatCard","icon_file","textsRead","sheetsRead","sheetsThisPeriod","mostViewedRefs","mostViewedSheets","popularSheets","mapToPercentage","svg_ref","margin","svg","d3","user_percents","site_percents","orderedCats","rangeRound","paddingInner","nice","groups","selectAll","below_text_padding","textAnchor","raw_data","bar","makeOtherCategory","pie","arcs","radius","arcLabel","innerRadius","outerRadius","arc","enter","toLocaleString","minimumFractionDigits","centroid","endAngle","startAngle","setUid","setSiteData","active_mode","modekeys","debouncedUID","mode_user_data","user_active","all_ready","alltime","padding","ModeratorToolsPanel","handleWfSubmit","wfFileInput","bulk_format","bulk_title_pattern","bulk_version_title_pattern","bulk_language","uploadError","uploadMessage","downloadButton","downloadSection","onDlTitleChange","onDlVersionChange","onDlLanguageSelect","onDlFormatSelect","bulkVersionDlLink","ulReady","uploadButton","uploadFiles","uploadForm","handleFiles","wflowyUpl","WorkflowyModeratorTool","uploadLinksFromCSV","UploadLinksFromCSV","GetLinks","c_index","uploadResult","errorIsHTML","htmltext","c_version","delims","term_scheme","projectName","hasFile","errors","Blob","saveAs","handleFileChange","generatedBy","isSubmitDisabled","InputRef","handleBlur","InputNonRef","DownloadButton","queryParams","setRefs","setErrors","setGeneratedBy","bySegment","setBySegment","_event$target","qs","generated_by","addQueryPrefix","skipNulls","CollectionBlockListing","setCollectionsList","sortCollectionList","strippedA","strippedB","aHe","_map5","aNum","bNum","enCollections","heCollections","enCollBox","heCollBox","coll","setTranslations","uncategorized","setUncategorized","prioritized","setPrioritized","sortFx","translation_language_preference_suggestion","TextColumnBannerChooser","openTranslations","transLangPrefAccepted","setTransLangPrefAccepted","TransLangPrefBanner","accepted","setAccepted","OpenTransBanner","TransLangPrefAcceptedBanner","TransLangPrefAskBanner","TextColumnBanner","translation_language_preference_suggested","sideEffect","setClosed","TextColumnBannerButton","ReaderPanel","clonePanel","initialState","readerContentRef","curPanel","searchQuery","initialMenu","replaceHistory","displaySettingsOpen","setCentralState","originalLanguage","contentLangOverride","closeConnectionsInPanel","conditionalSetState","openConnectionsInPanel","closeSheetConnectionsInPanel","openSheetConnectionsInPanel","citationRef","newVersions","enAPIResult","heAPIResult","additionalState","openConnectionsPanel","namedEntityText","namedEntityState","openNamedEntityInNewPanel","splitArray","saveLastPlace","_parsedRef$sections","closeNamedEntityInConnectionPanel","navigationCategories","navigationTopicCategory","initialAnalyticsTracked","navigationTopic","navigationTopicTitle","collectionTag","setConnectionsFilter","previousCategories","currentCategory","setDefaultOption","replaceHistoryIfReaderAppUpdated","panels","currentData","contextContentLang","getContentLanguageOverride","textColumnBookTitle","heTextColumnBookTitle","handleBaseSegmentClick","handleCitationClick","adjustSheetHighlightedAndVisible","handleSheetSegmentClick","langMode","sideScrollPosition","closeConectionsInPanel","openMenu","handleTextListClick","openCompareTextTOC","setNavigationCategories","closeSheetMetaData","closeMenus","searchTab","onSearchResultClick","updateSearchTab","updateSearchFilter","updateSearchOptionField","updateSearchOptionSort","setNavigationTopic","onNavTextClick","TopicsPage","navigationTopicLetter","intiialWidth","setCollectionTag","PublicCollectionsPage","TranslationsPage","UserStats","CalendarsPage","readerPanel","narrowColumn","currentLayout","hideReaderControls","hideNavHeader","ReaderControls","toggleSheetEditMode","currentMode","onTextTitleClick","onSheetTitleClick","openMobileNavMenu","getHistoryObject","ReaderDisplayOptionsMenu","parentPanel","closeDisplaySettings","onUpdate","analyticsInitialized","getHistoryRef","displayVersionTitle","shouldShowVersion","setDisplayVersionTitle","getTextPromise","loadTranslations","heSectionString","hideHeader","readerTextTocClasses","readerTextToc","attributed","connected","centerContent","openSheetConnectionsPanel","openTextConnectionsPanel","leftControls","rightControls","sheetReaderControls","openSidePanel","sample","hasHebrew","_this$props$currentDa","_this$props$currentDa2","languageToggle","showLanguageToggle","layoutToggle","colorToggle","sizeOptions","sizeToggle","aliyahOptions","aliyahToggle","renderAliyotToggle","vowelsOptions","vowelToggle","vowelOptionsSlice","vowelToggleAvailability","vowelOptionsTitle","punctuationOptions","punctuationToggle","shouldPunctuationToggleRender","EditCollectionPage","initialData","headerUrl","collectionHeader","MAX_IMAGE_MB","clearUploading","setUploading","collectionWebsite","collectionDescription","FileInput","accept","handleImageChange","moderationStatus","handleListingChange","ContestLandingPage","StaticPage","enImg","enImgAlt","enActionURL","enActionText","heImg","heImgAlt","heActionURL","heActionText","H2Block","EnBlock","padded","HeBlock","ButtonRow","SimpleButton","rounded","tall","he_href","Spacer","GreyBox","ImageWithText","CallToActionFooterWithButton","enButtonText","heButtonText","RambanLandingPage","emailLink","optionalClass","ParashaSponsorship","sponsorNames","StaticHR","ContextUSsheetsLandingPage","SheetsLandingPage","light","Feature","borderColor","RemoteLearningPage","CallToActionFooterWithNewsletter","EducatorsPage","HeaderForEducatorsPage","newTab","UserQuote","enName","SubscribeButton","enAction","heAction","heLists","enLists","redirectURL","RabbisPage","HeaderForRabbisPage","PBSC2020LandingPage","DonatePage","HeaderForDonatePage","H1Block","FeatureBox","enButtonUrl","heButtonUrl","HeaderWithColorAccentBlockAndText","colorBar","Accordian","WordByWordPage","PoweredByPage","PBSC2021LandingPage","noPadding","_ref2$optionalClass","staticPageClass","_email","setMessage","messageStyle","setMessageStyle","isValidEmailAddress","flexContainer","staticPageHeaderClass","imgComponent","_ref15$newTab","borderTop","ConditionalLink","_ref23$rounded","_ref23$tall","_ref23$newTab","partition","byLastName","lastNameA","teamMemberDetails","teamName","lastNameB","TeamTitle","teamTitle","TeamName","TeamMemberDetails","TeamMemberImage","teamMember","teamMemberImage","TeamMember","TeamMembers","teamMembers","BoardMember","boardMember","BoardMembers","chairmanBoardMember","boardMembers","chairmanIndex","_partition2","cofounderBoardMembers","regularBoardMembers","TeamMembersPage","memo","ordinaryTeamMembers","setOrdinaryTeamMembers","teamBoardMembers","setTeamBoardMembers","setError","fetchTeamMembersJSON","loadTeamMembers","teamMembersData","teamMembersFromStrapi","_partition3","_partition4","ordinaryMembers","_teamMember$attribute","_teamMember$attribute2","_teamMember$attribute3","heLocalization","isTeamBoardMember","JobsPageHeader","jobsAreAvailable","job","jobLink","jobDescription","JobsListForDepartment","jobsList","JobPostingsByDepartment","department","departmentJobPostings","GroupedJobPostings","groupedJobPostings","NoJobsNotice","JobsPage","_Object$keys","_Object$keys2","setGroupedJobPostings","fetchJobsJSON","currentDateTime","loadJobPostings","_jobsData$data","_jobsData$data$jobPos","_jobsData$data$jobPos2","jobsData","jobsFromStrapi","groupedJobs","jobPostings","jobPosting","jobDepartmentCategory","jobPostingsGroupedByDepartment","PACKET_TYPES","PACKET_TYPES_REVERSE","ERROR_PACKET","withNativeBlob","withNativeArrayBuffer","ArrayBuffer","encodeBlobAsBase64","fileReader","onload","supportsBinary","isView","buffer","Uint8Array","chars","decodeBase64Packet","binaryType","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","arraybuffer","bytes","decode","mapBinary","encodedPacket","SEPARATOR","Emitter","mixin","_callbacks","once","removeListener","removeAllListeners","callbacks","emitReserved","listeners","hasListeners","globalThisShim","pick","NATIVE_SET_TIMEOUT","NATIVE_CLEAR_TIMEOUT","installTimerFunctions","useNativeTimers","setTimeoutFn","clearTimeoutFn","TransportError","Transport","socket","readyState","doOpen","doClose","packets","write","onOpen","onData","packet","onPacket","onPause","alphabet","seed","yeast","XMLHttpRequest","hasCORS","XHR","xdomain","hasXHR2","responseType","uri","xd","xscheme","xs","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","onreadystatechange","requestsCount","requests","cleanup","fromError","responseText","unloadHandler","attachEvent","nextTick","WebSocket","isReactNative","product","transports","websocket","forceBase64","protocols","ws","addEventListeners","onopen","autoUnref","_socket","onclose","closeEvent","onmessage","ev","lastPacket","secure","timestampRequests","timestampParam","b64","encodedQuery","polling","isSSL","poll","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","encodePayload","doWrite","sid","req","xhrStatus","pollXhr","authority","ipv6uri","pathNames","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","transportOptions","closeOnBeforeunload","qry","pairs","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","createTransport","EIO","priorWebsocketSuccess","setTransport","onDrain","probe","failed","onTransportOpen","upgrading","freezeTransport","onTransportClose","onupgrade","onHandshake","resetPingTimeout","sendPacket","filterUpgrades","maxPayload","getWritablePackets","payloadSize","utf8Length","byteLength","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","withNativeFile","File","isBinary","hasBinary","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","_placeholder","reconstructPacket","_reconstructPacket","PacketType","Encoder","replacer","encode","EVENT","ACK","encodeAsString","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","deconstruction","Decoder","reviver","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","takeBinaryData","buf","tryParse","isPayloadValid","CONNECT","DISCONNECT","CONNECT_ERROR","destroy","finishedReconstruction","reconPack","binData","RESERVED_EVENTS","connect","connect_error","disconnecting","newListener","io","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","acks","flags","auth","_opts","_autoConnect","disconnected","subEvents","subs","onpacket","_readyState","retries","fromQueue","volatile","_addToQueue","ack","_registerAckCallback","isTransportWritable","engine","notifyOutgoingListeners","_a","ackTimeout","emitWithAck","withErr","arg1","arg2","tryCount","pending","responseArgs","_drainQueue","_packet","_sendConnectPacket","_pid","pid","_lastOffset","onconnect","onevent","onack","ondisconnect","emitEvent","_anyListeners","emitBuffered","subDestroy","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","Backoff","jitter","attempts","duration","rand","deviation","setMin","setMax","setJitter","Manager","nsps","reconnection","reconnectionAttempts","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","decoder","autoConnect","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","maybeReconnectOnOpen","_reconnecting","reconnect","skipReconnect","openSubDestroy","errorSub","onping","ondata","ondecoded","_destroy","_close","onreconnect","attempt","sameNamespace","forceNew","multiplex","ReaderApp","MIN_PANEL_WIDTH","initialQuery","initialSearchTab","initialTab","initialTopicSort","initialTextSearchFilters","initialTextSearchField","initialTextSearchFilterAggTypes","initialTextSearchSortType","initialSheetSearchFilters","initialSheetSearchFilterAggTypes","initialSheetSearchSortType","initialNavigationCategories","initialNavigationTopicCategory","initialNavigationTopicTitle","initialNavigationTopicLetter","initialTopicTitle","initialProfile","initialCollectionName","initialCollectionTag","defaultPanelSettings","getDefaultPanelSettings","makePanelState","defaultVersions","initialDefaultVersions","layoutOrientation","panelCap","initialPanelCap","showSignUpModal","sheetNodes","openSidebarAsConnect","getCachedVersion","updateHistoryState","handlePopState","setPanelCap","handlePrint","handleCopyEvent","not","handleInAppLinkClick","handleInAppClickWithModifiers","capture","setScrollPositionInHistory","justPopped","trackPageview","newPanelPosition","viewExtent","windowWidth","lastCompletelyVisible","leftover","scrollBy","panelOffset","setContainerMode","textPanels","connectionPanels","pageType","bookNames","primaryCats","secondaryCats","contentLanguages","versionTitles","sidebars","prevPanels","nextPanels","prevTextSearchState","prevSheetSearchState","nextTextSearchState","nextSheetSearchState","histories","states","sidebarModes","addTab","menuPage","makeURL","topicMsg","allTopicMsg","profileTab","htitle","sheetURLSlug","isMobileConnectionsOpen","isMultiPanelConnectionsOpen","sheetAndCommentary","connectionsHistory","shouldHistoryUpdate","currentUrl","makeHistoryState","checkScrollIntentAndTrack","pushState","setPaddingForScrollbar","_refState","scrollIntentTimer","panelScrollIntentTimer","didPanelRefChange","intentDelay","$scrollContainer","scrollPositionTimer","initialSettings","overflow","setWindowWidth","outerWidth","paddingRight","paddingLeft","openPanel","setSheetHighlight","currentlyConnecting","openTextListAt","setPanelState","openPanelAt","replacePanel","new_opts","outmost","getHTMLLinkParentOfEventTarget","metaKey","ctrlKey","altKey","stopImmediatePropagation","linkTarget","isTranslationsPage","overrideContentLang","decodeURI","openPanelAtEnd","showLibrary","showSaved","showCollections","showCommunity","openProfile","showNotifications","showCalendars","showUserStats","showTopics","openTopicCategory","openAllTopics","openTranslationsPage","openCollection","_getSearchStateName","searchStateName","filterNode","langChange","checkPanelScrollIntentAndSaveRecent","new_state","didDefaultPanelSettingsChange","defaultSettings","_defaultKeys","prevPanel","nextPanel","isConnectionsPanel","panelLang","versionName","setCachedVersion","_getPanelLangOnVersionChange","_this$_getDependentPa","_getDependentPanel","dependentPanel","isDependentPanelConnections","updatePanelObj","newPanels","connectAfter","comparePanel","textListState","basePanel","base","setSinglePanelState","suggested","translation_language_preference","openingSidebar","doesPanelHaveSidebar","currentHistoryState","getDisplayString","selectedEls","textOnly","activePanelIndex","activePanel","selectedEnEls","selectedHeEls","srcElement","closestReaderPanel","contentSpans","outerHTML","poetryEl","elsToCollapse","footnote","prepend","handleGACopyEvents","clipdata","returnNullIfEmpty","triggers","deDupedTriggers","_debug","_this$state$panels","_this$state$panels$","_this$state$panels2","_this$state$panels2$","_this$state$panels3","_this$state$panels3$","_this$state$panels3$$","evenWidth","widths","panelStates","wrapBoxScroll","headerHasBoxShadow","handleNavigationClick","toggleMobileNavMenu","toggleLanguageInFirstPanel","handleSegmentClick","onCloseConnectionClick","closeConnectionPanel","handleCompareSearchClick","handleSidebarSearchClick","updateQuery","updateAvailableFilters","convertToTextList","readerPanelBox","onNavigationClick","boxClasses","boxWidth","boxStyle","beitMidrashStatus","signUpModal","modalContentKind","communityPagePreviewControls","communityPreview","classDict","readerApp","getUserContext","initialCollection","initialSheetSearchField","sefariaSetup","isFinite","LN10","LN2","__axis","ticks","tickFormat","bandwidth","exit","insert","transition","scale","tickArguments","tickValues","tickSize","tickSizeInner","tickSizeOuter","tickPadding","xhtml","xlink","xml","xmlns","space","local","createElementNS","namespaceURI","tt","nt","et","__data__","ot","ut","ct","ft","st","lt","_names","ht","pt","vt","gt","nextSibling","yt","previousSibling","_t","bt","mt","cloneNode","xt","wt","Mt","Nt","compareDocumentPosition","At","__on","Tt","St","sourceEvent","kt","CustomEvent","createEvent","initEvent","bubbles","cancelable","dispatchEvent","mouseenter","mouseleave","Et","Ct","_groups","_parents","Pt","zt","_enter","_exit","getAttributeNS","removeAttributeNS","setAttributeNS","setProperty","property","classed","raise","lower","datum","dispatch","Rt","Dt","qt","Lt","Ut","ownerSVGElement","createSVGPoint","matrixTransform","getScreenCTM","clientLeft","clientTop","Ot","changedTouches","Bt","identifier","Yt","Ft","It","__noselect","MozUserSelect","jt","Ht","Xt","subject","dx","dy","Gt","Vt","$t","Wt","Zt","Qt","Jt","Kt","sn","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkcyan","darkgoldenrod","darkgray","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavenderblush","lawngreen","lemonchiffon","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","hn","yn","pn","bn","vn","rgb","gn","xn","mn","wn","displayable","hex","brighter","darker","Mn","Nn","An","Tn","Sn","kn","En","Cn","Pn","zn","Dn","Fn","In","On","qn","Rn","Ln","Un","Bn","atan2","Yn","jn","Hn","Xn","Gn","Vn","$n","Wn","Zn","Qn","Jn","Kn","ee","ie","ae","ue","oe","gamma","ce","fe","se","le","de","pe","ge","ye","be","me","xe","we","Me","Ne","Ae","translateX","translateY","rotate","skewX","Te","atan","Se","ke","Ee","baseVal","consolidate","matrix","Ce","SQRT2","De","exp","qe","Le","Ue","Oe","Be","Ye","Fe","Ie","Xe","Ge","je","He","Ve","$e","We","Ze","Qe","Je","Ke","tr","nr","er","rr","ir","_call","_time","or","restart","ar","ur","fr","cr","clearInterval","setInterval","sr","lr","hr","vr","gr","br","mr","__transition","group","tween","ease","xr","Mr","wr","Nr","Ar","Tr","Sr","kr","Er","Cr","_name","Pr","zr","Rr","Dr","qr","attrTween","styleTween","interrupt","Lr","exponent","Ur","Or","Br","Yr","Fr","Ir","jr","Kr","ti","ni","overshoot","ei","ri","oi","amplitude","period","ci","fi","si","li","hi","di","pi","vi","gi","yi","handles","Si","output","mi","xi","wi","overlay","nw","sw","Mi","Ni","Ai","Ti","ki","Ei","Ci","__brush","Pi","zi","extent","emitter","that","touches","beforestart","view","brush","dim","handleSize","Ri","Di","qi","Li","Ui","Oi","Bi","Yi","Fi","Ii","ji","Hi","_x0","_y0","_x1","_y1","Xi","Gi","Vi","$i","Wi","Zi","Qi","Ji","Ki","no","eo","ro","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","oo","ao","uo","co","fo","so","lo","ho","po","vo","ring","coordinates","contour","thresholds","smooth","go","yo","_o","bo","xo","wo","To","So","ko","Co","getUTCMilliseconds","Eo","parseRows","formatBody","formatRows","Po","zo","Ro","Do","qo","Lo","Uo","Oo","Yo","Fo","Io","jo","Ho","arrayBuffer","Xo","Go","Vo","$o","Wo","Zo","Qo","Jo","Ko","ta","na","ea","ra","_root","_y","ia","x0","y0","x1","y1","oa","aa","ua","ca","addAll","sa","la","vx","ha","vy","da","pa","va","cover","visit","removeAll","visitAfter","ba","toExponential","ma","xa","wa","Ma","Na","align","symbol","zero","precision","Aa","Ta","toPrecision","Sa","ka","Ea","Ca","grouping","currency","decimal","numerals","percent","formatPrefix","Pa","za","Ra","Da","qa","La","Oa","Ua","Ba","Ya","Fa","Ia","ja","Ha","Xa","Ga","Va","Wa","Za","Qa","Ja","Ka","tu","nu","eu","ru","iu","ou","au","uu","cu","fu","lu","su","geometry","FeatureCollection","features","Sphere","sphere","MultiPoint","LineString","hu","MultiLineString","Polygon","du","MultiPolygon","GeometryCollection","geometries","lineStart","lineEnd","polygonStart","polygonEnd","pu","vu","gu","yu","_u","bu","mu","xu","wu","Mu","Nu","Au","Tu","Su","ku","Eu","Cu","Pu","zu","Ru","Du","qu","Lu","Uu","Ou","Bu","Yu","Fu","Iu","ju","Hu","Xu","Gu","Vu","$u","Wu","Zu","Qu","Ju","Ku","tc","nc","ec","rc","ic","oc","ac","uc","sc","lc","hc","dc","pc","fc","vc","gc","yc","_c","bc","xc","Nc","Ac","Tc","mc","wc","Mc","Sc","kc","Ec","Cc","invert","Pc","zc","Dc","qc","Rc","Lc","Uc","Oc","Bc","rejoin","Yc","Fc","Ic","jc","Hc","Xc","Gc","Vc","Wc","clean","$c","Zc","Qc","Jc","Kc","tf","nf","ef","af","cf","uf","ff","sf","lf","hf","df","pf","gf","vf","yf","_f","bf","mf","xf","wf","Mf","Nf","extentMajor","extentMinor","stepMajor","stepMinor","Af","Tf","Sf","kf","Ef","Cf","Pf","zf","Rf","Lf","Df","qf","If","jf","Hf","Xf","Uf","Of","Bf","Yf","Ff","Gf","Vf","$f","Wf","Zf","Qf","Jf","Kf","ns","es","us","os","fs","ss","ls","_radius","pointRadius","_line","hs","ps","vs","gs","ys","_string","Ms","Ns","stream","As","clipExtent","translate","Ts","Ss","ks","Es","_circle","Cs","Ps","zs","Rs","Ds","Ls","preclip","postclip","clipAngle","fitExtent","fitSize","fitWidth","fitHeight","Us","parallels","Os","Bs","Ys","Fs","Is","Hs","Xs","Gs","Vs","$s","Ws","Zs","Qs","Js","Ks","tl","nl","rl","ol","al","cl","fl","sl","ll","hl","dl","yl","pl","eachBefore","gl","vl","eachAfter","_l","bl","wl","Nl","ml","Ml","xl","Al","Tl","Sl","kl","El","Cl","Pl","zl","Rl","Dl","ql","Ll","Ul","Ol","Bl","Yl","Il","jl","Hl","Xl","parentId","Gl","Vl","$l","Wl","Zl","Ql","Jl","Kl","th","dice","nh","ratio","eh","_squarify","rh","ih","oh","ah","uh","fh","sh","lh","hh","dh","interpolator","ph","gh","yh","_h","unknown","bh","paddingOuter","mh","xh","wh","Mh","Nh","Ah","Th","Sh","interpolate","clamp","kh","Eh","Ch","Ph","zh","Rh","Dh","qh","Lh","Uh","Oh","Bh","log2","Yh","log1p","Fh","expm1","Ih","constant","jh","Hh","Xh","Gh","Vh","$h","Wh","Zh","Qh","Jh","Kh","nd","ed","rd","getMinutes","od","ud","cd","fd","sd","ld","pd","vd","gd","yd","bd","md","wd","Md","Nd","Ad","Td","Sd","kd","setUTCSeconds","Ed","Cd","setUTCMinutes","Pd","zd","setUTCHours","setUTCDate","Rd","Dd","getUTCDay","qd","Ld","Ud","Od","Bd","Yd","Fd","Id","Hd","Xd","Gd","Vd","$d","Wd","setUTCMonth","Zd","Qd","setUTCFullYear","Jd","Kd","tp","np","ep","dateTime","periods","days","shortDays","shortMonths","sp","lp","Pp","Lp","zp","Rp","Dp","qp","Up","hv","dv","Bp","Yp","Fp","Ip","jp","Hp","Xp","Vp","lv","$p","Kp","Wp","Zp","Qp","Jp","tv","nv","rv","iv","ov","uv","cv","fv","sv","xp","Sp","Mp","wp","Tp","mp","Np","Ep","Cp","Ap","dp","pp","vp","hp","gp","yp","bp","kp","ip","utcFormat","utcParse","rp","ap","up","cp","fp","pv","timeParse","vv","gv","mv","wv","Mv","Nv","Tv","Sv","kv","Ev","Cv","Pv","zv","Rv","Dv","qv","Lv","Uv","Ov","Bv","Yv","Fv","Iv","jv","Hv","Xv","Gv","Vv","$v","Wv","Zv","Qv","Jv","Kv","tg","ng","eg","rg","ig","og","ag","ug","cg","fg","sg","lg","hg","dg","pg","vg","gg","yg","_g","bg","mg","xg","wg","Mg","Ng","Ag","Tg","Sg","kg","Eg","Cg","Pg","zg","Rg","Dg","qg","Lg","Ug","Og","Bg","Yg","Fg","Ig","jg","Hg","Xg","Gg","Vg","$g","Wg","Zg","Qg","Jg","Kg","ty","ny","ey","ry","iy","oy","ay","uy","cy","fy","sy","ly","hy","gy","padAngle","by","cx","x01","y01","x11","y11","xy","wy","My","Ny","defined","curve","Ay","areaStart","areaEnd","lineX0","lineY0","lineY1","lineX1","Ty","Sy","ky","Cy","Ey","_curve","Py","zy","Ry","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","Dy","qy","Ly","Uy","Oy","By","Yy","Fy","Iy","draw","jy","Hy","Xy","Gy","Vy","$y","Wy","Zy","Qy","Jy","Ky","t_","n_","e_","r_","i_","o_","a_","u_","c_","f_","s_","_basis","_beta","_y2","_y3","_y4","l_","beta","h_","_k","d_","p_","tension","v_","_y5","g_","y_","__","b_","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","m_","_alpha","x_","alpha","w_","M_","N_","A_","T_","S_","k_","E_","C_","P_","z_","R_","D_","q_","L_","U_","O_","B_","Y_","F_","I_","j_","H_","X_","G_","V_","$_","W_","Z_","Q_","J_","wb","tb","mb","halfedges","K_","nb","eb","rb","ib","ob","_t0","ab","ub","fb","Nb","circle","xb","sb","lb","hb","db","pb","bb","vb","Mb","gb","yb","_b","Ab","Tb","cells","Sb","kb","Eb","polygons","triangles","_found","applyX","applyY","invertX","invertY","rescaleX","rescaleY","Cb","Pb","__zoom","zb","Rb","Db","qb","SVGElement","Lb","Ub","deltaY","deltaMode","Ob","Bb","bisect","bisectRight","bisectLeft","ascending","bisector","cross","descending","histogram","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","mean","median","permute","quantile","scan","shuffle","tickIncrement","tickStep","transpose","variance","axisTop","axisRight","axisBottom","axisLeft","brushX","brushY","brushSelection","chord","subindex","sortGroups","sortSubgroups","sortChords","ribbon","nest","sortKeys","sortValues","rollup","hsl","lab","hcl","lch","cubehelix","contours","contourDensity","Float32Array","weight","cellSize","drag","mouse","touchable","clickDistance","dragDisable","dragEnable","dsvFormat","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","autoType","easeLinear","easeQuad","easeQuadIn","easeQuadOut","easeQuadInOut","easeCubic","easeCubicIn","easeCubicOut","easeCubicInOut","easePoly","easePolyIn","easePolyOut","easePolyInOut","easeSin","easeSinIn","easeSinOut","easeSinInOut","easeExp","easeExpIn","easeExpOut","easeExpInOut","easeCircle","easeCircleIn","easeCircleOut","easeCircleInOut","easeBounce","easeBounceIn","easeBounceOut","easeBounceInOut","easeBack","easeBackIn","easeBackOut","easeBackInOut","easeElastic","easeElasticIn","easeElasticOut","easeElasticInOut","dsv","csv","tsv","forceCenter","initialize","forceCollide","iterations","strength","forceLink","forceManyBody","distanceMin","distanceMax","theta","forceRadial","forceSimulation","fx","tick","alphaMin","alphaDecay","alphaTarget","velocityDecay","forceX","forceY","formatDefaultLocale","formatLocale","formatSpecifier","precisionFixed","precisionPrefix","precisionRound","geoArea","geoBounds","geoCentroid","geoCircle","geoClipAntimeridian","geoClipCircle","geoClipExtent","geoClipRectangle","geoContains","geoDistance","geoGraticule","geoGraticule10","geoInterpolate","geoLength","geoPath","area","measure","bounds","projection","geoAlbers","geoAlbersUsa","geoAzimuthalEqualArea","geoAzimuthalEqualAreaRaw","geoAzimuthalEquidistant","geoAzimuthalEquidistantRaw","geoConicConformal","geoConicConformalRaw","geoConicEqualArea","geoConicEqualAreaRaw","geoConicEquidistant","geoConicEquidistantRaw","geoEqualEarth","geoEqualEarthRaw","geoEquirectangular","geoEquirectangularRaw","geoGnomonic","geoGnomonicRaw","geoIdentity","reflectX","reflectY","geoProjection","geoProjectionMutator","geoMercator","geoMercatorRaw","geoNaturalEarth1","geoNaturalEarth1Raw","geoOrthographic","geoOrthographicRaw","geoStereographic","geoStereographicRaw","geoTransverseMercator","geoTransverseMercatorRaw","geoRotation","geoStream","geoTransform","cluster","separation","nodeSize","hierarchy","packSiblings","packEnclose","stratify","tree","treemap","tile","paddingTop","paddingBottom","treemapBinary","treemapDice","treemapSlice","treemapSliceDice","treemapSquarify","treemapResquarify","interpolateArray","interpolateBasis","interpolateBasisClosed","interpolateDate","interpolateDiscrete","interpolateHue","interpolateNumber","interpolateObject","interpolateRound","interpolateString","interpolateTransformCss","interpolateTransformSvg","interpolateZoom","interpolateRgb","interpolateRgbBasis","interpolateRgbBasisClosed","interpolateHsl","interpolateHslLong","interpolateLab","interpolateHcl","interpolateHclLong","interpolateCubehelix","interpolateCubehelixLong","piecewise","quantize","polygonArea","polygonCentroid","polygonHull","polygonContains","polygonLength","quadtree","randomUniform","randomNormal","randomLogNormal","randomBates","randomIrwinHall","randomExponential","scaleBand","scalePoint","scaleIdentity","scaleLinear","scaleLog","scaleSymlog","scaleOrdinal","scaleImplicit","scalePow","scaleSqrt","scaleQuantile","invertExtent","quantiles","scaleQuantize","scaleThreshold","scaleTime","scaleUtc","scaleSequential","scaleSequentialLog","scaleSequentialPow","scaleSequentialSqrt","scaleSequentialSymlog","scaleSequentialQuantile","scaleDiverging","scaleDivergingLog","scaleDivergingPow","scaleDivergingSqrt","scaleDivergingSymlog","schemeCategory10","schemeAccent","schemeDark2","schemePaired","schemePastel1","schemePastel2","schemeSet1","schemeSet2","schemeSet3","interpolateBrBG","schemeBrBG","interpolatePRGn","schemePRGn","interpolatePiYG","schemePiYG","interpolatePuOr","schemePuOr","interpolateRdBu","schemeRdBu","interpolateRdGy","schemeRdGy","interpolateRdYlBu","schemeRdYlBu","interpolateRdYlGn","schemeRdYlGn","interpolateSpectral","schemeSpectral","interpolateBuGn","schemeBuGn","interpolateBuPu","schemeBuPu","interpolateGnBu","schemeGnBu","interpolateOrRd","schemeOrRd","interpolatePuBuGn","schemePuBuGn","interpolatePuBu","schemePuBu","interpolatePuRd","schemePuRd","interpolateRdPu","schemeRdPu","interpolateYlGnBu","schemeYlGnBu","interpolateYlGn","schemeYlGn","interpolateYlOrBr","schemeYlOrBr","interpolateYlOrRd","schemeYlOrRd","interpolateBlues","schemeBlues","interpolateGreens","schemeGreens","interpolateGreys","schemeGreys","interpolatePurples","schemePurples","interpolateReds","schemeReds","interpolateOranges","schemeOranges","interpolateCubehelixDefault","interpolateRainbow","interpolateWarm","interpolateCool","interpolateSinebow","interpolateViridis","interpolateMagma","interpolateInferno","interpolatePlasma","namespace","namespaces","clientPoint","selector","selectorAll","touch","customEvent","cornerRadius","padRadius","areaRadial","radialArea","lineRadial","radialLine","pointRadial","linkHorizontal","linkVertical","linkRadial","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","curveBasisClosed","curveBasisOpen","curveBasis","curveBundle","curveCardinalClosed","curveCardinalOpen","curveCardinal","curveCatmullRomClosed","curveCatmullRomOpen","curveCatmullRom","curveLinearClosed","curveLinear","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","stack","stackOffsetExpand","stackOffsetDiverging","stackOffsetNone","stackOffsetSilhouette","stackOffsetWiggle","stackOrderAppearance","stackOrderAscending","stackOrderDescending","stackOrderInsideOut","stackOrderNone","stackOrderReverse","timeInterval","timeMillisecond","timeMilliseconds","utcMillisecond","utcMilliseconds","timeSecond","timeSeconds","utcSecond","utcSeconds","timeMinute","timeMinutes","timeHour","timeHours","timeDay","timeDays","timeWeek","timeWeeks","timeSunday","timeSundays","timeMonday","timeMondays","timeTuesday","timeTuesdays","timeWednesday","timeWednesdays","timeThursday","timeThursdays","timeFriday","timeFridays","timeSaturday","timeSaturdays","timeMonth","timeMonths","timeYear","timeYears","utcMinute","utcMinutes","utcHour","utcHours","utcDay","utcDays","utcWeek","utcWeeks","utcSunday","utcSundays","utcMonday","utcMondays","utcTuesday","utcTuesdays","utcWednesday","utcWednesdays","utcThursday","utcThursdays","utcFriday","utcFridays","utcSaturday","utcSaturdays","utcMonth","utcMonths","utcYear","utcYears","timeFormatDefaultLocale","timeFormatLocale","isoFormat","isoParse","timerFlush","interval","voronoi","wheel","moved","touch0","touch1","scaleBy","scaleTo","translateBy","translateTo","wheelDelta","scaleExtent","translateExtent","constrain","zoomTransform","zoomIdentity","ajaxSend","sr_origin","cookieValue","cookies","getCookie","jquery","emptyPromise","getJSON","lens","getLens","validLen","placeHoldersLen","toByteArray","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","trueFunc","falseFunc","ieee754","customInspectSymbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","encodingOrOffset","allocUnsafe","encoding","isEncoding","actual","fromString","arrayView","isInstance","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","isBuffer","numberIsNaN","fromObject","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","poolSize","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","out","hexSliceLookupTable","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","getMessage","Base","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","isInteger","INVALID_BASE64_RE","leadSurrogate","base64clean","table","i16","BufferBigIntNotDefined","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","utils","isTag","domEach","camelCase","cssCase","rspace","dataAttrPrefix","primitives","null","true","false","rboolean","rbrace","getAttr","attribs","setAttr","getProp","setProp","readData","domNames","domName","jsNames","jsName","readAll","attrName","querying","returnValue","removeAttr","clazz","numElements","numClasses","setClass","appendClass","splitClass","elClasses","stateVal","elementClasses","setCss","getCss","submittableSelector","r20","rCRLF","serializeArray","Cheerio","toArray","updateDOM","evaluate","cloneDom","isHtml","flatten","_makeDomArray","cheerio","_insert","concatenator","elems","lastIdx","dom","domSrc","uniqueSplice","spliceIdx","spliceCount","newElems","prevIdx","oldParent","spliceArgs","_originalRoot","prependTo","wrapperFn","insertAfter","clones","clonedSelf","$el","_make","uniqueSort","selectorOrHaystack","parentElem","parentNodes","traverseParents","parentsUntil","untilNode","untilNodes","closestElem","nextAll","nextUntil","filterSelector","prevAll","prevUntil","siblingsAndMe","makeFilterMethod","filterFn","testFn","compile","selectorOrNeedle","$haystack","prevObject","addBack","defaults","api","withDomLvl1","normalizeWhitespace","xmlMode","decodeEntities","htmlparser","parseDOM","oldSiblings","_options","parseHTML","keepScripts","contained","script","quickExpr","argType","inner","padLeft","padRight","isCallable","tryToString","$TypeError","argument","isConstructor","$String","wellKnownSymbol","UNSCOPABLES","ArrayPrototype","unicode","isPrototypeOf","Prototype","DataView","fails","isExtensible","NAME","NATIVE_ARRAY_BUFFER","DESCRIPTORS","global","classof","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","InternalStateModule","enforceInternalState","enforce","getInternalState","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Uint32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","isTypedArray","klass","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","KEY","forced","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","uncurryThis","FunctionName","defineBuiltIns","anInstance","toIntegerOrInfinity","toLength","toIndex","IEEE754","arrayFill","arraySlice","setToStringTag","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","ARRAY_BUFFER","DATA_VIEW","PROTOTYPE","WRONG_INDEX","getInternalArrayBufferState","getterFor","getInternalDataViewState","setInternalState","NativeArrayBuffer","$ArrayBuffer","ArrayBufferPrototype","$DataView","DataViewPrototype","packIEEE754","unpackIEEE754","unpack","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","isLittleEndian","intIndex","boolIsLittleEndian","conversion","INCORRECT_ARRAY_BUFFER_NAME","testView","$setInt8","setInt8","getInt8","setUint8","unsafe","detached","bufferState","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","toObject","toAbsoluteIndex","lengthOfArrayLike","deletePropertyOrThrow","inc","argumentsLength","endPos","$forEach","STRICT_METHOD","arrayMethodIsStrict","callbackfn","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIterator","getIteratorMethod","$Array","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","toIndexedObject","createMethod","IS_INCLUDES","$this","fromIndex","IndexedObject","TYPE","IS_FIND_LAST_INDEX","boundFunction","findLast","findLastIndex","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","specificCreate","filterReject","$lastIndexOf","NEGATIVE_ZERO","FORCED","searchElement","V8_VERSION","SPECIES","METHOD_NAME","aCallable","IS_RIGHT","SILENT_ON_NON_WRITABLE_LENGTH_SET","fin","mergeSort","comparefn","insertionSort","llength","rlength","lindex","rindex","originalArray","arraySpeciesConstructor","$RangeError","relativeIndex","actualIndex","itoc","ctoi","anObject","iteratorClose","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","$Object","CORRECT_ARGUMENTS","tryGet","callee","isNullOrUndefined","iterate","defineIterator","createIterResultObject","setSpecies","fastKey","internalStateGetterFor","getConstructor","CONSTRUCTOR_NAME","ADDER","AS_ENTRIES","getEntry","removed","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","getWeakData","ArrayIterationModule","uncaughtFrozenStore","frozen","UncaughtFrozenStore","findUncaughtFrozen","isForced","InternalMetadataModule","checkCorrectnessOfIteration","inheritIfRequired","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","uncurriedNativeMethod","enable","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","getOwnPropertyDescriptorModule","definePropertyModule","exceptions","MATCH","error1","requireObjectCoercible","quot","createPropertyDescriptor","bitmap","toPropertyKey","propertyKey","padStart","$isFinite","DatePrototype","nativeDateToISOString","thisTimeValue","milliseconds","ordinaryToPrimitive","makeBuiltIn","getter","defineGlobalProperty","simple","nonConfigurable","nonWritable","documentAll","IS_HTMLDDA","EXISTS","IndexSizeError","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","SyntaxError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","TimeoutError","InvalidNodeTypeError","DataCloneError","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","documentCreateElement","DOMTokenListPrototype","firefox","IS_DENO","IS_NODE","Bun","Deno","UA","Pebble","v8","webkit","CONSTRUCTOR","$Error","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","clearErrorStack","ERROR_STACK_INSTALLABLE","captureStackTrace","normalizeStringArgument","nativeErrorToString","INCORRECT_TO_STRING","copyConstructorProperties","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","regexpExec","RegExpPrototype","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","uncurriedNativeRegExpMethod","methods","nativeMethod","forceStringMethod","$exec","doesNotExceedSafeInteger","flattenIntoArray","original","sourceLen","mapper","elementLen","targetIndex","sourceIndex","mapFn","preventExtensions","NATIVE_BIND","FunctionPrototype","$Function","factories","partArgs","argsLength","getDescriptor","uncurryThisWithBind","getMethod","Iterators","usingIterator","rawLength","keysLength","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","captures","namedCaptures","tailPos","getBuiltIn","roundToEven","truncated","mantissaLength","mantissa","exponentLength","eMax","eBias","rt","nBits","NewTargetPrototype","functionToString","inspectSource","cause","hiddenKeys","getOwnPropertyNamesModule","getOwnPropertyNamesExternalModule","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","meta","onFreeze","NATIVE_WEAK_MAP","shared","sharedKey","OBJECT_ALREADY_INITIALIZED","metadata","facade","STATE","$documentAll","noop","constructorRegExp","isConstructorModern","isConstructorLegacy","feature","detection","POLYFILL","NATIVE","isRegExp","USE_SYMBOL_AS_UID","Result","stopped","ResultPrototype","unboundFunction","iterFn","IS_RECORD","IS_ITERATOR","INTERRUPTED","condition","callFn","innerResult","innerError","returnThis","IteratorConstructor","ENUMERABLE_NEXT","IS_PURE","createIteratorConstructor","IteratorsCore","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","PrototypeOfArrayIteratorPrototype","arrayIterator","CONFIGURABLE_LENGTH","TEMPLATE","arity","MapPrototype","$expm1","EPSILON","EPSILON32","MAX32","MIN32","fround","$abs","$sign","roundTiesToEven","LOG10E","notify","macrotask","Queue","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","WebKitMutationObserver","queueMicrotaskDescriptor","microtask","queue","head","createTextNode","PromiseCapability","$$resolve","$$reject","$default","globalIsFinite","whitespaces","$parseFloat","trimmedString","$parseInt","radix","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","$assign","chr","activeXDocument","definePropertiesModule","enumBugKeys","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObjectViaActiveX","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","contentWindow","Properties","V8_PROTOTYPE_DEFINE_BUG","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","$getOwnPropertyNames","windowNames","getWindowNames","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","FAILS_ON_PRIMITIVES","$propertyIsEnumerable","NASHORN_BUG","WEBKIT","__defineSetter__","uncurryThisAccessor","aPossiblePrototype","CORRECT_SETTER","objectGetPrototypeOf","IE_BUG","TO_ENTRIES","IE_WORKAROUND","pref","NativePromiseConstructor","IS_BROWSER","NativePromisePrototype","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","REJECTION_EVENT","newPromiseCapability","promiseCapability","Target","Source","tail","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","raw","sticky","charsAdded","strCopy","multiline","hasIndices","ignoreCase","dotAll","unicodeSets","regExpFlags","$RegExp","MISSED_STICKY","ENGINE_IS_BUN","USER_AGENT","validateArgumentsLength","WRAP","scheduler","hasTimeArg","firstParamIndex","boundArgs","SetPrototype","TAG","SHARED","copyright","aConstructor","defaultConstructor","CONVERT_TO_STRING","codeAt","$repeat","repeat","IS_END","fillString","fillLen","stringFiller","intMaxLength","stringLength","fillStr","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","digitToBasic","digit","adapt","numPoints","firstTime","baseMinusTMin","counter","extra","ucs2decode","inputLength","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","labels","$trimEnd","forcedStringTrimMethod","trimEnd","$trimStart","trimStart","ltrim","rtrim","V8","structuredClone","transfer","SymbolPrototype","TO_PRIMITIVE","NATIVE_SYMBOL","keyFor","$location","defer","channel","setImmediate","clearImmediate","Dispatch","MessageChannel","ONREADYSTATECHANGE","run","runner","eventListener","globalPostMessageDefer","port2","port1","importScripts","integer","toPositiveInteger","BYTES","isSymbol","exoticToPrim","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","isIntegralNumber","toOffset","toUint8Clamped","typedArrayFrom","nativeDefineProperty","nativeGetOwnPropertyDescriptor","BYTES_PER_ELEMENT","WRONG_LENGTH","fromList","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","addElement","typedArrayOffset","$length","$len","arrayFromConstructorAndList","typedArraySpeciesConstructor","isBigIntArray","toBigInt","thisIsBigIntArray","speciesConstructor","postfix","params2","URLSearchParams","username","passed","required","wrappedWellKnownSymbolModule","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","proxyAccessor","installErrorCause","installErrorStack","FULL_NAME","IS_AGGREGATE_ERROR","STACK_TRACE_LIMIT","OPTIONS_POSITION","ERROR_NAME","OriginalError","OriginalErrorPrototype","BaseError","WrappedError","wrapErrorConstructorWithCause","AGGREGATE_ERROR","$AggregateError","AggregateError","AggregateErrorPrototype","errorsArray","arrayBufferModule","nativeArrayBufferSlice","viewSource","viewTarget","addToUnscopables","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","isConcatSpreadable","spreadable","$every","$filter","$findIndex","FIND_INDEX","SKIPS_HOLES","$findLastIndex","$findLast","$find","FIND","depthArg","$includes","nativeIndexOf","ARRAY_ITERATOR","Arguments","nativeJoin","$map","setArrayLength","properErrorOnNonWritableLength","argCount","$reduceRight","CHROME_VERSION","reduceRight","$reduce","nativeReverse","nativeSlice","HAS_SPECIES_SUPPORT","$some","internalSort","FF","IE_OR_EDGE","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","itemsLength","arrayLength","getSortCompare","deleteCount","insertCount","actualDeleteCount","actualStart","arrayToReversed","toReversed","getVirtual","toSorted","compareFn","toSpliced","newLen","arrayWith","getYear","$Date","setYear","toGMTString","toUTCString","dateToPrimitive","INVALID_DATE","TO_STRING","nativeDateToString","WEB_ASSEMBLY","WebAssembly","exportGlobalErrorCauseWrapper","exportWebAssemblyErrorCauseWrapper","errorToString","ErrorPrototype","numberToString","HAS_INSTANCE","FUNCTION_NAME_EXISTS","nameRE","regExpExec","getReplacerFunction","$stringify","tester","low","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","$acosh","acosh","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","LOG2E","clz32","$cosh","cosh","$hypot","hypot","value1","value2","aLen","larg","$imul","imul","UINT16","sinh","tanh","thisNumberValue","NUMBER","NativeNumber","PureNumberNamespace","NumberPrototype","NumberWrapper","primValue","third","maxCode","toNumber","toNumeric","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","nativeToExponential","ROUNDS_PROPERLY","fractionDigits","nativeToFixed","multiply","c2","divide","dataToString","fractDigits","x2","nativeToPrecision","__defineGetter__","$entries","$freeze","fromEntries","$getOwnPropertySymbols","nativeGetPrototypeOf","$isFrozen","$isSealed","isSealed","nativeKeys","__lookupGetter__","__lookupSetter__","$preventExtensions","PROTO","$seal","seal","$values","newPromiseCapabilityModule","perform","allSettled","capability","promiseResolve","alreadyCalled","$promiseResolve","PROMISE_STATICS_INCORRECT_ITERATION","PROMISE_ANY_ERROR","any","alreadyResolved","alreadyRejected","real","onRejected","Internal","OwnPromiseCapability","nativeThen","task","hostReportErrors","PromiseConstructorDetection","PROMISE","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","UNHANDLED_REJECTION","isThenable","callReaction","reaction","exited","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","isUnhandled","unwrap","internalReject","internalResolve","executor","onFulfilled","PromiseWrapper","onFinally","isFunction","race","PromiseConstructorWrapper","CHECK_WRAPPER","functionApply","thisArgument","argumentsList","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","newTarget","$args","isDataDescriptor","receiver","objectPreventExtensions","objectSetPrototypeOf","existingDescriptor","ownDescriptor","getRegExpFlags","NativeRegExp","stringIndexOf","IS_NCG","CORRECT_NEW","RegExpWrapper","rawFlags","handled","thisIsRegExp","patternIsRegExp","flagsAreUndefined","rawPattern","brackets","ncg","groupid","groupname","handleNCG","handleDotAll","INDICES_SUPPORT","calls","expected","nativeTest","$toString","nativeToString","NOT_GENERIC","INCORRECT_NAME","createHTML","forcedStringHTMLMethod","blink","notARegExp","correctIsRegExpLogic","nativeEndsWith","CORRECT_IS_REGEXP_LOGIC","endPosition","fixed","fontcolor","fontsize","$fromCodePoint","fromCodePoint","isWellFormed","italics","STRING_ITERATOR","advanceStringIndex","MATCH_ALL","REGEXP_STRING","REGEXP_STRING_ITERATOR","nativeMatchAll","WORKS_WITH_NON_GLOBAL_REGEX","$RegExpStringIterator","$global","fullUnicode","$matchAll","rx","fixRegExpWellKnownSymbolLogic","nativeMatch","maybeCallNative","matchStr","$padEnd","padEnd","$padStart","template","rawTemplate","literalSegments","getSubstitution","REPLACE","searchValue","replaceAll","replaceValue","IS_REG_EXP","functionalReplace","searchLength","advanceBy","endOfLastMatch","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","UNSAFE_SUBSTITUTE","accumulatedResult","nextSourcePosition","replacerArgs","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","callRegExpExec","MAX_UINT32","$push","SPLIT","nativeSplit","internalSplit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","originalExec","nativeStartsWith","strike","intLength","intEnd","intStart","sup","$toWellFormed","toWellFormed","TO_STRING_CONVERSION_BUG","trimLeft","trimRight","$trim","defineWellKnownSymbol","nativeObjectCreate","getOwnPropertyNamesExternal","defineSymbolToPrimitive","HIDDEN","QObject","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","IS_OBJECT_PROTOTYPE","useSetter","useSimple","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","thisSymbolValue","symbolDescriptiveString","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","u$ArrayCopyWithin","$fill","actualValue","fromSpeciesAndList","createTypedArrayConstructor","ArrayIterators","arrayValues","arrayKeys","arrayEntries","GENERIC","ITERATOR_IS_VALUES","typedArrayValues","$join","$set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","TO_OBJECT_BUG","ACCEPT_INCORRECT_ARGUMENTS","begin","beginIndex","$toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","IS_NOT_ARRAY_METHOD","PROPER_ORDER","hex2","hex4","unescape","part","InternalWeakMap","collectionWeak","FROZEN","SEALED","IS_IE11","$WeakMap","WeakMapPrototype","nativeSet","nativeDelete","nativeHas","nativeGet","frozenArray","arrayIntegrityLevel","disallowed","finalEq","$atob","NO_SPACES_IGNORE","NO_ENCODING_CHECK","NO_ARG_RECEIVING_CHECK","WRONG_ARITY","$btoa","WRONG_ARG_CONVERSION","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","ArrayIteratorMethods","ArrayValues","tryNodeRequire","DOMExceptionConstants","DOM_EXCEPTION","DATA_CLONE_ERR","NativeDOMException","NativeDOMExceptionPrototype","HAS_STACK","codeFor","$DOMException","DOMExceptionPrototype","createGetterDescriptor","INCORRECT_CONSTRUCTOR","INCORRECT_CODE","MISSED_CONSTANTS","FORCED_CONSTRUCTOR","DOMException","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","constantName","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","queueMicrotask","INCORRECT_VALUE","setTask","schedulersFix","structuredCloneImplementation","getBuiltin","MapHelpers","SetHelpers","PROPER_TRANSFER","EvalError","URIError","PerformanceMark","CompileError","LinkError","RuntimeError","mapHas","mapGet","mapSet","setAdd","thisBooleanValue","thisStringValue","PERFORMANCE_MARK","DATA_CLONE_ERROR","TRANSFERRING","checkBasicSemantic","set1","set2","checkErrorsCloning","nativeStructuredClone","FORCED_REPLACEMENT","structuredCloneFromMark","nativeRestrictedStructuredClone","throwUncloneable","throwUnpolyfillable","tryNativeRestrictedStructuredClone","cloneBuffer","$type","resizable","maxByteLength","cloneView","Placeholder","structuredCloneInternal","transferredBuffers","DOMQuad","ClipboardEvent","createDataTransfer","ImageData","colorSpace","fromPoint","fromRect","fromMatrix","replacePlaceholders","rawTransfer","transferred","OffscreenCanvas","transferFromImageBitmap","transferToImageBitmap","tryToTransfer","tryToTransferBuffers","USE_NATIVE_URL","arraySort","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","safeGetBuiltIn","nativeFetch","NativeRequest","Headers","RequestPrototype","HeadersPrototype","plus","sequences","percentSequence","percentDecode","sequence","replacements","URLSearchParamsIterator","URLSearchParamsState","parseObject","parseQuery","bindURL","entryIterator","entryNext","updateURL","URLSearchParamsConstructor","URLSearchParamsPrototype","$value","headersHas","headersSet","wrapRequestOptions","RequestConstructor","getState","$URLSearchParams","$delete","dindex","entriesLength","$has","canParse","urlString","EOF","arrayFrom","toASCII","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_C0_CONTROL_OR_SPACE","TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","specialSchemes","ftp","http","https","wss","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","isSingleDot","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","URLState","isBase","baseState","failure","stateOverride","bufferCodePoints","pointer","seenAt","seenBracket","seenPasswordToken","scheme","password","cannotBeABaseURL","isSpecial","includesCredentials","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","swaps","address","pieceIndex","parseIPv6","partsLength","numbers","ipv4","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","setHref","getOrigin","URLConstructor","getProtocol","setProtocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","getHash","setHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","___CSS_LOADER_API_IMPORT___","useSourceMap","sourceMap","cssMapping","sourceMapping","sourceURLs","sourceRoot","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","CSSselect","Pseudos","DomUtils","findOne","findAll","getChildren","removeSubsets","compileUnsafe","compileToken","getSelectorFunc","searchFunc","selectOne","pseudos","_compileUnsafe","_compileToken","hasAttrib","getAttributeValue","reChars","attributeRules","hyphen","regex","exists","strict","rules","Rules","sortRules","BaseFuncs","procedure","includesScopePseudo","DESCENDANT_TOKEN","SCOPE_TOKEN","PLACEHOLDER_ELEMENT","getParent","isArrayContext","hasContext","isTraversal","absolutize","acceptSelf","rule","rootFunc","compileRules","reduceRules","existsOne","containsTraversal","getSiblings","pseudo","sibling","adjacent","lastElement","getNCheck","checkAttrib","getAttribFunc","getChildFunc","icontains","itext","scope","checkbox","radio","submit","getFirstElement","sawElem","enabled","optional","verifyArgs","subselect","re_CSS3","procs","getProcedure","procNew","proc","cur","subselects","parseSelector","re_name","re_escape","re_attr","actionTypes","simpleSelectors","attribSelectors","unpackPseudos","stripQuotesFromPseudos","quotes","funescape","escaped","escapedWhitespace","high","unescapeCSS","isWhitespace","firstChar","tokens","sawWS","stripWhitespace","isEscaped","slashCount","lowerCaseAttributeNames","quoted","addToken","lowerCaseTags","rtl","ltr","RTL","LTR","ElementType","entities","unencodedElements","xmp","noembed","noframes","plaintext","noscript","singleTag","basefont","col","command","embed","isindex","keygen","wbr","renderTag","Directive","renderDirective","Comment","renderComment","CDATA","renderCdata","renderText","encodeXML","formatAttrs","Script","Style","Doctype","re_whitespace","NodePrototype","ElementPrototype","DomHandler","elementCB","defaultOpts","_callback","_elementCB","_done","_tagStack","withStartIndices","withEndIndices","onparserinit","onreset","onend","_handleCallback","onclosetag","endIndex","_createDomElement","_addDomElement","startIndex","onopentag","ontext","lastTag","ignoreWhitespace","oncomment","oncdatastart","oncommentend","oncdataend","onprocessinginstruction","domLvl1","shorthand","nodeTypes","cdata","comparePos","nodeA","nodeB","sharedParent","aSibling","bSibling","aParents","bParents","POSITION","testElement","tag_name","tag_type","tag_contains","Checks","getAttribCheck","attrib","combineFuncs","getElements","recurse","funcs","getElementsByTagType","removeElement","childs","replaceElement","currNext","findOneChild","getOuterHTML","getInnerHTML","level","XML","HTML","decodeStrict","HTMLStrict","encodeHTML4","encodeHTML5","encodeHTML","decodeXML","decodeXMLStrict","decodeHTML4","decodeHTML5","decodeHTML","decodeHTML4Strict","decodeHTML5Strict","decodeHTMLStrict","entityMap","legacyMap","xmlMap","decodeCodePoint","getStrictDecoder","getReplacer","legacy","decodeMap","inverseXML","getInverseObj","xmlReplacer","getInverseReplacer","getInverse","inverseHTML","htmlReplacer","single","re_nonASCII","re_astralSymbols","singleCharReplacer","astralReplacer","re_xmlChars","ReflectOwnKeys","ReflectApply","NumberIsNaN","EventEmitter","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","events","existing","warning","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","setMaxListeners","getMaxListeners","doError","addListener","prependListener","prependOnceListener","originalListener","spliceOne","rawListeners","eventNames","toStr","gOPD","hasOwnConstructor","hasIsPrototypeOf","getProperty","copyIsArray","deep","MouseEvent","initMouseEvent","HTMLAnchorElement","webkitURL","rel","msSaveOrOpenBlob","autoBom","safari","onloadend","bound","boundLength","Empty","implementation","$SyntaxError","getEvalledConstructor","expressionSyntax","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","needsEval","INTRINSICS","Atomics","eval","FinalizationRegistry","WeakRef","errorProto","doEval","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","rePropName","reEscapeChar","getBaseIntrinsic","intrinsicName","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","origSymbol","hasSymbolSham","symObj","syms","CollectingHandler","cbs","_cbs","EVENTS","FeedHandler","what","where","getOneElement","addConditionally","isValidFeed","feed","feedRoot","updated","Tokenizer","formTags","optgroup","datalist","textarea","openImpliesClose","thead","h4","h5","h6","foreignContextElements","math","htmlIntegrationElements","mtext","foreignObject","re_nameEnd","Parser","_tagname","_attribname","_attribvalue","_attribs","_stack","_foreignContext","_lowerCaseTagNames","_lowerCaseAttributeNames","_tokenizer","_updatePosition","initialOffset","_sectionStart","getAbsoluteIndex","onopentagname","onopentagend","_closeCurrentTag","onselfclosingtag","recognizeSelfClosing","onattribname","onattribdata","onattribend","onattribute","_getInstructionName","ondeclaration","oncdata","recognizeCDATA","parseComplete","chunk","resume","parseChunk","ProxyHandler","Stream","Cbs","readable","TEXT","BEFORE_TAG_NAME","IN_TAG_NAME","IN_SELF_CLOSING_TAG","BEFORE_CLOSING_TAG_NAME","IN_CLOSING_TAG_NAME","AFTER_CLOSING_TAG_NAME","BEFORE_ATTRIBUTE_NAME","IN_ATTRIBUTE_NAME","AFTER_ATTRIBUTE_NAME","BEFORE_ATTRIBUTE_VALUE","IN_ATTRIBUTE_VALUE_DQ","IN_ATTRIBUTE_VALUE_SQ","IN_ATTRIBUTE_VALUE_NQ","BEFORE_DECLARATION","IN_DECLARATION","IN_PROCESSING_INSTRUCTION","BEFORE_COMMENT","IN_COMMENT","AFTER_COMMENT_1","AFTER_COMMENT_2","BEFORE_CDATA_1","BEFORE_CDATA_2","BEFORE_CDATA_3","BEFORE_CDATA_4","BEFORE_CDATA_5","BEFORE_CDATA_6","IN_CDATA","AFTER_CDATA_1","AFTER_CDATA_2","BEFORE_SPECIAL","BEFORE_SPECIAL_END","BEFORE_SCRIPT_1","BEFORE_SCRIPT_2","BEFORE_SCRIPT_3","BEFORE_SCRIPT_4","BEFORE_SCRIPT_5","AFTER_SCRIPT_1","AFTER_SCRIPT_2","AFTER_SCRIPT_3","AFTER_SCRIPT_4","AFTER_SCRIPT_5","BEFORE_STYLE_1","BEFORE_STYLE_2","BEFORE_STYLE_3","BEFORE_STYLE_4","AFTER_STYLE_1","AFTER_STYLE_2","AFTER_STYLE_3","AFTER_STYLE_4","BEFORE_ENTITY","BEFORE_NUMERIC_ENTITY","IN_NAMED_ENTITY","IN_NUMERIC_ENTITY","IN_HEX_ENTITY","SPECIAL_NONE","SPECIAL_SCRIPT","SPECIAL_STYLE","whitespace","ifElseState","upper","SUCCESS","FAILURE","_state","consumeSpecialNameChar","NEXT_STATE","_buffer","_bufferOffset","_baseState","_special","_running","_ended","_xmlMode","_decodeEntities","_stateText","_getSection","_stateBeforeTagName","_stateInTagName","_emitToken","_stateBeforeCloseingTagName","_stateInCloseingTagName","_stateAfterCloseingTagName","_stateBeforeAttributeName","_stateInSelfClosingTag","_stateInAttributeName","_stateAfterAttributeName","_stateBeforeAttributeValue","_stateInAttributeValueDoubleQuotes","_stateInAttributeValueSingleQuotes","_stateInAttributeValueNoQuotes","_stateBeforeDeclaration","_stateInDeclaration","_stateInProcessingInstruction","_stateBeforeComment","_stateInComment","_stateAfterComment1","_stateAfterComment2","_stateBeforeCdata1","_stateBeforeCdata2","_stateBeforeCdata3","_stateBeforeCdata4","_stateBeforeCdata5","_stateBeforeCdata6","_stateInCdata","_stateAfterCdata1","_stateAfterCdata2","_stateBeforeSpecial","_stateBeforeSpecialEnd","_stateBeforeScript1","_stateBeforeScript2","_stateBeforeScript3","_stateBeforeScript4","_stateBeforeScript5","_stateAfterScript1","_stateAfterScript2","_stateAfterScript3","_stateAfterScript4","_stateAfterScript5","_stateBeforeStyle1","_stateBeforeStyle2","_stateBeforeStyle3","_stateBeforeStyle4","_stateAfterStyle1","_stateAfterStyle2","_stateAfterStyle3","_stateAfterStyle4","_stateBeforeEntity","_stateBeforeNumericEntity","_parseNamedEntityStrict","entity","_emitPartial","_parseLegacyEntity","_stateInNamedEntity","_decodeNumericEntity","sectionStart","_stateInNumericEntity","_stateInHexEntity","_cleanup","_parse","_finish","_handleTrailingData","WritableStream","StringDecoder","_decoder","decodeStrings","_write","defineProp","DefaultHandler","RssHandler","parseFeed","createDomStream","elementCb","cdatastart","cdataend","processinginstruction","commentend","closetag","opentag","opentagname","greek","ARABIC_DIGITS","LANGUAGES","getArabicForm","delimiter","_formatCount","characters","character","getSlavicForm","getCzechOrSlovakForm","mod10","km","getLithuanianForm","getLatvianForm","mk","getPolishForm","sq","uk","sk","_numberFirst","zh_CN","zh_TW","humanizer","passedOptions","humanizerOptions","piece","unitName","unitMS","unitCount","dictionary","languagesFromOptions","fallbacks","languageToTry","getDictionary","pieces","expValue","maxDecimalPoints","unitCountFloat","ratioToLargerUnit","previousPiece","firstOccupiedUnitIndex","conjunction","serialComma","doHumanization","countStr","dictionaryValue","destination","getSupportedLanguages","isLE","mLen","nBytes","eLen","superCtor","super_","TempCtor","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","lineno","column","updatePosition","Position","errorsList","filename","silent","comments","declaration","decl","decls","declarations","IS_MAC","MODIFIERS","ALIASES","break","cmd","ctl","ctrl","del","down","esc","ins","return","spacebar","win","CODES","backspace","capslock","pageup","pagedown","home","arrowleft","arrowup","arrowright","arrowdown","numlock","scrolllock","byKey","_iteratorNormalCompletion","_didIteratorError","_iteratorError","toKeyName","modifier","which","toKeyCode","parseHotkey","compareHotkey","pluses","config","stringifyCookieValue","converter","parseCookieValue","removeCookie","factory","$scrollTo","scrollTo","isWin","both","axis","onAfter","over","toff","targ","Pos","animate","onAfterFirst","Dim","Tween","propHooks","_last","stringifiedAttributes","attributeName","jar","withConverter","funcTag","genTag","reIsUint","objectProto","objectToString","nativeMax","assignValue","objValue","isIndex","isArrayLike","isLength","assigner","assignIn","customizer","copyObject","inherited","isObjectLike","isArrayLikeObject","isArguments","iteratee","baseTimes","skipIndexes","arrayLikeKeys","nativeKeysIn","Ctor","isProto","baseKeysIn","keysIn","guard","isIterateeCall","otherArgs","PLACEHOLDER","BIND_FLAG","BIND_KEY_FLAG","CURRY_BOUND_FLAG","CURRY_FLAG","CURRY_RIGHT_FLAG","PARTIAL_FLAG","PARTIAL_RIGHT_FLAG","ARY_FLAG","FLIP_FLAG","INFINITY","MAX_INTEGER","NAN","wrapFlags","symbolTag","reTrim","reWrapComment","reWrapDetails","reSplitDetails","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","freeParseInt","freeGlobal","freeSelf","baseIsNaN","replaceHolders","resIndex","funcProto","coreJsData","maskSrcKey","funcToString","reIsNative","objectCreate","nativeMin","getNative","createCtor","thisBinding","createHybrid","bitmask","partials","holders","partialsRight","holdersRight","argPos","ary","isAry","isBind","isBindKey","isCurried","isFlip","getHolder","holdersCount","countHolders","argsIndex","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgs","holdersIndex","rightIndex","rightLength","composeArgsRight","newHolders","createRecurry","oldArray","copyArray","reorder","wrapFunc","isCurry","setWrapToString","isMasked","isHostObject","toSource","baseIsNative","getWrapDetails","insertWrapDetails","reference","updateWrapDetails","fromRight","baseFindIndex","baseIndexOf","arrayIncludes","arrayEach","baseRest","toInteger","createCurry","createPartial","createBind","createWrap","toFinite","assignInDefaults","srcValue","assignInWith","srcIndex","HASH_UNDEFINED","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","argsTag","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","reIsDeepProp","reIsPlainProp","reLeadingDot","typedArrayTags","freeExports","freeModule","freeProcess","nodeUtil","binding","nodeIsTypedArray","arrayFilter","arraySome","mapToArray","setToArray","arrayProto","nativeCreate","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","Hash","ListCache","MapCache","SetCache","Stack","assocIndexOf","getMapData","LARGE_ARRAY_SIZE","eachFunc","baseEach","baseFor","baseFilter","keysFunc","baseGet","isKey","castPath","toKey","baseHasIn","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","getTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","othLength","arrValue","othIndex","isStrictComparable","matchesStrictComparable","ctorString","memoize","baseToString","memoized","Cache","baseUnary","baseKeys","identity","hasFunc","hasIn","baseMatchesProperty","matchData","getMatchData","baseIsMatch","basePropertyDeep","arrayPush","spreadableSymbol","baseFlatten","isStrict","isFlattenable","arrayMap","baseMap","asyncTag","nullTag","proxyTag","undefinedTag","moduleExports","nativeObjectToString","objectCtorString","getPrototype","symToStringTag","nativeIsBuffer","nativeNow","baseCreate","assignMergeValue","baseAssignValue","baseGetTag","unmasked","getRawTag","baseIsArguments","baseMerge","mergeFunc","safeGet","typedArray","isArr","isBuff","isTyped","isDeep","toPlainObject","isPrototype","initCloneObject","baseMergeDeep","baseSetToString","setToString","lastCalled","stamp","shortOut","isArg","isType","overRest","basePickBy","basePick","arrayReduce","initAccum","baseReduce","FUNC_ERROR_TEXT","negate","baseSome","trimmedEndIndex","reTrimStart","reWhitespace","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","debounce","baseTrim","normalise","own","gather","extensions","extension","configure","transforms","canContainEols","autolink","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","blockQuote","characterEscape","characterReference","codeFenced","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeIndented","codeText","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreakEscape","hardBreak","hardBreakTrailing","htmlFlow","htmlFlowData","htmlText","htmlTextData","listItem","spread","_spread","listItemValue","sliceSerialize","listOrdered","listUnordered","paragraph","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","thematicBreak","closer","atxHeadingSequence","onexitdata","characterEscapeValue","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","safeFromInt","codeFencedFence","normalizeIdentifier","onexithardbreak","referenceType","labelText","lineEnding","resource","setextHeadingLineSequence","setextHeadingText","mdastExtensions","tokenStack","listStack","prepareList","stringifyPosition","tailIndex","lineIndex","tailEvent","firstBlankLineIndex","atMarker","containerBalance","listSpread","and","ordered","compiler","postprocess","preprocessor","backReference","footnoteById","footnoteOrder","listItems","hProperties","footnoteReference","dangerous","augment","revert","ignore","blockquote","imageReference","inlineCode","linkReference","toml","yaml","footnoteDefinition","listItemLoose","listLoose","alignLength","allowDangerousHTML","deprecationWarningIssued","allowDangerousHtml","definitions","handlers","unknownHandler","passThrough","ctx","hName","hChildren","generated","foot","returnNode","subtype","encodeCache","exclude","keepEscaped","nextCode","defaultChars","getEncodeCache","componentChars","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiDigit","asciiHexDigit","asciiPunctuation","unicodePunctuationRegex","unicodePunctuation","unicodeWhitespace","text$1","attention","headingAtx","labelEnd","labelStartImage","labelStartLink","setextUnderline","contentInitial","flowInitial","flow","insideSpan","disable","markdownLineEnding","factorySpace","tokenize","effects","contentStart","constructs","consume","partialBlankLine","containerConstruct","nok","lazyFlowConstruct","lazy","inspectResult","childFlow","childToken","continued","inspectConstruct","subcontinued","inspectStart","containerState","continuation","inspectContinue","inspectLess","currentConstruct","concrete","flowContinue","inspectDone","interruptible","inspectFlowEnd","_closeFlow","inspectLazy","flowEnd","partial","documentContinue","documentContinued","flowStart","containerContinue","exitContainers","continueFlow","documentAfterPeek","defineSkip","sliceStream","afterConstruct","shallow","initializeFactory","resolveAll","createResolver","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","bufferIndex","eventIndex","_bufferIndex","combineExtensions","createTokenizer","miniflat","initializer","subtokenize","atCarriageReturn","startPosition","chunkedPush","chunkedSplice","classifyCharacter","movePoint","marker","_open","openingSequence","closingSequence","use","nextEvents","asciiControl","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","markdownSpace","_container","decodeEntity","_interopDefaultLegacy","decodeEntity__default","numeric","markdownLineEndingOrSpace","prefixSize","closingFenceConstruct","sizeOpen","closingSequenceEnd","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","contentContinue","indentedContentConstruct","afterPrefix","tailExitIndex","headEnterIndex","contentEnd","continuationConstruct","prefixed","factoryDestination","factoryLabel","factoryWhitespace","factoryTitle","labelAfter","titleConstruct","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","markerType","labelEscape","atFirstTitleBreak","atTitleBreak","titleEscape","fenceOpenInside","headingBreak","htmlBlockNames","htmlRawNames","startTag","declarationStart","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","continuationRawEndTag","resolveTo","returnState","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","commentStart","commentStartDash","commentClose","atLineEnding","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","labelStart","_balanced","_inactive","balanced","afterLabelEnd","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","_used","destinationAfter","between","afterLabel","sizeChunks","initialSize","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","parameters","chunkStart","hook","serializeChunks","sliceChunks","columnStart","resolveAllConstructs","accountForPotentialSkip","constructFactory","addResult","onsuccessfulcheck","chunkIndex","main","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","atTab","startBufferIndex","endBufferIndex","subcontent","entered","startPositions","tokenizer","childEvents","jumps","gaps","isInFirstContentOfListItem","_gfmTasklistFirstContentOfListItem","otherIndex","otherEvent","subevents","more","_movePreviousLineEndings","bMod","formula","re_nthElement","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","$match","$slice","$toUpperCase","$toLowerCase","$test","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","sepRegex","int","intStr","utilInspect","inspectCustom","custom","inspectSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","inspect_","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","singleLineValues","indentedJoin","isError","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","isBoolean","isString","protoTag","trailer","lowbyte","lineJoiner","symMap","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","getShim","ReactPropTypes","bigint","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","checkPropTypes","DefinedInfo","Info","normal","Type","valid","dash","camelcase","datasetToProperty","cap","kebab","datasetToAttribute","aria","booleanish","spaceSeparated","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","caseInsensitiveTransform","boolean","overloadedBoolean","commaSeparated","acceptcharset","classname","htmlfor","httpequiv","mustUseProperty","abbr","acceptCharset","accessKey","allowPaymentRequest","allowUserMedia","autoComplete","autoPlay","charSet","cite","colSpan","controlsList","coords","crossOrigin","decoding","dirName","encType","enterKeyHint","formAction","formEncType","formMethod","formNoValidate","formTarget","hrefLang","httpEquiv","imageSizes","imageSrcSet","inputMode","integrity","itemId","itemProp","itemRef","itemScope","itemType","loop","manifest","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforePrint","onBeforeUnload","onCanPlay","onCanPlayThrough","onContextMenu","onCueChange","onDblClick","onDrag","onDragExit","onDragLeave","onDurationChange","onEmptied","onEnded","onFormData","onHashChange","onInvalid","onLanguageChange","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseMove","onMouseOut","onMouseOver","onOffline","onOnline","onPageHide","onPageShow","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","playsInline","poster","reversed","rowSpan","sandbox","scoped","seamless","sizes","slot","srcDoc","srcLang","srcSet","typeMustMatch","useMap","aLink","archive","bgColor","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","declare","face","hSpace","leftMargin","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","rev","rightMargin","standby","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","caseSensitiveTransform","commaOrSpaceSeparated","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textRendering","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","accumulate","additive","alphabetic","ascent","attributeType","azimuth","baseFrequency","baseProfile","bbox","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","defaultAction","descent","diffuseConstant","dur","divisor","edgeMode","elevation","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","g1","g2","glyphRef","gradientTransform","gradientUnits","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","operator","orient","orientation","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","viewBox","xChannelSelector","y2","yChannelSelector","zoomAndPan","Schema","checks","checksLength","xtend","powers","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xmlLang","xmlBase","xmlSpace","xmlnsxlink","xmlnsXLink","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","allowDots","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","chain","cleanRoot","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","parseValues","getSideChannel","arrayPrefixGenerators","indices","pushToArray","valueOrArray","toISO","defaultFormat","encodeValuesOnly","formatter","serializeDate","sentinel","generateArrayPrefix","commaRoundTrip","sideChannel","tmpSc","findFlag","keyValue","valuesArray","valuesJoined","objKeys","adjustedPrefix","keyPrefix","valueSideChannel","normalizeStringifyOptions","arrayFormat","joined","hexTable","arrayToObject","compacted","compactQueue","strWithoutPlus","defaultEncoder","mapped","mergeTarget","targetItem","sep","maxKeys","kstr","vstr","stringifyPrimitive","skipMethods","autoBind","ReactClass","_React$Component","__esModule","containCrop","makeAspectCrop","passive","mediaDimensions","bindDocMove","componentRef","dataset","ord","evData","clientStartX","clientStartY","cropStartWidth","cropStartHeight","cropStartX","cropStartY","xInversed","yInversed","xCrossOver","yCrossOver","startXCrossOver","startYCrossOver","isResize","mouseDownOnCrop","cropIsActive","locked","mediaWrapperRef","newCropIsBeingDrawn","dragStarted","xDiff","yDiff","resizeCrop","dragCrop","keysDown","makeNewCrop","nudgeStepLarge","nudgeStepMedium","nudgeStep","unbindDocMove","createNewCrop","pixelCrop","cropSelectRef","onMediaLoaded","docMoveBound","onDocPointerMove","onDocPointerDone","minWidth","getNewSize","lastYCrossover","xyOrds","xOrds","yOrds","crossOverCheck","renderSelectionAddon","ruleOfThirds","getCropStyle","bindCropSelectionRef","onPointerDown","onCropPointerDown","defaultCrop","inversedXOrd","inversedYOrd","circularCrop","crossorigin","imageAlt","onImageError","renderComponent","imageStyle","createCropSelection","bindComponentRef","onComponentPointerDown","onComponentKeyDown","onComponentKeyUp","bindMediaWrapperRef","bindImageRef","onImageLoad","PureComponent","$$typeof","ContextConsumer","ContextProvider","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","ReactIs","hastToReact","spaces","commas","childrenToReact","tableElements","childIndex","toReact","skipHtml","parentSchema","addProperty","listDepth","components","basic","transformLinkUri","transformImageUri","getInputElement","getElementsBeforeCount","isHeader","sourcePos","rawSourcePos","sourcePosition","includeElementIndex","siblingCount","styleReplacer","parseStyle","vfile","unified","remarkRehype","uriTransformer","changelog","deprecated","renderers","astPlugins","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","deprecation","remarkPlugins","plugins","rehypePlugins","hastNode","runSync","allowElement","allowedElements","onelement","node_","parent_","colon","React__default","PropTypes__default","selectedTag","removeButtonText","selectedTagName","SIZER_STYLES","STYLE_PROPS","Input","superclass","inputWidth","sizer","componentDidMount","autoresize","copyInputStyles","updateInputWidth","componentDidUpdate","this$1$1","inputStyle","ariaLabelText","inputAttributes","inputEventHandlers","searchWrapper","escapeForRegExp","markIt","DefaultSuggestionComponent","Suggestions","SuggestionComponent","suggestionComponent","suggestionActive","suggestionDisabled","addTag","suggestionPrefix","disableMarkIt","CLASS_NAMES","rootFocused","findMatchIndex","pressDelimiter","minQueryLength","pressUpKey","pressDownKey","pressBackspaceKey","deleteTag","suggestionsTransform","suggestionsFilter","maxSuggestionsLength","newTagText","noSuggestionsText","focused","allowBackspace","focusInput","addOnBlur","onDeleteTag","interactiveEls","currentEl","nextEl","clearInput","clearSelectedIndex","TagComponent","tagComponent","rootClassNames","getDerivedStateFromProps","prevQuery","prevSuggestions","runtime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","regeneratorRuntime","accidentalStrictMode","fromMarkdown","mdast2hast","bridge","mutate","copyProps","SafeBuffer","_arrayLikeToArray2","_unsupportedIterableToArray2","latin1Write","species","attributeNames","elementNames","__assign","__createBinding","__setModuleDefault","__importStar","entities_1","foreignNames_1","renderNode","foreignModeIntegrationPoints","foreignElements","emptyAttrs","formatAttributes","selfClosingTags","node_1","DataNode","NodeWithChildren","_lastNode","handleCallback","addNode","ProcessingInstruction","addDataNode","_extendStatics","__extends","tagtypes_1","maxIdx","__exportStar","querying_1","isTextNode","compileTest","nodes_1","__importDefault","dom_serializer_1","isCDATA","isComment","domelementtype_1","nextElementSibling","entities_json_1","legacy_json_1","xml_json_1","decode_codepoint_1","secondChar","decode_json_1","reNonASCII","reXmlChars","decode_1","encode_1","encode_2","decode_2","hasDefineProperty","$getMaxListeners","isFn","emitNone","emitOne","emitTwo","arg3","emitThree","emitMany","_extendStatics2","name_1","_extendStatics3","domhandler_1","Parser_1","defaultOptions","MultiplexHandler","_func","_extendStatics4","Tokenizer_1","events_1","pTag","article","aside","fieldset","figcaption","figure","nav","tbody","tfoot","reNameEnd","name_2","stateBeforeCdata1","stateBeforeCdata2","stateBeforeCdata3","stateBeforeCdata4","stateBeforeCdata5","stateBeforeScript1","stateBeforeScript2","stateBeforeScript3","stateBeforeScript4","stateAfterScript1","stateAfterScript2","stateAfterScript3","stateAfterScript4","stateBeforeStyle1","stateBeforeStyle2","stateBeforeStyle3","stateAfterStyle1","stateAfterStyle2","stateAfterStyle3","stateBeforeEntity","stateBeforeNumericEntity","_stateBeforeClosingTagName","_stateInClosingTagName","_stateAfterClosingTagName","__export","FeedHandler_1","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","stackClear","stackDelete","stackGet","stackHas","stackSet","_Symbol","baseAssign","baseAssignIn","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","initCloneArray","initCloneByTag","cloneableTags","baseClone","isFlat","isFull","isFunc","subValue","createBaseFor","symbolsFunc","_Symbol2","cloneTypedArray","_Symbol3","cloneArrayBuffer","dataView","reFlags","_Symbol4","getSymbols","getSymbolsIn","baseGetAllKeys","isKeyable","overArg","_Symbol5","stubArray","nativeGetSymbols","cloneDataView","cloneRegExp","cloneSymbol","CLONE_DEEP_FLAG","reRegExpChar","reHasRegExpChar","stubFalse","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","baseIsTypedArray","mergeWith","createAssigner","isSpace","collectCharacters","regEx","descriptors","currentDescriptor","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","candidates","parseDescriptors","lastChar","intVal","floatVal","pError","candidate","parseSrcset","normalizeArray","allowAboveRoot","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","AtRule","_Container","_proto","_Container$prototype$","_Container$prototype$2","_len2","_default","_Node","_declaration","_interopRequireDefault","_comment","_createForOfIteratorHelperLoose","cleanSource","Container","lastEach","walk","postcssNode","walkDecls","walkRules","walkAtRules","walkComments","_children","cleanRaws","keepBetween","exist","replaceValues","fast","processed","raws","_supportsColor","_chalk","_terminalHighlight","_wrapNativeSuper","Class","_construct","Parent","_Error","CssSyntaxError","plugin","showSourceCode","stdout","gutter","Declaration","_cssSyntaxError","_previousMap","hasBOM","consumer","mapResolve","originalPositionFor","sourceContentFor","_mapGenerator","_stringify2","_warnOnce","_result","isPromise","LazyResult","stringified","syntax","warnings","sync","env","NODE_ENV","handleError","postcssVersion","pluginName","postcssPlugin","pluginVer","runtimeVer","asyncTick","processing","lastPlugin","stringifier","generate","messages","separators","_sourceMap","MapGenerator","mapOpts","previousMaps","annotation","isSourcesContent","sourcesContent","withContent","clearAnnotation","setSourcesContent","already","setSourceContent","applyPrevMaps","SourceMapConsumer","applySourceMap","isAnnotation","toBase64","addAnnotation","outputFile","eol","generateMap","generateString","sourcePath","SourceMapGenerator","addMapping","semicolon","_stringifier","_stringify","positionBy","overrides","cloneBefore","cloneAfter","_nodes","defaultType","positionInside","_input","_tokenize","_atRule","_rule","endOfFile","nextToken","freeSemicolon","atrule","emptyRule","endFile","bracket","back","unclosedBracket","unknownWord","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","precheckMissedSemicolon","important","stringFrom","spacesFromEnd","_type","checkMissedSemicolon","unnamedAtrule","afterName","unexpectedClose","unclosedBlock","ownSemicolon","lastTokenType","doubleColon","founded","_processor","_vendor","_list","postcss","transformer","processOpts","pluginOpts","vendor","atRule","_fs","PreviousMap","loadAnnotation","startWith","loadMap","consumerCache","getAnnotationURL","sourceMapString","annotations","lastAnnotation","decodeInline","lastMatch","existsSync","readFileSync","fromSourceMap","mappings","_mappings","_lazyResult","Processor","_process","_warning","Root","toResult","Rule","DEFAULT_RAW","beforeDecl","beforeRule","beforeOpen","beforeClose","beforeComment","emptyBody","commentLeft","commentRight","Stringifier","builder","rawValue","detect","rawCache","beforeAfter","rawSemicolon","rawEmptyBody","rawIndent","rawBeforeComment","rawBeforeDecl","rawBeforeRule","rawBeforeClose","rawBeforeOpen","rawColon","nextLine","nextOffset","escapePos","currentToken","ignoreErrors","returned","unclosed","ignoreUnclosed","NEWLINE","FEED","CR","TAB","OPEN_SQUARE","CLOSE_SQUARE","OPEN_CURLY","CLOSE_CURLY","COLON","SEMICOLON","CLOSE_PARENTHESES","controlChar","OPEN_PARENTHESES","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","RE_BAD_BRACKET","AT","RE_AT_END","SLASH","RE_HEX_ESCAPE","ASTERISK","RE_WORD_END","unprefixed","printed","Warning","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","browser","argv","chdir","umask","punycode","tMax","skew","damp","regexPunycode","stringFromCharCode","mapDomain","ucs2encode","flag","oldi","hasNativeMap","ArraySet","_array","_set","fromArray","aArray","aAllowDuplicates","aStr","sStr","toSetString","isDuplicate","aIdx","aValue","vlq","toVLQSigned","VLQ_BASE","aIndex","aOutParam","shifted","intToCharMap","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","cmp","LEAST_UPPER_BOUND","GREATEST_LOWER_BOUND","MappingList","_sorted","generatedLine","generatedColumn","unsortedForEach","aCallback","aThisArg","aMapping","mappingA","mappingB","lineA","lineB","columnA","columnB","compareByGeneratedPositionsInflated","doQuickSort","comparator","pivot","quickSort","binarySearch","base64VLQ","aSourceMap","aSourceMapURL","parseSourceMapInput","IndexedSourceMapConsumer","BasicSourceMapConsumer","getArg","_version","_sources","_absoluteSources","computeSourceURL","_sourceMapURL","Mapping","originalLine","originalColumn","lastOffset","_sections","offsetLine","offsetColumn","generatedOffset","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","aSourceRoot","GENERATED_ORDER","ORIGINAL_ORDER","eachMapping","aContext","aOrder","_generatedMappings","_originalMappings","allGeneratedPositionsFor","aArgs","_findSourceIndex","_findMapping","compareByOriginalPositions","lastColumn","aSource","relativeSource","smc","_sourceRoot","_generateSourcesContent","_file","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","originalMappings","compareByGeneratedPositionsDeflated","aMappings","aLineName","aColumnName","aComparator","computeColumnSpans","nextMapping","lastGeneratedColumn","hasContentsOfAllSources","nullOnMissing","urlParse","fileUriAbsPath","generatedPositionFor","sectionIndex","generatedPosition","sectionMappings","adjustedMapping","_skipValidation","_sourcesContents","aSourceMapConsumer","newMapping","sourceFile","sourceRelative","_validateMapping","aSourceFile","aSourceContent","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aName","_serializeMappings","nameIdx","sourceIdx","previousGeneratedLine","aSources","REGEX_NEWLINE","isSourceNode","SourceNode","aLine","aColumn","aChunks","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","addMappingWithCode","aChunk","aFn","aSep","replaceRight","aPattern","aReplacement","walkSourceContents","fromSetString","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","aDefaultValue","urlRegexp","dataUrlRegexp","aUrl","urlGenerate","aParsedUrl","aRoot","aPathUrl","aRootUrl","supportsNullProto","isProtoString","strcmp","aStr1","aStr2","onlyCompareOriginal","onlyCompareGenerated","sourceURL","sourceMapURL","Url","slashes","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","qm","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","isNull","hasTrailingSlash","quoteRegexp","cloneDeep","mediaTags","vulnerableTags","VALID_HTML_ATTRIBUTE_NAME","_recursing","tempResult","Frame","tagPosition","mediaChildren","updateParentNodeText","updateParentNodeMediaChildren","htmlParserDefaults","allowVulnerableTags","allowedAttributesMap","allowedAttributesGlobMap","nonTextTagsArray","nonTextTags","globRegex","allowedClassesMap","allowedClasses","transformTagsAll","skipMap","transformMap","skipText","skipTextDepth","transformTagsMap","transformTags","transFun","simpleTransform","addedText","initializeState","enforceHtmlBoundary","transformedTag","hasText","isEmptyObject","passedAllowedAttributesMapCheck","allowedSchemesAppliedToAttributes","naughtyHref","allowed","allowIframeRelativeUrls","allowedIframeHostnames","allowedIframeDomains","allowedHostname","allowedDomain","evil","clss","filterClasses","filteredAST","extractedAttributes","attributeObject","stringifyStyleAttributes","abstractSyntaxTree","selectedRule","astRules","allowedDeclarationsList","regularExpression","filterDeclarations","filterCss","selfClosing","lastFrame","allowProtocolRelative","allowedSchemesByTag","allowedSchemes","newTagName","newAttribs","callBound","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","$wm","$m","assert","objects","listGet","listHas","listSet","enc","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","WHITESPACE","ALLOWED_TAGS_REGEX","allowableTags","tagReplacement","tagBuffer","inQuote","tagsArray","parseAllowableTags","consumeCharacter","flushTagBuffer","nonWhitespaceSeen","normalizeTagBuffer","locals","getTarget","styleTarget","HTMLIFrameElement","contentDocument","stylesInDom","getIndexByIdentifier","modulesToDom","idCountMap","identifiers","references","updater","addStyle","insertStyleElement","textStore","replaceText","applyToSingletonTag","styleSheet","cssNode","applyToTag","singleton","singletonCounter","styleIndex","removeStyleElement","lastIdentifiers","newList","newLastIdentifiers","hasIterator","trough","fns","middleware","invoked","bail","plain","attachers","transformers","freezeIndex","assertUnfrozen","addPlugin","addList","addPreset","assertParser","newable","Compiler","assertCompiler","assertNode","assertDone","processSync","pipeline","asyncName","typeFactory","tests","anyFactory","allFactory","visitParents","CONTINUE","SKIP","EXIT","visitor","subresult","grandparents","VMessagePrototype","VMessage","parseOrigin","ruleId","fatal","VFile","assertPart","assertNonEmpty","assertPath","stem","firstNonSlashEnd","seenNonSlash","extIndex","unmatchedSlash","absolute","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","jQuery","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","hmd","nmd","SDK_VERSION","CONSOLE_LEVELS","consoleSandbox","originalConsole","wrappedLevels","originalWrappedFunc","__sentry_original__","makeLogger","logger","__SENTRY_DEBUG__","wat","isInstanceOf","isBuiltin","isErrorEvent","isDOMError","isEvent","Event","DEFAULT_MAX_STRING_LENGTH","htmlTreeAsString","currentElem","MAX_TRAVERSE_HEIGHT","sepLength","nextStr","keyAttrs","_htmlElementAsString","_oO","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","truncate","safeJoin","stringMatchesSomePattern","testString","patterns","requireExactStringMatch","isMatchingPattern","replacementFactory","markFunctionWrapped","_Oo","addNonEnumerableProperty","getOriginalFunction","convertToPlainObject","getOwnProperties","serializeEventTarget","extractedProps","dropUndefinedKeys","_dropUndefinedKeys","memoizationMap","memoVal","crypto","msCrypto","randomUUID","getRandomByte","getRandomValues","getFirstException","getEventDescription","event_id","eventId","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","mechanism","mergedData","checkOrSetAlreadyCaught","__sentry_captured__","arrayify","maybeArray","DEFAULT_IGNORE_ERRORS","DEFAULT_IGNORE_TRANSACTIONS","InboundFilters","__initStatic","__init","setupOnce","addGlobalEventProcessor","getCurrentHub","eventProcess","hub","getIntegration","getClient","clientOptions","internalOptions","allowUrls","denyUrls","disableErrorDefaults","ignoreTransactions","disableTransactionDefaults","ignoreInternal","_mergeOptions","_isSentryError","oO","_getPossibleEventMessages","_isIgnoredError","transaction","_isIgnoredTransaction","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","_shouldDropEvent","frames","stacktrace","_getLastValidUrl","originalFunctionToString","FunctionToString","DEFAULT_ENVIRONMENT","States","SyncPromise","rejectedSyncPromise","PENDING","__init2","_handlers","__init3","__init4","__init5","__init6","_resolve","_reject","onfulfilled","onrejected","_executeHandlers","onfinally","isRejected","_setResult","RESOLVED","REJECTED","cachedHandlers","updateSession","session","ipAddress","ip_address","did","ignoreDuration","release","environment","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","addEventProcessor","setUser","_notifyScopeListeners","getUser","getRequestSession","setRequestSession","requestSession","setExtras","setExtra","setFingerprint","fingerprint","setLevel","setTransactionName","setSpan","getSpan","getTransaction","setSession","getSession","captureContext","updatedScope","addBreadcrumb","breadcrumb","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","getLastBreadcrumb","clearBreadcrumbs","addAttachment","attachment","getAttachments","clearAttachments","applyToEvent","trace","getTraceContext","sdkProcessingMetadata","dynamicSamplingContext","getDynamicSamplingContext","transactionName","_applyFingerprint","breadcrumbs","_notifyEventProcessors","getGlobalEventProcessors","setSDKProcessingMetadata","processors","API_VERSION","DEFAULT_BREADCRUMBS","Hub","bindClient","isOlderThan","getStackTop","setupIntegrations","pushScope","getScope","getStack","popScope","withScope","captureException","_lastEventId","syntheticException","_withClient","originalException","captureMessage","captureEvent","lastEventId","beforeBreadcrumb","finalBreadcrumb","configureScope","oldHub","makeMain","integration","startTransaction","customSamplingContext","_callExtensionMethod","traceHeaders","captureSession","endSession","_sendSessionUpdate","closeSession","startSession","startingTime","user_agent","sessionToJSON","makeSession","currentSession","shouldSendDefaultPii","sendDefaultPii","sentry","getMainCarrier","getHubFromCarrier","setHubOnCarrier","acs","carrier","getGlobalHub","installedIntegrations","getIntegrationsToSetup","defaultIntegrations","userIntegrations","integrations","isDefaultInstance","finalIntegrations","integrationsByName","currentInstance","existingInstance","filterDuplicates","debugIndex","debugInstance","setupIntegration","integrationIndex","STACKTRACE_FRAME_LIMIT","WEBPACK_ERROR_REGEXP","createStackParser","parsers","sortedParsers","skipFirst","cleanedLine","localStack","lastFrameFunction","firstFrameFunction","stripSentryFramesAndReverse","defaultFunctionName","getFunctionName","supportsFetch","Response","isNativeFetch","SENTRY_XHR_DATA_KEY","instrumented","addInstrumentationHandler","originalConsoleMethod","triggerHandlers","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","instrumentDOM","xhrproto","originalOpen","xhrInfo","request_headers","__sentry_own_request__","onreadystatechangeHandler","status_code","endTimestamp","startTimestamp","readyStateArgs","setRequestHeaderArgs","originalSend","sentryXhrData","instrumentXHR","supportsNativeFetch","originalFetch","fetchArgs","getUrlFromResource","hasProp","parseFetchArgs","handlerData","isChromePackagedApp","app","hasHistoryApi","supportsHistory","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","lastHref","instrumentHistory","_oldOnErrorHandler","__SENTRY_LOADER__","__SENTRY_INSTRUMENTED__","_oldOnUnhandledRejectionHandler","onunhandledrejection","instrument","debounceDuration","debounceTimerID","lastCapturedEvent","globalListener","shouldSkipDOMEvent","shouldShortcircuitPreviousDebounce","DSN_REGEX","dsn","withPassword","projectId","publicKey","dsnFromComponents","maxProperties","ERROR","normalizeToSize","maxSize","hasWeakSet","memoBuilder","unmemoize","objName","getConstructorName","stringifyValue","remainingDepth","valueWithToJSON","numAdded","visitable","visitKey","visitValue","createEnvelope","addItemToEnvelope","envelope","newItem","forEachEnvelopeItem","envelopeItems","envelopeItem","encodeUTF8","textEncoder","TextEncoder","serializeEnvelope","envHeaders","itemHeaders","stringifiedPayload","totalLength","concatBuffers","createAttachmentEnvelopeItem","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","replay_event","replay_recording","check_in","envelopeItemTypeToDataCategory","getSdkMetadataForEnvelopeHeader","metadataOrEvent","sdk","createEventEnvelopeHeaders","sdkInfo","tunnel","sent_at","SentryError","logLevel","SENTRY_API_VERSION","getEnvelopeEndpointWithUrlEncodedAuth","tunnelOrOptions","_metadata","getBaseApiEndpoint","_getIngestEndpoint","sentry_key","sentry_version","sentry_client","_encodedAuth","prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","maxValueLength","applyClientOptions","integrationNames","applyIntegrationsMetadata","stackParser","debugIdMap","debugIdStackFramesCache","cachedDebugIdStackFrameCache","debugIdStackParserCache","filenameDebugIdMap","debugIdStackTrace","parsedStack","cachedParsedStack","stackFrame","debug_id","applyDebugIds","finalScope","abs_path","debug_meta","images","code_file","applyDebugMeta","maxBreadth","spans","normalizeEvent","ALREADY_SEEN_ERROR","BaseClient","_integrations","_integrationsInitialized","_numProcessing","_outcomes","_hooks","_dsn","projectMatch","dsnFromString","isValidProtocol","validateDsn","_transport","recordDroppedEvent","eventFromException","_captureEvent","promisedEvent","eventFromMessage","_isEnabled","sendSession","getDsn","getSdkMetadata","getTransport","_isClientDoneProcessing","clientFinished","transportFlushed","getIntegrationById","integrationId","addIntegration","sendEvent","eventType","packages","enhanceEventWithSdkInfo","envelopeHeaders","createEventEnvelope","_sendEnvelope","sendResponse","createSessionEnvelope","_event","sendClientReports","_updateSessionFromEvent","crashed","ex","sessionNonTerminal","ticked","_prepareEvent","_processEvent","finalEvent","sentryError","sampleRate","isTransaction","isTransactionEvent","beforeSendLabel","dataCategory","__sentry__","beforeSend","beforeSendTransaction","processBeforeSend","beforeSendResult","invalidValueError","_validateBeforeSendResult","processedEvent","transactionInfo","transaction_info","_clearOutcomes","outcomes","quantity","exceptionFromError","parseStackFrames","extractMessage","eventFromError","popSize","framesToPop","reactMinifiedRegexp","getPopSize","eventFromUnknownInput","attachStacktrace","isUnhandledRejection","domException","eventFromString","getNonErrorObjectExceptionValue","__serialized__","eventFromPlainObject","synthetic","includedKeys","serialized","extractExceptionKeysForMessage","captureType","getObjectClassName","ignoreOnError","shouldIgnoreOnError","__sentry_wrapped__","sentryWrapped","wrappedArguments","validSeverityLevels","parseUrl","BREADCRUMB_INTEGRATION_ID","Breadcrumbs","_consoleBreadcrumb","serializeAttribute","_isEvent","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","addSentryBreadcrumb","parsedLoc","parsedFrom","parsedTo","BrowserClient","sdkSource","_flushOutcomes","breadcrumbIntegration","captureUserFeedback","createUserFeedbackEnvelopeItem","createUserFeedbackEnvelope","discarded_events","GlobalHandlers","_installFunc","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","stackTraceLimit","installFunc","getHubAndOptions","_enhanceEventWithInitialFrame","_eventFromIncompleteOnError","addMechanismAndCapture","ev0","ev0s","ev0sf","colno","getLocationHref","in_app","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","wrapOptions","globalObject","eventName","handleEvent","wrappedEventHandler","originalEventHandler","LinkedErrors","_limit","linkedErrors","_walkErrorTree","_handler","HttpContext","referrer","Referer","Dedupe","eventProcessor","currentEvent","previousEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","_previousEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","UNKNOWN_FUNCTION","createFrame","chromeRegex","chromeEvalRegex","geckoREgex","geckoEvalRegex","winjsRegex","defaultStackParser","subMatch","extractSafariExtensionDetails","isSafariExtension","isSafariWebExtension","DEFAULT_RETRY_AFTER","DEFAULT_TRANSPORT_BUFFER_SIZE","makeRequest","taskProducer","drain","capturedSetTimeout","makePromiseBuffer","bufferSize","rateLimits","filteredEnvelopeItems","envelopeItemDataCategory","limits","disabledUntil","isRateLimited","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","headerDelay","headerDate","parseRetryAfterHeader","updateRateLimits","__sentry__baseTransport__","cachedFetchImpl","makeFetchTransport","fetchImpl","getNativeFetchImplementation","pendingBodySize","pendingCount","requestSize","requestOptions","keepalive","fetchOptions","XHR_READYSTATE_DONE","makeXHRTransport","getResponseHeader","startSessionOnHub","SpanRecorder","maxlen","_maxlen","spanRecorder","traceId","spanId","__init7","instrumenter","spanContext","parentSpanId","sampled","startChild","childSpan","logMessage","spanMetadata","setStatus","setHttpStatus","httpStatus","spanStatus","spanStatusfromHttpCode","isSuccess","toTraceparent","sampledString","toContext","updateWithContext","parent_span_id","span_id","trace_id","start_timestamp","Transaction","_measurements","_frozenDynamicSamplingContext","transactionContext","_hub","_trimEnd","incomingDynamicSamplingContext","setName","initSpanRecorder","setMeasurement","newMetadata","finishedSpans","measurements","public_key","maybeSampleRate","sample_rate","user_segment","dsc","setHub","TRACING_DEFAULTS","idleTimeout","finalTimeout","heartbeatInterval","IDLE_TRANSACTION_FINISH_REASONS","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","IdleTransaction","activities","_heartbeatCounter","_finished","_idleTimeoutCanceledPermanently","_beforeFinishCallbacks","_finishReason","_idleHub","_idleTimeout","_finalTimeout","_heartbeatInterval","_onScope","_restartIdleTimeout","keepSpan","registerBeforeFinishCallback","pushActivity","popActivity","_pingHeartbeat","cancelIdleTimeout","restartOnChildSpanChange","_idleTimeoutID","setFinishReason","_beat","heartbeatString","_prevHeartbeatString","hasTracingEnabled","maybeOptions","__SENTRY_TRACING__","enableTracing","getActiveTransaction","maybeHub","errorsInstrumented","errorCallback","activeTransaction","samplingContext","tracesSampler","parentSampled","tracesSampleRate","rate","_startTransaction","configInstrumenter","transactionInstrumenter","_experiments","startIdleTransaction","onScope","TRACEPARENT_REGEXP","BAGGAGE_HEADER_NAME","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","MAX_BAGGAGE_STRING_LENGTH","dynamicSamplingContextToSentryBaggageHeader","baggageHeader","objectKey","objectValue","currentIndex","baggageEntry","newBaggageHeader","objectToBaggageHeader","dscKey","dscValue","baggageHeaderToObject","keyOrValue","bindReporter","metric","reportAllChanges","prevValue","forceReport","getNavigationEntry","getEntriesByType","navigationEntry","entryType","getNavigationEntryFromPerformanceTiming","getActivationStart","navEntry","activationStart","initMetric","navigationType","rating","PerformanceObserver","supportedEntryTypes","getEntries","buffered","onHidden","onHiddenOrPageHide","firstHiddenTime","getVisibilityWatcher","reportedMetricIDs","isMeasurementValue","_startChild","msToSec","getBrowserPerformanceAPI","_lcpEntry","_clsEntry","_performanceCursor","startTrackingWebVitals","onReport","visibilityWatcher","report","handleEntry","processingStart","handleEntries","takeRecords","onFID","clsCallback","sessionValue","sessionEntries","hadRecentInput","firstSessionEntry","lastSessionEntry","stopListening","onCLS","lcpCallback","lastEntry","onLCP","_addPerformanceNavigationTiming","eventEnd","_optionalChain","ops","lastAccessLHS","DEFAULT_TRACE_PROPAGATION_TARGETS","defaultRequestInstrumentationOptions","traceFetch","traceXHR","tracingOrigins","tracePropagationTargets","addHTTPTimings","initiatorType","resourceTiming","nextHopProtocol","timingSpanData","connectStart","requestStart","responseStart","resourceTimingEntryToSpanData","entryTypes","DEFAULT_BROWSER_TRACING_OPTIONS","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","enableLongTask","BrowserTracing","_hasSetTracePropagationTargets","addTracingExtensions","_collectWebVitals","enableInteractions","durationThreshold","_getCurrentHub","instrumentRouting","shouldCreateSpanForRequest","clientOptionsTracePropagationTargets","_createRouteTransaction","onStartRouteTransaction","statusType","_registerInteractionListener","shouldCreateSpan","shouldAttachHeadersWithTargets","shouldAttachHeaders","createdSpan","__span","contentLength","contentLengthNum","currentSpan","sentryBaggageHeader","sentryTraceHeader","newHeaders","existingBaggageHeader","baggage","newBaggageHeaders","addTracingHeadersToFetchRequest","fetchCallback","_2","enableHTTPTimings","__sentry_xhr_span_id__","xhrCallback","_3","instrumentOutgoingRequests","beforeNavigate","isPageloadTransaction","sentryTraceMetaTagValue","getMetaContent","baggageMetaTagValue","traceParentData","traceparent","extractTraceparentData","baggageObject","baggageHeaderToDynamicSamplingContext","expandedContext","modifiedContext","finalContext","_latestRouteName","_latestRouteSource","idleTransaction","performanceEntries","responseStartTimestamp","requestStartTimestamp","responseEnd","_addRequest","_addNavigationSpans","measureStartTimestamp","measureEndTimestamp","_addMeasureSpans","firstHidden","shouldRecord","resourceName","transferSize","encodedBodySize","decodedBodySize","renderBlockingStatus","_addResourceSpans","effectiveType","rtt","deviceMemory","hardwareConcurrency","_trackNavigator","oldValue","measurementTimestamp","normalizedValue","fidMark","measurementName","_tagMetricInfo","addPerformanceEntries","inflightInteractionTransaction","registerInteractionTransaction","currentTransaction","metaName","metaTag","REPLAY_SESSION_KEY","REPLAY_EVENT_NAME","UNABLE_TO_SEND_REPLAY","NETWORK_BODY_MAX_SIZE","CONSOLE_ARG_MAX_SIZE","REPLAY_MAX_EVENT_BUFFER_SIZE","NodeType$1","isShadowRoot","isInputTypeMasked","maskInputOptions","actualType","maskInputValue","maskInputSelector","unmaskInputSelector","maskInputFn","NodeType","ORIGINAL_ATTRIBUTE_NAME","getInputType","getInputValue","tagNameRegex","IGNORED_NODE","defaultMaskFn","getCssRulesString","cssRules","getCssRuleString","cssStringified","isCSSImportRule","validateStringifiedCssRule","canvasService","canvasCtx","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","attributeValue","getHref","transformAttribute","_tagName","maskAllText","unmaskTextSelector","maskTextFn","descriptorsStr","inParens","getAbsoluteSrcsetString","_shouldMaskAttribute","needMaskingText","maskTextClass","maskTextSelector","ELEMENT_NODE","eIndex","lowerIfExists","maybeAttr","serializeNodeWithId","blockClass","blockSelector","unblockSelector","skipChild","inlineStylesheet","slimDOMOptions","dataURLOptions","inlineImages","recordCanvas","onSerialize","onIframeLoad","iframeLoadTimeout","keepIframeSrcFn","preserveWhiteSpace","_serializedNode","rootId","__sn","docId","DOCUMENT_NODE","compatMode","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","_isBlockedElement","processedTagName","getValidTagName","skipAttribute","stylesheet","styleSheets","_cssText","__context","getImageData","originalGetImageData","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","recordInlineImage","currentSrc","rr_mediaState","paused","rr_mediaCurrentTime","rr_scrollLeft","rr_scrollTop","rr_width","rr_height","rr_src","isSVG","TEXT_NODE","parentTagName","isStyle","isScript","CDATA_SECTION_NODE","COMMENT_NODE","serializeNode","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","iframeEl","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","EventType","IncrementalSource","MouseInteractions","CanvasContext","MediaInteractions","ReplayerEvents","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","getId","getNode","removeNodeFromMap","throttle$1","hookSetter","isRevoked","patch","__rrweb_original__","getWindowHeight","getWindowWidth","isBlocked","needUnblock","isIgnored","isAncestorRemoved","mirror","isTouchEvent","isIframeINode","hasShadowRoot","isNodeInLinkedList","DoubleLinkedList","__ln","removeNode","moveKey","isINode","MutationBuffer","removes","mapRemoves","movedMap","addedSet","movedSet","droppedSet","processMutations","processMutation","adds","getNextId","nextId","pushAdd","shadowHost","rootShadowHost","notInDoc","currentN","iframeManager","addIframe","shadowDomManager","addShadowRoot","childSn","attachIframe","observeAttachShadow","isParentRemoved","isAncestorInSet","mutationCb","old","styleObj","pname","newPriority","getPropertyPriority","genAdds","nodeId","deepDelete","targetId","canvasManager","unfreeze","lock","unlock","addsSet","callbackWrapper","__rrweb__","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","onMutation","attributeOldValue","initScrollObserver","scrollCb","sampling","scrollEl","wrapEventWithUserTriggeredFlag","userTriggered","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","initObservers","hooks","currentWindow","mousemoveCb","mouseInteractionCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","mousemove","mouseInteraction","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","mergeHooks","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","wrappedCb","totalOffset","timeOffset","DragEvent","Drag","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","disableMap","eventKey","getHandler","initMouseInteractionObserver","scrollHandler","viewportResizeHandler","lastH","lastW","updateDimension","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","isTrusted","isChecked","hasInputMaskOptions","cbWithDedup","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","volume","initMediaInteractionObserver","styleSheetObserver","CSSStyleSheet","insertRule","ownerNode","deleteRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","styleDeclarationObserver","initStyleDeclarationObserver","fontObserver","collectFonts","fontMap","originalFontFace","FontFace","family","fontFace","fontSource","restoreHandler","fonts","initFontObserver","pluginHandlers","IframeManager","iframes","addLoadListener","loadListener","isAttachIframe","ShadowDomManager","restorePatches","manager","iframeElement","restorePatch","webGLVarMap","saveWebGLVar","isInstanceOfWebGLObject","contextMap","variableListFor","serializeArg","rr_type","HTMLImageElement","serializeArgs","supportedWebGLConstructorNames","patchGLPrototype","recordArgs","hookHandler","CanvasManager","pendingCanvasMutations","resetObservers","rafStamps","latestId","invokeId","initCanvasMutationObserver","startRAFTimestamping","startPendingCanvasMutationFlusher","canvasContextReset","HTMLCanvasElement","contextType","initCanvasContextObserver","canvas2DReset","props2D","CanvasRenderingContext2D","imgd","pix","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","flushPendingCanvasMutationFor","valuesWithType","__rest","commands","wrapEvent","wrappedEmit","takeFullSnapshot","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","tel","lastFullSnapshotEvent","polyfill","incrementalSnapshotCount","isCheckout","FullSnapshot","IncrementalSnapshot","Mutation","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","Scroll","wrappedCanvasMutationEmit","CanvasMutation","Meta","idNodeMap","slimDOM","snapshot","DomContentLoaded","MouseInteraction","ViewportResize","MediaInteraction","StyleSheetRule","StyleDeclaration","Font","Load","addBreadcrumbEvent","replay","triggerUserActivity","checkAndHandleExpiredSession","addUpdate","throttledAddEvent","Custom","addCustomEvent","freezePage","getClickTargetNode","getTargetNode","isEventWithTarget","ClickDetector","_lastMutation","_lastScroll","_clicks","slowClickConfig","_addBreadcrumbEvent","_multiClickTimeout","multiClickTimeout","_threshold","_scollTimeout","scrollTimeout","_replay","_ignoreSelector","addListeners","nowInSeconds","cleanupWindowOpen","originalWindowOpen","_handleMultiClick","obs","_teardown","removeListeners","_checkClickTimeout","SLOW_CLICK_TAGS","ignoreElement","isClickBreadcrumb","_getClick","newClick","clickBreadcrumb","clickCount","_scheduleCheckClicks","_checkClicks","timedOutClicks","mutationAfter","scrollAfter","actionTime","_generateBreadcrumbs","hadScroll","hadMutation","isSlowClick","timeAfterClickMs","endReason","route","getCurrentRoute","createBreadcrumb","ATTRIBUTES_TO_RECORD","getAttributesToRecord","normalizedKey","getBaseDomBreadcrumb","NAVIGATION_ENTRY_KEYS","isNavigationEntryEqual","timestampToMs","EventBufferSizeExceededError","EventBufferArray","_totalSize","hasEvents","addEvent","eventSize","eventsRet","getEarliestTimestamp","WorkerHandler","worker","_worker","ensureReady","_ensureReadyPromise","terminate","_getAndIncrementId","EventBufferCompressionWorker","_earliestTimestamp","_sendEventToWorker","_finishRequest","EventBufferProxy","_fallback","_compression","_ensureWorkerIsLoadedPromise","_ensureWorkerIsLoaded","ensureWorkerIsLoaded","_switchToCompressionWorker","addEventPromises","hasSessionStorage","isExpired","initialTime","expiry","targetTime","isSessionExpired","timeouts","maxSessionLife","lastActivity","sessionIdleExpire","isSampled","saveSession","segmentId","shouldRefresh","createSession","sessionSampleRate","allowBuffering","stickySession","getSessionSampleType","sessionStringFromStorage","fetchSession","eventBuffer","isPaused","sessionIdlePause","replayOptions","eventAfterPossibleCallback","beforeAddRecordingEvent","isCustomEvent","handleAfterSendEvent","enforceStatusCode","isBaseTransportSend","traceIds","errorIds","recordingMode","replayId","sendBufferedReplayOrFlush","createPerformanceSpans","addNetworkBreadcrumb","isEnabled","traceInternals","_isSentryRequest","shouldFilterRequest","OBJ","OBJ_KEY","OBJ_KEY_STR","OBJ_VAL","OBJ_VAL_STR","OBJ_VAL_COMPLETED","ARR","ARR_VAL","ARR_VAL_STR","ARR_VAL_COMPLETED","ALLOWED_PRIMITIVES","_evaluateJsonPos","curStep","_isEscaped","_handleObj","_handleArr","_handleColon","_handleComma","_handleObjClose","_handleArrClose","_handleQuote","fixJson","incompleteJson","lastPos","lastStep","startPos","_maybeFixIncompleteObjValue","_findLastArrayDelimiter","_maybeFixIncompleteArrValue","_fixLastStep","completeJson","evaluateJson","getBodySize","formDataStr","_serializeFormData","parseContentLengthHeader","getBodyString","makeNetworkReplayBreadcrumb","buildSkippedNetworkRequestOrResponse","bodySize","_meta","buildNetworkRequestOrResponse","normalizedBody","exceedsSizeLimit","_strIsProbablyJson","e3","normalizeNetworkBody","getAllowedHeaders","allowedHeaders","filteredHeaders","urlMatches","urls","fullUrl","baseURI","fixedUrl","getFullUrl","_getFetchRequestArgBody","getAllHeaders","allHeaders","getHeadersFromOptions","handleNetworkBreadcrumbs","networkDetailAllowUrls","networkCaptureBodies","networkRequestHeaders","networkResponseHeaders","_isXhrBreadcrumb","_isXhrHint","reqSize","resSize","request_body_size","response_body_size","enrichXhrBreadcrumb","requestBodySize","responseBodySize","getAllResponseHeaders","getResponseHeaders","_prepareXhrData","captureXhrBreadcrumbToReplay","_isFetchBreadcrumb","_isFetchHint","enrichFetchBreadcrumb","captureDetails","_getRequestInfo","_parseFetchBody","_getResponseInfo","_prepareFetchData","captureFetchBreadcrumbToReplay","beforeAddNetworkBreadcrumb","handleFetch","handleFetchSpanListener","handleXhr","handleXhrSpanListener","_LAST_BREADCRUMB","hasHooks","createMemoryEntry","memoryEntry","jsHeapSizeLimit","totalJSHeapSize","usedJSHeapSize","memory","ENTRY_TYPES","responseStatus","getAbsoluteTime","paint","navigation","domComplete","domContentLoadedEventStart","domContentLoadedEventEnd","domInteractive","loadEventStart","loadEventEnd","redirectCount","startTimeOrNavigationActivation","createPerformanceEntry","getHandleRecordingEmit","hadFirstEvent","_isCheckout","setInitialState","errorSampleRate","useCompressionOption","useCompression","blockAllMedia","networkDetailHasUrls","networkRequestHasHeaders","networkResponseHasHeaders","createOptionsEvent","addSettingsEvent","previousSessionId","earliestEvent","TransportStatusCodeError","sendReplay","replayData","retryConfig","recordingData","segment_id","eventContext","preparedRecordingData","payloadWithSequence","replayHeaders","prepareRecordingData","initialTimestamp","baseEvent","replay_start_timestamp","error_ids","trace_ids","replay_id","replay_type","replayEvent","preparedEvent","prepareReplayEvent","createReplayEnvelope","sendReplayRequest","_retryCount","captureExceptions","THROTTLED","ReplayContainer","performanceEvents","_performanceObserver","_flushLock","_lastActivity","__init8","__init9","_isPaused","__init10","_hasInitializedCoreListeners","__init11","_stopRecording","__init12","initialUrl","recordingOptions","__init13","__init14","__init15","__init16","__init17","__init18","_recordingOptions","_debouncedFlush","callbackReturnValue","maxTimerId","cancelTimers","_flush","flushMinDelay","flushMaxDelay","_throttledAddEvent","maxCount","durationSeconds","isThrottled","wasThrottled","throttle","slowClickTimeout","slowClickIgnoreSelectors","clickDetector","initializeSampling","_loadAndCheckSession","_initializeRecording","_handleException","startBuffering","startRecording","_onMutationHandler","stopRecording","_removeListeners","deleteSession","continueRecording","flushImmediate","activityTime","hasStoppedRecording","_updateUserActivity","_updateSessionActivity","_maybeSaveSession","cbResult","updateUserActivity","conditionalFlush","cancelFlush","getSessionId","oldSessionId","_triggerFullSnapshot","urlPath","_clearContext","lastTransaction","Worker","workerUrl","createEventBuffer","_addListeners","currentSessionId","_handleVisibilityChange","_handleWindowBlur","_handleWindowFocus","_handleKeyboardEvent","newBreadcrumb","isTruncated","normalizedArgs","normalizedArg","fixedJson","normalizeConsoleBreadcrumb","handleScope","handleScopeListener","isClick","getDomTarget","handleDom","handleDomListener","handleHistory","handleHistorySpanListener","includeAfterSendEventHandling","afterSendHandler","isReplayEvent","isRrwebError","isErrorEventSampled","shouldSampleForBufferEvent","handleGlobalEventListener","addGlobalListeners","performanceObserver","newPerformanceEntries","currentList","existingNavigationEntries","existingLcpEntries","existingEntries","newEntries","newNavigationEntries","newLcpEntry","dedupePerformanceEntries","setupPerformanceObserver","visibilityState","_doChangeToForegroundTasks","_doChangeToBackgroundTasks","isInputElement","hasModifierKey","isCharacterKey","getKeyboardBreadcrumb","handleKeyboardEvent","expired","_createCustomBreadcrumb","checkout","_addPerformanceEntries","createPerformanceEntries","_updateInitialTimestampFromEventBuffer","_popEventContext","_runFlush","addMemoryEntry","mutationLimit","overMutationLimit","mutationBreadcrumbLimit","getOption","selectors","defaultSelectors","deprecatedClassOption","deprecatedSelectorOption","allSelectors","getPrivacyOptions","unmask","unblock","maskSelector","unmaskSelector","isBrowser","MEDIA_SELECTORS","DEFAULT_NETWORK_HEADERS","_initialized","Replay","maskFn","_initialOptions","_getMergedNetworkHeaders","_isInitialized","_setup","_initialize","getReplayId","finalOptions","initialOptions","replaysSessionSampleRate","replaysOnErrorSampleRate","loadReplayOptionsFromClient","SefariaReact","sentryDSN","Sentry","__SENTRY_RELEASE__","autoSessionTracking","clientClass","initialScope","initAndBind","startSessionTracking","loadingPlaceholder","footerContainer","DjangoCSRF","renderFunc","inReaderApp","mergedStaticProps","containerId","reactComponentName"],"sourceRoot":""}